`

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 最重要的概念之一

分享到:
评论

相关推荐

    java1_chapter1_java_base.zip

    "java1_chapter1_java_base.zip"这个压缩包文件显然包含了Java初学者的第一课源代码,旨在教授基础的Java知识。让我们深入探讨一下Java编程的基础,以及在这个阶段你可能会学到的关键概念。 首先,Java是一种面向...

    Chapter3_Java_class_info.zip_西北大学

    "Chapter3_Java_class_info.zip"是针对西北大学计算机专业学生的一个学习资源,特别适合初学者入门,帮助他们理解和掌握Java类库的基础知识。 Java类库主要由Java标准版(Java SE)和Java扩展框架(Java Extension ...

    chapter-3-Computer_Vision_代码示例_深度学习_机器学习理论_入门教程_paddlepaddle_

    标题中的"chapter-3-Computer_Vision_代码示例_深度学习_机器学习理论_入门教程_paddlepaddle_"揭示了这是一个关于计算机视觉的深度学习教程,特别关注使用PaddlePaddle框架。这个教程可能包括计算机视觉的基础知识...

    java1_chapter7_object_class.zip

    Java入门-Java学习路线课程第七课:类和对象源码。 如有问题和建议,请 联系!博客地址为:https://blog.csdn.net/atgfg/article/details/101017171

    jpa.zip_Java EJB

    而JPA(Java Persistence API)是Java EE平台中的持久化框架,它简化了对象关系映射(ORM),使得Java开发者可以更加方便地操作数据库。 在"ejb.zip_Java EJB"的学习资料中,我们关注的是EJB和JPA的结合使用。EJB 3...

    sr_notes_aaa

    4. "Chapter4_ClassesObjects.txt" - 解释面向对象编程的概念,如类、对象、封装、继承、多态等。 5. "Chapter5_ArraysCollections.txt" - 介绍数组、集合框架(ArrayList、LinkedList、HashSet等)的使用。 6. ...

    Android初级课件--Chapter01 -Android快速入门.rar

    在本课程"Android初级课件--Chapter01 - Android快速入门"中,我们将全面了解Android开发的基础知识,为你的Android编程之旅打下坚实基础。这个压缩包包含了丰富的学习资源,帮助初学者快速掌握Android应用开发的...

    Chapter01-Intro.zip_java programming

    标题 "Chapter01-Intro.zip" 暗示着这是一个关于编程入门的章节,特别是针对Java编程语言。这个压缩包包含的"Chapter01-Intro.pdf"文件很可能是一个详细的教程或者指南,旨在引导读者进入Android应用程序开发的世界...

    chapter01.rar

    《SpringBoot入门实战:从"chapter01.rar"探索初识之路》 SpringBoot作为Java领域的一款热门框架,因其简洁的配置、快速的开发特性深受开发者喜爱。在本篇文章中,我们将通过分析"chapter01.rar"这个压缩包中的内容...

    英文版的JAVA课件

    首先,从"Chapter1_JAVA.ppt"开始,这是关于Java入门的基础知识,可能包括Java的历史、为什么选择Java、Java平台的组成(如JVM、JRE和SDK)以及Java程序的基本结构。这一部分还会讲解如何安装开发环境,比如设置Java...

    VC++ 入门经典课后练习题(chapter03)笔记

    在深入探讨VC++入门经典课后练习题(chapter03)中的知识点之前,先要理解C++编程语言的基础。C++是一种强大的、面向对象的编程语言,被广泛应用于系统开发、游戏编程、软件工程等多个领域。它继承了C语言的高效性,并...

    SSM chapter01.zip

    在"SSM chapter01.zip"这个压缩包中,我们主要探讨的是MyBatis的简单应用,包括如何搭建MyBatis环境以及编写相关的配置文件。 MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免...

    python源码chapter_14.zip

    Python编程是目前非常受欢迎的编程语言之一,尤其适合初学者入门。"外星人大战"是一个经典的Python编程项目,它可以帮助新手理解游戏开发的基本概念,同时加深对Python语法和编程逻辑的理解。在这个项目中,我们可以...

    oom.rar_objective oriented _oom

    "OOM_A2007-Ch01_4UP.pdf"和"OOM_A2007-Ch01_2UP.pdf"可能是课程的入门部分,介绍了OOP的基本概念和背景,可能包括OOP的历史、为什么选择OOP以及它在软件开发中的应用。 "OOM_A2007-Chapter2_2UP.pdf"和"OOM_A2007-...

    visual C++ 2013入门经典 代码

    《Visual C++ 2013入门经典》是针对初学者的一本权威指南,由Ivor Horton撰写,清华大学出版社出版。这本书旨在帮助读者快速掌握Microsoft的C++编程环境——Visual C++ 2013。随书附带的代码文件是学习过程中非常...

    (源码下载)jdk6.0从入门到精通-----chapter2--输入输出,克隆对象

    标题 "(源码下载)jdk6.0从入门到精通-----chapter2--输入输出,克隆对象" 提供了我们要探讨的主题,即Java中的输入输出流(I/O Stream)和对象克隆。在这个章节中,我们将深入理解这两个关键概念。 **输入输出流...

    chapter01.rar精通Qt4编程(第2版)

    总的来说,"chapter01"作为入门篇,旨在帮助读者建立对Qt的基本认识,理解其核心机制,并逐步建立起使用Qt进行软件开发的信心。通过这一章的学习,你将能够搭建起开发环境,编写出简单的Qt应用程序,并具备进一步...

    无线互联Objective-C

    总之,《无线互联Objective-C》涵盖了Objective-C编程中的基础到高级概念,包括面向对象特性、数据持久化、内存管理以及对象间通信等关键知识点,是iOS开发者入门和进阶的宝贵资源。通过深入学习和实践,开发者能够...

    C#入门经典(第四版)源码chapter19-36,除了chapter23,32

    《C#入门经典》第四版是一本广受欢迎的编程教程,涵盖了C#语言的基础到进阶内容。这个压缩包包含了该书第19至36章的源代码,但值得注意的是,第23和32章的源码并未包含在内。通过分析这些章节的源码,我们可以深入...

    Chapter01.rar_WEB开发_C#_

    在本压缩包“Chapter01.rar_WEB开发_C#_”中,主要包含了关于ASP.NET 2.0数据库入门的经典源代码,尤其适用于初学者。ASP.NET是微软开发的一个用于构建Web应用程序的框架,而C#作为.NET Framework的主要编程语言,是...

Global site tag (gtag.js) - Google Analytics