Education的个人博客分享 http://blog.sciencenet.cn/u/Education 哲学,教育,计算机,金融工程。不分文理工科。

博文

面向对象程序设计philosophy:高内聚低耦合

已有 2322 次阅读 2022-8-31 13:32 |个人分类:计算机|系统分类:科研笔记

  英文词philosophy有动因,原理,逻辑等意,  在英汉词典里译成“哲学”,

   但哲学这个词在中文里的外延窄得多,所以还是直接写做philosophy吧


较早期的程序设计philosophy,是数据结构+算法=程序,

程序可以访问任意数据(结构),程序代码形式和内容都复杂交织

像意大利面条一样缠绕成一体,如著名的Linux操作系统程序。

  这种程序设计方法的好处就是比较适合个人开发,程序比较小巧,运行速度快。


缺点是可读性复用性可维护性差,如果编程人员更替,后来者很难接手。

每段代码和数据都可被其它程序段访问,安全稳定性受影响。


  为了解决这些问题,大方向是实行高内聚低耦合,相应地,面向对象的程序设计与编程

OOD/OOP发展起来,如Smalltalk,C++,Java

等支持面向对象的语言的出现,就是从程序设计语法角度支持高内聚低耦合,

并居于今天程序设计方法的统治地位。


       OOP里,把数据(结构)和访问它的函数封装(Encapsulation)为一个整体——

     类 (class/object),形成高内聚;  而外部函数不能直接访问该 中的数据,

     换言之外部函数和该类之间是低耦合。


高内聚低耦合使对象/代码之间的关联度降到尽可能低,不至于牵一发而动全局。

软件的维护和软件开发人员的管理得到极大地简化,要更改某个对象的功能,

就改那个对象的代码就可以了,不影响别的对象(代码)。


    Class/object的功能是编好的,而以后很可能要增加其内容和功能,

  为达到此目的,面向对象程序语言的设计了继承(Inheritance )机制,

         可以扩充以前Class/object的内容和功能,并且通过多态区分同一类事务

        中的子类的不同表现。  比如刘翔和我都是人“类”,

但他能跨栏跑我只能平地跑,为了刻画这种同一类事物的不同子类的不同表现,

OOP里引进了多态(Polymorphism 的机制。

多态来源自继承,继承自同一前导类的派生类中的同名函数

功能各不相同,是为多态。


 所以封装,继承与多态是OOP philosophy 的三个小philosophy。

 封装与继承描述的是程序设计语言的内部语法规定,多态侧重描述的是

 class/object的外部表现。


   OOP有很多好处,但代价也是明显的,是以空间换取的的软件工程效率,

    代码的体积成倍增加,运行速度下降。


 计算机系统结构学科对计算机软件和硬件之间功能的合理分配与组织,

 而OOP对class/object内外的函数(功能)做合理分配与组织。







https://blog.sciencenet.cn/blog-537101-1353425.html

上一篇:机器学习借助并行计算挖掘数据关联信息
下一篇:强化学习是闭环控制在各种场景下的推广
收藏 IP: 223.72.43.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-26 01:27

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部