软件工程导论第五版讲解学习.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
9.2 面向对象的概念 9.2.1 对象 1、对象的形象表示 状态S 操作1 操作2 操作3 界面 操作1、2、3的实现 图9.2 对象的形象表示 1)定义1:对象是具有相同状态的一组操作的集合。 2)定义2:对象是对属性值和操作的封装。 3)定义3:对象::= ID, MS, DS, MI 其中,ID是对象的名字;MS是对象中的操作集合;DS是对象的数据集合;MI是对象受理的消息名集合(即对外接口)。 2、对象的定义 状态S 操作:f1, f2, …, fn 转换:g1, g2, …,gn 图9.3 用自动机模拟对象 转换:新状态S’=gi (X,S) 输出 fi (X, S) 输入fi , X 3、对象的特点 1)以数据为中心; 2)对象是主动的; 3)实现了数据封装; 4)本质上具有并行性; 5)模块独立性好。 9.2.2 其他概念 1、类(Class) 类就是对具有相同数据和相同操作的一组相似对象的定义。 如:Circle类具有相同的数据(圆心坐标、半径、颜色)和相同的操作(显示自己、放大缩小半径、在屏幕上移动位置)。 又如:下面C++语言定义的Queue类,可用于实现一个队列(即先进先出的表): Class Queue { int q [100]; int sloc, rloc; public: void init ( ); //成员函数 void qput (int i); int qget( ); }; 类有私有变量(Private)和公有变量(Public)。 缺省时,都属于私有的,只能由类内部其他成员来访问,不能由程序的其他部分来访问。 这是一种实现封装的方法。 实例就是由某个特定的类所描述的一个具体的对象。 如:Circle a ; //声明Circle类实例a Queue Q1, Q2; //声明Queue类实例Q1和Q2 2、实例(Instance) 消息就是用来请求对象执行某个处理或回答某些信息的要求。 消息既可以是数据流,也可以是控制流。一条消息可以发送给不同的对象,对消息的解释完全由接收信息的对象来完成,不同的对象对相同形式的消息可以有不同的解释。 3、消息(Message) 与传统程序的“调用/返回”所不同的是,对于传来的消息,对象可以返回相应的回答信息,也可以不返回。 一个消息由三个部分组成: 1)接收信息的对象; 2)信息选择符(即消息名); 3)零个或多个变元(参数)。 如:MyCircle.Show(GREEN); 4、方法(Method) 方法,是对象所能执行的操作。 C++中把方法称为成员函数,如Circle类中定义的成员函数:Show(int color) 5、属性(Attribute) 属性,是类中定义的数据。 C++中把属性称为数据成员。 6、封装(encapsulation) 封装就是信息隐藏,通过封装对外界隐藏了对象的实现细节。 7、继承(Inheritance) 继承,是指能够直接获得已有的性质和特征,而不必重复定义它们。 A的操作 A的变量 类A A的实例变量 从A的继承特性 B的操作 B的变量 类B 继承来的A的实例变量 B的实例变量 类A A的实例a1 B的实例b1 类B:A的子类 图9.4 实现继承机制的原理 8、多态性(Polymorphism) 多态性,指子类对象可以象父类对象那样使用,同样的消息既可以发送给父类对象,也可以发送给子类对象。 即不同等级的类,可以公用一个方法的名字。 C++中,多态性是通过虚函数来实现的。在不同层次的类中,虚函数实现算法不同,在运行时根据接收消息的对象所属于的类来决定执行虚函数的版本,称为动态联编。 9、重载(Overloading) 有两种重载: 1)函数重载 指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。 如: Show(int a, int b) Show(int x) Show(int x, int y, int z) C++语言中函数重载是通过静态联编实现的。即编译时根据函数变元的个数和类型,决定函数版本。 8.2.3 软件维护的

文档评论(0)

yuzongjuan7808 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档