第6章面向对象方法学引论
第6章 面向对象方法学导论

面向对象方法学的方程:
OO
= objects + classes + inheritance + communication with messages 基于对象(object-based) = objects + communication with messages 基于类(class-based) = objects + classes + communication with messages 只有同时使用对象、类、继承和消息的方法,才是 真正面向对象的方法。
(3) 繁荣阶段 自20世纪80年代中期到90年代,是面向对象语言走 向繁荣的阶段。 其主要表现是大批比较实用的OOPL的涌现,例如 C++、Objective-C等。 (4) 当前的状况 20世纪90年代,面向对象的分析与设计方法多达数 十种,这些方法各有所长,现在趋于统一。 统一建模语言UML,其推荐的方法是 USDP(Unified Software Development Process); UML是一种面向对象的建模语言,在软件产业界 获得了很大的支持。
3. 对象的特点 以数据为中心。 对象是主立性好。
6.4.2 其他概念
类(class):“类”就是对具有相同数据和相同操 作的一组相似对象的定义。 实例(instance):实例就是由某个特定的类所描 述的一个具体的对象。 消息(message):消息就是要求某个对象执行在 定义它的那个类中所定义的某个操作的规格说 明。通常,一个消息由下述3部分组成:接收消 息的对象;消息选择符(也称为消息名);零个或 多个变元。
弧 圆心坐标 半径 起始角度 结束角度 可见性 显示() 隐藏()
第6章 面向对象方法学引论

18
《 软件工程导论》
第6章 面向对象方法学引论
消息
注意 倒置 区别:
call turnLeft(hom1,40)
传统软件技术
先 申请一个过 程单元
然后 向其提供操 作的对象
消息 hom1.turnLeft(40)
面向对象技术
先 申请一个对象 然后 执行其中一
已存在的类通常称作超类,新的类通常称作子类。
继承(从C到D) 是指:
类D在类C中隐式的定义其每个属性和操作,就好像这 些属性和操作是在类D本身中定义一样。
C称为D的超类;D称为C的子类。
对象类D可以充分利用类C对象的属性和操作。
21
《 软件工程导论》
第6章 面向对象方法学引论
继承(inheritance)
消息是一个实例对象与另一个实例对象的通信单元,是 要求某个实例对象执行类中定义的某个操作。
发送给一个实例对象的消息定义了一个操作名和一个参 数表(可能是空的),并指定某一个实例对象。
一个实例对象接收的消息则调用消息中指定的操作,并 将形式参数与参数表中相应的值结合起来。
17
《 软件工程导论》
第6章 面向对象方法学引论
3
《 软件工程导论》
第6章 面向对象方法学引论
6.1 面向对象方法学概述
90年代,以OOA/OOD方法逐渐走向实用。一些专家按 照面向对象思想,对系统分析和系统设计工作的步骤、 方法、图形工具等进行了详细的研究,提出了许多不同 的实施方案。其中最有影响的有: 1988年 Shlaer 和 Mellor发表第一本OOA书; 1990年 Coad 和 Yourdon 发展出更简单的合作行 为思想; Booch 进行综合工作; Rumbaugh 提出的 OMT(对象模型化技术); Jacobson 的 OOSE(面向对象的软件工程);
面向对象方法

面向对象方法面向对象方法是一种软件开发的方法论,它将现实世界中的事物抽象成对象,通过对象之间的交互来实现系统的功能。
在面向对象方法中,每个对象都有自己的属性和方法,对象之间通过消息传递来进行通信和协作。
面向对象方法具有很强的灵活性和可扩展性,能够更好地应对复杂系统的需求变化。
面向对象方法的核心概念包括封装、继承和多态。
封装是指将数据和方法封装在对象内部,隐藏对象的内部实现细节,只对外提供公共接口。
这样可以有效地保护对象的数据,防止外部直接对数据进行修改,提高了系统的安全性和稳定性。
继承是指一个对象可以继承另一个对象的属性和方法,从而可以实现代码的复用,减少重复编码,提高了系统的可维护性和可扩展性。
多态是指同一个方法可以根据不同的对象调用而具有不同的行为,这样可以实现代码的灵活性和通用性。
在面向对象方法中,对象是系统的基本单元,系统由多个对象组成,对象之间通过消息传递来进行通信。
对象之间的关系包括关联、聚合和继承。
关联是指两个对象之间存在某种关系,比如学生和课程之间存在一种关系,这种关系可以是一对一、一对多、多对多等。
聚合是指一个对象包含另一个对象,比如班级包含多个学生,这种关系是一种整体与部分的关系。
继承是指一个对象可以继承另一个对象的属性和方法,从而可以实现代码的复用。
面向对象方法的优点包括提高了系统的可维护性、可扩展性和可重用性,降低了系统的复杂性,提高了系统的稳定性和安全性。
面向对象方法还能够更好地反映现实世界中的事物,使系统的设计更加直观和易懂。
面向对象方法还能够更好地分工合作,提高了团队的工作效率。
面向对象方法的应用包括面向对象分析、面向对象设计和面向对象编程。
面向对象分析是指通过对现实世界中的事物进行分析,抽象成对象,识别对象之间的关系和行为。
面向对象设计是指根据面向对象分析的结果,设计系统的结构和功能,确定对象之间的关系和交互。
面向对象编程是指根据面向对象设计的结果,使用面向对象的编程语言来实现系统的功能。
06 面向对象方法学概述

四、面向对象的优点
结构化技术的本质是功能分解,从代表目标 系统整体功能的单个处理着手,自顶向下不断地 把复杂的处理分解成子处理,子处理再进行分解 直至分解出来的子处理的功能已经十分简单。然 后通过一个个模块(过程或函数)来实现各个处 理功能。整个系统的结构是由实现处理功能的模 块来构成。
然而用户需求的变化大部分是针对功能的, 这种功能的需求变化往往造成系统结构的不稳定。 另外,传统的结构化方法将数据与过程作为相互 独立的实体,数据用于表达实际问题中的信息, 程序用于处理这些数据。程序员在编程时必须时 刻考虑所要处理的数据格式,对于不同的数据格 式即使要作同样的处理或者对于相同的数据格式 但要作不同的处理,都必须编写不同的程序。这 种情况使得传统开发的软件很难修改,可重用程 度低,维护非常困难。
类:People
属性说明: 性”别):;字符型(‘m’为“男”;‘f’为“女 身高:整型(以CM为单位); 体重:整型(以KG为单位);
操作说明: 回答身高; 回答体重
类:Student
属性说明: 所教课程:字符串(不超过10)
操作说明: 回答所在年级;
类:Teacher
属性说明: 所教课程:字符串(不超过10)
至此,面向对象方法从理论走向了具体实现。
面向对象方法已经深入到计算机科学技术的 许多领域,除上面所说的程序设计语言和系统分 析外,还应用在数据库、计算机辅助设计工程、 人-机界面设计、计算机辅助教学(CAI)、多媒 体技术、计算机网络等诸多领域。
二、面向对象开发技术的基本思想 现实世界中的问题在结构上是由一些实体所 组成,实体之间相互联系、相互作用。 例如,我们的环境由许多实体如人、树、汽 车、房子、街道等组成,这些实体之间相互发生 作用构成我们的环境。
面向对象方法学导论

6.1 面向对象方法学概述
• 与传统方法相反,面向对象方法是一种以数据或信息为主线,把数据和处理 相结合的方法。
• 面向对象方法把对象作为由数据及可以施加在这些数据上的操作所构成的统 一体。
• 对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,相反, 它是进行处理的主体。
5
6.1 面向对象方法学概述
系统的逻辑模型或实现模型都能用UML模型清晰的表示,可用于 复杂软件系统的建模。
(4) 独立于过程
UML是系统建模语言,独立于开发过程。
(5) 易掌握、易用
由于UML的概念明确,建模表示法简洁明了,图形结构清晰,易 于掌握使用。
31
6.4 对象模型
对象模型表示静态的、结构化的系统的“数据”性质。它是对模拟客观世 界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。 用UML表达的对象模型由类图(类和类间关系)构成.
聚合的图形记法
21
6.2 面向对象的概念
• 关联的含义 – 对象实例之间的物理或概念联结被称为链 – 关联是对一组语义与结构相似的链的抽象 – 链是关联的实例
人员 雇用 公司
二元关联的例
•
(人员) 雇用
关联 v张s. 涛链:类 vs.
对(象通公大司)
链的例子
(a) 二元关联
项目 ◆ 语言
人
三元关联的例
第6章 面向对象方法学引论
6.1 面向对象方法学概述 6.2 面向对象的概念 6.3 面向对象建模 6.4 对象模型 6.5 动态模型 6.6 功能模型 6.7 3种模型之间的关系
1
6.1 面向对象方法学概述
-- 传统的软件工程方法学应用于大型软件产品的开发 时,似乎很少取得成功。 -- 源于20世纪60年代后期出现的面向对象编程语言 Simula-67(类和对象的概念),逐步形成了面向对象方 法学 。到了20世纪90年代,面向对象方法学已经成 为人们在开发软件时首选的范型。
面向对象方法

面向对象方法面向对象方法(Object-oriented Method,OOM)是一种程序设计的方法论,它将系统看作一组对象的集合,每个对象都能接收消息、处理数据,并发送消息给其他对象。
面向对象方法的设计思想是将系统分解成多个相互协作的对象,通过对象之间的交互来实现系统的功能。
本文将从面向对象方法的特点、优势和应用等方面进行探讨。
首先,面向对象方法的特点是抽象、封装、继承和多态。
抽象是指将对象的共同特征提取出来形成类的过程,封装是指隐藏对象的内部细节,只对外部提供公共的访问方式,继承是指子类可以继承父类的属性和方法,多态是指同一个方法可以根据对象的不同而具有不同的行为。
这些特点使得面向对象方法能够更好地应对复杂系统的设计和开发,提高了系统的可维护性和可扩展性。
其次,面向对象方法具有很多优势。
首先,它能够更好地反映现实世界的问题,因为对象的概念是现实世界中最基本的概念之一。
其次,面向对象方法能够提高代码的重用性,通过继承和多态可以减少代码的重复编写。
再次,面向对象方法可以提高系统的灵活性,使得系统更容易扩展和修改。
最后,面向对象方法能够提高开发效率,因为它能够更好地组织和管理代码,降低了开发的复杂度。
面向对象方法在实际开发中有着广泛的应用。
它被广泛应用于软件开发领域,如面向对象的分析和设计方法(OOAD)、面向对象的编程语言(如Java、C++、Python等)等。
此外,面向对象方法也被应用于系统集成、软件工程、人工智能等领域。
它已经成为了现代软件开发的主流方法之一。
总之,面向对象方法是一种重要的程序设计方法,它具有很多优势和特点,能够更好地应对复杂系统的设计和开发。
它在实际开发中有着广泛的应用,已经成为了现代软件开发的主流方法之一。
希望通过本文的介绍,读者能够更深入地了解面向对象方法,从而更好地应用它来解决实际的问题。
软件工程导论面向对象方法学

软件工程导论面向对象方法学
面向对象方法学是一种软件设计和开发的方法,它强调了把系统抽象为一个对象的集合,对象之间通过消息来通信和互动。
该方法着重于对象设计和软件设计的整体架构,注重模块化和重用性。
在该方法论中,软件系统起始于一个或多个对象的辨识,这些对象由系统模型中的实体或者概念抽象得到。
每个对象都拥有描述自身信息的属性和操作这些属性的行为。
对象的属性即它的状态,而行为则是要对状态进行操作的方法。
与传统的过程式编程相比,面向对象编程的主要区别在于其依赖数据和行为的组合。
面向对象方法学遵循几个原则,如封装、继承和多态性。
封装是指一个对象隐藏了其内部的状态并通过接口提供与外部交互的操作。
继承允许子类从父类继承其属性和行为,减少了代码的复制和粘贴。
多态性则允许不同的对象实现相同的操作方式,从而增加了代码的灵活性和重用性。
该方法具有以下优点:
1. 提高了复用性:由于设计时注重模块化,提高了组件的可重用性。
2. 提高了灵活性:对象编程提供了较大的灵活性,可以随时增加、修改或删除对象。
3. 提高了可维护性:由于对象间关系清晰明确,修改一个对象不会影响其他对象的运行,因而提高了系统的可维护性。
4. 提高了可扩展性:由于对象可以根据需要增加或删除,因而可以更方便地扩展系统。
总之,面向对象方法学是一种适用于大型软件设计和开发的方法,它强调了系统的模块化和重用性,并具有良好的灵活性、可维护性和可扩展性。
软件工程 第6章 面向对象方法学

(a) 屏幕上的圆
(b) 圆对象
★要求Circle1在屏幕上移动,需向其发消息: Circle1.Move(10,19)
软件工程概论教程
常州大学信息科学与工程学院
卢 莹
Circle 1
Center(15,10) Radius(8) Color(Green) Draw( ) Move(△X,△Y)
Circle 2
Center(40,35) Radius(4) Color(Blue) Draw( ) Move(△X,△Y)
(a) 屏幕上的圆
(b) 圆对象
◆客观存在的事物
抽象
Circle Center Radius Color
对象
抽象
类
Draw( ) Move(△X,△Y)
(c) 圆类的定义
软件工程概论教程 常州大学信息科学与工程学院 卢 莹
张三是学生类的一个实例,张三的信息包括:
03319415(学号)、张三(姓名)、19850822(生日)、 计算机科学与技术 (专业)、计算机036、130xxxxxxxx、…… 张三可以进行的操作: 查询个人信息;修改电话号码、……
软件工程概论教程 常州大学信息科学与工程学院 卢 莹
(2)类的实现机制(以C++为例)
①类是一个抽象数据类型:
数据定义(成员变量) 类定义 (class) 可见性: private、protected、 public、friend
操作定义(成员函数)
②类定义中有创建实例、撤消实例的机制:
构造函数(constructor)—— 类名() (C++ 规定,每个类必须有默认的构造函数,没有构造函数 就不能创建对象。) 析构函数(destructor)—— ~类名() (析构函数是特殊的成员函数,只有在类对象的生命期结束 时,由系统自动调用。)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章 面向对象方法学引论 教学提示:本章主要讲述面向对象方法学的优缺点;面向对象的基本概念:对象、类、实例、消息、方法、封装、继承、多态性和重载等;面向对象的软件工程:OOA、OOD、OOP、OOT;面向对象的建模及对象模型、动态模型、功能模型;面向对象的开发方法。
教学要求:面向对象的基本概念,比较抽象,教学中要注意结合面向对象的高级语言举一些例子来更深刻地领会。
本章难点是面向对象的概念及特征和面向对象的模型。
掌握面向对象的基本概念及特征,面向对象的建模,面向对象的软件工程。
了解面向对象方法学的定义和优点,面向对象的开发方法。
面向对象的软件开发方法在20世纪60年代后期首次提出,经过将近20年这种技术才逐渐得到广泛应用。
到了20世纪90年代前半期,面向对象的软件工程方法学已经成为人们在开发软件时首选的范例。
今天看来,面向对象技术似乎是最好的软件开发技术6.1 面向对象方法学概述面向对象的技术是当前计算机界所关心的重点,是目前软件发展的主流。
面向对象的概念来自面向对象的程序设计语言,实际上,面向对象的概念和应用已经超越了程序设计语言,扩展到很宽的范围,如面向对象的数据库系统、面向对象的系统分析与设计、CAD 技术、人工智能以及其他广泛的应用范围。
6.1.1 面向对象方法的发展历程面向对象的方法的研究正在引起全世界越来越强烈的关注和高度重视,被誉为“研究最新技术的好方法”。
针对日趋复杂的软件需求的挑战,软件业界开始崇尚利用面向对象的方法和思想进行软件开发。
与人类发明史上的许多创举不同,面向对象不是瞬间出现的。
面向对象不是某个人的突发奇想,而是许多人经历多年研究积累的产物。
面向对象的方法起源于面向对象的程序设计语言。
在20世纪60年代中期Simula-67的设计者Dahl和Nygaard 提出对象(object)的概念,在程序设计语言中开始使用数据封装(data encapsulation)的概念。
在20世纪70年代,Liskov使用抽象数据类型(ADT)的理论和实现有了重大的进展,奠定了面向对象的基础。
Liskov最著名的研究成果是CLU语言,支持隐藏内部数据表示方法。
从20世纪70年代起,Xerox公司的 Palo Alto 研究中心经过对Smalltak 72、74连续不断的研究、改革后,在1980年推出了Smalltalk-80,它在系统设计中强调对象概念的统一,引入对象、对象类、方法和实例等概念及术语,采用了动态联编及单继承机制,体现了面向对象方法的许多重要概念,对面向对象方法学的形成和发展起第6章 面向对象方法学引论 ·123·了重大作用。
与此同时,Bell实验室的B. Stroustrup着手在C语言的基础之上加以扩展,使之成为一个面向对象的语言,定名为C++。
由于C语言在80年代已成为通用的开发语言,它不仅可以用于计算机,而且可以用于范围很宽的计算机结构及环境,因此在C语言的基础上扩展而成的C++虽然不是纯粹的面向对象语言,却继承了C的语言构造,易学易用,不需特殊的计算机平台。
这些相比于Smalltalk-80明显的优点,受到计算机界的普遍欢迎。
许多C++商业版本和工具相继出现,原来阻碍面向对象程序设计语言推广使用的性能价格比问题也顺利地得以解决。
所以,C++的问世,促进了面向对象技术的发展。
Java语言与Internet有着直接的关系,它采用了类C++的风格,是一个比较严格的面向对象的语言,并且可以跨平台运行。
SUN公司的Java 2的J2ME、J2SE、J2EE不同的标准,使得Java可以应用在任何平台之上。
另外,还有一些其他的面向对象的程序设计语言也在20世纪80年代相继出现,如objective-C、Eiffel、CommonLOOPS等。
许多基于框架(Frame-based)的知识表达系统提供了面向对象的特征;Tertronix和Data General公司提供了面向对象辅助设计和工程系统。
O2、ITASCA及ObjectStore等面向对象的数据库系统,日趋成熟并已进入商品化。
许多Client/Server数据库开发工具都采用了面向对象的方法与技术,如Borland Internatioal公司的Delphi、Powersoft公司的Power Builder和Informix的New Era等。
在20世纪90年代后期,尽管Grady Booch、Ivar Jacobson及Jim Rumbaugh三人在面向对象领域各有各自的主张,但是他们仍通力合作将面向对象用合理的符号表示产生了统一建模语言(Unified Modeling Language,UML),这个图形化的建模语言既有可视的表达形式,又有严谨的语义支撑。
6.1.2 面向对象方法学的优点面向对象方法的基本思想是从现实世界中客观存在的事物出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。
开发一个软件是为了解决某些问题,这些问题所涉及的业务范围称作该软件的问题域。
面向对象方法强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位,而不是用一些与现实世界中的事物相差较远,并且没有对应关系的其他概念来构造系统。
因此,面向对象方法可以使系统直接地映射问题域,保持问题域中事物及其相互关系的本来面貌。
1. 与人类习惯的思维方法一致面向对象的软件技术是以对象为核心,用这种技术开发出的软件系统由对象组成。
对象是对现实世界实体的正确抽象,它是由描述内部状态表示静态属性的数据以及可以对这些数据施加的操作,封装在一起所构成的统一体。
对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。
面向对象的设计方法基本原理是,使用现实世界的概念抽象地思考问题从而自然地解决问题。
它强调模拟现实世界中的概念而不强调算法,鼓励开发者在绝大部分过程中都应·123·软件工程基础教程·124··124·用领域的概念去思考。
在面向对象的设计方法中,计算机的观点是不重要的,现实世界的模型才是最重要的。
面向对象的软件开发过程从始至终都围绕着建立问题域的对象模型来进行,对问题域的自然的分解,确定需要使用的对象和类,建立适当的类等级,在对象之间传递消息实现必要的联系,从而按照人们习惯的思维方式建立起问题领域的模型,模拟客观世界。
面向对象方法学的基本原则是按照人类习惯的思维方法建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统。
面向对象的软件系统中广泛使用的对象是对客观世界中实体的抽象。
面向对象的软件技术为开发者提供了随着对某个应用系统的认识逐步深入和具体化的过程,而逐步设计和实现该系统的可能性,因为可以先设计出由抽象类构成的系统框架,随着认识深入和具体化再逐步派生出更具体的派生类。
这样的开发过程符合人们认识客观世界、解决问题时逐步深化的渐进过程。
2. 稳定性好传统的软件开发方法以算法为核心,开发过程是基于功能分解和功能分析进行的。
当功能需求发生变化时将引起软件结构的整体修改。
所以,这种软件系统的稳定性是比较差的。
而面向对象方法是基于构造问题领域的对象模型,以对象为中心来构造软件系统的。
用对象模拟问题领域中的实体,以对象间的联系刻画实体间的联系。
面向对象的软件系统的结构是根据问题领域的模型建立起来的,而不是基于对系统应完成的功能的分解,所以,当对系统的功能需求变化时并不会引起软件结构的整体变化,往往仅需要作一些局部性的修改。
因此,以对象为中心构造的软件系统也是比较稳定的。
3. 可重用性好面向对象方法在类的级别上而不是在各子程序级别上,提高代码重用来改进软件的可重用性。
可以通过开发和建立合适的类库进行重用,这种方法实际上是一种新的符合特定需求的非常高层的语言。
实际上对象类是一个足够复杂的有机体,可以作为独立的软件单元从公司中的一个应用移植到另一个应用。
4. 可扩展性软件的可扩展性简单地描述为“说明域与实现域之间是同构的”,用通俗的话来说就是解决问题的模型应该满足问题的模型。
用户的一些小的改变不会导致主要系统灾难性的后果,当修改面向对象代码时很少会引发其他部分产生的莫名其妙的问题。
由于面向对象基于更高层次上建立软件单元,它更接近于生活的抽象,因此比传统的技术更容易建立同构。
可扩展性经常和继承性一起使用,用户常在已经声明的主题中增加变量以对系统进行扩展。
使用面向对象技术,可以在已有的超类下增加继承子类的方法实现扩展。
5. 可维护性前面4个特性是可维护性的基础。
面向对象的方法可以提高前4个方面的质量,因此能够在以下几个方面降低系统的维护开销。
(1) 可重用性降低了企业整个代码维护的费用。
(2) 可靠性减少了用户的不满意度和对修改问题的抱怨。
第6章 面向对象方法学引论 ·125·(3) 健壮性确保了软件的可维护性而不至于在桌面上瘫痪。
(4) 可扩展性迎合了用户修改系统的渐近式倾向,因此用户可以不断地对软件寻求更多的较小的修改。
6.1.3 面向对象方法学的不足面向对象的方法也不是完美的,也有一些不方便的地方。
1. 面向对象需要更关注于需求、分析和设计和结构化方法类似,如果要构建出符合用户需要的系统,必须了解用户到底需要什么。
因此要做出需求分析,然后根据需求的结构进行分析和设计。
利用面向对象的方法必须在分析和设计上下功夫。
2. 面向对象需要完全改变每个人的思想系统现在都是由相互作用的对象组成的,这完全和结构化的方法不同。
千万不要低估这两种方法之间巨大的差异。
3. 面向对象需要改变软件开发文化每个开发人员思想的变化实际上反映了开发文化总体上的变化。
每个开发人员都是用新的方法,做更多的分析和设计,与自己的用户进行更多的交流。
如果这些变化在你的机构里还没有发生,那么当面向对象引入到开发部门时就会经历巨大的企业文化变迁。
4. 面向对象不仅仅是编程在改变开发文化的过程中,应更加注重整个系统的开发过程,尤其是分析和实际工作,需要学习如何正确地使用面向对象的方法,这样做起来既不容易也不快。
5. 面向对象的许多优点是长期的增加重用性和可扩展性有助于减少开发时间和成本,当需要扩展和完善软件系统时面向对象的优点就显示出来了。
这意味着有些优点所带来的好处必须等待好几年的时间。
6. 面向对象要求先在培训、教育和工具上投资软件开发机构必须对开发人员进行培训,要购买面向对象的开发工具、书籍及杂志。
这些都需要预先进行一部分投资。
这些短期投资和面向对象将带来长期回报。
7. 面向对象技术不能保证能构造出正确的系统面向对象提供了增加项目成功的可能性,但这仍依靠参与人员的能力。