码迷,mamicode.com
首页 > 其他好文 > 详细

0、面向对象三大机制 封装、继承、多态

时间:2020-05-31 19:49:15      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:包括   需求   类继承   性问题   耦合   trigger   更改   针对   程序   

3行李货物再按一1 再按3

各种面向对象编程语言相互有别,但都能看到他们对面向对象三大机制的支持,即:”封装、继承、多态“

  -封装,隐藏内部实现

  -继承,复用现有代码

  -多态,改写对象行为

  继承是以封装为基础的,多态是以继承为基础的。

  封装,侧重于对象的描述。

  继承和多态,侧重于对象之间关系的描述。

  使用面向对象编程语言(如C#),可以推动程序员以面向对象的思维来思考软件设计结构,从而强化面向对象的编程范式。

  C#是一门支持面向对象编程的优秀语言,包括:各种级别的封装支持;单实现继承与多接口实现;抽象方法与虚方法的重写。

  通过面向对象编程语言(OOPL)认识到面向对象,并不是面向对象的全部,甚至只是浅陋的面向对象。

  OOPL的三大机制“封装、继承、多态”可以表达面向对象的所有概念,但这三大机制本身并没有刻画出面向对象的核心精神。换言之,既可以用这三大机制刻画出“好的面向对象设计“,也可以用这三大机制做出“差的面向对象设计”。不是使用了面向对象的语言(例如C#),就实现了面向对象的设计与开发!因此我们不能依赖编程语言的面向对象机制,来掌握面向对象。

  OOPL没有回答面向对象的根本性问题--我们为什么要使用面向对象?我们应该怎样使用面向对象机制来实现“好的面向对象”?我们应该遵循什么样的面向对象原则?

  任何一个严肃的面向对象程序员(例如C#程序员),都需要系统地去学习面向对象的知识,单纯从语言上获得的面向对象知识,不能够胜任面向对象设计与开发。

重新认识面向对象——为什么是面向对象?

  隔离变化:从宏观层面上看,面向对象的构建方式更能适应软件的变化,能将变化所带来的影响减为最小。

  各司其职:从微观层面上看,面向对象的方式更能强调各个类的“责任”,新增类型不会影响原来员工类型的实现代码——这更符合真实的世界,也能控制变化所影响的范围。

  耦合关系直接决定着软件面对变化时的行为:

    模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改。

    模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变。

    紧耦合就是模块之间或者系统之间关系太紧密,存在互相调用;

    松耦合就是模块之间或者系统之间通过数据接口联系。

    大型数据系统要求系统之间松耦合,便于实现功能的任意组合和重用。

怎样使用三大机制实现"好的面向对象"?

  1、面向接口编程,而不是针对实现编程(方法返回的类型为接口,而不是返回某个具体的类型。)

    客户程序(调用程序的程序,写C#调用.netFramework程序,则所写的代码为客户。还有COM接口编程等)无需知道所使用的对象的特定类型,只要知道对象拥有所期望的接口。

  2、优秀使用对象组合,而不是类继承。

    类继承通常为“白箱复用(子类父类耦合度很高的复用)”,对象组合通常为“黑箱复用(相互包含的关系)”继承在某种程度上破坏了封装性,子类父类耦合度高,而对象组合只要求被组合的对象具有良好定义的接口(满足接口即可),耦合度低。

  3、封装变化    

    设计模式是“封装变化”方法最佳阐释。无论是创建型模式、结构型模式还是行为模式,归根结底都是寻找软件中可能存在的“变化”,然后利用抽象的方式对这些变化进行封装。由于抽象没有具体的体现,就代表了无限的可能性,使得其扩展成为了肯能。所以我们在设计之初,除了要求实现需求所设定的具体用例之外,还需要标定可能或已经存在的“变化”之处。封装变化,最重要的一点是发现变化,或者是寻找变化。

常用的设计原则包括七个,这些原则并不是孤立存在的,它们相互依赖,相互补充。设计模式是根据这些原则总结出来的。

技术图片

 

 

  • 添加到短语集
     
    • 没有此单词集: -> ...
       
    • 创建新的单词集...
  • 拷贝
  • 添加到短语集
     
    • 没有此单词集: -> ...
       
    • 创建新的单词集...
  • 拷贝
  • 添加到短语集
     
    • 没有此单词集: -> ...
       
    • 创建新的单词集...
  • 拷贝

0、面向对象三大机制 封装、继承、多态

标签:包括   需求   类继承   性问题   耦合   trigger   更改   针对   程序   

原文地址:https://www.cnblogs.com/sy-liu/p/13020521.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!