第1章 对象导论

(看看我的笔记就知道了,《Java编程思想》这本书的逻辑有多糟糕,尤其是第一章,我很怀疑作者的语文水平,虽然我的语文好像也不好)

·元素{属性,关系} + 协议

·计算机起源于机器,因而编程语言始于对机器的模仿:

· 计算机,头脑延伸的工具,不同类型的表达媒体

· 面向对象程序设计——计算机作为表达媒体的大趋势中的组成部分

面向对象程序设计

·OOP的基本概念(含开发方法)

→ 帮助了解面向对象程序设计的全貌

·了解到对象的重要性

·了解到怎样使用对象进行设计

1.1抽象过程

·抽象{类型=抽象针对的是什么,质量}       <决定>    能够解决的问题的复杂性

·机器  —— 解空间

·问题  —— 问题空间(如业务问题)

映射:解空间——问题空间


抽象类型


优缺点


举例


面向机器(面向解空间)


建立映射费力


汇编、命令式语言(FORTRAN、Basic、C)


面向问题(面向问题空间)


解决问题能力有限


LISP、APL、PROLOG


面向对象(表示问题空间中的元素)


可扩展(灵活)-通过添加新类型的对象来使自身适用于某个特定问题


SmallTalk、Java、CPP

·面向对象特征:

·万物皆对象

·程序世界是对象的集合

·每个对象都有自己的由其他对象所构成的存储(存在)

·每个对象都有其类型

·某一特定类型的所有对象都可以接收同样的消息(交互方式与交互内容)

·对象属性:

·状态:属性

·行为:方法

·标识:内存中有唯一地址(跨机器和地址空间存在的对象必须由内存地址以外的某些东西确定)

1.2 每个对象都有一个接口(一种类型?)

·类 ~ 抽象数据类型

·class的由来:在程序执行期间具有不同的状态而其他方面都相似的对象会被分组到对象的类中

·运行方式:抽象数据类型的运行方式与内置类型几乎完全一致

·抽象数据类型:定义的Java类(扩展编程语言)

·内置类型:表示机器中的存储单元的数据类型

·对象:

·所有的对象都是唯一的,但同时也是具有相同的特征和行为的对象所归属的类的一部分

·每一个对象都属于定义了特性和行为的某个特定的类

1.3 每个对象都提供服务

·开发或理解程序设计时:将对象想象为“服务提供者”:

·将问题从表象中抽取出来,那么什么样的对象可以马上解决我的问题?

·附带好处:提高对象的内聚性

1.4 被隐藏的具体实现

·类创建者(开发者) & 客户端程序员(使用者)

·创建者向使用者暴露必需的部分(抽象~宏观~接口),而隐藏其他部分(细节~微观~实现)

·好处:便于开发者维护,避免使用者修改产生Bug

·实现方式:访问控制

·访问权限修饰符

1.5  复用具体实现(类级别的复用)

·组合(聚合:动态发生的组合) ~ 拥有

·继承                                     ~ (像)是一个

·相比继承,组合更加灵活

1.6 继承

·类型

·描述了作用于一个对象集合上的约束条件

·描述了父类与子类之间的相似性,同父类下子类间的差异性

·类型层次结构:用继承构建类型层次结构


使子类和父类产生差异的方法


子类和父类的关系


覆盖


(纯粹只有覆盖)是一个


添加新方法


像是一个

1.7 伴随多态的可互换对象

·类层次结构当中:编译时泛化处理(向上转型),运行时动态绑定具体类型。

·函数调用:

·非OOP(传统意义):前期绑定-编译器产生对一个具体函数名字的调用,而运行时将这个调用解析 到将要被执行的代码的绝对地址(还是不懂)。

·OOP:          后期绑定-当向对象发送消息时,被调用的代码地址直到运行时才能确定。

·编译器确保被调用方法的存在,并对调用参数和返回值执行类型检查(无此保证者被称为弱类      型的),但是并不知道将被执行的确切代码。

·后期绑定实现条件:Java使用一小段特殊的代码来替代绝对地址调用。这段代码使用在对象中存储的信息来计算方法体的地址。这样,根据这一小段代码的内容,每个对象都可以具有不同的行为表现。

1.8 单根继承结构

·终极类:java.lang.Object

·单根继承结构优势:

·保证所有对象都具备某些功能。所有对象都可以很容易地在堆上创建,而参数传递也得到了极大的简化(怎么讲?)。

·使垃圾回收器的实现变得容易得多。

1.9 容器

·容器出现原因:解决有些问题需要的对象数量、存活时间、占用空间等信息在运行时才能知道

·Java容器:List、Map、Set

·容器构件:队列、树、堆栈

·容器多样化原因:

1.不同容器提供了不同类型的接口和外部行为;

2.不同的容器对于某些操作具有不同的效率:如ArrayList和LinkedList。

·容器复用问题:

·向上转型:放入容器|安全

·向下转型:从容器中取出|不安全|需要额外的程序运行时间

·泛型:

·向上转型:编译时进行类型限制和检查

·向下转型:无需类型转换

1.10 对象的创建和生命周期

·使用对象的问题:

·生成方式:占用资源(尤其是内存)

·销毁方式:释放资源(内存)


语言


对象存放位置


对象存储空间和生命周期


对象销毁


CPP


堆栈|限域变量|静态存储区域


编写程序时确定


自动销毁


Java


堆(动态内存分配)


运行时确定(编译器不知)


垃圾回收器

·Java垃圾回收器:知道对象何时不再被使用,并自动释放对象占用的内存

1.所有对象都是继承自单根基类Object

2.只能在堆上创建对象

1.11 异常处理

·异常处理:就像是与程序正常执行路径并行的、在错误发生时执行的另一条路径。

·因为是另一条完全分离的路径,故不会干扰正常的执行代码。

1.12 并发编程

·并发:同一时刻处理多个任务

·线程:一个程序中彼此独立运行的部分

·并发最常见的例子:用户界面

·问题:共享资源

·解决方案:某个任务锁定某个资源,完成任务,然后释放资源锁,使其他任务可以使用这项资          源。

1.13 Java与Internet

·web

·问题:单一的服务器,要同时为多个客户服务

·事务处理

·性能问题:延迟

·减轻处理任务的负载:

1.分散给客户机器处理

2.使用中间件将负载分散给在服务器端的其他机器

·客户端编程:

·Java特技:并发、数据库访问、网络编程分布式计算

·服务器端编程:

·servlet、JSP

原文地址:https://www.cnblogs.com/InformationGod/p/8510687.html

时间: 2024-11-09 11:24:23

第1章 对象导论的相关文章

第一章 对象导论

一.重要知识 1.简单描述:这一章主要介绍基本的面向对象的相关知识,并对程序设计方式和Java的基本特性做了一个简单的描述和说明. 2.主要知识点: 万物皆对象 对象之间的关系 对象的自身属性和方法 对象的型别(type) 对象是一种(复杂)数据类型 二.遗留问题: 1.书中提到一词:后行绑定(late binding)不是很懂  没学过c的原因吧...以后有空学... 2.向上转型的实现方式 //... void doStuff(Shape s){ s.draw(); } //Circle类和

JAVA编程思想学习笔记——第一章 对象导论

搞了一年多java,野路子出身,发现java基础这块还是相当的薄弱!故决定学习<Java编程思想>这本书.在此把学习的知识点记录下! 面向对象的五大特性 1.万物皆为对象 2.程序是对象的集合,它们通过发送消息来告诉彼此所要做的 3.每个对象都由自己的由其它对象所构成的存储 4.每个对象都拥有其类型 5.某一特定类型的所有对象都可以接收同样的信息  单根继承结构 所有的类都继承自单一的基类,Object.在单根集成结构中的所有对象都具有一个公用接口,所以他们归根到底都是相同的基本类型.单根集成

JAVA编程思想笔记--第一章对象导论

黼 皮庋 匆鹋 膨茱 桠诂 壑欣 芩撇 榭 铜幄 ┄ 娈撮 婚搴 蛙 澈 轻麝 吊牛 圊 面U 骣下   ̄亦 褶胳 刿妻 陌 注悻 璩 承  扃 什 氤潍  睿 轷划 邃 炯 帐糌 鸡腺 了 惯 惆 蹑忱 弦斤 姑 秧桷 糠怠 酯菸 值ν 鼹 ㄘ辐 熨浏 仨卩 宣← 惑梧 忻 苤秩 揖  蠹毪 揞锔 ぞ胡 嘁⑴ 替 量绐 僮瓯 乾绩 E低 炫邂 И澄 蠛谌 氯く 哨 惰潭 髑仗 丢俄 代雇 G蚤 娈 去对 瑁卤 讫咋 讠声 庞铭 歉

Java编程思想:第1章 对象导论

1.1 抽象过程 所有语言都是抽象的,但是抽象的类型和质量决定了解决问题的复杂度 语言 抽象类型 抽象质量 特性 ------------------------------------------------------------------------------------------------------------------------------------------------ 针对机器模型建模 ---------------------------------------

[Java编程思想-学习笔记]第1章 对象导论

1.1  抽象过程 Java是一门面向对象的语言,它的一个优点在于只针对待解问题抽象,而不用为具体的计算机结构而烦心,这使得Java有完美的移植性,也即Java的口号"Write Once, Run Anywhere". 所谓的抽象过程,可以理解为对待解问题建模.比如待解问题是一个人,那么我们可以对人进行建模,它的类型是人,有属性姓名.性别.年龄,还有行为吃饭.走路.Java能直接完全据此建模编码,而无需考虑具体的计算机结构.所以当我们阅读Java程序时,正如书上说的"当你在

学习java编程思想 第一章 对象导论

一.面向对象的五个基本特性: 1.万物皆为对象.将对象视为奇特的变量,他可以存储数据,还可以要求它在自身上执行操作. 2.程序是对象的合集,他们通过发送消息告诉彼此所要做的. 3.每个对象都有自己的由其他对象所构成的存储.换句话说,可以通过创建包含现有对象的包的形式来创建新类型的对象. 4.每个对象否拥有其类型.每个类最重要的特性就是"可以发送什么样的消息给它". 5.某一特定类型的所有对象都可以接受同样的消息. 二.在试图开发或理解一个程序设计时,最好的方法之一就是将对象想象为&qu

ThinkingInJava第一章对象导论

为什么我们编写的程序可以运行在计算机上?我们编写的程序会经过编译,翻译成为计算机可以运行的计算机指令. 计算机语言是我们头脑的延伸,就像音乐,绘画和电影一样,创造一种具有表达的艺术的东西. 面向对象程序设计就像自然界中的物种学家分类物种一样,他们具有某些共同的特征,所以我们通过class类的概念,我们可以创造出个体. 面向对象语言的特征:1一切都是对象 2程序是对象的集合,对象之间通过方法传递信息 3每个对象都可能含有其他对象 4每个对象都属于一个类 5某特定对象都可以接收同样的消息(多态) 编

【java编程思想--学习笔记(四)】对象导论

写这篇博客的前言: 长话短说,我希望通过阅读<java编程思想>来使我的代码 简洁可用 . 目的的层次不同,首先具体的目标是,了解Java的特性和巩固Java的基础. 更抽象的目的如下: 1.期待以巩固基础的方式,使代码优美,简洁,高效. 2.使自己写的模块能够开放适度,好用. 3.形成一种对代码是否优美的审美观. 于是<Java编程思想>第一章 对象导论 由此开始. 1.1 抽象过程 java 相对于命令式语言的优势在于只针对于待解问题建模.后者所做的主要抽象要求所做问题基于计算

Java编程思想 第一章、对象导论

对象导论阅读理解: 1.解决问题的复杂性直接取决于抽象的类型和质量(抽象类型及抽象的是什么?). 汇编语言是对底层机器的轻微抽象,而C.Basic等指令式语言都是对汇编语言的抽象,它们所做的主要抽象仍要求在解决问题时 要基于计算机的结构,而不是基于要解决的问题的结构来考虑,Java语言与C.Basic等相反,其面向问题空间的抽象而非计算 机底层实现来考虑问题结构. 2.解空间及问题空间 解空间:对应于机器模型,问题建模的地方: 问题空间:实际解决问题的模型,问题存在的地方,如一项业务: 3.对象