“面向过程开发”和“面向对象方法”的比较

一、知识点介绍

     1、概念说明

1)面向过程:是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。

        (简而言之,面向过程强调的是功能行为,以函数为最小单位,考虑怎么做。

2)面向对象是一种以“对象”为中心的编程思想,把要解决的问题分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个对象在整个解决问题的步骤中的属性和行为。

简而言之,面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。

     2、优缺点比较

1)面向过程

优点:

流程化使得编程任务明确,在开发之前基本考虑了实现方式和最终结果,具体步骤清楚,便于节点分析。

效率高,面向过程强调代码的短小精悍,善于结合数据结构来开发高效率的程序。

缺点:

需要深入的思考,耗费精力,代码重用性低,扩展能力差,后期维护难度比较大。

2)面向对象

优点:

结构清晰,程序是模块化和结构化,更加符合人类的思维方式;

易扩展,代码重用率高,可继承,可覆盖,可以设计出低耦合的系统;

易维护,系统低耦合的特点有利于减少程序的后期维护工作量。

缺点:

开销大,当要修改对象内部时,对象的属性不允许外部直接存取,所以要增加许多没有其他意义、只负责读或写的行为。这会为编程工作增加负担,增加运行开销,并且使程序显得臃肿。

性能低,由于面向更高的逻辑抽象层,使得面向对象在实现的时候,不得不做出性能上面的牺牲,计算时间和空间存储大小都开销很大。

二、代码实例展示


'''
以下代码使用了面向过程的开发方式。
我们定义了两个函数,一个用于计算矩形的周长,一个用于计算矩形的面积。
然后在程序中调用这些函数来计算并输出矩形的周长和面积。
'''
# 面向过程开发

def calculate_perimeter(length, width):
   perimeter = 2 * (length + width)
   return perimeter

def calculate_area(length, width):
   area = length * width
   return area

# 调用函数计算矩形的周长和面积
length = 5
width = 3
perimeter = calculate_perimeter(length, width)
area = calculate_area(length, width)
print("周长为:", perimeter)
print("面积为:", area)

图 1 面向过程 

'''
以下代码使用了面向对象的方法进行开发。
我们定义了一个矩形类(Rectangle),其中包含了矩形的长度和宽度属性,
并且定义了两个方法用于计算矩形的周长和面积。
'''
# 面向对象方法
class Rectangle:
   def __init__(self, length, width):
       self.length = length
       self.width = width

   def calculate_perimeter(self):
       perimeter = 2 * (self.length + self.width)
       return perimeter

   def calculate_area(self):
       area = self.length * self.width
       return area

# 创建矩形对象
rect = Rectangle(5, 3)

# 调用对象的方法计算矩形的周长和面积
perimeter = rect.calculate_perimeter()
area = rect.calculate_area()
print("周长为:", perimeter)
print("面积为:", area)

图 2 面向对象 

三、总结

1)在面向过程开发中,程序的设计主要集中在函数的定义和调用上。函数是根据具体的操作逻辑编写的,并且通过传递参数来完成特定的任务。数据和函数是分离的,函数通过参数进行数据的传递和返回结果。

2)在面向对象方法中,程序的设计主要关注对象的创建和方法的调用。我们通过创建一个矩形对象(rect)来表示具体的矩形实例,然后通过调用对象的方法来完成相应的计算任务。对象封装了数据(即矩形的长度和宽度)和对数据的操作(即计算周长和面积的方法),通过方法来访问和操作数据。

猜你喜欢

转载自blog.csdn.net/nuhao/article/details/132732648