面向对象方法学的基本概念
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章:面向对象方法学引论
主要内容
9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型 9.7 3种模型之间的关系
目的与要求
✓ 一般了解:传统方法学的缺点;快速原型法的概 念及种类;面向对象的三种模型的概念及相互关 系。
✓ 重点掌握:面向对象方法学的基本概念、原理和 特点
5、属性(Attribute) 属性,是类中定义的数据。 C++中把属性称为数据成员。
6、封装(encapsulation)
封装就是信息隐藏,通过封装对外界隐藏了 对象的实现细节。
7、继承(Inheritance)
继承,是指能够直接获得已有的性质和特征,
而不必重复定义它们。
类A A的操作 A的变量
int sloc, rloc;
public:
void init ( );
//成员函数
void qput (int i);
int qget( );
};
类有私有变量(Private)和公有变量(Public)。 缺省时,都属于私有的,只能由类内部其他成员 来访问,不能由程序的其他部分来访问。 这是一种实现封装的方法。
解空间对象取决于程序设计语言: 汇编语言的对象:存储单元; 面向过程的高级语言的对象:变量、数组、记
录、文件等; 面向对象的高级语言的对象:除上述元素外,
还包括窗体、菜单、按钮、等等。
与传统方法不同,面向对象方法以数据 为主线,将数据和操作方法封装在对象中, 通过消息请求对象主动执行它的内部操作, 改变其内部私有数据。
9、重载(Overloading) 有两种重载: 1)函数重载
指在同一作用域内的若干个参数特征不同的函 数可以使用相同的函数名字。
如: Show(int a, int b) Show(int x)
Show(int x, int y, int z) C++ 语 言 中 函 数 重 载 是 通 过 静 态 联 编 实 现 的 。 即编译时根据函数变元的个数和类型,决定函数 版本。
与传统程序的“调用/返回”所不同的是, 对于传来的消息,对象可以返回相应的回答 信息,也可以不返回。
一个消息由三个部分组成: 1)接收信息的对象; 2)信息选择符(即消息名); 3)零个或多个变元(参数)。 如:MyCircle.Show(GREEN);
4、方法(Method)
方法,是对象所能执行的操作。 C++中把方法称为成员函数,如Circle类中 定义的成员函数:Show(int color)
面向对象方法具有四个要点:
A.认为客观世界是由对象组成; B.把所有对象都划分成各种对象类(Class); C.把若干对象类组成一个层次结构的系统(类等
级); D.对象彼此间仅通过传递消息互相联系。 OO = Objects + Class + Inheritance +
Communication with message
类就是对具有相同数据和相同操作的一组相 似对象的定义。
如:Circle类具有相同的数据(圆心坐标、半 径、颜色)和相同的操作(显示自己、放大缩 小半径、在屏幕上移动位置)。
又如:下面C++语言定义的Queue类,可用于
实现一个队列(即先进先出的表):
Class Queue
{ int q [100];
A的实例a1 类A
A的实例变量
类B:A的子类 从A的继承特性
B的操作 B的变量
B的实例b1 类B
继承来的A的实例变量
B的实例变量
图9.4 实现继承机制的原理
8、多态性(Polymorphism) 多态性,指子类对象可以象父类对象那样使用,
同样的消息既可以发送给父类对象,也可以发送给 子类对象。
即不同等级的类,可以公用一个方法的名字。 C++中,多态性是通过虚函数来实现的。在不同 层次的类中,虚函数实现算法不同,在运行时根据 接收消息的对象所属于的类来决定执行虚函数的版 本,称为动态联编。
2、实例(Instance)
实例就是由某个特定的类所描述的一个具体 的对象。
如:Circle a ;
//声明Circle类实例a
Queue Q1, Q2; //声明Queue类实例Q1和Q2
3、消息(Message)
消息就是用来请求对象执行某个处理或回答 某些信息的要求。
消息既可以是数据流,也可以是控制流。一 条消息可以发送给不同的对象,对消息的解释 完全由接收信息的对象来完成,不同的对象对 相同形式的消息可以有不同的解释。
2)运算符重载 指同一运算符可以施加于不同类型的操作数
上面。当被操作数类型不同时,运算符的含义 是不同的。
编译时根据被操作数的类型,决定使用算符 的哪种语义。
重点与难点
✓ 面向对象方法学的基本概念、原理和特点 。
9.1 面向对象方法学概述
9.1.1 面向对象方法学的要点
面向对象方法学的基本原则:尽可能模拟人类 习惯的思维方式,使开发软件的方法与过程尽可能 接近人类认识世界解决问题的方法与过程。
➢客观世界中的实体——问题域中的对象; ➢计算机中的实体——解空间对象;
9.1.2 面向对象方法的优点
1.与人们习惯的思维方法一致; 2.稳定性好; 3.可重用性好; 4.较易开发大型软件产品; 5. 可维护性好。
9.1.3 喷泉模型
9.2 面向对象的概念
9.2.1 对象
1、对象的形象表示
操作1 界面 操作2
操作3
状态 S
操作1、2、3的实现
图9.2 对象的形象表示
2、对象的定义
1)定义1:对象是具有相同状态的一组操作的集 合。
2)定义2:对象是对属性值和操作的封装。 3)定义3:对象::= < ID, MS, DS, MI > 其中,
ID是对象的名字;MS是对象中的操作集合; DS是对象的数据集合;MI是对象受理的消 息名集合(即对外接口)。
源自文库
输入fi , X
状态S
输出 fi (X, S)
操作:f1, f2, …, fn 转换:g1, g2, …,gn
转换:新状态S’=gi (X,S)
图9.3 用自动机模拟对象
3、对象的特点
1)以数据为中心; 2)对象是主动的; 3)实现了数据封装; 4)本质上具有并行性; 5)模块独立性好。
9.2.2 其他概念
1、类(Class)
主要内容
9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型 9.6 功能模型 9.7 3种模型之间的关系
目的与要求
✓ 一般了解:传统方法学的缺点;快速原型法的概 念及种类;面向对象的三种模型的概念及相互关 系。
✓ 重点掌握:面向对象方法学的基本概念、原理和 特点
5、属性(Attribute) 属性,是类中定义的数据。 C++中把属性称为数据成员。
6、封装(encapsulation)
封装就是信息隐藏,通过封装对外界隐藏了 对象的实现细节。
7、继承(Inheritance)
继承,是指能够直接获得已有的性质和特征,
而不必重复定义它们。
类A A的操作 A的变量
int sloc, rloc;
public:
void init ( );
//成员函数
void qput (int i);
int qget( );
};
类有私有变量(Private)和公有变量(Public)。 缺省时,都属于私有的,只能由类内部其他成员 来访问,不能由程序的其他部分来访问。 这是一种实现封装的方法。
解空间对象取决于程序设计语言: 汇编语言的对象:存储单元; 面向过程的高级语言的对象:变量、数组、记
录、文件等; 面向对象的高级语言的对象:除上述元素外,
还包括窗体、菜单、按钮、等等。
与传统方法不同,面向对象方法以数据 为主线,将数据和操作方法封装在对象中, 通过消息请求对象主动执行它的内部操作, 改变其内部私有数据。
9、重载(Overloading) 有两种重载: 1)函数重载
指在同一作用域内的若干个参数特征不同的函 数可以使用相同的函数名字。
如: Show(int a, int b) Show(int x)
Show(int x, int y, int z) C++ 语 言 中 函 数 重 载 是 通 过 静 态 联 编 实 现 的 。 即编译时根据函数变元的个数和类型,决定函数 版本。
与传统程序的“调用/返回”所不同的是, 对于传来的消息,对象可以返回相应的回答 信息,也可以不返回。
一个消息由三个部分组成: 1)接收信息的对象; 2)信息选择符(即消息名); 3)零个或多个变元(参数)。 如:MyCircle.Show(GREEN);
4、方法(Method)
方法,是对象所能执行的操作。 C++中把方法称为成员函数,如Circle类中 定义的成员函数:Show(int color)
面向对象方法具有四个要点:
A.认为客观世界是由对象组成; B.把所有对象都划分成各种对象类(Class); C.把若干对象类组成一个层次结构的系统(类等
级); D.对象彼此间仅通过传递消息互相联系。 OO = Objects + Class + Inheritance +
Communication with message
类就是对具有相同数据和相同操作的一组相 似对象的定义。
如:Circle类具有相同的数据(圆心坐标、半 径、颜色)和相同的操作(显示自己、放大缩 小半径、在屏幕上移动位置)。
又如:下面C++语言定义的Queue类,可用于
实现一个队列(即先进先出的表):
Class Queue
{ int q [100];
A的实例a1 类A
A的实例变量
类B:A的子类 从A的继承特性
B的操作 B的变量
B的实例b1 类B
继承来的A的实例变量
B的实例变量
图9.4 实现继承机制的原理
8、多态性(Polymorphism) 多态性,指子类对象可以象父类对象那样使用,
同样的消息既可以发送给父类对象,也可以发送给 子类对象。
即不同等级的类,可以公用一个方法的名字。 C++中,多态性是通过虚函数来实现的。在不同 层次的类中,虚函数实现算法不同,在运行时根据 接收消息的对象所属于的类来决定执行虚函数的版 本,称为动态联编。
2、实例(Instance)
实例就是由某个特定的类所描述的一个具体 的对象。
如:Circle a ;
//声明Circle类实例a
Queue Q1, Q2; //声明Queue类实例Q1和Q2
3、消息(Message)
消息就是用来请求对象执行某个处理或回答 某些信息的要求。
消息既可以是数据流,也可以是控制流。一 条消息可以发送给不同的对象,对消息的解释 完全由接收信息的对象来完成,不同的对象对 相同形式的消息可以有不同的解释。
2)运算符重载 指同一运算符可以施加于不同类型的操作数
上面。当被操作数类型不同时,运算符的含义 是不同的。
编译时根据被操作数的类型,决定使用算符 的哪种语义。
重点与难点
✓ 面向对象方法学的基本概念、原理和特点 。
9.1 面向对象方法学概述
9.1.1 面向对象方法学的要点
面向对象方法学的基本原则:尽可能模拟人类 习惯的思维方式,使开发软件的方法与过程尽可能 接近人类认识世界解决问题的方法与过程。
➢客观世界中的实体——问题域中的对象; ➢计算机中的实体——解空间对象;
9.1.2 面向对象方法的优点
1.与人们习惯的思维方法一致; 2.稳定性好; 3.可重用性好; 4.较易开发大型软件产品; 5. 可维护性好。
9.1.3 喷泉模型
9.2 面向对象的概念
9.2.1 对象
1、对象的形象表示
操作1 界面 操作2
操作3
状态 S
操作1、2、3的实现
图9.2 对象的形象表示
2、对象的定义
1)定义1:对象是具有相同状态的一组操作的集 合。
2)定义2:对象是对属性值和操作的封装。 3)定义3:对象::= < ID, MS, DS, MI > 其中,
ID是对象的名字;MS是对象中的操作集合; DS是对象的数据集合;MI是对象受理的消 息名集合(即对外接口)。
源自文库
输入fi , X
状态S
输出 fi (X, S)
操作:f1, f2, …, fn 转换:g1, g2, …,gn
转换:新状态S’=gi (X,S)
图9.3 用自动机模拟对象
3、对象的特点
1)以数据为中心; 2)对象是主动的; 3)实现了数据封装; 4)本质上具有并行性; 5)模块独立性好。
9.2.2 其他概念
1、类(Class)