面向对象系统分析与开发专题<1>__基本单位-类

1.类与对象

       对象(Object)是系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位。对象可以用来描述要研究的任何事物。从一本书到一家图书馆,单的整数到整数列庞大的数据库、极其复杂的自动化工厂、航天飞机都可看作对象,它不仅能表示有形的实体,也能表示无形的(抽象的)规则、计划或事件。对象由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一独立整体。从程序设计者来看,对象是一个程序模块,从用户来看,对象为他们提供所希望的行为。在对内的操作通常称为方法。

 

       类(Class)是对象的模板。即类是对一组有相同数据和相同操作的对象的定义,一个类所包含的方法和数据描述一组对象的共同属性和行为。类是在对象之上的抽象,对象则是类的具体化,是类的实例。类可有其子类,也可有其它类,形成类层次结构。

如图1所示是类的例子,其中类的名字是Employee,该类有5个属性和4个方法。

clip_image002

图1 类Employee

2.封装

       封装(Encapsulation)是一种信息隐蔽技术,它体现于类的说明,是对象的重要特性。封装使数据和加工该数据的方法(函数)封装为一个整体,以实现独立性很强的模块,使得用户只能见到对象的外特性(对象能接受哪些消息,具有那些处理能力),而对象的内特性(保存内部状态的私有数据和实现加工能力的算法)对用户是隐蔽的。封装使一个对象形成两个部分:接口部分和实现部分。封装的目的在于把对象的设计者和对象者的使用分开,使用者只需了解对象的接口不必知晓行为实现的细节,用设计者提供的消息来访问该对象。

3.继承

       继承(Inheritance)是子类自动共享父类之间数据和方法的机制。它由类的派生功能体现,一个类直接继承其它类的全部描述,同时可修改和扩充。

       继承分为单继承(一个子类只有一父类)和多重继承(一个类有多个父类)。类的对象是各自封闭的,如果没继承性机制,则类对象中数据、方法就会出现大量重复。通过继承可以实现代码的重用:从已存在的类派生出的一个新类将自动具有原来那个类的特性,同时,它还可以拥有自己的新特性。

       如图2所示是单继承的例子。其中,交通工具(Vehicle)是父类,地面交通工具(GroundVehicle)和空中交通工具(TransatmosphericVehicle)是子类。

clip_image004

图2 单继承

如图3所示是多继承的例子。其中子类鸟(Bird)同时继承飞行物(FlyingThing)和动物(Animal)两个父类。

clip_image006

图3 多继承

4.消息

       对象之间进行通信的结构叫做消息(Message)。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。

       如图4所示,接受消息calculateOrderTotal()的订单(Order)类有责任计算订单的总金额,计算结果返回给订单录入界面(OrderEntryForm)类。

 

clip_image008

图4 消息

5.多态

        多态(Polymorphism),字面上是指有多种形态的意思。在面向对象技术中,多态是指一个事物在不同上下文中具有不同意义或用法的能力。同一消息为不同的对象接受时可产生完全不同的行动。利用多态用户可发送一个通用的信息,而将所有的实现细节都留给接受消息的对象自行决定,同一消息即可调用不同的方法。例如:Print消息被发送给一图或表时调用的打印方法与将同样的Print消息发送给一正文文件而调用的打印方法会完全不同。

多态的实现受到继承性的支持,利用类继承的层次关系,把具有通用功能的协议存放在类层次中尽可能高的地方,而将实现这一功能的不同方法置于较低层次,这样,在这些低层次上生成的对象就能给通用消息以不同的响应。在面向对象程序设计语言中可通过在派生类中重定义基类函数(定义为重载函数或虚函数)来实现多态机制。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减少代码的复杂度。

       在OO方法中,对象和传递消息分别表现事物及事物间相互联系的概念。类和继承是是适应人们一般思维方式的描述范式。方法是允许作用于该类对象上的各种操作。这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性和类的继承性。通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象软件系统。

posted on 2011-04-19 12:48  kingmoon  阅读(986)  评论(1编辑  收藏  举报

导航