第6章面向对象方法学引论
- 格式:pdf
- 大小:465.77 KB
- 文档页数:22
面向对象方法面向对象方法是一种软件开发的方法论,它将现实世界中的事物抽象成对象,通过对象之间的交互来实现系统的功能。
在面向对象方法中,每个对象都有自己的属性和方法,对象之间通过消息传递来进行通信和协作。
面向对象方法具有很强的灵活性和可扩展性,能够更好地应对复杂系统的需求变化。
面向对象方法的核心概念包括封装、继承和多态。
封装是指将数据和方法封装在对象内部,隐藏对象的内部实现细节,只对外提供公共接口。
这样可以有效地保护对象的数据,防止外部直接对数据进行修改,提高了系统的安全性和稳定性。
继承是指一个对象可以继承另一个对象的属性和方法,从而可以实现代码的复用,减少重复编码,提高了系统的可维护性和可扩展性。
多态是指同一个方法可以根据不同的对象调用而具有不同的行为,这样可以实现代码的灵活性和通用性。
在面向对象方法中,对象是系统的基本单元,系统由多个对象组成,对象之间通过消息传递来进行通信。
对象之间的关系包括关联、聚合和继承。
关联是指两个对象之间存在某种关系,比如学生和课程之间存在一种关系,这种关系可以是一对一、一对多、多对多等。
聚合是指一个对象包含另一个对象,比如班级包含多个学生,这种关系是一种整体与部分的关系。
继承是指一个对象可以继承另一个对象的属性和方法,从而可以实现代码的复用。
面向对象方法的优点包括提高了系统的可维护性、可扩展性和可重用性,降低了系统的复杂性,提高了系统的稳定性和安全性。
面向对象方法还能够更好地反映现实世界中的事物,使系统的设计更加直观和易懂。
面向对象方法还能够更好地分工合作,提高了团队的工作效率。
面向对象方法的应用包括面向对象分析、面向对象设计和面向对象编程。
面向对象分析是指通过对现实世界中的事物进行分析,抽象成对象,识别对象之间的关系和行为。
面向对象设计是指根据面向对象分析的结果,设计系统的结构和功能,确定对象之间的关系和交互。
面向对象编程是指根据面向对象设计的结果,使用面向对象的编程语言来实现系统的功能。
面向对象方法面向对象方法(Object-oriented Method,OOM)是一种程序设计的方法论,它将系统看作一组对象的集合,每个对象都能接收消息、处理数据,并发送消息给其他对象。
面向对象方法的设计思想是将系统分解成多个相互协作的对象,通过对象之间的交互来实现系统的功能。
本文将从面向对象方法的特点、优势和应用等方面进行探讨。
首先,面向对象方法的特点是抽象、封装、继承和多态。
抽象是指将对象的共同特征提取出来形成类的过程,封装是指隐藏对象的内部细节,只对外部提供公共的访问方式,继承是指子类可以继承父类的属性和方法,多态是指同一个方法可以根据对象的不同而具有不同的行为。
这些特点使得面向对象方法能够更好地应对复杂系统的设计和开发,提高了系统的可维护性和可扩展性。
其次,面向对象方法具有很多优势。
首先,它能够更好地反映现实世界的问题,因为对象的概念是现实世界中最基本的概念之一。
其次,面向对象方法能够提高代码的重用性,通过继承和多态可以减少代码的重复编写。
再次,面向对象方法可以提高系统的灵活性,使得系统更容易扩展和修改。
最后,面向对象方法能够提高开发效率,因为它能够更好地组织和管理代码,降低了开发的复杂度。
面向对象方法在实际开发中有着广泛的应用。
它被广泛应用于软件开发领域,如面向对象的分析和设计方法(OOAD)、面向对象的编程语言(如Java、C++、Python等)等。
此外,面向对象方法也被应用于系统集成、软件工程、人工智能等领域。
它已经成为了现代软件开发的主流方法之一。
总之,面向对象方法是一种重要的程序设计方法,它具有很多优势和特点,能够更好地应对复杂系统的设计和开发。
它在实际开发中有着广泛的应用,已经成为了现代软件开发的主流方法之一。
希望通过本文的介绍,读者能够更深入地了解面向对象方法,从而更好地应用它来解决实际的问题。
软件工程导论面向对象方法学
面向对象方法学是一种软件设计和开发的方法,它强调了把系统抽象为一个对象的集合,对象之间通过消息来通信和互动。
该方法着重于对象设计和软件设计的整体架构,注重模块化和重用性。
在该方法论中,软件系统起始于一个或多个对象的辨识,这些对象由系统模型中的实体或者概念抽象得到。
每个对象都拥有描述自身信息的属性和操作这些属性的行为。
对象的属性即它的状态,而行为则是要对状态进行操作的方法。
与传统的过程式编程相比,面向对象编程的主要区别在于其依赖数据和行为的组合。
面向对象方法学遵循几个原则,如封装、继承和多态性。
封装是指一个对象隐藏了其内部的状态并通过接口提供与外部交互的操作。
继承允许子类从父类继承其属性和行为,减少了代码的复制和粘贴。
多态性则允许不同的对象实现相同的操作方式,从而增加了代码的灵活性和重用性。
该方法具有以下优点:
1. 提高了复用性:由于设计时注重模块化,提高了组件的可重用性。
2. 提高了灵活性:对象编程提供了较大的灵活性,可以随时增加、修改或删除对象。
3. 提高了可维护性:由于对象间关系清晰明确,修改一个对象不会影响其他对象的运行,因而提高了系统的可维护性。
4. 提高了可扩展性:由于对象可以根据需要增加或删除,因而可以更方便地扩展系统。
总之,面向对象方法学是一种适用于大型软件设计和开发的方法,它强调了系统的模块化和重用性,并具有良好的灵活性、可维护性和可扩展性。
第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. 面向对象技术不能保证能构造出正确的系统面向对象提供了增加项目成功的可能性,但这仍依靠参与人员的能力。