对象导论

OOP-面向对象程序设计

1.1 抽象过程

(1)所有的编程语言都提供抽象机制。(2)汇编语言是对底层机器的轻微抽象。(3)“命令式”语言:FORTRAN、BASIC、C等都是对汇编语言的抽象。(4)Smalltalk语言五个特性:1、万物皆为对象。2、程序是对象的集合,它们通过发送消息来告知彼此所要做的。3、每个对象都有自己的有其他对象所构成的存储。4、每个对象都拥有其类型。5、某一特定类型的所有对象都可以接收同样的消息。(5)每一个对象都可以拥有内部数据(状态)和方法(行为),每个对象在内存中有一个唯一的地址。

1.2 每个对象都有一个接口

(1)接口确定了某一特定对象所能发出的请求。

1.3 每个对象都提供服务

(1)将对象看作是服务提供者好处:有助于提高对象内聚性。(2)“高内聚”是软件设计的基本质量要求之一。

1.4 被隐藏的具体实现

(1)将实现隐藏可以减少Bug。(2)在内的内部设定边界-三个关键字:public、private、protected。

1.5 复用具体实现

(1)组合:使用现有的类合成新的类。视为has-a(拥有)关系。可以带来极大的灵活性。(2)聚合:组合是动态发生的。

1.6 继承

(1)父类-超类-基类。子类-继承类-导出类。

1.7 伴随多态的可互换对象

(1)通过导出新的子类而轻松拓展设计能力是对改动进行封装的基本方式之一。这种能力可以极大的改善我们的设计,同事降低软件维护代价。(2)前期绑定:编译器将产生对一个具体函数名的调用,而运行时将这个调用解析到将要被执行的代码的绝对地址,然而在OPP中,程序直到运行时才能确定代码地址。(3)后期绑定:当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保被调用的方法存在,并对调用参数和返回值执行类型检查,但是并不知道将被执行的确切代码。(4)执行后期绑定:Java使用一小段特殊的代码来替代绝对地址的调用,这段代码使用在对象中存储的信息类计算方法体的地址。(5)在Java中,动态绑定是默认行为,不需要添加额外的关键字来实现多态 。(6)向上转型:将子类看作是它的父类的过程。

1.8 单根继承结构

(1)在Java中所有的类都继承自单一的父类-Object.(2)单根继承结构好处:1、所有对象都有一个公用接口。2、保证所有对象都具有某些功能,所有对象可以很容易的在堆上创建,参数传递得到极大地简化。3、试垃圾回收器的实现更容易。4、不会因无法确定对象的类型而陷入间距,对系统级操作(如异常处理)很重要。5、给编程带来更大灵活性。

1.9 容器-集合

(1)Java中,List(用于存储序列),Map(关联数组,用来建立对象间的关联),Set(每种对象类型只持有一个),以及队列、树、堆栈等更多构件。(2)选择容器(集合)的原因:1、不同容器提供了不同类型的接口和外部行为。2、不同容器对于某些操作具有不同的效率。例如两种List的比较:ArrayList和LinkedList。(3)ArrayList:随机访问元素是花费固定时间的操作。(4)LinkedList:随机选取元素需要在列表中移动,代价高昂,访问越靠近表尾的元素,花费时间越长。(5)如果在序列中间插入一个元素,LinkedList开销比ArrayList小。1.9.1 参数化类型(1)向上转型是安全的。(2)向下转型:更泛化的类型转型为更具体的类型。除非知道所要处理的对象类型,否则向下转型几乎不安全。(3)参数化类型-泛型:<数据类型>

1.10 对象的创建和生命期

(1)如何控制生命周期:1、为了追求最大的执行速度,对象的存储和生命周期可以在编写程序时确定,这可以通过将对象置于堆栈(有时被称为自动变量或限域变量)或静态存储区域来实现。牺牲了灵活性。2、在堆的内存池中动态创建对象,,直到运行时才能知道需要多少对象,晟敏周期如何,以及具体类型。时间远远大于在堆栈中创建存储空间的时间。(2)Java完全采用了动态内存分配方式。每当想要创建新对象时,就要使用new关键字构造对象的动态实例。(3)生命周期:对于允许在堆栈上创建对象的语言,编译器可以确定对象存活时间,并自动销毁它。在堆上创建对象编译器会对它的生命周期一无所知。(4)Java提供了垃圾回收机制,自动发现对象何时不再使用,然后销毁它。(5)垃圾回收器机制作用:1、减少了所必须考虑的议题和必须编写的代码。2、提供了更高层的保障,可以避免内存泄漏问题。

1.11 异常处理:处理错误

(1)异常处理与程序正常执行路径并行,在错误发生时执行另一条路径,所以不会干扰正常的执行代码,是代码编写变得简单。(2)异常不能被忽略,所以它保证一定会在某处得到处理。(3)异常提供了一种从错误状况进行可靠恢复的途径,可以进行校正,恢复程序执行,提高程序健壮性。(4)Java内置了异常处理,而且强制使用它,它是唯一可接受错误报告方式。1.12 并发编程(1)并发:把问题切分成多个可独立运行的部分(任务),从而提高程序响应能力。(2)线程只是一种为单一处理器分配执行时间的手段。(3)并发的隐患:共享资源,多个并行任务访问同一资源,会出现问题。

1.13.1 Web

(1)客户/服务器系统核心思想:系统中有一个中央信息存储池,用来存储某种数据,通常存在于数据库中,可以根据需要发送给人员或者机器集群。(2)服务器:信息存储池、用于分发信息的软件以及信息与软件所驻留的机器或机群的统称。(3)中间件降幅在分散给在服务器端的其他机器,将延迟最小化。提高可维护性。(4)Web就是一台巨型服务器。(5)客户端编程:引入在客户端浏览器中运行程序的能力。

时间: 2024-12-28 05:31:59

对象导论的相关文章

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

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

【Thinking in Java-CHAPTER 1&amp;&amp;2】对象导论&amp;&amp;一切都是对象

JAVA起源 从JDK诞生到现在已经有11年的时间了.沧海桑田一瞬间.转眼11年过去了,JDK已经发布了6个版本.在这11年里诞生了无数和Java相关的技术和标准.现在让我们进入时间隧道,重新回到1995年,再来回顾一下Java的发展轨迹和历史变迁. 一. JDK前传 在这个世界上,熟悉Java历史的人非常多,如果要问一个人Java是从哪年诞生的,也许大多数人都会回答是1995年(这个非常好记,因为微软的Windows95也是在这一年发布的).但事实上Java早在上个世纪90年代初就开始酝酿了.

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

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

Think in Java(一):对象导论

1. OOP的特点 (1) 万物皆为对象; (2) 程序是对象的集合,他们通过发送信息来告诉彼此所要做的; (3) 每个对象都有自己的由其他对象所构成的存储; (4) 每个对象都拥有它的类型; (5) 某一特定类型的对象都可以接收同样的消息; 2. Java比C++简单? (1) Java有垃圾回收器, 不用手动销毁对象; (2) Java使用单根继承; (3) Java只能以一种方式创建对象(在堆上创建); Think in Java(一):对象导论

【Java编程思想】一、对象导论

作为一个电子专业的人,在学习了将近3年的嵌入式技术后,决定投奔移动互联网,在互联网大潮中急流勇进! 为了学习OOP(Object-oriented Programming),为了转向移动互联网,我决定开始学习android开发,那么就从Java开始吧! Java的学习资料很多,在研究几天之后,决定从<Java编程思想>这本书开始. 而在这本书之前,我已经看完了一个培训导师的Java4Android的Java教学视频,看的很快,因为我学过C和C++. 但我的Java水平依旧很差,主要在于面向对象

Java 基础之一对象导论

对象导论 1.1 抽象过程 所有编程语言都提供抽象机制.人们所能解决的问题的复杂性直接取决于抽象的类型和质量. 汇编语言是对底层机器的轻微抽象. 我们将问题空间中的元素及其再解空间中的表示称为对象.这种思想实质是:程序可以通过添加新类型的对象使自身适用于某个特定的问题. 万物皆为对象 可以抽取待求解问题的任何概念化构建表示程序中的对象. 程序是对象的集合 他们通过发送消息来告知彼此所要做的. 每个对象都有自己的由其他对象所构成的存储 每个对象都拥有其类型 某一特定类型的所有对象都可以接收同样的消

一 对象导论

java学习   对象导论 1.对象的抽象过程 所有的编程语言都提供抽象机制.可以认为,解决问题的复杂性直接取决于抽象的类型和质量. ▲面向对象程序设计方式的特性: 1)万物皆对象.你可以抽象待解决问题的任何概念化构件. 2)程序是对象的集合,它们可以通过发送消息来告知彼此所要做的. 3)每个对象都有自己的由其他对象所构成的存储. 4)每个对象都拥有其类型 5)某一特定类型的所有对象都可以接受同样的信息 2.每个对象都有一个接口 接口确定了对某一特定对象所能发出的请求. 3.每个对象都提供服务

对象导论系列---每个对象都至少有一个接口

对象导论系列---每个对象都至少有一个接口 面向对象程序设计主要是用来解决人们实际生产.生活中遇到的问题.通过将现实生活中的问题和解空间中的对象进行映射,并对对象进行抽象.关联.组合.发送消息来具体解决实际问题.现实生活中的实体也都是有自己的特性和行为的,并且每个实体都会与其范围内的其它实体有关系,有的是强关系,有的是弱关系. 下面看下本节的关键性概念(思想) 类:将具有相同特性和行为的一类实体定义为类.当看到类型一词时,可以将其作为类来考虑.因为类描述了具有相同特性(数据元素)和行为(功能)的

对象导论系列---每个对象都提供服务

对象导论系列---每个对象都提供服务 将对象作为服务提供者来看待是一件伟大的简化工具,这不仅在设计过程中非常有用,而且当其他人试图理解你的代码或重用某个对象时,如果他们看出了这个对象所能提供的服务的价值,他会使调整对象以适应其设计过程变得简单得多. 当你正在试图开发或理解一个程序设计时,最好的方法之一就是将对象想像为"服务提供者",程序本身将向用户提供服务,她将通过调用其它对象提供的服务来实现这一目的.你的目标就是去创建或者最好是在现有代码库中去寻找能够提供理想服务来解决问题的一系列对

Java编程思想总结(一)对象导论

Java编程思想总结(一)对象导论 1.1 抽象过程 万物皆对象. 程序是对象的集合(即:类),他们通过发送消息(调用方法)来告知彼此要做的. 每个对象都有自己的由其他对象所构成的存储(引用其他对象或基本类型,即组合). 每个对象都拥有其类型.每个类最重要的区别于其他类的特征就是“可以发送什么样的消息给它”(即调用方法). 某一特定类型的所有对象都可以接受同样的消息. 对象具有状态(成员属性).行为(成员方法)和标识(引用的名称).每个对象在内存中都有唯一的一个地址. 1.2 每个对象都有一个接