3面向对象程序分析和设计的基本方法课件_第1页
3面向对象程序分析和设计的基本方法课件_第2页
3面向对象程序分析和设计的基本方法课件_第3页
3面向对象程序分析和设计的基本方法课件_第4页
3面向对象程序分析和设计的基本方法课件_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

C++面向对象程序设计2.面向对象程序分析和设计的基本方法C++面向对象程序设计2.面向对象程序分析和设计的基本方法1Agenda1.回忆“成绩管理”的设计过程2.介绍OOP的分析思路类组合的概念(类图)UML的更多表示方法(协作图)3.实现OOP的成绩管理多文档项目Agenda1.回忆“成绩管理”的设计过程2小型程序的开发步骤这是“软件工程”的内容完整的软件开发过程分为很多步骤,如可行性分析、需求分析、概要设计、详细设计,然后才是编程调试,最终是测试和部署。需要有较多的实践经验后才能完全理解其中的理论和方法。为什么要介绍很多同学写软件时感到无从着手,就是缺乏一套基本的步骤。所以我们要介绍最基本的分析和设计步骤。提醒:仍然需要多实践,才能掌握。介绍什么很小型的软件开发时的一般步骤分为两个大类介绍。前者是为了与后者进行对比。面向过程的结构化程序设计面向对象的分析和设计说明我们介绍的不是非常正规的软件工程的步骤,仅为大家提供参考。小型程序的开发步骤这是“软件工程”的内容3面向过程的结构化程序设计可以分为五个步骤功能分析:需要实现哪些功能。数据分析:需要哪些数据类型,如何存储。用户界面设计:使用什么样的界面。程序模块划分:需要写哪些源代码文件,其中具体包含哪些功能。编写、调试代码。面向过程的结构化程序设计可以分为五个步骤4面向过程的结构化程序设计(1)功能分析(需求分析):使用框图。面向过程的结构化程序设计(1)功能分析(需求分析):5面向过程的结构化程序设计(1.1)各功能的描述简单功能:文字描述即可。复杂功能:画出流程图。班级学生录入简单描述:输入学生姓名、学号,保存。详细描述:见右图面向过程的结构化程序设计(1.1)各功能的描述班级学生录入63面向对象程序分析和设计的基本方法课件73面向对象程序分析和设计的基本方法课件8面向过程的结构化程序设计(2)程序中的数据分析程序中涉及到学生、学生的成绩、学号、姓名等,还有班级。考虑数据在程序中如何表示:每个学生的相关信息使用结构体表示。班级也使用结构体表示,班级内学生使用数组或链表表示。面向过程的结构化程序设计(2)程序中的数据分析9面向过程的结构化程序设计(3)用户界面设计文本界面,使用菜单选择需要的功能,并根据选择分别调用不同的函数。数据在界面的输入、输出:使用printf,scanf等实现。面向过程的结构化程序设计(3)用户界面设计10面向过程的结构化程序设计(4)程序模块划分一般按照功能分类,将相似的功能划分在一个程序模块(c文件和头文件)中实现。注意:程序模块中的功能实现为函数。这个过程还可能发现一些共用的功能。例如图中红色的函数。面向过程的结构化程序设计(4)程序模块划分11面向过程的结构化程序设计(5)编写代码并调试根据上述分析,创建工程、创建C文件和头文件(程序模块)、编写和调试代码演示:实现“班级学生成绩管理”中的“班级学生录入”和“学生成绩录入”实现“班级学生成绩统计分析”中的“统计平均成绩”。面向过程的结构化程序设计(5)编写代码并调试12面向对象的软件分析1.用例分析对应于面向过程的功能分析2.对象模型分析包含面向过程的数据分析,自然形成程序模块划分。3.用户界面设计面向过程时:分析使用什么样的函数。面向对象时:分析应该使用什么对象(类)。4.编写、调试代码。面向对象的软件分析1.用例分析13面向对象的软件分析(1)用例分析(需求分析)本质上还是软件功能分析。但使用“UML用例图”。对每个用例进行文字描述。复杂的使用”UML活动图“描述。面向对象的软件分析(1)用例分析(需求分析)14面向对象的软件分析(1)用例分析(续)C1:班级学生录入输入并保存班级中各个学生的姓名、学号、性别等。C2:学生成绩录入选择科目,输入学生学号和科目成绩。C3:学生成绩查询输入学生学号,查询并显示该学生的学号、姓名、各科成绩。C4:保存学生成绩将班级学生成绩保存在数据库或数据文件中C5:加载学生成绩从数据库或数据文件中加载班级学生成绩面向对象的软件分析(1)用例分析(续)15面向对象的软件分析(1)用例分析(续2)C6:学生成绩统计分析C6.1统计平均成绩输入科目,循环求和后平均,显示C6.2统计及格率输入科目,循环,累计及格人数,计算及格率,显示。C6.1统计平均成绩输入科目,循环,累计80分以上人数,计算优良率,显示。C6.1统计平均成绩输入科目,按科目成绩排序,显示排名、姓名、学号和科目成绩。面向对象的软件分析(1)用例分析(续2)16面向对象的软件分析(2)对象模型分析基本方法:从用例描述中发现较为复杂的数据作为“候选对象”。即考虑程序中可能使用哪些对象,以及它们的数据组成。将软件中的基本功能分配到各对象中。根据上述分析,画出UML类图面向对象的软件分析(2)对象模型分析17面向对象的软件分析(2)对象模型分析(实例)需要哪些对象候选对象(名词):班级,学生,姓名,学号,科目,成绩。姓名、学号、成绩等可以使用简单数据类型表示,不需要作为对象。剩余:班级、学生。功能分配:班级:添加学生、查询学生、保存和加载班级成绩、对班级成绩进行统计分析。学生:在前面的需求分析中,没有需要委托给学生的功能。但如果增加功能:查询单个学生的平均成绩、不及格科目数(黄牌判断)等,这些功能就应该委托给学生。一般没有功能的不作为“对象”。这里“学生”可以用以前的“结构体”表示。但考虑到系统功能扩展的可能性,还是将学生作为对象。面向对象的软件分析(2)对象模型分析(实例)18面向对象的软件分析(2)对象模型分析(续2)考虑到用户界面:需要菜单。菜单需要保存选项,具有显示选项,接收用户选择的功能,因此应该作为对象。总结:系统中包括以下对象:班级、学生、菜单面向对象的软件分析(2)对象模型分析(续2)19面向对象的软件分析(2)对象模型分析(续3)上述类图没有表达对象之间的关系聚合关系:CClass中保存CStudent对象的指针;成员:CStudent*Students;组合关系:CClass中保存CStudent对象。成员:CStudentStudents[];面向对象的软件分析(2)对象模型分析(续3)20对象关系及其代码表达另一个组成关系的例子:计算机由主机、显示器、键盘等组成。对应代码:classCComputer{

CHostm_Host; CMonitorm_Monitor; CKeyboardm_Keyboard;};组成关系的C++代码表达:对应代码:classCClass{

CStudentsm_Students[40];};对象关系及其代码表达另一个组成关系的例子:对应代码:组成关系21对象关系及其代码表达聚合关系及其C++代码表达兴趣小由多位班上的同学聚合而成对应代码:classCGroup{

CStudents*Members[40];};对象关系及其代码表达聚合关系及其C++代码表达对应代码:22对象关系及其代码表达引用关系实际上就是1对1的聚合关系。例如:班级与班主任的关系班级可以被指定一个班主任,但担任班主任的老师并不从属与班级。当班级撤销(如毕业)时,班主任老师仍然存在。班级也可能在一段时间内没有班主任。对应代码:classCClass{

CTeacher*ClassTeacher;};对象关系及其代码表达引用关系对应代码:23面向对象软件设计(3)用户界面设计图形界面:使用图形窗口、菜单、控件等文本界面:使用菜单选择所需功能。“菜单”可以作为一个对象:包括菜单选项,提供选择功能。面向对象软件设计(3)用户界面设计24面向对象的软件分析(4)编写、调试代码各类对应一个cpp和h文件,即一个模块。需要一个提供main()函数的模块(cpp)。面向对象的软件分析(4)编写、调试代码25后续分析前面的设计方法还是带有面向过程的性质在外部函数中实现的功能:录入学生信息录入学生成绩输入学生学号等可以将这些功能用一个“控制类”封装起来。这些功能作为控制类的成员函数。控制类可以没有数据成员。后续分析前面的设计方法还是带有面向过程的性质26演示基于对象模型编写代码演示基于对象模型编写代码27作业使用面向对象的方法编写成绩管理。设计文档:Word文档,包含前面讲的各步骤的内容(用例分析、对象模型分析—使用Rose或Visio作图)。编写学生成绩程序,要求必须实现:录入学生、录入成绩、统计平均成绩、菜单功能。其它选做。注意:增加了菜单类。要求:除main()函数外,不能有其它外部函数。作业使用面向对象的方法编写成绩管理。28C++面向对象程序设计2.面向对象程序分析和设计的基本方法C++面向对象程序设计2.面向对象程序分析和设计的基本方法29Agenda1.回忆“成绩管理”的设计过程2.介绍OOP的分析思路类组合的概念(类图)UML的更多表示方法(协作图)3.实现OOP的成绩管理多文档项目Agenda1.回忆“成绩管理”的设计过程30小型程序的开发步骤这是“软件工程”的内容完整的软件开发过程分为很多步骤,如可行性分析、需求分析、概要设计、详细设计,然后才是编程调试,最终是测试和部署。需要有较多的实践经验后才能完全理解其中的理论和方法。为什么要介绍很多同学写软件时感到无从着手,就是缺乏一套基本的步骤。所以我们要介绍最基本的分析和设计步骤。提醒:仍然需要多实践,才能掌握。介绍什么很小型的软件开发时的一般步骤分为两个大类介绍。前者是为了与后者进行对比。面向过程的结构化程序设计面向对象的分析和设计说明我们介绍的不是非常正规的软件工程的步骤,仅为大家提供参考。小型程序的开发步骤这是“软件工程”的内容31面向过程的结构化程序设计可以分为五个步骤功能分析:需要实现哪些功能。数据分析:需要哪些数据类型,如何存储。用户界面设计:使用什么样的界面。程序模块划分:需要写哪些源代码文件,其中具体包含哪些功能。编写、调试代码。面向过程的结构化程序设计可以分为五个步骤32面向过程的结构化程序设计(1)功能分析(需求分析):使用框图。面向过程的结构化程序设计(1)功能分析(需求分析):33面向过程的结构化程序设计(1.1)各功能的描述简单功能:文字描述即可。复杂功能:画出流程图。班级学生录入简单描述:输入学生姓名、学号,保存。详细描述:见右图面向过程的结构化程序设计(1.1)各功能的描述班级学生录入343面向对象程序分析和设计的基本方法课件353面向对象程序分析和设计的基本方法课件36面向过程的结构化程序设计(2)程序中的数据分析程序中涉及到学生、学生的成绩、学号、姓名等,还有班级。考虑数据在程序中如何表示:每个学生的相关信息使用结构体表示。班级也使用结构体表示,班级内学生使用数组或链表表示。面向过程的结构化程序设计(2)程序中的数据分析37面向过程的结构化程序设计(3)用户界面设计文本界面,使用菜单选择需要的功能,并根据选择分别调用不同的函数。数据在界面的输入、输出:使用printf,scanf等实现。面向过程的结构化程序设计(3)用户界面设计38面向过程的结构化程序设计(4)程序模块划分一般按照功能分类,将相似的功能划分在一个程序模块(c文件和头文件)中实现。注意:程序模块中的功能实现为函数。这个过程还可能发现一些共用的功能。例如图中红色的函数。面向过程的结构化程序设计(4)程序模块划分39面向过程的结构化程序设计(5)编写代码并调试根据上述分析,创建工程、创建C文件和头文件(程序模块)、编写和调试代码演示:实现“班级学生成绩管理”中的“班级学生录入”和“学生成绩录入”实现“班级学生成绩统计分析”中的“统计平均成绩”。面向过程的结构化程序设计(5)编写代码并调试40面向对象的软件分析1.用例分析对应于面向过程的功能分析2.对象模型分析包含面向过程的数据分析,自然形成程序模块划分。3.用户界面设计面向过程时:分析使用什么样的函数。面向对象时:分析应该使用什么对象(类)。4.编写、调试代码。面向对象的软件分析1.用例分析41面向对象的软件分析(1)用例分析(需求分析)本质上还是软件功能分析。但使用“UML用例图”。对每个用例进行文字描述。复杂的使用”UML活动图“描述。面向对象的软件分析(1)用例分析(需求分析)42面向对象的软件分析(1)用例分析(续)C1:班级学生录入输入并保存班级中各个学生的姓名、学号、性别等。C2:学生成绩录入选择科目,输入学生学号和科目成绩。C3:学生成绩查询输入学生学号,查询并显示该学生的学号、姓名、各科成绩。C4:保存学生成绩将班级学生成绩保存在数据库或数据文件中C5:加载学生成绩从数据库或数据文件中加载班级学生成绩面向对象的软件分析(1)用例分析(续)43面向对象的软件分析(1)用例分析(续2)C6:学生成绩统计分析C6.1统计平均成绩输入科目,循环求和后平均,显示C6.2统计及格率输入科目,循环,累计及格人数,计算及格率,显示。C6.1统计平均成绩输入科目,循环,累计80分以上人数,计算优良率,显示。C6.1统计平均成绩输入科目,按科目成绩排序,显示排名、姓名、学号和科目成绩。面向对象的软件分析(1)用例分析(续2)44面向对象的软件分析(2)对象模型分析基本方法:从用例描述中发现较为复杂的数据作为“候选对象”。即考虑程序中可能使用哪些对象,以及它们的数据组成。将软件中的基本功能分配到各对象中。根据上述分析,画出UML类图面向对象的软件分析(2)对象模型分析45面向对象的软件分析(2)对象模型分析(实例)需要哪些对象候选对象(名词):班级,学生,姓名,学号,科目,成绩。姓名、学号、成绩等可以使用简单数据类型表示,不需要作为对象。剩余:班级、学生。功能分配:班级:添加学生、查询学生、保存和加载班级成绩、对班级成绩进行统计分析。学生:在前面的需求分析中,没有需要委托给学生的功能。但如果增加功能:查询单个学生的平均成绩、不及格科目数(黄牌判断)等,这些功能就应该委托给学生。一般没有功能的不作为“对象”。这里“学生”可以用以前的“结构体”表示。但考虑到系统功能扩展的可能性,还是将学生作为对象。面向对象的软件分析(2)对象模型分析(实例)46面向对象的软件分析(2)对象模型分析(续2)考虑到用户界面:需要菜单。菜单需要保存选项,具有显示选项,接收用户选择的功能,因此应该作为对象。总结:系统中包括以下对象:班级、学生、菜单面向对象的软件分析(2)对象模型分析(续2)47面向对象的软件分析(2)对象模型分析(续3)上述类图没有表达对象之间的关系聚合关系:CClass中保存CStudent对象的指针;成员:CStudent*Students;组合关系:CClass中保存CStudent对象。成员:CStudentStudents[];面向对象的软件分析(2)对象模型分析(续3)48对象关系及其代码表达另一个组成关系的例子:计算机由主机、显示器、键盘等组成。对应代码:classCComputer{

CHostm_Host; CMonitorm_Monitor; CKeyboardm_Keyboard;};组成关系的C++代码表达:对应代码:classCClass{

CStudentsm_Students[40];};对象关系及其代码表达另一个组成关系的例子:对应代码:组成关系49对象关系及其代码表达聚合关系及其C++代码表达兴趣小由多位班上的同学聚合而成对应代码:classCGroup{

CStudents*Members

温馨提示

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

评论

0/150

提交评论