python面向对象思想

面向对象

面向对象主要
三大方法:

封装,继承,多态
六大原则:

  1. 开闭原则
  2. 类的单一职责
  3. 依赖倒置
  4. 组合复用原则
  5. 里式替换
  6. 迪米特法则

三大方法

封装

封装的心法口诀
1.分而制之
2.变者疏之
3.高内聚
4.低耦合
封装的好处
在运用封装的时候,封装起到对代码包装的作用,让使用者只用了解必要的要素,忽略那些次要的要素。

打个比方,现在的空调,在使用时我们都会使用遥控器,而不是去考虑空调内部的实现过程。

用一句很浓缩的话来概括我觉得那就是:
把该隐藏的隐藏起来,把该暴露的暴露出来。

在这里插入图片描述

继承与多态

在生活中,一想到继承往往是子承父业等等。也就是说工作是爸爸干的,但成果儿子却可以用。在编程中当很多子类都有相同的功能的时候,甚至代码都是一样的(编码代码重复是原罪),可以讲这些功能提为父类,儿子们只要调用爸爸的方法就可以了。而父类的方法在子类上不同的体现就是多态。

在这里插入图片描述
不仅如此,在实际的工作中,继承也将架构师和程序员的工作分开了。

将子类的功能抽象一个父类,就好比集天下武功为大集。有透过现在看本质的感觉
子类多态的体现则可以类比动物的科目同属猫科动物,狮子是吼吼吼,而小猫这是喵喵喵,手动滑稽,哈哈。

在这里插入图片描述

六大原则

开闭原则

Open Closed Principle
对扩展开放,对修改关闭。
增加新功能,不改变原有代码。
在函数式编程中,装饰器是一个可以使代码很好的遵守开闭原则的方法

类的单一职责

一个类只有一个改变它的原因
也就是**只做一件“事”

依赖倒置

Dependency Inversion Principle
客户端代码(调用的类)尽量依赖(使用)抽象的组件。
抽象的是稳定的。实现是多变的。

组合复用原则

Composite Reuse Principle
如果仅仅为了代码复用优先选择组合复用,而非继承复用。
组合的耦合性相对继承低。

这里用一张图来表述组合和继承之间的区别
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DOHCXJNv-1570806365702)(./image/继承与组合.png)]

里式替换

Liskov Substitution Principle
父类出现的地方可以被子类替换,在替换后依然保持原功能。
子类要拥有父类的所有功能。
子类在重写父类方法时,尽量选择扩展重写,防止改变了功能。>继承后的重写,指导继承的设计

迪米特法则

Law of Demeter
不要和陌生人说话。
类与类交互时,在满足功能要求的基础上,传递的数据量越少越好。因为这样可能降低耦合度。

我对面向对象的理解:(这下面的才是重点好吧)

融入生活中的面向对象思想:
面向对象,听起来很高大上的理念,然而生活中充满着类似的细节

我们用空调时不会去理解其内部结构,而是使用,这要多亏设计者封装的实现
空调遥控器

英雄联盟持续黑铁,有人会想到找代练,这就是一种面向对象的思想,管他什么坑的队友全交给代练去吧!!!
代练

面向对象和面向过程的比较

在中国的漫长历史中,四大发明是我国的瑰宝,印刷术就是其中之一。在其的发展历程中,有活字印刷术和雕版印刷术两种,两者比较,活字印刷术面向对象改变,具有强大的灵活性,然而在拼接字时需要耗时。雕版印刷面向雕刻的过程,制作耗时但是一旦完成,有着强大的速度。
印刷术
对面向对象的大理解:

面向对象的发展是一种偶然,更是一种必然,人类世界的发展,需要处理的问题越来越复杂。面向对象通过归纳概括,以辩证的思想对事物的特性进行分析(扬弃),然后不断添加相同特性的事物,以使模型更丰富,更具有广度(是否会更具有深度有待以后验证)。这是一个先精简的过程,能让我们逻辑更加清晰,而后续添加又使得模型有了更多可能,不断完善。但是面向对象的使用不可避免的会出现一些问题,需要我们注意。所以对一个完善模型的选择和使用,能使我们更加方便。
面向对象

在自己编写程序时的感想:

在最近编写的小程序中,因为类还比较少所以继承和多态没有太多的体现,但是封装和重写有着比较深刻的印象,在编写过程中通过分析大的方向封装类,再在类的内部实现具体细节,我认为面向对象和面向过程并不是水火不容的,在面向对象确定大的方向后,在实现一个函数里的某个细节时,去考虑面向对象的六大原则,这六大原则中的细节也可以看做一种面向过程的思想。 然后就是重写,Linus Torvalds曾说过:Nobody actually creates perfect code the first time around, except me. But there’s only one of me.在写代码中一次次的重构修改,这也是代码的一部分,在我编写的企业防伪码生成器中,发现程序如果生成的数量太大会卡死,优化算法,重新构思。我对此乐此不疲。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值