暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

python基础_面向过程VS面向过程

lin在路上 2020-04-06
223

根据前面介绍的内容我们已经能写出一段完整的代码,但是会发现一个问题当需求复杂时,我们的系统将变得很复杂且难以应对需求变动;对此我们将要学习一种新的编程方法用于解决该问题,那就是面向对象。

这里将比较针对同一个案例,面向过程和面向对象的编程逻辑,以便了解二者的区别

一个案例

需求:往一个房子中添加家具(席梦思、衣柜、餐桌),最后打印出户型、总面积、剩余面积、家具名称列表

 面向过程编程:
 定义一个房子(字典类型),添加户型、总面积、剩余面积(初始等于总面积)、家具名称列表(初始为空);
 调用方法添加席梦思,家具名称列表添加席梦思,剩余面积减席梦思面积;
 调用方法添加衣柜,家具名称列表添加衣柜,剩余面积减去衣柜面积;
 调用方法添加餐桌,家具名称列表添加餐桌,剩余面积减去餐桌面积;

 输出户型、总面积、剩余面积、家具名称列表

 面向对象编程
 1、创建一个对象房子,拥有4个属性户型、总面积、剩余面积(初始等于总面积)及家具名称列表(初始为空);及3个方法__init__(用于创建对象)、__str__(用于输出)及add_item(用于添加家具)
 2、创建一个对象家具,拥有2个属性名称和占地面积;及2个方法__init__(用于创建对象)、__str__(用于输出)

 3、主程序创建对象房子、创建对象家具、调用房子中的添加家具方法、输出房子属性

面向过程VS面向对象

从例子可以看出面向过程考虑的是“怎么做”,我们需要考虑添加席梦思会有什么变化、添加衣柜会有什么变化、添加餐桌会有什么变化。

 流程
 1、把完成某个需求的所有步骤从头到尾逐步实现
 2、根据开发需求,将某些功能独立的代码封装成一个又一个函数
 3、最后完成的代码,就是顺序地调用不同的函数
 特点
 1、注重步骤与过程,不注重职责分工
 2、如果需求复杂,代码会变得很复杂
 3、开发复杂项目,没有固定的套路,开发难度很大

面向对象考虑的是"谁来做",我们需要明确职责(添加家具)是属于哪个对象的。然后就是不断的调用该方法实现目标

 流程
 1、在完成某一个需求前,首先明确职责--要做的事情(方法)
 2、根据职责确定不同的对象,在对象内部封装不同的方法(多个)
 3、最后完成的代码,就是顺序地让不同的对象调用不同的方法
 特点
 1、注重对象和职责,不同的对象承担不同的职责
 2、更加适合应对复杂的需求变化,是专门应对复杂项目开发提供的固定套路
 3、需要在面向对象的基础上,再学习一些面向对象的语法

结论

 1、面向过程
 面向过程适合那些比较简单的需求,考虑的是需求的实现步骤
 2、面向对象
 面向对象适合那些复杂多变的需求,考虑的是提炼出对象,并设置对象的属性和方法



文章转载自lin在路上,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论