计算机革命起源于机器,因此,编程语言的产生也始于对机器的模仿。但是计算机并非是机器那么简单。计算机是头脑延伸的工具,同时还是一种不同类型的表达媒体。因此,这种工具看起来已经越来越不像机器,而更像我们头脑的一部分。面向对象程序设计(Object-oriented Programming,OOP)便是这种以计算机作为表达媒体的大趋势众的组成部分。
1.1抽象过程
汇编语言是对底层机器的轻微抽象。接着出现的“命令式”语言(C等)都是对汇编语言的抽象。这些语言在汇编语言基础上有了大幅的改进,但是它们所作的主要抽象仍然要求在解决问题时要基于计算机的结构,而不是基于所要解决问题的结构来考虑.程序员必须建立起在机器模型和十几待解决问题的模型之间的联系。
面向对象方式(OOP)使得程序员不会受限于任何特定类型的问题。我们将问题空间的元素及其在解空间众的表示称为“对象”。(OOP)允许根据问题来描述问题,而不是根据运行解决方案的计算机来描述问题。
Alan Kay曾经总结了面向对象语言的五个基本特性。
- 万物皆为对象
- 程序是对象的集合,它们通过发送消息来告知彼此所要做的
- 每个对象都有自己的由其他对象所构成的存储
- 每个对象都拥有其类型
- 某一特定类型的所有对象都可以接收同样的消息
Booch对对象提出了一个更加简洁的描述:对象具有状态,行为,标示
1.2每个对象都有一个接口
创建抽象数据类型(类 class)是面向对象程序设计的基本概念之一。因为类描述了具有相同特性(数据元素)和行为(功能)的对象集合,所以一个类实际上就是一个数据类型,程序员通过定义类来适应问题,而不再被迫只能使用现有的用来表示机器中的存储单元的数据类型。
怎样才能获得有用的对象呢?必须有某种方式产生对对象的请求。每个对象都只能满足某些请求,这些请求由对象的接口(interface)所定义,决定接口的便是类型。
1.3每歌对象都提供服务
当正在试图开发和理解一个程序设计时,最好的方法之一就是将对象想象微“服务提供者”。这样做的好处:它有助于提高对象的內聚性
在良好的面向对象设计中,每个对象都可以很好的完成一项人物,但是它并不试图做更多的事。
1.4被隐藏的具体实现
将程序开发人员按照角色分为类创建者和客户端程序员。类创建者的目标是构建类,这种类只向客户端程序员暴露必须的部分,而隐藏其他部分。
- 访问控制的第一个存在原因就是让客户端程序员无法触及他们不应该触及的部分
- 访问控制的第二个存在原因就是允许库设计者可以改变类内部的工作方式而不用担心会影响客户端程序员
Java用三个关键字在类的内部设定边界:public,private,protected
Java还有一种默认的访问权限,这种权限通常被称为包访问权限因为在这种权限下,类可以访问在同一个包(库构件)中的其他类成员,但是在包之外,这些成员如同指定了 private 一样。
1.5复用具体实现
代码复用是面向对象程序设计语言所提供的最了不起的优点之一
- 最简单的复用某歌类的方式就是直接使用该类的一个对象
- 此外也可以将那个类的一个对象置于某个新的类众,因为是在使用现有的类组合成新的类,所以这种概念被称为组合(composition)
由于继承在面向对象程序设计众如此重要,所以它经常被过分高度强调。实际上,在建立新类时,应该首先考虑组合,因为它更加简单灵活。
本文首发于: 一切都是对象-读书笔记-蜘蛛网间
分享到:
相关推荐
C语言学习导论-笔记-C语言学习
物联网导论--第1章31.pptx
算法导论第三版练习题15.2-2的C++实现方案
人工智能导论作业-用 PyTorch 实现的中文文本情感分类网络机器学习期末作业.zip个人98分期末大作业项目,代码完整下载可用。主要针对计算机相关专业的正在做课程设计和期末大作业的学生和需要项目实战练习的学习者。...
算法导论--编程中经典的经典,值得每一位程序员用心品读
物联网导论--第13章_物联网中的智能决策v1135.pptx
《地理信息系统导论--陈建飞》是一本深入探讨GIS技术的专业著作,旨在为读者提供全面的GIS理论知识和实践应用。GIS,全称为Geographic Information System,它整合了多种科学领域,包括计算机科学、信息科学、测绘...
《人工智能导论》是深入理解和掌握人工智能核心概念与技术的重要教材。这门学科的起源可以追溯到1956年,由斯坦福大学教授约翰·麦卡锡在一次学术会议上首次提出“人工智能”这一概念,标志着AI作为一个独立学科的...
《算法导论--教师手册》是一本针对计算机科学专业学生及教师的重要参考书籍,由Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest和Clifford Stein四位作者共同编撰,第二版由Thomas H. Cormen、Clara Lee...
电子信息专业 - 考研复试笔记分享(软件工程导论-第六版 + 管理信息系统-马慧) 包括: 软件工程导论-第六版 知识点 管理信息系统-马慧 知识点 编译原理 主要知识点 计算机网络 主要知识点 数据库 知识点及常规操作
电子商务导论--第04章《电子商务——管理与社交网络视.pptx
汪小帆的网络科学导论一书PPT,一般缺少了这个第七章。
机器学习导论作业-基于matlab实现三层卷积神经网络实现手写数字识别源码.zip 【优质项目推荐】 1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答...
计算机导论--实验5.zip
C语言是一种广泛应用于系统编程、应用编程、嵌入式开发以及游戏引擎开发等领域的高级编程语言。它由Dennis Ritchie在20世纪70年代为UNIX操作系统开发,以其高效、灵活和强大的功能而闻名。《C语言--程序设计导论》...
数据科学与大数据技术导论-第一章导论 中南大学张祖平老师课件PPT
软件工程导论课设-超市管理系统课程设计.docx软件工程导论课设-超市管理系统课程设计.docx软件工程导论课设-超市管理系统课程设计.docx软件工程导论课设-超市管理系统课程设计.docx软件工程导论课设-超市管理系统...
软件工程导论课设-超市管理系统课程设计.pdf软件工程导论课设-超市管理系统课程设计.pdf软件工程导论课设-超市管理系统课程设计.pdf软件工程导论课设-超市管理系统课程设计.pdf软件工程导论课设-超市管理系统课程...
工程导论--项目开发方案.pdf
NLP导论作业-句法分析器+数据+源代码+文档说明(高分项目),含有代码注释,满分大作业资源,新手也可看懂,期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。该项目可以作为课程设计期末大作业...