欢迎来到天天文库
浏览记录
ID:14476877
大小:896.00 KB
页数:12页
时间:2018-07-28
《oop技术:理解面向对象》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第2章 理解面向对象31OOP技术:理解面向对象在本章中,你将学习如下内容:l 如何理解面向对象思维方式。l对象如何通信。l 对象如何与其他对象关联。l 对象如何组合。面向对象技术已经席卷了整个软件界,事实也确实如此。作为一种程序设计方法,它具有很多优点。基于构件的软件开发方法就是面向对象技术孕育出来的。采用这种方法建立一个系统时,首先建立一组类,然后通过增加已有构件的功能或者添加新的构件来逐步扩充系统,最后在建立一个新系统时,你还可以重用已经创建好的类。这样做可以大大削减系统开发时间。使用UML可以建立起易于使用和易于理解的对象模型。程序员能够创建出这些模型所对应的软
2、件。因此,UML对基于类开发的全过程都有益处。面向对象是一种思维方法——它是依赖于几个基本原则的思维方法。在这一章中,你将学习到这些基本原则。你将搞清楚对象是什么,在分析和设计中如何利用对象。从下一章开始介绍如何根据这些基本原则运用UML。2.1无处不在的对象对象,不论是具体的还是抽象的,遍布于我们的周围。它们组成了整个世界。正如前一章所指出的,典型的现代软件都要模拟现实世界(至少是模拟现实世界的一个片段),因此程序通常也要模拟现实世界中的对象。如果体会了对象的实质,那么你就能够理解如何用软件来表达对象,以及软件是否是面向对象的。传统的程序员能够从面向对象概念中受益,因
3、为面向对象概念提供了他们所工作的领域的建模。首先也是最重要的,对象是一个类(种类)的实例。例如,你和我都是Person这个类的实例。对象具有自身的结构(structure)。也就是说,它具有属性(特性)和行为。对象的行为包括它所能执行的操作。属性和操作合起来被称为特征(feature)。符号约定为了帮助你习惯UML符号,我将使用我在第1章中提到的一些面向对象的约定,包括:类名以大写字母开头。包含多个单词的类名,所有的单词都连接在一起,并且每个单词的第一个字母都大写。特征(属性和操作)的名字以小写字母开始。多个单词组成的特征名,所有的单词连接在一起,除了第一个字母小写,其
4、他每个单词的第一个字母都大写。操作名的后面跟上一对括号。第2章 理解面向对象31你和我作为Person这个类的对象,都具有一些共同的属性:身高、体重和年龄等(不难想象,还有许多其他的属性)。我们每个人之所以独一无二,是因为我们每个人的这些属性都有一个特定的值。我们都能执行一些共同的操作:吃饭、睡觉、读书、写字、说话、工作等(或者用对象语言来描述,就是eat()、sleep()、read()、write()、talk()和goToWork())。如果要创建一个处理人事信息的系统(例如工资发放系统或者人力资源部门的信息管理系统),那么在软件中很可能要包括上面提到的一些属性和
5、操作。在面向对象世界里,类除了起到分类的作用外,还有其他用途。类是用来创建对象的模板。可以把类看成是加工小甜饼的模子,你可以用来压出新的小甜饼对象(有些人可能认为这个模子起的作用仍然是分类,此处不做评论)。让我们再回到洗衣机的例子。如果指定洗衣机类具有brandName、modelName、serialNumber和capacity等属性,还有acceptClothes()、acceptDetergent()、turnOn()和turnOff()等操作的话,你就有了制造WashingMachina类新实例的机制。也就是说,可以基于洗衣机这个类创建新的对象(参见图2.1)
6、。这在面向对象的软件开发中尤其重要。尽管本书的重点不是讨论程序设计,但是如果你了解面向对象程序设计语言中的类可以创建新实例的话,会有助于你理解面向对象的基本概念。图2.1WashingMachine类是创建新的洗衣机实例的模板还有其他一些要了解的内容。记住,面向对象的目标是开发出能够反映现实世界某个特定片段的软件(或者说是“建模”)。你考虑到的属性和行为越多,你所建立的模型就越符合实际。在洗衣机的例子中,如果你在洗衣机类中包括drumVolume(洗涤缸容量)、trap(水阀)、motor(马达)和motorSpeed(马达转速)等属性的话,洗衣机模型就更精确。同样,如
7、果洗衣机类中增加了acceptBleach()和controlWaterLevel()等操作的话,也会增加模型的精确性(参见图2.2)。第2章 理解面向对象31图2.2模型中的属性和操作越多,模型就越接近实际2.2一些面向对象的概念面向对象并不只局限于对象的属性和行为建模,它还包含对象的其他方面。这些方面包括抽象(abstraction)、继承(inheritance)、多态(polymorphism)和封装(encapsulation)。其他3种重要的面向对象概念是消息传递(messagesending)、关联(association)
此文档下载收益归作者所有