OOP技术:面向对象技术概述

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OOP技术:面向对象技术概述

本章综述

面对各种亟待解决的问题,人们都要有解决的步骤和方法。如何把这些步骤和方法准确无误地告诉给计算机,并且让计算机帮助人们来解决问题,这是程序设计的任务。人与计算机之间通过计算机程序设计语言进行交互。计算机程序设计语言经历了侧重计算机理解逐步过渡到面向人们理解的发展过程,Java语言是一种成熟的、面向对象的、更符合人们思考习惯的计算机编程语言。

本章从面向对象技术的发展历史入手,引导读者分析客观世界的问题域中的对象,从而理解面向对象程序设计的基本思想和基本概念,理解面向对象的程序设计与结构化程序设计的不同,了解常用面向对象编程语言以及通用建模语言(UML)描述。本章的重点内容包括:

•面向对象的基本概念;

•面向对象技术的基本特征;

•面向对象程序设计方法;

•面向对象的UML描述。

1.1 面向对象技术的发展

面向对象技术源于面向对象的编程语言(object oriented programming language,OOPL)。从20世纪60年代提出面向对象的概念到现在,它已发展成为一种比较成熟的编程思想,并且逐步成为目前软件开发领域的主流技术。

面向对象并非是一个新的概念,寻其根源可以追溯到20世纪60年代的挪威,当时挪威计算中心的Kristen Nygaard和Ole-Johan Dahl开发了一种称作Simula 67的仿真语言,该语言中引入了类的概念和继承机制,后来一些著名的面向对象编程语言都受到Simula的启发,如Smalltalk、C++、Eiffel。

在20世纪70年代中期,Alan Kay在施乐公司设计开发了Smalltalk语言,它具备了面向对象语言的继承和封装的主要特征,使面向对象程序设计方法趋于完善,掀起了面向对象研究的高潮。该语言的每个元素都被作为一个对象来实现。Smalltalk的程序设计环境及其相关的各方面都是面向对象的。即使今天,Smalltalk仍被认为是最纯的面向对象语言。Simula 67和Smalltalk的开发为今天的面向对象研究开发工作奠定了基础。

从20世纪80年代中期到90年代,大批比较实用的面向对象编程语言涌现出来,如C++、Objective-C、Object Pascal等。面向对象编程语言的繁荣是面向对象技术走向实用的

10

解析Java程序设计

重要标志,也是面向对象技术在计算机学术界、产业界和教育界日益受到重视的结果。在C++语言十分热门的时候,人们开始了对面向对象分析(object oriented analysis,OOA)的研究,进而延伸到面向对象设计(object oriented design,OOD)。特别是20世纪90年代以后,许多专家都在尝试用不同的方法进行面向对象的分析与设计,在这段时期,面向对象的分析和设计技术逐渐走向实用,最终形成了从分析、设计到编程、测试与维护一整套的软件工程体系。当前,面向对象的概念已经渗透到编程语言、用户接口、人工智能和数据库等方面。

1.2 面向对象方法与结构化方法的比较

为了更好地理解面向对象方法与结构化方法的不同,下面通过对一个实例的分析来认识这个问题。

1.2.1 现实问题分析

【例1-1】某校需要设计图书管理系统,要求该系统具有借阅、归还、预订、查询等基本功能,其功能要求如下:

(1)借阅:图书管理员输入读者借书证号码,系统首先检查借书证是否有效,若有效,则检查该读者所借图书或杂志是否超过10本,若已达到10本,则拒借;若未达到10本,则办理借书手续,修改图书库存目录并将读者借书情况保存到借书文件。

(2)归还:图书管理员通过系统从借书文件中读出与读者有关的记录,查阅所借日期,如超期(3个月)作罚款处理。否则,修改相应图书库存目录与借书文件。

(3)预定:借书者可以预定目前借不到的书或杂志,一旦预定的书被其他人返还,就通知预定者。

(4)查询:通过借书文件、图书库存目录文件查询读者情况﹑图书借阅及库存情况,打印统计表。

分析:按照结构化方法的思路,采用“自顶向下、逐步求精”的方法,可以把问题描述中的系统分解为一系列的模块,如图1-1所示。结构化方法强调功能抽象与模块化,因而结构化方法把问题看作一系列处理的过程,也就是以模块(即过程)为中心的开发方法。

第1

章面向对象技术概述9

图1-1 “图书管理系统”结构化方法的功能图

然后对每个模块再按相同的方法进行分解,例如还书处理模块可进一步分解为下面的子模块,如图1-2所示。

借书处理模块也可以进一步分解为相应子模块,如图1-3所示。

还书处理

查阅借书文件

登记入库

处理超

期罚款

借书处理

修改

库存文件

修改

借书文件图1-2 “还书处理”模块图1-3 “借书处理”模块

按照面向对象方法来分析本系统则不是从功能入手,而是从对象入手。待解决的问题所涉及的业务范围称为该软件的问题域(problem domain)。面向对象方法从问题域中的事物出发,围绕问题域中的事物来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接地映射问题域。

对于图书管理系统,首先可以识别出一些直接的对象,包括图书、杂志、借阅者、图书管理员,还需要一个实体对象来记录图书的借还信息。到这一步,基本完成了实体对象的识别。另外,还需要一个借书的控制类来执行借书的动作。这样,初步的对象模型就可以建立了,如图1-4所示。

图1-4 图书管理系统中的“对象”及关系

说明:在这个问题中,如果借书功能有变动,要求借阅前登记借阅者详细信息,如爱好、专长、借阅图书类型倾向等,两种设计方法的修改不同。如果采用面向过程方法设计,则要修改程序(借书模块)。如果采用面向对象方法设计,则只需要在借还控制类中增加一个方法,整个系统功能图不发生改变。

从这个例子可以看出,面向对象方法与结构化方法相比较而言,它以数据为中心而不是以功能为中心来描述系统,而数据相对于功能而言具有更强的稳定性,通常而言,以面向对象方法开发的系统的可维护性更好。

相关文档
最新文档