随笔-20  评论-89  文章-1  trackbacks-0
Java与UML面向对象程序设计 TP312JA316
Bruce E.Wampler

Chapter 2 对象的精髓
object(对象)
面向对象的基本单位。对象是一个拥有属性、行为和标识符的实体。
对象是类的实例,对象的属性和行为在类定义中定义。

class(类)
类是一组对象的描述,这一组对象有共同的属性和行为。在概念上,类和非面向对象程序设计语言中的抽象数据类型比较相似,但是由于类同时包括数据结构和行为,所以它更为全面。
类的定义描述了这个类的所有对象的属性,也描述了实现该类对象的行为的类的方法。

面向对象技术是使用对象将真实世界的系统在软件中建模的技巧,对象是核心概念,它是真实世界的实体或概念的软件模型。
类是对所有该类的对象的特征的描述或定义;对象是类的一个实例或成员,当程序运行时,对象被创建并存在。
编写成功的OO程序,必须坚持以对象的观点思考!!!

2.1 什么是面向对象系统
object orientation(面向对象技术)
一种软件开发方法,包括利用对象进行抽象、封装的类、通过消息进行通信、对象生命周期、类层次结构和多态等技术。

2.1.1 面向对象系统的基本特性
1. 利用对象进行抽象
abstraction(抽象) 真实世界的对象或概念的模型。

2. 封装的类
Encapsulation(封装) 向外界隐藏对象的所有内部细节的过程。在Java中,通过在类定义里面来定义属性和方法的方式,强制实现封装过程。

attribute(属性) 用于保持对象的状态信息。属性可以很简单,只是一个布尔型变量记录开或关;也可以是一个复杂的结构,比如说另一个对象。类的定义描述了类的属性和操作(方法)。
behavior(行为) 外界可见的对象活动。它包括对象如何通过改变内部状态,或向其它对象返回状态信息来响应消息。
method(方法) 针对对象实施的操作或服务,作为类定义的一部分来定义。方法用来实现对象的行为。方法的同义词包括成员函数、操作和服务等。
state(状态) 状态反映了给定对象所有属性的当前值,是经过一段时间的对象行为积累的结果。

3. 通过消息进行通信
消息是指对象是如何进行通信的。
用程序设计术语来说,发送消息是通过调用某个类的方法来实现的;收到消息是通过其它对象调用本对象的类的方法来实现的。
消息驱动的程序执行流。

4. 对象生命周期
对象是动态的实体。一个对象(在程序运行过程中)被创建就称为它被实例化,或受到类定义的约束。经过实例化的类的成员称为对象,或等价的称为实例。

instantiation(实例化) 创建一个给定类的对象实例。实例化一个实例使它从没有变为存在。
instance(实例) 某个特定的对象是一个类的实例。一个实例拥有特定的属性、行为以及唯一的标识符。实例和对象这两个词经常互换使用。
constructor(构造方法) 创建对象并定义其初始状态的操作。对于复杂对象来说,构造方法可能是重要的活动,也可能去调用其它对象的构造方法。
object lifetime(对象生存期) 对象存在的时间,从调用构造方法实例化开始,直到对象不复存在,被Java垃圾收集器终结为止。对象何时被创建是由程序控制的,但是由于Java垃圾收集器工作的方式,应用程序是不能确定对象何时不复存在的。

identity(标识符) 对象具有的能将它与其它对象区分开来的特征或状态。
reference(引用) 其值是一个地址的数据元素。在Java中,所有的对象都是通过引用来访问的。任何对象变量都是对一个真实对象的引用,而非对象本身。
garbage collection(垃圾收集) 对不再使用的内存的自动检测和释放。Java使用垃圾收集器,而不是像C++那样使用显式的析构方法。

5. 类层次结构
创建面向对象程序最重要的方面之一是将类安排到多个层次结构中去。

association(关联) 两个类之间的一种关系。关联表明类的对象之间的相互关系。
hierarchy(层次结构) 类的一种次序。最常见的面向对象层次结构是继承关系和聚合关系。
multiplicity(多重性) 确定对象间关联数量的属性。

第一种:整体/部分层次结构
whole/part(整体/部分) 类之间的一种关系,一个类由其它类的对象组成或容纳了其它类的对象。
has-a(拥有) 一种说明整体/部分关系的方式。整个对象拥有部分。
part-of(部分) 与has-a相反。组件是整体的一部分。

聚合关系中,部分一方的对象可以来去自由;组合关系中,对象是整体的不可缺少的部分。
aggregation(聚合) 一种整合/部分层次关系。一个聚合对象包括(拥有)其它对象,每个被包括的对象被认为是聚合对象的一部分。
composition(组合) 组合是聚合的一种形式,在这种情况下,没有其它组成部分,整体就不能存在。

第二种:泛化/特殊化
实现泛/ 特层次结构的主要机制称为继承。
generalization/specialization(泛化/特殊化) 一种继承层次关系。对于更泛化的超类来说,每个子类都是它的特殊化的类。
is-a(是) 继承层次结构中使用的一个术语。总的来说,子类是(is a)更通用的超类的一种特殊化情况。

overriding(重载) 当子类为其超类的属性和方法指定了新的定义时,它就重载了超类中的定义。重载有时也被称为overloading。在Java中只能重载方法。
default behaviors(缺省行为) 在一个继承层次结构中,超类所定义的行为将缺省的被子类所使用,除非子类对这个行为进行了重载。

inheritance,single(单继承) 当一个子类从单一超类派生而来时,称为单继承。
inheritance,multiple(多继承) 当一个子类从多个超类派生而来时,称为多重继承。Java不支持多重继承,作为替代方式,它提供了接口。
interface(接口) 在Java中,接口规定了一些方法,使用这个接口的类必须实现这些方法。接口只是一个规范,不定义任何实际代码。
implements(实现) 在Java中,类实现接口所要求的代码的一个明确化的过程。

is-a test(是测试) 一种简单的测试,以确定继承关系设计是正确的。如果你不能说子类是(is a)超类的一种,那么这种继承关系可能是不正确的。

6. 多态性
多态是继承关系的特点,它确保这种子类的实例执行正确的行为。
Polymorphism(多态) 多态使得对任何对象自动调用其恰当的方法成为可能。

允许多态现象发生的机制称为动态绑定。对一个指定的方法调用的绑定被推迟到运行时刻完成。
dynamic binding(动态绑定) 在运行时刻绑定定义。
posted on 2006-05-29 16:45 夜舞重金属 阅读(394) 评论(0)  编辑 收藏 引用 所属分类: 面向对象程序设计

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理