Chapter01_对象入门

计算机革命起源于机器。因此程序语言的起源似乎就是为了看起来要像那种机器。
但是,计算机同机器相比毕竟还是存在很大区别的,因为它们属于思想放大工具。正如斯蒂芬-乔布斯常说的那样 ------“它是思想的坐骑”,是一种不同种类的表达媒体。因此,这种工具越来越不象一种机器而是逐渐倾向于成为我们思想的一部分。同时,它也越来越象其他传统的表达方式比如书写绘画雕刻动画和电影等等。在计算机向一种全方位的思想表达载体的转变过程中,面向对象编程OOP 正是一股重要的促进力量。
1.1 抽象的进步
所有程序语言的最终目的都是提供一种抽象方法。一种较有争议的说法是解决问
题的复杂程度直接取决于抽象的种类及质量这儿的种类是指准备对什么进行抽象
汇编语言是对基础机器的少量抽象后来的许多命令式语言如FORTRAN BASIC
和C 是对汇编语言的一种抽象与汇编语言相比这些语言已有了长足的进步但它们的
抽象原理依然要求我们着重考虑计算机的结构而非考虑问题本身的结构在机器模型位
于方案空间与实际解决的问题模型位于问题空间之间程序员必须建立起一种
联系这个过程要求人们付出较大的精力而且由于它脱离了编程语言本身的范围造成程
序代码很难编写而且要花较大的代价进行维护由此造成的副作用便是一门完善的编程
方法学科
为机器建模的另一个方法是为要解决的问题制作模型对一些早期语言来说如LISP
和APL 它们的做法是从不同的角度观察世界所有问题都归纳为列表或所
有问题都归纳为算法PROLOG 则将所有问题都归纳为决策链对于这些语言我们认为
它们一部分是面向基于强制的编程另一部分则是专为处理图形符号设计的每种方法
都有自己特殊的用途适合解决某一类的问题但只要超出了它们力所能及的范围就会显
得非常笨拙面向对象的程序设计则在此基础上跨出了一大步程序员可利用一些工具表达问题空间
内的各种元素由于这种表达非常普遍所以不必受限于特定类型的问题我们将问题空
间中的元素以及它们在方案空间的表示物称作对象Object 当然还有一些在问题空
间没有对应体的其他对象通过添加新的对象类型程序可进行灵活的调整以便与特定的
问题配合所以在阅读方案的描述代码时会读到对问题进行表达的话语与我们以前见过
的相比这无疑是一种更加灵活更加强大的语言抽象方法总之OOP 允许我们根据问
题来描述问题而不是根据方案然而仍有一个联系途径回到计算机每个对象都类似一
台小计算机它们有自己的状态而且可要求它们进行特定的操作与现实世界的对象
或者物体相比编程对象与它们也存在共通的地方它们都有自己的特征和行为
有些语言设计者指出面向对象的程序设计本身并不足以方便地解决全部编程问题并
提倡将各种不同的方法集中到一块儿最终研究出一种多态程序设计语言
Alan Kay 为我们总结出了Smalltalk 的五大基本特征这是第一例取得成功的面向对象
程序设计语言也是Java 的基础语言通过这些特征我们可理解纯粹的面向对象程
序设计方法是什么样的
(1) 所有东西都是对象可将对象想象为一种新型变量它保存着数据但可对那
个对象发出请求要求它对自己执行一些操作理论上讲可从要解决的问题身上提取
出所有概念性组件再在程序中把它表示成一个对象
(2) 每个程序都是一大堆对象的组合通过消息的传递一个对象可告诉另一个对象该
做什么为了向对象发出请求需向那个对象发送一条消息更具体地讲可将消息想
象为一个调用请求它调用的是从属于目标对象的一个子例程或函数
(3) 每个对象都有自己的存储空间可容纳其他对象换句话说通过封装一个现有的
对象还可生成一个新对象因此即使一个非常复杂的程序在我们面前也显得异常简单
一切都是对象
(4) 每个对象都有一种类型根据语法每个对象都是某个类的一个实例其
中类Class 是类型Type 的同义词一个类最重要的特征就是能将什么消息
发给它
(5) 同一类所有对象都能接收相同的消息这实际是别有含义的一种说法大家不久便
能理解由于类型为圆Circle 的一个对象也属于类型为形状Shape 的一个对象
所以一个圆完全能接收形状消息这意味着可让程序代码统一指挥形状令其自动控制
所有符合形状描述的对象其中自然包括圆这一特性称为对象的可替换性是
OOP 最重要的概念之一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值