首页 > temp > python入门教程 >
-
面向对象的理解
对象是什么?
对象就是现实世界存在的任何事物都可以称之为对象,有着字节独特的个性
对象由方法和属性组成
对象的模板就是类
面向对象的三大特性
封装 继承 多态
面向对象的六大原则
单一职责原则:每一个类应该专注于做一件事情。即高内聚,低耦合。类的功能要单一,体积不要过于庞大。
开闭原则:一个对象对扩展开发,对修改关闭。即:对类的改动是通过增加代码进行的,而不是修改现有代码。一个模块在扩展性方面应该是开放的,而在更改性方面应该是封闭的。比如:一个网络模块,原来只提供服务端功能,而现在要加入客户端功能,name应当在不用修改服务端功能的代码前提下,就能够增加客户端功能的实现代码,这要求在设计之初,就应当将服务端和客户端分开,公共部分抽象出来。
里氏替换原则:在任何父类出现的地方都可以用它的子类来替代。子类应当可以替换父类并出现父类能够出现的任何地方。比如,公司搞年度晚会,所有员工可以参加抽奖,那么不管是老员工还是新员工,也不管是总部员工还是外派员工,都应当可以参加抽奖,否则公司就不和谐了。
依赖倒置原则:要依赖于抽象,不要依赖于具体实现。
接口隔离原则:应当为客户提供尽可能小的单独的接口,而不是提供大的总的接口。接口的定义的标准尽可能单一,致力于对接口的多实现。接口规模不要臃肿。
迪米特原则:一个对象应当尽量少的与其他对象之间发生相互作用,是得系统功能模块相对独立。降低耦合
组合/聚合复用原则:尽量使用组合/聚合的方式,而不是使用继承。降低耦合度
简单来说:软件工程中对象之间的耦合度就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。有软硬件的耦合,还有软件各模块之间的耦合。
总的来说:耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:
如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。
面向过程与面向对象的优缺点(摘抄自https://blog.csdn.net/jerry11112/article/details/79027834)
面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序时一份盖浇饭。所谓盖浇饭,北京叫盖饭东北叫烩饭,广东叫碟头饭,就是在一碗白米饭上面浇上一份盖菜,你喜欢什么菜,你就浇上什么菜。我觉得这个比喻还是比较贴切的。
蛋炒饭的好处就是入味均匀,吃起来香,如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭。盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了,盖浇饭的缺点是入味不均,可能没有蛋炒饭那么香。
盖浇饭的好处就是菜,饭分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意就换菜。用软件工程的专业术语就是可维护性比较好,饭和菜的耦合度比较低。蛋炒饭将"蛋”“饭"搅和在一起,想换"蛋”"饭"中任何一种都很困难,耦合度很高,以至于"可维护性"比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。
面向过程
优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源,比如单片机,嵌入式开发,Linux/Unix等一般采用面向过程开发,性能是最重要的因素。
缺点:没有面向对象易维护,易复用,易扩展
从名字中就可以看出来,比较注重过程,解决某个问题,面向过程会把事情拆分成一个个函数和数据(函数的参数),按照一定的顺序执行完这些方法,事情就解决了。例如 你要洗衣服 1、执行加洗衣粉方法;2、执行加水方法;3、执行洗衣服方法;4、执行清洗方法; 5、执行烘干方法;这就是将问题拆成一个个方法。
面向对象
优点: 易维护,易复用,易扩展,由于面向对象有封装,继承,多态性的特性,可以设计出低耦合的系统,使系统更加灵活,更加易于维护。
缺点:性能比面向过程低
使用面向过程洗衣服,可以将洗衣服分成两个对象,人和洗衣机,人用来放洗衣粉和加水, 洗衣机用来洗衣服。至于那些方法,就是在类中实现。
出处:https://www.cnblogs.com/miss103/p/13231687.html