第11章面向对象程序设计精品PPT课件

合集下载

软件工程课本讲解面向对象的OMT方法

软件工程课本讲解面向对象的OMT方法
装成模块。 最终得到:对象设计文档 = 细化旳对象模型 + 细
化旳动态模型 + 细化旳功能模型。
16
第11章 面向对象的OMT方法
对象模型化技术OMT 对象模型化技术把分析时搜集旳信息构造在三类
模型中,即对象模型、功能模型和动态模型。
这个模型化旳过程是一种迭代过程。
17
第11章 面向对象的OMT方法
图11.4 三元关联 29
第11章 面向对象的OMT方法
角色为关联旳端点,阐明类在关联中旳作用和角 色。不同类旳关联角色可有可无,同类旳关联角色不 能省。角色旳表达如图11.5所示。
教师
讲授
课程
主讲
内容
图11.5 关联旳角色旳表达
30
第11章 面向对象的OMT方法
2) 受限关联
受限关联由两个类及一种限定词构成,限定词是 一种特定旳属性,用来有效地降低关联旳重数,限定 词在关联旳终端对象集中阐明。
技术之上旳,OMT措施旳基础是开发系统旳3个模型,再 细化这3种模型,并优化以构成设计。对象模型由系统中 旳对象及其关系构成,动态模型描述系统中对象对事件旳响应及对 象间旳相互作用,功能模型则拟定对象值上旳多种变换及变换上旳
约束。
6
第11章 面向对象的OMT方法
11.1.2 系统分析
分析旳目旳是拟定一种系统“干什么”旳模型,该模型经过 使用对象、关联、动态控制流和功能变换等来描述。分析过程是 一种不断获取需求及不断与顾客磋商旳过程。
8
第11章 面向对象的OMT方法
3. 构造动态模型
构造动态模型旳环节如下: (1) 准备经典交互序列旳脚本。 (2) 拟定对象间旳事件并为各脚本安排事件跟踪。 (3) 准备系统旳事件流图。 (4) 开发具有主要动态行为旳各个类旳状态图。 (5) 检验状态图中共享事件旳一致性和完整性。 最终得到:动态模型 = 状态图 + 全局事件流图。

第11章 Windows 编程初步-面向对象程序设计(C++语言)(第二版)-程磊-清华大学出版社

第11章 Windows 编程初步-面向对象程序设计(C++语言)(第二版)-程磊-清华大学出版社
另外,Qt Creator、C++ Builder 等也是比较优秀的C++ 编程环境,能够进行Windows程序设计,也有丰富的类 库支持,感兴趣的读者也可以学习使用。
❖ 第一种方法的特点是可以使应用程序更精炼,运 行效率更高,编写程序时有较大的自由度,但难 度较大;
❖ 第二种方法的特点是采用MFC提供的类库编写程 序,这些类中已经封装了大部分的Windows API 函数,还提供了编写不同程序类型的模版和框架, 所以编写程序比较容易,而且还允许直接调用 Windows API 函数来实现一些特殊的功能。
第三部分 Visual C++环境下Windows程序 开发概述
第11章 Windows 编程初步 第12章 MFC库和应用程序框架 第13章 综合设计实例– 简单绘图程序
第11章 Windows 编程初步
本章要点:
❖简单的Windows程序框架 ❖自定义类和Windows程序框架结合
在编写Windows 应用程序时,常采用两种方法: ❖ 一是使用Windows SDK ( Software development Kit,即
图11.5 向解决方案中添加新项
图11.6 添加main.cpp文件
(6)可以看到在“解决方案管理器”视图中的“源文件” 栏目中被添加了一个main.cpp文件,同时可以看到 Visual Studio开发工具的中间编辑窗口也打开了一个空 白的文件编辑窗口,在这里输入例11.1的源程序,然后保 存,如图11.7所示。
❖ Windows程序一般是一个可视化的窗口程序,通过操作 系统发送的消息来处理用户输入的数据,然后通过在窗口 上绘制或者把数据发给窗口上的组件来显示数据。
❖ 句柄就是一个标识符,用来区别同类对象或者资源的唯一 标志,可以认为它是个无符号整数或者一个指针均可。

面向对象程序设计(JAVA)课件

面向对象程序设计(JAVA)课件
字符串比较
String类提供了比较两个字符串的方法,如 equals()和compareTo()。
3
字符串转换
String类还提供了将其他数据类型转换为字符串 的方法,如Integer.toString()和 Double.toString()。
ArrayList类
动态数组
ArrayList类是一个动态数组,可以根据需要自动增长 和缩小。
Java的主要特性
面向对象
平台无关
自动内存管理
多线程支持
Java是一种纯粹的面向对象 编程语言,支持类和对象的 概念,以及继承、多态等面
向对象特性。
Java通过字节码实现跨平台 运行,只要安装了Java运行 时环境(JRE)或Java开发工 具包(JDK),就可以在任何 支持Java的平台上运行Java
01
常用方法
HashMap类提供了用于插入、删除和 查找键值对的方法,如put()、remove() 和get()。
02
03
遍历与清空
HashMap类还提供了用于遍历和清空 容器的方法,如iterator()和clear()。
Date类
日期时间表示
Date类用于表示特定的 时间点,包括年、月、 日、时、分、秒等信息。
异常的处理方式
01
抛出异常
当程序出现异常时,会抛出异常对象,传递给调用者。
02
捕获异常
在代码中通过try-catch语句块来捕获和处理异常。当try块中的代码出
现异常时,控制流会立即跳转到相应的catch块中执行处理逻辑。
03
声明抛出异常ຫໍສະໝຸດ 在方法签名中通过throws关键字声明该方法可能会抛出的异常,要求

面向对象程序设计-Java语言优秀课件

面向对象程序设计-Java语言优秀课件

–继承的特征
(1)继承关系是传递的。 (2)继承简化了人们对事物的认识和 描述,能清晰体现相关类间的层次结 构关系。
(3)提供软件复用功能。 (4)通过增强一致性来减少模块间的 接口和界面,大大增加程序的易维护 性。
(5)提供多继承机制。
–继承的实现
•在Java程序设计中,继承是通过 extends关键字来实现的。在定义类时 使用extends关键字指明新定义类的父 类,新定义的类称为指定父类的子类, 就在两个类之间建立了继承关系。这 个新定义的子类可以从父类那里继承 所有非private的属性和方法作为自己 的成员。实际上,在定义一个类而不 给出extends关键字及父类名时,默认 这个类是系统类Object的子类。
•消息的性质:
(1)同一对象可接收不同形式的 多个消息,产生不同的响应。
(2)相同形式的消息可以发送给 不同对象,所做出的响应可以是截 然不同的。
(3)消息的发送可以不考虑具体 的接收者,对象可以响应消息,也 可以对消息不予理会,对消息的响 应并不是必须的。
–公有消息和私有消息
•对象之间的消息传递称为公有消 息;而对象内部数据成员或成员 方法之间的调用称为私有消息。
【例5.3】数据成员隐藏示例。
3.成员方法的继承:子类可以继 承父类的非私有成员方法。
【例5.4】成员方法继承示例。
4.成员方法的覆盖:子类可以重 新定义与父类同名的成员方法, 实现对父类方法的覆盖。方法的 覆盖与数据成员的隐藏的不同之 处在于:
子类隐藏父类的数据成员只是使 之不可见,父类同名的数据成员 在子类对象中仍然占有自己独立 的内存空间;而子类方法对父类 同名方法的覆盖将清除父类方法 占用的内存,从而使父类方法在 子类对象中不复存在。

面向对象程序设计 c 的初步知识PPT课件

面向对象程序设计  c  的初步知识PPT课件

stud2.display( );
// 调用对象stud2的display函数
return 0;
}
第18页/共32页
在一个类中包含两种成员: 数据和函数,分别称为数据成员和成员函数。在C++中 把一组数据和有权调用这些数据的函数封装在一起,组成一种称为“类(class)”的数 据结构。在上面的程序中,数据成员num,score和成员函数setdata,display组成 了一个名为Student的“类”类型。成员函数是用来对数据成员进行操作的。也就
整体编译。
第9页/共32页
程序的第2行“using namespace std; ” 的意思是“使用命名空间std”。C++标 准库中的类和函数是在命名空间std中声明的,因此程序中如果需要用到C++标准库 (此时就需要用#include命令行),就需要用“using namespace std; ”作声明,
编写的。
第4页/共32页
但是随着软件规模的增大,用C语言编写程序渐渐显得有些吃力了。 C++是由AT&T Bell(贝尔)实验室的Bjarne Stroustrup博士及其同事于20世纪80 年代初在C语言的基础上开发成功的。C++保留了C语言原有的所有优点,增加了面
向对象的机制。 C++是由C发展而来的,与C兼容。用C语言写的程序基本上可以不加修改地用于 C++。从C++的名字可以看出它是C的超集。C++既可用于面向过程的结构化程序 设计,又可用于面向对象的程序设计,是一种功能强大的混合型的程序设计语言。
机高级语言。其中使用最广泛、影响最大的当推BASIC语言和C语言。 BASIC语言是1964年在FORTRAN语言的基础上简化而成的,它是为初学者设计的

软件工程导论课件之第11章面向对象设计

软件工程导论课件之第11章面向对象设计
据抽象。 3. 信息隐藏 n 在面向对象方法中,信息隐藏通过对象的封装
性实现。
软件工程导论课件之第11章面向对象 设计
4. 弱耦合 n 耦合指不同对象之间相互关联的紧密程度。 n 一般说来,对象之间的耦合可分为两大类:
q 交互耦合
n 如果对象之间的耦合通过消息连接来实现,则这种耦合 就是交互耦合。
要划分“主题”。
软件工程导论课件之第11章面向对象 设计
4. 使用简单的协议 n 一般说来,消息中的参数不要超过3个。当然,
不超过3个的限制也不是绝对的。 5. 使用简单的服务 n 一般说来,应该尽量避免使用复杂的服务。 n 如果一个服务中包含了过多的源程序语句,或
者语句嵌套层次太多,或者使用了复杂的 CASE语句,则应该仔细检查这个服务,设法 分解或简化它,考虑用一般-特殊结构代替。
软件工程导论课件之第11章面向对象 设计
6. 可重用 n 软件重用是提高软件开发生产率和目标系统质
量的重要途径。 n 重用基本上从设计阶段开始。 n 重用有两方面的含义:
q 一是尽量使用已有的类(包括开发环境提供的类库, 及以往开发类似系统时创建的类),
q 二是如果确实需要创建新类,则在设计这些新类的 协议时,应该考虑将来的可重复使用性。
1. 调整需求 n 有两种情况会导致修改通过面向对象分析所确
定的系统需求:
q 一是用户需求或外部环境发生了变化; q 二是分析员对问题域理解不透彻或缺乏领域专家帮
助。
n 无论出现上述哪种情况,通常都只需简单地修 改面向对象分析结果,然后再把这些修改反映 到问题域子系统中。
软件工程导论课件之第11章面向对象 设计
软件工程导论课件之第11章面向对象 设计
11.3.2 类构件

C#面向对象程序设计-正式版PPT课件

C#面向对象程序设计-正式版PPT课件
• class关键字前面是访问级别。在C#中,类的访问 级别由类的修饰符进行限定,类的修饰符如表5-1 所示。在上例中,如果类的修饰符为public,这表 示该类可以被任何其他类访问。类的名称位于 class关键字的后面。
-
14
2.2 类的声明
• 以上的类修饰符可以两个或多个组合起来使用,但需要注意下面几点: (1) 在一个类声明中,同一类修饰符不能多次出现,否则会出错。 (2) new类修饰符仅允许在嵌套类中表示类声明时使用,表明类中隐藏了
//香蕉类中其他的属性和方法 }
-
6
1.2 面向对象语言的特点
(2) 封装
• 类是属性和方法的集合,为了实现某项功能而定 义类后,开发人员并不需要了解类体内每行代码 的具体涵义,只需通过对象来调用类内某个属性 或方法即可实现某项功能,这就是类的封装。
• 封装提供了外界与对象进行交互的控制机制,设
计和实施者可以公开外界需要直接操作的属性和
• 例如:某个对象,其基类为“笔”,在调用它的“写”
方法时,程序会自动判断出它的具体类型,如果是毛
笔,则调用毛笔类对应的“写”方法,如果是铅笔,
则调用铅笔类对应的“写”方法。
-
9
2 定义类
• 在C#中,“类”是一种数据结构,它可以包含数据成员 (常量和字段)、函数成员(方法、属性、事件、索引器、
运算符、构造函数、析构函数)。
由基类中继承而来的、与基类中同名的成员。
(3) 在使用public、protected、internal和private这些类修饰符时,要注意这些类 修饰符不仅表示所定义类的访问特性,而且还表明类中成员声明中的访问特 性,并且它们的可用性也会对派生类造成影响。
(4) 抽象类修饰符abstract和密封类修饰符sealed都是受限类修饰符。

面向对象程序设计PPT课件

面向对象程序设计PPT课件

2019/7/26
第5章多态与抽象类
32
小结
(1)如果你期望在派生类中重新定义一 个成员函数,那么你就应该在基类中 把该函数设为virtual。
(2)以单一指令调用不同函数,这种性 质就是"多态"。
(3)虚函数是C++语言的多态性质和动 态绑定的关键。
(4)虚函数派生下去仍是虚函数,而且
可以省略virtual关键词。 2019/7/26
2019/7/26
第5章多态与抽象类
10
根据类型兼容规则,基类指针p可以指 向派生类对象obj2、obj3(即派生类 对象可以代替基类对象,给基类指针 赋值),但编译时,编译器根据p的类 型是基类型,自动调用基类的who(), 所以结果如上所示。
2019/7/26
第5章多态与抽象类
11
【思考题5-3】如果基类指针要访问派 生类的who(),怎么办?
C++提供了多态机制来解决这个问题。 类型兼容规则是C++多态的重要基础。
2019/7/26
第5章多态与抽象类
12
多态
多态(Polymorphism)是指具有相似 功能的不同函数使用同一个名称来实 现,从而可以使用相同的调用方式来 调用这些具有不同功能的同名函数的 特性。
2019/7/26
提出问题
【例5-1】在例4-1程序中存在的两个 不足:
(1)基类Pay()和Display()的函数体均为空, 在实现部分仍要写出函数体,显得冗余。
(2)在主函数中,建立了4个不同类的对象, 进行了类似的操作,重复写了4遍类似的语句 ,程序不够简洁。
2019/7/26
第5章多态与抽象类
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3. 实现阶段
将编码、测试和集成组合在一起 连续的原型迭代 增加主函数和必要的外部函数,形成完整的程序。
11.2 面向对象的程序设计例题
例:编写某公司职工月薪管理程序
本程序中对公司职工的基本信息和月薪信息进行简单管理。
每个职工的基本信息包括职工种别、职工号、姓名、性别、出生日 期、受聘日期和当月月薪总额。职工种别分为经理、销售经理、推销员、 计时工和计件工五种。
Boss float MouthSalary virtual float earnings ( )
CommissionWorker float commission int quantity
virtual float earnings ( )
PieceWorker float wagePerPiece
分析 设计 实现 维护
1. 分析阶段
面向对象分析(OOA)构造对象三法则: 区分对象及其属性 区分整体对象及其组成部分 不同对象与类的形成及区分
面向对象分析(OOA)的五个主要步骤
标识对象 标识对象的属性 定义对象的方法 识别对象所属的类 定义主题
2.设计阶段
主体部件(PDC)的设计 用户界面部件(HIC)的设计 任务管理部件(TMC)的设计 数据管理部件(DMC)的设计
int quantity virtual float earnings ( )
HourlyWorker float wage float hours
virtual float earnings ( )
SaleBoss virtual float earnings ( )
详细设计后各类的组成和操作图
实现阶段
When You Do Your Best, Failure Is Great, So Don'T Give Up, Stick To The End
谢谢大家
荣幸这一路,与你同行
It'S An Honor To Walk With You All The Way
演讲人:XXXXXX 时 间:XX年XX月XX日
在开发过程中,每个类的说明分别存入H文件,每个类的成员 函数的实现分别存入cpp文件。
主菜单
月薪管理系统 --------Leabharlann ------------------
1. 添加职工信息 2. 统计公司月薪总额 3. 按职工号查询 4. 按职工月薪降序排序 5. 显示全体职工信息 6. 退出系统
结束语
当你尽了自己的最大努力时,失败也是伟大的, 所以不要放弃,坚持就是正确的。
工作时数 每小时报酬
计算月薪
销售经理类 计算月薪
各类的组成和操作图
Date int year,mounth,day
void print() void
setDate(int,int,int) int getYear()
int getMounth() int getDay()
Employee int EmpNo char Name[20],Sex[10] float TotalMounthPay Date BirthDay,HireDay char EmpKind[20] void savetofile() void readwages(Employee **pEmp) int getEmpNo( ) virtual float earnings ( ) float getTotalMounthPay( ) void print ( )
第二部分 面向对象程序设计
第十一章 面向对象程序设计
本章课件制作:关欣
本章内容
结构化程序设计方法和面向对象方法 面向对象程序的开发过程 面向对象程序设计例题
结构化程序设计方法的缺点:
① 结构化程序不易实现功能变化,有时甚至要重新设计整 个 程序的结构。
② 数据和对数据的操作(即函数)分离,数据的表示发生变 化,与之相关的所有函数均要修改,使得程序难于维护。
计时工 (HourlyWorker)
工作时数 每小时报酬
销售经理 (SaleBoss)
各类及类间关系图
设计阶段
日期类 年、月、日
设置 打印
职工类
基本信息
读写职工文件 计算月薪 取职工号 取月薪总额 打印
经理类 月薪
计算月薪
推销员类
推销额 提成比例
计算月薪
计件工类
产品数量 单件产品报酬
计算月薪
计时工类
月薪计算方法分为:
经理为固定月薪,没有加班费和提成费; 推销员月薪为按当月推销额的一定百分比提成;
销售经理除有一份固定月薪外,另外再按当月销售额的某个比例提成 ;
计件工的月薪为当月生产产品的件数与每件产品的报酬之乘积; 计时工的月薪为当月完成工时数与每小时的报酬之乘积
分析阶段
日期类 (Date)
年、月、日
职工类 (Employee)
职工种别、职工 号、姓名、性别 、出生日期、受 聘日期、当月月
薪总额
UML符号 :
矩形符号表示对象和类
符号表示组合关系
符号表示继承关系
经理 (Boss)
月薪
推销员 (CommissionWorker)
推销额 提成比例
计件工 (PieceWorker)
产品数量 单件产品报酬
③ 程序代码复用性较差,也就是调用一个函数或使用一个公 共的用户定义的数据类型而已。
面向对象程序设计方法:
面向对象=对象+类+继承+通信
11.1 面向对象的开发过程
分析阶段 :从问题域抽象出类和对象的模型 设计阶段:对时间问题域行为中的关键抽象进行再分解 实现阶段:将编码、测试和集成组合在一起,连续进行原型迭代
相关文档
最新文档