- 2
- 0
- 约6.62万字
- 约 704页
- 2023-08-24 发布于广东
- 举报
9.1.2 面向对象方法的优点 1.与人们习惯的思维方法一致; 2.稳定性好; 3.可重用性好; 4.较易开发大型软件产品; 5. 可维护性好。 当前第478页\共有704页\编于星期一\15点 9.1.3 喷泉模型 当前第479页\共有704页\编于星期一\15点 9.2 面向对象的概念 9.2.1 对象 1、对象的形象表示 状态S 操作1 操作2 操作3 界面 操作1、2、3的实现 图9.2 对象的形象表示 当前第480页\共有704页\编于星期一\15点 1)定义1:对象是具有相同状态的一组操作的集合。 2)定义2:对象是对属性值和操作的封装。 3)定义3:对象::= ID, MS, DS, MI 其中,ID是对象的名字;MS是对象中的操作集合;DS是对象的数据集合;MI是对象受理的消息名集合(即对外接口)。 2、对象的定义 当前第481页\共有704页\编于星期一\15点 状态S 操作:f1, f2, …, fn 转换:g1, g2, …,gn 图9.3 用自动机模拟对象 转换:新状态S’=gi (X,S) 输出 fi (X, S) 输入fi , X 当前第482页\共有704页\编于星期一\15点 3、对象的特点 1)以数据为中心; 2)对象是主动的; 3)实现了数据封装; 4)本质上具有并行性; 5)模块独立性好。 当前第483页\共有704页\编于星期一\15点 9.2.2 其他概念 1、类(Class) 类就是对具有相同数据和相同操作的一组相似对象的定义。 如:Circle类具有相同的数据(圆心坐标、半径、颜色)和相同的操作(显示自己、放大缩小半径、在屏幕上移动位置)。 当前第484页\共有704页\编于星期一\15点 又如:下面C++语言定义的Queue类,可用于实现一个队列(即先进先出的表): Class Queue { int q [100]; int sloc, rloc; public: void init ( ); //成员函数 void qput (int i); int qget( ); }; 当前第485页\共有704页\编于星期一\15点 类有私有变量(Private)和公有变量(Public)。 缺省时,都属于私有的,只能由类内部其他成员来访问,不能由程序的其他部分来访问。 这是一种实现封装的方法。 当前第486页\共有704页\编于星期一\15点 实例就是由某个特定的类所描述的一个具体的对象。 如:Circle a ; //声明Circle类实例a Queue Q1, Q2; //声明Queue类实例Q1和Q2 2、实例(Instance) 当前第487页\共有704页\编于星期一\15点 消息就是用来请求对象执行某个处理或回答某些信息的要求。 消息既可以是数据流,也可以是控制流。一条消息可以发送给不同的对象,对消息的解释完全由接收信息的对象来完成,不同的对象对相同形式的消息可以有不同的解释。 3、消息(Message) 当前第488页\共有704页\编于星期一\15点 与传统程序的“调用/返回”所不同的是,对于传来的消息,对象可以返回相应的回答信息,也可以不返回。 一个消息由三个部分组成: 1)接收信息的对象; 2)信息选择符(即消息名); 3)零个或多个变元(参数)。 如:MyCircle.Show(GREEN); 当前第489页\共有704页\编于星期一\15点 4、方法(Method) 方法,是对象所能执行的操作。 C++中把方法称为成员函数,如Circle类中定义的成员函数:Show(int color) 当前第490页\共有704页\编于星期一\15点 5、属性(Attribute) 属性,是类中定义的数据。 C++中把属性称为数据成员。 当前第491页\共有704页\编于星期一\15点 6、封装(encapsulation) 封装就是信息隐藏,通过封装对外界隐藏了对象的实现细节。 当前第492页\共有704页\编于星期一\15点 7、继承(Inheritance) 继承,是指能够直接获得已有的性质和特征,而不必重复定义它们。 A的操作 A的变量 类A A的实例变量 从A的继承
原创力文档

文档评论(0)