当前位置:恩施知识网 > 健康之路 > 正文

oop编程思想理解,oop思想

大千世界,万事万物,映射到我们的大脑中,形成了色彩斑斓、奇幻玄妙的思想世界。当我们想把这种思想用软件的方式表达出来时,我们面临着很多中选择:是面向对象、面向过程、面向函数还是面向方面(Aspect oriented Programming)?
由于当前的编程语言都是英文的,外国程序员编程不就是在说母语么?我们国家软件技术发展得晚,还没有按照中文词汇和语法的编程方法和工具,也只能跟着说英语。但中文和英文在词汇和语法方面存在不小的差异,所以程序员理解起来也会存在一些问题,久而久之,就把这种编程思路和

大千世界,万事万物,映射到我们的大脑中,形成了色彩斑斓、奇幻玄妙的思想世界。当我们想把这种思想用软件的方式表达出来时,我们面临着很多中选择:是面向对象、面向过程、面向函数还是面向方面(Aspect oriented Programming)?

由于当前的编程语言都是英文的,外国程序员编程不就是在说母语么?我们国家软件技术发展得晚,还没有按照中文词汇和语法的编程方法和工具,也只能跟着说英语。但中文和英文在词汇和语法方面存在不小的差异,所以程序员理解起来也会存在一些问题,久而久之,就把这种编程思路和方法弄得有些玄乎其神了。

面向过程存在的问题

企业信息处理程序最早是面向过程的程序,因为软件是模拟人的思维过程,所以利用面向过程的思路来处理程序顺理成章。由于最开始还是打孔纸带式的计算机,程序量也很小,所以效率还比较高。但随着软件变得越来越庞大,面向过程思想逐渐变得难以驾驭,工程化难度很大。面向过程的软件结构像一个复杂的迷宫,其间到处遍布goto语句,这些跳转语句就像游戏中神秘的传送门一样,你永远不知道下一站在哪里。

复杂过程能描述的清楚么

面向过程往往使程序员不用系统地思考完整的需求,但在程序中完整地复现了人类思维过程的杂乱无章,其中代码被无节制地复制和更改,重复的代码量大大增加,原来自己编写的程序读懂难度都很大。

面向对象的历史

面向对象在西方有着非常深刻的哲学基础,也是西方近代科学产生的重要原因,内容也比较多,我们以后再详细分析。

针对面向对象产生的问题,1972年美国计算机学家艾伦.凯(Alan Key)发明了面向对象的软件开发架构。艾伦的本科读的是生物学,博士导师是被称为"计算机图形学之父”的David Cannon Evans和Ivan Sutherland两位大神,后者的博士导师是大名鼎鼎的香农。在计算机领域,经常看到这样学术传承,一缕一大串,都是图灵奖都是熟人。从这也看出了咱们国家要想在计算机方面立足,还有很长的路要走。

面向对象是艾伦.凯(Alan Key)发明的

这是一种由生物细胞领域概念启发而形成的架构方法,艾伦发现了在细胞领域中存在一些有趣的规律:首先,所有个体细胞都会遵从细胞这个类别元素的共同的行为模式;其次,每一个细胞都是一个独立的个体,细胞之间通过传递化学物质信号和电信号能够进行通信,根据所收到的信息调整自身的行为和策略;第三,细胞会进行分化,从原来的一个细胞分化成不同类别的细胞,进而形成各种器官。受到这些细胞特性的启发,艾伦发明了面向对象的分析和设计方法。

生物是如何封装和传递消息的

结合这些特点,艾伦发明了Smalltalk ,这种语言被设计为一个完全动态的系统,其中可以动态地创建和修改类。

面向对象的本质

面向对象与其说是一种设计方法,更像是一种理解世界的角度。类别、属性、联系和是三个重要方面。联系和组成的概念更为复杂一些,例如SQL和知识图谱就是致力于研究事物之间的关联,我们有机会再另外详细说,今天我们重点来讲讲类别和属性。

面向对象的本质是本体论

面向对象的核心是本体论。本体类的核心就是分类,也就是我们词语所指之“物”。当我们说杯子的时候,我们说的其实不是哪一个具体的杯子。我们说的是脱离了时间和空间之外的那个杯子,这种本体论古希腊人都搞明白了,可惜中国古代没有这种本体思想。

「博士聊IT」一文看懂编程的本质,程序员有前途么?

比如我们说今天很热,我们翻译过来肯定是想说Today is hot。但是这里我们就错误地把今天作为主语了,其实今天应该是时间副词。英语会翻译成It is hot today这里的It指的是天气,也就是热的主体。

中英文用法上差异增加了我们理解的难度

本体(Ontology)、分类(Class)、概念(Conception)、集合(Set)和名词(Noun)其实是一回事,都指的是你脑海中的那个概念。这是人类理解世界的根本,就从哲学观点上来看,这是我们认识世界的方式。

我们的生物需要分类,就是门、纲、目、科、属、种;法律需要分类,轻度伤害、重度伤害量刑不同;社会管理要分类例如不同企业上不同的税;产品需要分类,不同的产品有不同的参数.......我们思想和语言交流的基础就是分类。

事实上我们说的每一个名词都是一个分类,当加上编号或者定冠词就变成实例了。那我们我和当我们区分实例的话,不特指的时候直接用复数或者要加上不定冠词“a”表示这分类,特指实例的时候要加上“the”。

分类是我们认识世界的基础

分类决定属性,一个分类的属性有两种来源:从父类那儿继承的和自己特殊的。当然这个分类也会有孩子继承他的属性。

分类决定方法,道理是一样的,不一样的类可以有不同属性。重写是一种继承中的变异,大规模重写就没必要分类了;多态是对方法的封装,以便模糊调用,

在实际中,操作分类、属性和继承关系的难度很大。我们很多程序员讨厌继承,觉得继承对程序灵活性没好处,根本上是我们对业务没有系统化掌握,导致业务和技术架构总是变化。一个真正领域业务架构专家是不会总去更改系统类别结构的。

对于成熟和不成熟的业务可以分开处理,成熟了就分类,不成熟就都分扁平类,阶段性认识清楚了再重构,这样能更好地完成开发。

类比是认识世界的方法

类别决定了基本特征的继承,许多非常抽象的事物通过类比和归类的方式能够迅速带给人非常清晰的印象。例如一部电影在前期策划时,导演需要和投资方、制片人交流,还需要和演员、道具、服装、音乐等多个专业部门打交道,大家都想知道自己工作目标是什么。这时导演的类比能力就显得非常重要,例如电影《异形》在拍摄前,大家都不知道导演詹姆斯卡梅隆到底想要拍什么,他想了很久说我要拍一部太空版的《大白鲨》,神秘、恐怖、压抑、阴暗的气氛迅速涌现出来,只不过场景是在太空中。于是各个岗位的人立刻都明白自己的工作该做什么了。

大白鲨是什么类别的电影

在好莱坞吴宇森的电影已经形成一种特殊类别,被称为“Woo movie”,提到这个风格的电影,大家脑海中就会联想到兄弟情、枪战、白鸽、风衣等场景和对象。所以类别是人类形成思想概念的重要因素。仅有类别还不够,还要把这个类别的属性准确地描述出来,才能更好勾画出这个个体的特征。

你看过几部Woo movie?

面向对象的意义不仅仅是我们观察世界的条理更清晰,更为重要是的,这种方法还把事物的内在机理和外在表现进行了分割,使得程序员之间的大范围协作成为可能。

这就是我们说的“封装”。

我们会使用手机,可是我们不知道手机和基站是如何通讯的,也不需要知道手机是如何制造的,我们需要知道的是手机如何操作就可以。这样程序员就可以像盖房子一样,使各种有明确功能和使用接口程序拼接起来,而不用深入研究其机理,并且能够保证最终集成起来的程序具有较高的质量水平。

这就是面向对象。面向对象的方法能够让世界更有条理。我会在后续从哲学思想、对象关联和对象组成几个方面再做单独的介绍。

这里是【博士聊IT】,感兴趣请加关注。

「博士聊IT」一文看懂编程的本质,程序员有前途么?

中国为什么没有自己的编程语言?哲学、数学和语言学基础是关键

「博士聊IT」信息化是买不来的!特斯拉为啥不用SAP

「博士聊IT」信息化建设效率为啥这么低?一文看透本质

oop编程思想理解,oop思想

java面试提问:什么是OOP?

OOP全称Object Oriented Programming,是指面向对象程序设计,是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。

面向对象编程技术的关键性观念是它将数据及对数据的操作行为放在一起,作为一个相互依存、不可分割的整体——对象。对于相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。面向对象编程就是定义这些类。

扩展资料:

OOP的优缺点:

1、OOP 的优点:使人们的编程与实际的世界更加接近,所有的对象被赋予属性和方法,结果编程就更加富有人性化。

2、OOP 的也有缺点,就 C++ 而言,由于面向更高的逻辑抽象层,使得 C++ 在实现的时候,不得不做出性能上面的牺牲,有时候甚至是致命的 。

参考资料:百度百科-OOP

oop编程思想理解,oop思想

什么是OOP

OOP即面向对象程序设计,全称为Object Oriented Programming,是一种计算机编程架构。其本质是以建立模型体现出来的抽象思维过程和面向对象的方法,模型是用来反映现实世界中事物特征的。

面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。在面向对象的程序设计中,对象是组成程序的基本模块。

扩展资料:

面向对象程序设计的优点:

1、数据抽象的概念可以在保持外部接口不变的情况下改变内部实现,从而减少甚至避免对外界的干扰;

2、通过继承大幅减少冗余的代码,并可以方便地扩展现有代码,提高编码效率,也减低了出错概率,降低软件维护的难度;

3、结合面向对象分析、面向对象设计,允许将问题域中的对象直接映射到程序中,减少软件开发过程中中间环节的转换过程;

4、通过对对象的辨别、划分可以将软件系统分割为若干相对为独立的部分,在一定程度上更便于控制软件复杂度;

5、以对象为中心的设计可以帮助开发人员从静态(属性)和动态(方法)两个方面把握问题,从而更好地实现系统。

参考资料来源:百度百科-OOP

免责申明:以上内容属作者个人观点,版权归原作者所有,不代表恩施知识网立场!登载此文只为提供信息参考,并不用于任何商业目的。如有侵权或内容不符,请联系我们处理,谢谢合作!
当前文章地址:https://www.esly.wang/jiankang/40837.html 感谢你把文章分享给有需要的朋友!
上一篇:和假小子谈对象,早恋倾向正常吗 下一篇:女人阴道松弛是什么原因

文章评论