4面向对象方法学
- 格式:doc
- 大小:938.50 KB
- 文档页数:22
面向对象方法学的出发点和基本原则1 面向对象方法学简介面向对象方法学( Object-Oriented Methodology, OOM)是一种软件工程的建模模式,它被广泛应用在软件工程的设计与开发中。
OOM是一种面向对象的分析、设计及编程的过程,用来组织抽象和构造有效的软件系统。
2 出发点及基本原则OOM的基本出发点是,让计算机能够更好的处理真实世界中复杂的问题。
它通过把巨大而复杂的系统分解为由许多独立的概念实体组成的、耦合度较低的“对象”来实现这一目标。
OOM的基本原则是要使组件(或对象)具有封装性、继承性和多态性:1. 封装性:能够将某些属性或功能封装到一个单一的实体之中,以达到良好的模块独立性、维护性等目的。
2. 继承性:直接通过之前定义的对象可以定义一个新的对象,新的对象将具有之前定义的对象的所有功能,从而极大的提高开发效率。
3. 多态性:每个子类可以具备不同的实现,以提高代码的可重用性。
3 典型应用OOM在软件工程设计与开发过程中被广泛应用。
一些软件语言,如C++、Java等都是面向对象编程语言,这些语言的使用都可以根据OOM的原则来实现。
此外,OOM的思想也可以被应用到其它的计算机应用领域。
例如,它可以用来设计具有分布式功能的大型系统,例如银行的信息系统等。
它也可以用来设计新的知识表示方法和面向对象数据库,以满足要求表示和处理复杂现实存在的事物与概念。
4 结论面向对象方法学是一种非常有效且实用的软件工程模式,它能够帮助程序员开发出更高质量的程序。
OOM的组件(或对象)具有封装性、继承性和多态性,这使得它能够更好的模拟真实世界中复杂的对象,并为实现这些对象的功能提供了一种有效的方法。
传统方法学建模和面向对象方法建模的比较面向对象的基本概念(1)对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中(3)类。
具有相同或相似性质的对象的抽象就是类。
因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(4)类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。
通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
(5)消息和方法。
对象之间进行通信的结构叫做消息。
在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。
发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。
一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体面向对象的特征(1)对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。
在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
(2)分类性。
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。
一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。
⾯向对象程序设计⽅法学⾯向对象程序设计⽅法学⾯向对象程序设计吸取了结构化程序设计的⼀切优点,⼜考虑了现实世界与⾯向对象解空间的映射关系,它所追求的⽬标是将现实世界问题的求解尽可能的简单化。
⾯向对象程序设计将数据及对数据的操作放在⼀起,作为⼀个相互依存、不可分割的整体来处理,它采⽤数据抽象和信息隐藏技术。
它将对象及对对象的操作抽象成⼀种新的数据类型—类,并且考虑不同对象之间的联系和对象类的重⽤性。
下⾯我将就本⼈了解的⼀些⾯向对象基本概念和⼤家分享。
希望对⼤家有所帮助。
⼀、对象的基本概念⾯向对象=对象+类+继承+消息通信⾯向对象系统最突出的特性就是封装性、继承性和多态性,衡量某⼀种程序设计语⾔,看它是否是⾯向对象的程序设计语⾔,主要看它是否具有以上三种特性。
像C++,C#,java等都是这样的程序设计语⾔。
⼆、类与对象类(class)是对具有相同属性和服务的⼀个或⼀组对象的抽象定义。
类与对象是抽象与具体实例的关系,⼀个具体的对象被称做类的⼀个实例。
是否建⽴了丰富的类库是衡量⼀个⾯向对象程序设计语⾔成熟与否的⼀个重要标志。
对象(object)是系统中⽤来描述客观事物的⼀个实体,它是构成系统的⼀个基本单位,是类的实例。
⾯向对象的软件系统是由对象组成的,复杂的对象是由⽐较简单的对象组合⽽成。
也就是说,⾯向对象⽅法学使⽤对象分解取代了传统⽅法的功能分解。
对象的属性和⽅法称为这个对象的“成员”。
它是构成对象的主要部分。
类可以说是对象的蓝图(blueprint)三、对象三要素 对象三要素:对象标志、属性和服务对象标志:也就是对象的名字,供系统内部唯⼀地识别对象。
属性:也称状态或数据,⽤来描述对象的静态特征。
在某些⾯向对象的程序设计语⾔中,属性通常被称为成员变量或简称变量。
服务:也称操作、⾏为或⽅法等,⽤来描述对象的动态特征。
某些⾯向对象程序设计语⾔中,服务通常被称为成员函数或简称函数。
封装:对象的⼀个重要原则,⽬的是使对象的定义与实现分离。
面向对象的典型方法
1. 封装啊,这就好比你有个百宝箱,把你的宝贝都好好地装起来,藏住细节,只露出该露的接口。
就像一个手机,你只需要知道怎么操作那些按钮,而不用管它里面的复杂电路是怎么运作的嘛!
2. 继承可太重要啦!就好像家族传承一样,长辈把好的东西传给晚辈,晚辈就能在此基础上继续发展。
比如说动物界,小狮子继承了狮子家族的强大基因,然后慢慢成长变得更强呀!
3. 多态可神奇咯!它就像一个超级变变变的魔法,同一个东西在不同情况下可以有不同的表现呢。
就像有个演员,在不同的戏里能扮演各种不同的角色,展现出多样的魅力!
4. 抽象呢,就如同在云雾中寻找轮廓,把复杂的现实简化成关键的概念。
比如画画,先勾勒出大致的形状,抓住事物最本质的特征,你说是不是很牛!
5. 对象间的消息传递,哇哦,这就好像人们之间的交流沟通呀!你喊我一声,我回应你一下。
在程序里,对象之间通过传递消息来协同工作,就像我们平时互相说话办事一样有趣诶!
6. 关联也不容忽视呀!这就好像人和人之间的各种关系,朋友啦、家人啦。
比如说一个班级里的同学,他们相互关联,一起学习成长,多有意思呀!
我的观点结论就是:面向对象的这些典型方法真的是太神奇、太重要啦!它们让编程变得更简单、更有趣、也更强大了呢!。
简述传统软件工程方法学和面向对象方法学传统软件工程方法学和面向对象方法学是两种不同的软件开发方法。
传统软件工程方法学主要关注过程和文档,采用瀑布模型,通过分析、设计、编码、测试等步骤来完成软件开发。
而面向对象方法学则强调对象的概念和重用性,采用迭代和增量模型,通过面向对象的分析、设计、编码等步骤来完成软件开发。
一、传统软件工程方法学1.1 瀑布模型瀑布模型是传统软件工程中最常见的开发模型。
该模型将开发过程分为需求分析、设计、编码、测试和维护五个阶段,并且每个阶段必须按照顺序依次进行。
1.2 需求分析需求分析是瀑布模型中的第一个阶段,主要目的是确定用户需求并且将其转换为系统需求。
在这个阶段中,需要进行以下工作:- 收集用户需求- 分析用户需求- 确定系统需求- 编写详细的需求文档1.3 设计在完成了需求分析之后,接下来就是设计阶段。
在这个阶段中,需要进行以下工作:- 确定系统结构- 设计系统模块- 设计系统界面- 编写详细的设计文档1.4 编码设计完成之后,接下来就是编码阶段。
在这个阶段中,需要进行以下工作:- 根据设计文档编写代码- 进行单元测试- 进行集成测试1.5 测试编码完成之后,接下来就是测试阶段。
在这个阶段中,需要进行以下工作:- 进行系统测试- 进行用户验收测试- 修复缺陷和bug1.6 维护软件开发完成之后,还需要进行维护工作。
在这个阶段中,需要进行以下工作:- 修改和更新软件- 修复缺陷和bug- 支持新的硬件和操作系统二、面向对象方法学2.1 面向对象分析(OOA)面向对象分析是面向对象方法学中的第一个阶段,主要目的是确定问题域并且将其转换为对象模型。
在这个阶段中,需要进行以下工作:- 收集用户需求- 分析用户需求- 确定问题域模型- 设计用例图、活动图等2.2 面向对象设计(OOD)在完成了面向对象分析之后,接下来就是面向对象设计阶段。
在这个阶段中,需要进行以下工作:- 确定系统结构- 设计类和对象- 设计系统界面- 编写详细的设计文档2.3 面向对象编程(OOP)面向对象编程是面向对象方法学中的第三个阶段,主要目的是根据设计文档编写代码。
第四章面向对象方法【学习目标】本章集中介绍了面向对象方法的基本原理和概念,同时简述了统一建模语言(Unified Modeling Languange,UML)的主要作用和基本概念,并结合一个实例,论述了基于UML 语言的面向对象分析方法,从而使学生掌握面向对象方法的基本理论,学会使用UML语言进行面向对象的分析和建模。
【学习方法】正确理解面向对象方法和UML语言涉及的基本概念,结合具体实例运用面向对象分析技术,从而达到学习目的。
【难重点】本章的学习重点在于理解面向对象方法的原理和概念,熟练运用UML语言,掌握面向对象的分析方法,其难点是怎样在实际的软件项目中灵活运用这些思想和方法。
【课前思考】面向对象开发方法有什么优点?面向对象方法包含哪些基本概念?为什么要对软件系统建模?什么是UML?面向对象分析与面向对象设计的区别是什么?什么是软件复用?4.1 面向对象方法概述【本节知识点】什么是面向对象面向对象技术的发展历史面向对象的基本概念面向对象的软件工程方法4.1.1 什么是面向对象面向对象(Object Oriented)技术是软件工程领域中的重要技术,这种软件开发思想比较自然地模拟了人类认识客观世界的方式,成为当前计算机软件工程学中的主流方法。
应该特别强调的是,面向对象技术不仅仅是一种程序设计方法,更重要的是一种对真实世界的抽象思维方式。
面向对象方法的基本思想是从现实世界中客观存在的事物(即对象)出发,尽可能地运用人类的自然思维方式来构造软件系统。
它更加强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,例如抽象、分类、继承、聚合、封装等,使开发者以现实世界中的事物为中心来思考和认识问题,并以人们易于理解的方式表达出来。
面向对象技术的基本观点如下:(1)客观世界是由对象组成的,任何客观的事物或实体都是对象,复杂的对象可以由简单的对象组成。
(2)具有相同数据和相同操作的对象可以归并为一个类,对象是对象类的一个实例。
06面向对象方法学概述面向对象方法学(Object-Oriented Methodology)是一种用于软件系统开发的方法论,它将现实世界中的事物抽象为对象,并通过封装、继承和多态等概念,来描述对象之间的关系和交互。
面向对象方法学是面向对象编程的理论基础,它强调通过良好的组织和模块化的方式来处理复杂系统的设计和开发。
面向对象方法学具有以下主要特点:1. 封装(Encapsulation):封装是将数据和对数据的操作封装在一个对象中,使得对象可以隐藏内部的细节,并提供一组公共接口供其他对象进行访问和使用。
封装可以提高系统的安全性和可靠性,并且可以隔离系统中的各个部分,减少代码之间的耦合度。
2. 继承(Inheritance):继承是一种机制,允许子类从父类继承其属性和方法,并且可以进行扩展和重写。
继承可以提高代码的重用性,可以通过定义通用的父类来减少代码的重复编写,同时也使得代码更易于维护和扩展。
3. 多态(Polymorphism):多态是一种对象在不同情况下表现出不同的行为的能力。
通过多态,可以将对象视为其父类的实例,以及自身特有的行为和属性。
多态可以增加系统的灵活性和扩展性,可以让代码更加通用和可复用。
4. 抽象(Abstraction):抽象是一种将现实世界中的事物简化和概括的能力。
通过抽象,可以将复杂的系统分解为独立的、可理解的模块,并且可以定义抽象的类和接口来描述系统的功能和行为。
抽象可以提高代码的可读性和维护性,同时也可以提高系统的可扩展性。
面向对象方法学的核心思想是将问题领域的事物抽象为对象,并且通过对象之间的消息传递来实现系统的功能。
在面向对象方法学中,系统的设计和开发是基于对象的,而不是基于过程的。
通过将一个复杂的系统分解为多个独立的对象,并定义它们之间的关系和交互,可以实现高内聚和低耦合的系统结构。
面向对象方法学还包括以下一些重要的概念和技术:1.类:类是描述对象共同特征和行为的模板。
习题第1章面向对象方法概论1、与传统开发方法相比,面向对象方法有什么优点?2、查阅资料,进一步讨论UML与面向对象方法的关系。
3、封装的目的是什么?在面向对象方法中封装的目的是如何达到的?4、针对你过去使用传统开发方法所建造的系统的不足,总结一下问题的原因。
考虑如果使用面向对象方法,在哪些方面可能会获益。
5、面向对象方法的一个主要原则是抽象。
思考一下在工作和学习中你经常在什么场合下运用抽象原则。
第2章什么是面向对象分析1、简述OOA模型及OOA过程。
2、为什么要进行OOA?3、简述问题域与系统责任间的关系。
4、OOA是如何应对需求变化性的?5、为什么把用类图构建的模型称为基本模型?6、你对本章讲述的分析面临的主要问题有过什么实际感受?请举例说明。
第3章建立需求模型——用况图1、用况之间的关系可为包含关系、扩展关系或继承关系,三种关系之间有相同之处吗?它们之间的区别又在哪?2、论述用况图在面向对象方法中的地位。
3、怎样理解把系统内外的交互情况描述清楚了,就明确了系统边界?4、对于3.3.1节中的收款用况,补充用信用卡付款和使用优惠卡的描述。
5、通常自动售货机会按用户的要求进行自动售货,供货员会巡查向其内供货,取款员会定时取款。
针对上述要求,请建立用况图,并描述各个用况。
6、现要开发一个购书积分系统,其中至少要具有申请积分卡、增加积分、查看积分和按积分奖励功能。
请建立用况图,并描述各个用况。
第4章建立类图1、论述类与对象之间的关系以及关联与链之间的关系。
这四者之间还有什么联系吗?2、在什么情况下使用组合关系进行建模?3、总结继承关系的用途。
4、图4-44表明,一名教师可以在一个或多个系中任职,而且在二者间使用的是聚合关系。
在二者间可以使用组合关系吗?请解释原因。
5、举例说明类继承结构中的重载与多态。
6、面包是由面包片组成的。
面包与面包片之间的关系是聚合还是组合?7、一本书含有若干章,一章有若干节,一节由一些段落和图组成,一个段落由一些句子组成。
简述面向对象方法学的要素
面向对象方法学是一种面向对象编程的设计和开发方法,它的基本要素包括以下几个方面:
1. 对象:面向对象方法学中的基本概念是对象,它是对现实世界中某个事物的抽象和建模。
对象具有属性和方法,属性是对象的状态信息,方法是对象的行为和功能。
2. 类:类是对象的模板,它描述了对象的属性和方法。
类中的变量称为实例变量,方法称为类方法。
类是对象的蓝图,它定义了对象的行为和状态。
3. 继承:继承是面向对象方法学中的重要概念之一,它允许一个类继承另一个类的特性。
被继承的类称为父类或基类,继承的类称为子类或派生类。
子类可以继承父类的属性和方法,也可以添加自己的属性和方法。
4. 封装:封装是面向对象方法学中的另一个重要概念,它允许将类的实现细节隐藏在类的内部,只提供公共接口给外部使用。
封装可以保护类的数据和方法,防止外部的干扰和修改。
5. 多态:多态是面向对象方法学中的另一个重要概念,它允许不同对象对同一消息做出不同的响应。
多态可以增强代码的灵活性和可重用性。
以上是面向对象方法学的基本要素,这些要素相互作用,
共同构建了面向对象的程序设计方法。
通过使用这些要素,可以更好地模拟现实世界中的事物,提高程序的可维护性、可扩展性和可读性。
第 1 页第四讲 面向对象方法学生命周期方法学回顾1、 生命周期方法学的特点生命周期方法学是一种传统的软件工程方法学,其主要特点是:严格的分阶段计划以时间分解为基础来控制和管理整个软件开发过程的,将软件开发过程划分为许多首尾相接、相互独立的阶段。
“瀑布式”开发模式软件开发阶段在时间上严格地实施顺序,不能反复。
每个阶段完成后才进行下一个阶段的工作,并且前一个阶段的成果作为下一个阶段工作开始的依据。
严格的技术审查和管理复审在软件开发的每一个阶段结束后,进行严格的技术审查和管理复审,排除所有潜在的错误,保证瀑布模型的实施,并从成本和进度上管理和控制软件开发。
结构化技术结构化技术内涵为“自上而下,逐步求精”,生命周期方法学在各个阶段采用结构化技术,包括结构化分析、结构化设计、结构化程序设计等。
从以上特点可以看出,生命周期方法学是以软件功能为基础来进行软件开发的,面向的软件实体由一段段可执行的程序代码组成,并以模块作为基本的软件结构体,可以由程序代码的运行来实现所需的软件功能,满足用户的需求。
也正是由于生命周期方法学的以上特点,使得它在软件工程实践中也暴露出了许多问题:对功能需求分析的依赖生命周期方法学的软件开发成果对于功能需求分析有很强的依赖性,要求需求分析阶段的结果一定要全面、准确、清晰,不能有任何错误或模糊的东西。
而一旦对需求分析中确定的需求进行了任何改变,都会直接影响到整个软件的设计和实现,对软件进行的修改要付出很大的代价。
但是在实际操作过程中,一方面用户很难一次性地写出既完善又正确无误的功能要求,另一方面所确定的功能要求,又有可能随着时间的变化或者用户对系统理解的逐步深入发生变化。
这种软件功能需求的变化在实际软件项目的开发过程中是不可避免和屡见不鲜的,但它对生命周期方法学来说又是灾难性的,这使得生命周期方法学在软件开发实践中往往处于被动的地位。
软件重用性差如果某个软件开发中的成果不能够保存下来,并且在其它软件的开发过程中得到应用,那么对于软件开发的生产力来说,就是一种极大的浪费。
使软件开发中产生的成果能够被别的软件项目所利用,称为软件的重用性。
在生命周期方法学中,对软件进行模块划分,是致力于提高软件重用性的一种努力。
软件模块具有相对独立的功能,能够完成对信息的某一种处理,因此理论上可以被别的用到相同功能的软件所使用。
但各种不同的软件系统中,完全相同的功能是很难见到的,总会因为数据类型、处理细节、允许范围等等原因存在第 2 页一定的差异。
这样,除了一些非常基础的函数运算以外,大量的功能模块并不直接被利用到别的软件中去,而必需要进行一定的修改。
这些修改的工作既要在理解原来程序的基础上进行,又要保证对该模块的修改不会影响到与这个模块有耦合关系的其它模块,所以并不简单。
生命周期方法学并没有很好地解决软件重用性的问题,也就直接影响了软件生产率的提高。
维护的代价高任何软件在它的生命周期中,都必然会包含长期的、大量的维护工作。
对软件进行维护就是对软件进行修改,但是在生命周期方法学开发软件的过程中,任何对软件的修改都会返回到软件开发的前面阶段中去,因此都需要很大的分析、修改、测试的代价。
虽然使用了生命周期方法学后,软件的文档齐备、可理解性增强,能够进行维护,但是瀑布式开发模式的限制使得每一次维护工作都变成了一次小型的软件开发工作,并且功能模块之间的耦合关系使得维护工作给原来的软件引入了新的不确定因素,降低了软件的可靠性,这样的软件结构还是不容易实现维护要求的。
与现实世界的差异现实世界是一个复杂的系统,它由许多相互独立的元素组成,这些元素之间互相作用、互相影响,共同构成系统整体。
每个元素的内部特性并不受到系统的完全控制,相互间的通讯和协同才是系统整体功能产生的原因。
而在采用生命周期方法学中,整个软件系统是按照一个统一的功能整体来考虑的,所有的功能模块是这个功能整体的某个从属部分,完成功能整体的某一部分内容,自身并不具有独立性和自主性。
因此,整个软件系统可以说是一个受到“完全控制”的整体,不管在开发过程中还是在系统的实际运行过程中,每一个细节都是受到完全的、透明的控制的。
这种软件系统和它对应的现实世界模型的不同结构,使得必需要经过某种转换才能够实现互相沟通,降低了软件系统的可理解性。
与硬件和运行平台发展趋势的分歧开发出高性能的计算机系统一直是技术人员的愿望。
最初的计算机采用串行的“诺意曼”方式,其后硬件技术中逐渐产生了并行处理技术。
并行处理技术是指一个计算机系统同时能够进行多项处理,这些处理互相独立,共同完成某一项复杂的处理任务。
虽然并行处理技术在目前的多数场合还是转换成为实现高性能的“诺意曼”方式计算机的一种工具,但是这种思想对软件运行平台产生了积极的影响。
为了提高硬件利用的效率,很多软件运行平台均开始支持多任务。
所谓多任务,就是同一套计算机系统能够“同时”进行多项任务的处理。
硬件和运行平台的并行、多任务特性,事实上使某个大任务的执行过程变成了多个互相独立、又互相作用的小任务组成的系统,这和生命周期方法学面向过程,统一调度控制软件的运行流程的思想出现了越来越大的分歧。
数据与处理过程的分离任何软件系统都是信息处理系统,也就是数据处理系统。
特别是随着商业、行政事务领域对软件需求的迅速增加,数据在软件系统中的重要性也随之增加。
而在生命周期方法学中,对于系统的分析和设计,都是基于功能的,也就是说,是基于对数据的处理算法、处理过程的,由处理过程和数据结构构成整个软件系统的实体,而数据只是处理过程所操作的对象而已。
数据本身的静态性和被动性,使得整个软件系统的数据变成了一些“死”的数据,只能根据功能操作产生变化,自身不具有任何独立性。
这和以数据为中心的任务需求是不相符合的,也不利于对数据的应用和保护。
这种数据与处理过程的分离还使得整个软件系统分裂成为了软件实体(由处理过程组成)与数据两大部分,互相之间的关系变得错综复杂,不仅不利于理解,也增加了软件开发本身的难度。
正是因为生命周期方法学存在这样一些问题,已经不能很好地适应软件产业的发展,所以面向对象方法学才被引入软件工程中来。
一、面向对象方法学的基础知识1、面向对象方法学的基本概念(1)对象对象是现实世界中系统组成元素在软件中的对应物。
每个实际的系统是由许多相互独立又相互作用的元素共同构成的,这些元素的性质和行为构成了系统的基本内容。
将实际系统中每个元素抽象出来,在解决实际系统某个问题的软件中,对应给予一个元素进行模拟,称之为对象。
这个对象的概念是一个非常广义的概念,在不同的任务中它所指的内容并不相同。
比如要考察一个公司的人际关系,那么公司内的每一个个人就可以抽象为一个对象;如果要考察的是公司的经营情况,那么可能公司内的每一个部门会抽象为一个对象。
以什么元素抽象作为对象,要看所要考察的系统的实际内容,和所要考察的项目的实际要求。
实际系统中,每一个元素都是相对独立,又相互作用的。
也可以说,是主动的,或者说是“活”的。
这些元素既具有自己的性质,又具有自己的行为。
它们的性质是由表明某方面状态的数据来表现的,而它们的行为则是通过它们对其它元素某方面状态的影响,或者其它元素对它们自身某方面状态的影响来表现的。
因此,可以认为实际系统中的元素既具有数据又具有对自身数据的操作,数据和操作构成一个整体。
同样,在对应于实际系统的软件系统中,对应于实际元素的对象也同时具有数据和操作这两种特性,并且二者结合在一起,共同构成一个在软件系统中独立的“活”的元素。
实际系统中的元素的性质不可能直接被改变,其它的元素只能通过与它之间的作用才能使它的性质发生改变。
软件中的对象也具有同样的特性,就是它所具有的数据只能通过它所具有的操作才能改变,而不能直接被别的对象改写。
对象的所有数据都被看作是私有的、局部的,外界不能直接访问。
其它对象只能够通过它提供给外界的操作来影响所包含的数据,并且数据的变化是由对象自己根据操作和进行操作时的条件完成的。
对象的这种特性称为“封装”。
因此,对象有如下定义:定义:对象是软件系统中对实际系统的元素的一种抽象,它由表示属性的数据和对这些数据的操作封装而成。
根据对象的定义,它有这样一些特点:以数据为核心对象的核心是它的数据,数据的不同表明了对象的不同状态,也对应了实际系统中元素的不同性质。
对象的操作是对这些数据的变动,是肯定与对象的某些数据有关。
第 3 页对象是主动的对象具有封装性对象具有独立性(2)消息和方法消息是对象的对外接口,它提供了与某个具体对象进行通讯,从而激发某种动作的方式。
每条消息由接收消息的对象名、消息名和变元组成。
方法则是每个对象所具有的具体操作,是对消息的具体响应方式。
方法通常需要有具体的实现代码。
通过消息来调用方法,从而对与一个对象发生作用,这是基本的、也可以说是唯一的对对象施加作用的方法,是对象的唯一对外接口,这种思想充分保障了对象的独立性。
(3)属性属性是类中定义的属于对象的数据,反映了对象某方面的特性。
一个类派生出的所有实例具有相同的属性定义,但属性值互不相关。
(4)类和实例抽取一组相似事物的共同特征,将它们归为一类,这是人类研究和认识世界的一种基本方法。
在面向对象方法学中,类是具有相似特性的一组对象的抽象,它的定义确定了这组对象所共同拥有的属性和操作,可以用于生成具体的对象。
实例是根据某个类定义所产生的一个具体对象,同属一个类的不同实例拥有相同的属性和操作定义,但属性值各不相同,在计算机系统中也占据不同的存储空间,各自的状态和动态特性也互相独立。
(5)继承继承是面向对象方法学中的核心概念,它是指从一个类的定义中可以派生出另一个类的定义,被派生出的类(子类)具有父类的所有属性和方法定义。
单纯的继承没有意义,继承的价值在于子类还可以定义自己新的属性和方法,或者对继承得来的属性和方法重新进行定义,覆盖父类中的定义。
这样的继承方式可以使新类可以从已有的类中派生而来,从而对已有的软件开发成果进行有效的重用,减少了程序的代码量和复杂度,提高了软件的质量和可靠性,软件的维护修改也变得更加容易。
2、面向对象方法学的特点虽然对象的概念是面向对象方法学最基本的概念,但并不是所有使用了全面第 4 页第 5 页使用了对象概念的软件开发方法都可以叫做面向对象方法学,它具有下面这样一些特点:使用对象的概念来构造软件在面向对象方法学中,以对象的概念来对应模拟实际系统中的各种元素,并且以对象的集合构成软件系统的整体,以对象的性质和行为来完成软件系统的所有功能。
如果仅使用了对象概念来开发软件,可以称为“基于对象”的软件开发方法。
使用类的概念来完成对象定义面向对象方法学中不仅使用对象的概念,而且使用类的概念。
对象作为类的实例,是在软件运行过程中按照类的定义动态生成的,因此实现软件中所有类的定义是软件开发的主要工作。