通常会被问到,什么事OOD,然后大部分人期待的答案比较死板,继承、封装、多态!懂这个的人多的去了,有什么好问?回答出来的人是否拿着Java又去做一些面向过程的勾当?
计算机革命起源于机器,因此编程语言的产生始于对机器的模仿;因为机器只认得0和1,所以所有的编程语言都得提供一种抽象机制,人们解决问题的复杂性取决于抽象的类型和质量,汇编语言就是对机器码的轻量级抽象,然后像C一样的“命令式”语言是对汇编的抽象;人们为了让计算机去解决问题就需要用这些语言,本质是在把问题基于计算机的抽象结构给出解决方案,这里涉及问题空间和解空间这两个元素:
第一:问题空间
现实世界存在的问题,需要解决,具有其问题的结构特征;特征可以理解为现实世界的模拟抽象;始于人类对自然界分解,组织成的各种概念和关系;因此符合人类的思维方式,容易被人类理解;
第二:解空间
计算机的结构构成的空间,是问题最终得以处理为结果的地方,解空间的每一个解也是人类组织创建,但思想出发点是计算机的比较底层的抽象所组织的,可以认为,这类抽象结果,是一种基于计算机的建模过程;第一段提到面向过程的勾当,就是用高级过程语言抽象的思维去解决问题;因此不可否认,Java也是需要过程性元数据的;
面向对象:
因此,基于解空间,以计算机思维解决问题这类操作是费时费力的,而面向对象就是一种特别的只针对待解决问题的建模;
、、、、待续 5.11
原文:https://www.cnblogs.com/iCanhua/p/9024136.html