根据前面介绍的内容我们已经能写出一段完整的代码,但是会发现一个问题当需求复杂时,我们的系统将变得很复杂且难以应对需求变动;对此我们将要学习一种新的编程方法用于解决该问题,那就是面向对象。
这里将比较针对同一个案例,面向过程和面向对象的编程逻辑,以便了解二者的区别
一个案例
需求:往一个房子中添加家具(席梦思、衣柜、餐桌),最后打印出户型、总面积、剩余面积、家具名称列表
面向过程编程:
定义一个房子(字典类型),添加户型、总面积、剩余面积(初始等于总面积)、家具名称列表(初始为空);
调用方法添加席梦思,家具名称列表添加席梦思,剩余面积减席梦思面积;
调用方法添加衣柜,家具名称列表添加衣柜,剩余面积减去衣柜面积;
调用方法添加餐桌,家具名称列表添加餐桌,剩余面积减去餐桌面积;输出户型、总面积、剩余面积、家具名称列表
面向对象编程
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。






