面向对象设计及实现.ppt_第1页
面向对象设计及实现.ppt_第2页
面向对象设计及实现.ppt_第3页
面向对象设计及实现.ppt_第4页
面向对象设计及实现.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CH7 面向对象技术 7.2.3 面向对象设计 面向对象设计(OOD,Object-Oriented Design)是面 向对象分析到实现的一个桥梁。面向对象分析是将用户需 求经过分析后,建立问题域精确模型的过程;而面向对象 设计则根据面向对象分析得到的需求模型,建立求解域模 型的过程。即分析必须搞清楚系统分析必须搞清楚系统“做什么做什么”,而设计必,而设计必 须搞清楚系统须搞清楚系统“怎么做怎么做”,从分析到设计不是传统方法的 转换,而是平滑(无缝)过渡,而求解域模型是系统实现 的依据。 CH7 面向对象技术 面向对象设计可分为系统设计和类(对象)设计。系 统设计是高层设计,主要确定实现系统的策略和 目标系统的高层结构。类- int day; int year; date; / Month - 月;day - 日; year - 年 enum sexdef M, F; /M - 男;F - 女 enum appdef R, S; /R - 注册;S - 选课 class Student protected: / 导出类可以访问的数据变量 CH7 面向对象技术 char ID8; char Name24; sexdef Sex; date Birthday; date EnrollmentDay; char Department24; char Speciality24; char Password6; apptdef Application; / 导出类可以访问的操作 appdef GetApplication(); void PutApplication(); void Note(char *Msg); public: / 构造函数,必须与类名称相同 Student (char *InitID); / 析构函数,必须与类名称相同 Student(); CH7 面向对象技术 / 所有类都可以访问的操作 char *GetID(); char *GetPassword(); boolean VerifyPassword(); void ChangePassword(char *NewPassword, char *OldPassword); ; 在C+中,数据变量和操作都被说明为成员,数据变量和操作的名称 不能相同。类的成 员必须被说明为公有的(public)、保护的(protectd )或私有的(private)中的一种,其中 私有的为缺省值。公有成员可以 被任何类的操作访问;保护成员只允许类自身及其导出类的操作访问;私 有成员只允许类自身的操作访问。在上述例子中,类Student的所有数据 变量和几个操作被定义为保护成员,因为其导出类Undergraduate(本科 生)和Graduate(研究生) 将要访问这些成员。 类中操作的定义类似于一个过程或函数的定义,只是需要把类名作为 操作名的前缀。例6.2给出了用C+编码设计的类Student的操作 ChangePassword。 CH7 面向对象技术 例6.2 类操作的定义 void Student:Changepassword(char *NewPassword, char *OldPassword); if (OldPassword = Password ) Password = NewPassword; 与类名称相同的两个操作Student和Student分别称为构造函数和析构函数 ,它们分别用 于对象创建和对象消除操作。例如类Student的构造函数和 析构函数的定义分别如例6.3和6.4 所示。 例6.3 类构造函数的定义 Student:Student (char *InitID) ID = InitID; CH7 面向对象技术 例6.4 类析构函数的定义 Student:Student() / 析构函数是不带参数的,其名称是在类名称前面加一个波浪号“”。 6.2.2 对象创建 C+有两种对象创建方式,静态内存分配方式和动态内存分配方式,每当 创建一个新对 象,就执行一次构造函数。 例6.5用静态内存分配方式创建了类Student的学号为98109002的对象 studentobj。 例6.5 对象创建的静态内存分配方式 Student studentobj(“98109002“); CH7 面向对象技术 如果该语句是出现在一个操作或函数中,则说明studentobj被定义为 局部变量,当操作或 函数执行完毕退出时,该对象将被自动消除,所占用 的内存被释放,释放内存时将执行一次析构函数。如果该语句是将 studentobj定义为一个全局变量,则只有系统退出后对象studentobj才会被 消除。 采用动态内存分配方式创建对象时需要借用C+的new操作符进行。 new操作符为新对象分配内存并且返回它的一个指针,指针存放在指针变 量中。new操作符可以包括构造函数中 的参数,如例6.6所示。 例6.6 对象创建的动态内存分配方式 Student *studentobj = new Student(“98109002“) 动态对象所占的内存必须使用C+的delete操作符来释放。delete操作符首 先唤醒该类的 析构函数,然后释放该对象的内存,如例6.7所示。 例6.7 动态对象内存释放 delete studentobj; 注意,构造函数和析构函数仅仅是用来初始化及删除对象的,内存分配及 释放应该明确由new和delete操作符来实现或由局部变量的作用消失来实现 。 CH7 面向对象技术 3、 实现环境 (1) MFC类库 (2) 开发工具: Microsoft Visual C+的四个基本开发工具。如文本 编辑器、项目管理器、浏览器、调试器,等等。 4 、编码调试 5 、测试 6 、维护 CH7 面向对象技术 面向对象设计(面向对象设计( OOD OOD ) 面向对象设计建立软件系统的结构。面向对象设计建立软件系统的结构。 设计层次为:设计层次为: 1)1) 子系统层:包含每个子系统的表示。 2) 类和对象层:包含类层次和每个对象的 设计表示。 3) 消息层:包含使每个对象能够和其协作 者通信的细节,建立系统的外部和内部接 口。 4) 责任层:包含针对每个对象的所有属性 和操作的数据结构和算法的设计。 CH7 面向对象技术 面向对象设计的主要工作分为两个阶段:高层面向对象设计的主要工作分为两个阶段:高层 设计和类设计。设计和类设计。 vv高层设计构造应用软件的总体模型。高层设计构造应用软件的总体模型。 vv类设计建立类的规格说明,包括类的实例类设计建立类的规格说明,包括类的实例 可执行的操作和它们的数据表示。可执行的操作和它们的数据表示。 三个可能的利用现有类的方向:三个可能的利用现有类的方向: vv 现有类的复用现有类的复用 vv 从现有类进行演化从现有类进行演化 vv 从废弃型进行开发从废弃型进行开发 CH7 面向对象技术 Coad 与 Yourdon 的设计模型 l设计模型被划分成了 4 个组成部分,这些组成 部分把实现技术隐藏起来,使之与系统的基本 问题领域行为分离开来。 l从分析转到设计需要在分析模型的基础上加入 实现方面的限制。 l设计模型类似于构造蓝图,设计模型全面地定 义了如何用特定的实现技术建立起一个目标系 统。 CH7 面向对象技术 类与 对 象层 属性层属性层 服务层 结构层 主题层 问题 领域 部分 人机 交互 部分 任务 管理 部分 数据 管理 部分 主题 服务

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论