第7章 类和对象的设计
程序设计概论期末考试范围答案
第一章程序设计基础知识一、基础题1.以下关于算法的描述中,错误的是(D)A.算法中描述的操作都是用已经实现的基本运算组成的B。
算法必须由计算机程序实现C.算法应该易于理解、易于实现和易于调试D.算法不应该处理输入的非法数据2.以下哪项不属于数据的逻辑结构(A)A.单链表B.输C.图D.集合5.(B)程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。
A.面向对象B.结构化C.函数式D.事件驱动6.强调以现实世界中的客观事物为中心来建立问题域模型,这种程序设计方法成为(C)A.事件驱动程序设计B.结构化程序设计C.面向对象程序设计D.函数式程序设计7.以下程序段是用(B)程序设计语言编写的。
MOV AX,ASUB AX,BMOV C,AXHLTA.机器B.汇编C.C#D.Java10.下列关于解决方案的叙述中,不正确的是(B).A.一个解决方案可以包含多个项目B.解决方案可以包含的项目只能是类库C.利用解决方案资源管理器可以管理解决方案D.解决方案可以将多个项目组织在一起形成一个工作单元二、应用题1.简述程序设计的步骤.答:(1)分析问题:明确要解决什么问题(2) 设计算法:数据结构和算法(3)编写程序:将算法用程序设计语言描述出来(4)调试运行:语法错误、语义错误、异常4.简述C#语言的特点.答:(1)完全面向对象:具有面向对象语言的一切特性(2)简单易学:熟悉C、C++或Java即可掌握C#语言(3)安全:避免使用指针;自动内存管理和垃圾回收;使用委托取代函数指针.(4)跨平台:可以运行在不同操作系统上。
(5)跨语言:与任何支持。
NET的语言互相交换信息(6)强大的Web编程能力: Web应用程序第三章数据与变量一、基础题1。
以下不属于C#语言中基本数据类型的是(D)A.整数类型B。
浮点类型C.字符类型D。
枚举类型2.使用变量a存放数据-389,则将变量a定义为(B)类型最为合适.A。
7设计概论 第七章 设计批评
20世纪早期
格罗皮乌斯 《全面建筑观》
历史表明,美的观 念随着思想和技术的进 步而改变,谁要是以为 自己发现了‘永恒的 美’,他就一定会陷于 模仿和停滞不前。真正 的传统是不断前进的产 物,它的本质是运动的, 不是静止的,传统应该 推动人们不断前进 。
后现代设计批评理论
解构主义 产品符号 商品美学 软设计 绿色设计
②设计符号学批评 基于符号学理论,符号学强调的是作品整体的符 号,而不是作品中的一个因素,把作品或产品看 做是一个符号系统来对待,这一符号系统是审美 情感的载体,表现得不是个人的情感,而是人类 社会的普遍情感。
设计符号学批评认为,符号可以认知,如果符号 仅是一般的记号,那么符号就不可能被广泛的认 知,符号是主体与客体的结合,是二而一的结合。 如,产品的审美意象是一种符号,这是设计者、 使用者与审美对象结合而成的统一整体,存在着 所有使用者都认知的可能,如十字架、太极图等。
解构主义批评 解构主义批评 否定整体、否定中心,否定终极意 义的存在,认为创作是一切,是没有目的性的, 而是强调意义的无限补充、替换和增殖,可鼓励 设计的多元思维、多元风格的形成。
解构主义批评走出纯粹形式结构的框架,面向性 别角色、阶级关系和生产条件,促使艺术批评从
向内走向向外。
由结构主义的排除一切外来因素到与一切外来因
设计的科学性
技术评价、材质评价、性能评价、品质评价等。
设计的适用性
功能、经济、人体工学
设计的艺术性
创造性、美学、视觉、个性、精神性
设计的环境性
安全、低公害、无污染、生态效益(低能耗、少资源)
设计批评的建构
设 计 批 评 的 建 构
设计批评的功能 设计批评的原则 设计批评的方法
C程序设计题库及答案(精简)
【章节】第1章 C++基础知识【知识点】1、 C++程序的构成与书写形式;2、基本数据类型,常量、变量和表达式3、 C++的标准输入输出【单选题】1、在C++中,源程序变为可执行程序的正确顺序应该是( ) 。
A. 编辑、链接、编译、执行B. 编辑、编译、链接、执行C. 编译、编辑、链接、执行D. 编译、链接、编辑、执行答案:B2、要把高级语言编写的源程序转换为目标程序,需要使用( ) 。
A. 编辑程序B. 驱动程序C. 调试程序D. 编译程序答案:D3、下列关于C++与C语言的关系描述中,错误的是( ) 。
A. C语言是C++语言的一个子集B. C++与C语言是兼容的C. C++对C语言进行了一些改进D. C++和C语言都是面向对象的答案:D4、下面为使用面向对象语言的正确理由是( ) 。
A. 面向对象程序由三种基本结构组成,分别是顺序结构、选择结构和循环结构B. 程序语句比面向过程语言简单C. 面向对象程序设计可以设计为自行修改错误D. 面向对象程序很容易概念化答案:D5、以下选项中,合法的用户标识符是( ) 。
A. longB. _2TestC. 3DmaxD. A.dat答案:B6、下列描述中正确的是( ) 。
A. 不是每个C++程序都必须包含预处理命令#includeB. C++程序必须有return 语句C. C++程序中的变量必须定义在主程序内部D. C++程序中所使用的符号常量可以不进行定义答案:A7、C++源程序文件的扩展名为( ) 。
B. .CC. .DLLD. .EXE答案:A8、cout是I0流库预定义的( ) 。
A. 类B. 对象C. 包含文件D. 常量答案:B9、 C++对C语言作了很多改进,即从面向过程变成为面向对象的主要原因是( ) 。
A. 增加了一些新的运算符B. 允许函数重载,并允许设置缺省参数C. 规定函数说明符必须用原型D. 引进了类和对象的概念答案:D10、下列选项中,( ) 是不合法的标识符.A. ProgramB. Obj23C. doubleD. B_C_D答案:C11、下列标识符中,不合法的用户标识符为( ) 。
第七章 面向对象的程序设计
第七章面向对象的程序设计本章是面向对象的程序设计。
与第五章介绍的面向过程的结构化程序设计不同,主要介绍面向对象程序设计的基础知识,包括面向对象的基本概念以及Visual FoxPro支持的面向对象的编程技术,详尽介绍了对各类控件的选择与使用方法。
在对诸如表单等各类控件对象的设计、操作上,面向对象的编程技术有自己的独特之处,但在所有对象的各种事件和方法的程序代码设计中,仍然使用到结构化的程序设计方法。
本章的主要内容是面向对象程序设计的理论基础,其程序设计的基本目标是设计出能在可视化环境下运行的应用程序窗口界面—表单。
7.1 学习提要1.学习目标与要求通过本章学习,读者应达到以下要求:⑴了解对象、类等基本概念;⑵理解对象的属性、方法和事件;⑶熟练掌握表单的基本设计、操作和应用;⑷掌握常用控件的设计与使用。
⑸熟练掌握常用事件、方法的过程代码的设计方法。
⑹了解自定义类的创建和使用方法。
2.重点与难点:⑴本章重点:对象与类以及属性、方法和事件等基本概念;表单的设计与应用;常用控件属性、事件和方法的选择与运用。
⑵本章难点:本章的重点即为本章的难点3.主要知识点⑴面向对象的概念①对象、类②属性、方法、事件③Visual FoxPro 中的基类⑵表单的创建与基本操作①表单的创建使用“窗体设计器”或“表单向导”创建表单。
②表单的修改、运行使用“窗体设计器”编辑修改表单。
使用菜单或命令方式运行表单。
③表单的属性、事件和方法表单常用属性的设置,表单的常用事件、常用方法。
④设置表单的数据环境数据环境的概念,数据环境的设置。
⑶表单常用控件①表单常用控件的基本操作控件对象的选定,移动位置,改变大小,剪切、复制与粘贴,删除,布局设置。
②常用控件对象标签控件,命令按钮与命令按钮组控件,文本框与编辑框控件,选项组和复选框控件,列表框和组合框控件,容器与表格控件,页框控件,计时器与微调控件,图像控件等。
③控件对象的常用属性设置Caption属性,Name属性,Alignment属性,ButtonCount属性,BackColor属性,BorderColor属性,BorderStyle属性,Enabled属性,ForeColor属性,InputMask属性,PasswordChar属性,Picture属性,Height属性,Width属性,Left属性,Top属性,Value属性,Visible属性,FontName属性,FontSize属性,ControlSource属性。
Web开发实用教程 第七章(C#)
对应.NET类 System.Byte System.SByte System.Int16
ushort 无符号16位整数 0~216-1,即0~65535
int uint long ulong 有符号32位整数 无符号32位整数 有符号64位整数 无符号64位整数
System.UInt16
System.Int32 System.UInt32 System.Int64 System.UInt64
第7章 C#语言基础
学习目标
1.了解C#语言特点及应用前景;
2.掌握和编写C#程序的方法和步骤;
3.了解C#语法基础,包括数据类型、变量、流程控制、错 误处理等;
4. 理解类和对象的概念,能熟悉使用C#创建和使用类。
7.1 在中创建C#程序
C#是整个.NET Framework的基础语言,可以在Visual Studio环境多种开发模 式下使用C#语言,如Windows应用程序、类库等,图7-1是在Visual Studio 2005 新建项目时可供选择的模板。
7.2 数据类型
7.2.1 数据类型概述
表 7-1 C#简单数据类型表
类型 整形
关键字 byte sbyte short
说明 无符号8位整数 有符号8位整数 有符号16位整数
取值范围 0~255 -128~127 -215~215-1,即32768~32767 -231~231-1 0~232-1 -263~263-1 0~264-1
7.3
7.3.3
常量与变量
变量作用范围
变量的作用范围是指一个变量在程序中的生命周期,全局变量在整个程序中都 起作用,局部变量只在变量所在程序段中起作用。 在本章范例ConstVaria中,定义了一个静态全局变量static int sum = 0,只 要在这个页面程序的范围内,都可以访问或修改sum的值。 public partial { static int sum protected void { } protected void { } } class ConstVaria : System.Web.UI.Page = 0; Page_Load(object sender, EventArgs e)
第7章-类和对象-1
成员变量
Strpinugblnicacmlaes;s Ini/t/ia姓lV名istor {
int agep;ublic/s/t年at龄ic void main(String[] args) { //显示信息Sc方an法ner input = new Scanner(S成yst员em方.i法n);
public voidVsishiotowr(v){= new Visitor();
center.classNumber = 10;
bNumber = 10;
System.out.println("\n***初始化成员变量后***");
center.
演示示例:创建和使用对象
第22页/共45页
创建和使用对象示例5-2
问题
编写学员类,输出学员相关信息
编写教员类,输出教员相关信息
分析
学员类
姓名 年龄 班级 爱好 显示学员个人信息
教员类
姓名 专业方向 教授课程
教龄 显示教员个人信息
第23页/共45页
创建和使用对象示例5-3
示例
public class SIntuitdiaelnStu{dent { Spturbinligcnstaamtiec;void//m姓a名in(String args[]成){ 员变量
实现积分回馈功能
金卡客户积分大于1000分或普卡客户积分大于 5000,获得回馈积分500分
创建客户对象输出他得到的回馈积分
完成时间:20分钟 共性问题集中讲解
第35页/共45页
按此按钮, 狮子开始跑
按此按钮, 狮子开始叫
类的方法
电动玩具狮子 属性: 颜色:黄色
行为: 跑 叫
第7章 面向对象学习方法学
第七章面向对象学习方法学面向对象方法学的出发点和基本原则,是尽可能按照人类的习惯思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题域空间与实现解法的解空间在结构上尽可能一致.与传统的结构化方法相比,使用面向对象方法开发的软件,其稳定性,可修改性和可重用性都比较好.本章内容主要包括:传统方法学的缺点,面向对象的基本概念,面向对象模型.7.1 基础知识7.1.1 传统方法学的缺点结构化几其他方法学的本质,是在具体的软件开发之前,通过需求分析预先定义软件需求.然后一个一个阶段地开发用户所需要的软件,实现预先定义的软件需要.过去的经验需要告诉我们,结构化及其他方法学并不能完全消除软件危机.结构化及其他方法学仍然有许多不足之处.1.问题的表现1)生产效率低在生命周期方法学中,特别重视软件开发的阶段性.为了提高了软件开发的效率,减少重大返工次数,强调必须早每个阶段结束之前进行评估.从而开发过程中实行严格的质量管理,确实提高了许多软件的开发的成功率.但是,时间表明,开发高利率仍然很有用.2)不能满足用户需要实践表明,在开发需要模糊或需求动态变化的系统时,软件系统的结果往往不能满足用户需求的变化.主要表现在两个方面:一种是开发人员不能完全获得彻底理解用户的需要,以至开发的软件系统与用户预期的系统不一致;另一种表现是,所开发的系统不能适应用户需求变化,系统的稳定性和可扩充性不能满足需要.3)软件服用就是将已有的软件成分用于构造新的软见系统.软件复用是节约人力,提高软件效率的重要途径.结构分析.设计,几乎每一次开发一个系统时都需要针对这个具体的系统做大量的重复劳动..思维成果的可复用性差.4)软件很难维护实践经验告诉我们,即使是用生命周期方法学开发出来的软件,维护起来仍然相当困难,软件维护成本很高.2.问题的原因1)结构化技术本身的问题结构分析和设计技术的基本思想是从目标系统整体功能的单个处理着手,自顶向下不断的把复杂的处理分解为子处理,一层一层的分解下去,直到剩下若干个容易实现的子处理为止。
第7章:MFC编程基础知识
Visual C++
概述
VC开发应用程序的最常用的模式就是利用MFC进行Win32应 用程序的设计。简单来说,MFC就是利用面向对象的思想,将 Windows大部分API函数封装起来的一个浩瀚的类库,利用MFC 编写程序本质上就是选择该类库中合适的类,并调用其下相 应成员函数来完成某个功能。虽然MFC编程相对于API编程简 单了(入门是简单了,但作到胸中丘壑自成却不容易),但 初学者却常常忘不了学习MFC的艰难。其主要原因有:(1) MFC采用的是C++语言,对C++本身的技术没有掌握。因此想学 好MFC,必须把第一篇的内容搞清楚;(2)MFC庞大的类库中 类的命名及成员变量或成员函数的命名没有清楚,其实很简 单,MFC中的类及其成员的命名都采用的是匈牙利命名法,把 这些名字的英文直接翻译过来,就知道它是什么意思。(3) MFC编程,首先生成的是一个应用程序架构,对这个架构的不 了解导致生成的代码不知其为何如此。本章就是要给大家一 个架构的概貌;(4)传统的API编程的步骤统统不见了,使人 们不知道编写的Windows程序什么时候建立起来 、什么时候 消亡. 事实上,MFC的应用程序架构把类似于API编程所要求 的步骤都隐藏了,都封装到架构中了。
Visual C++
*7.1.5 使用C++和MFC的好处
从本书的第一篇,我们已经看出了面向对象程序设计的好处,如 可复用性、代码和数据紧密地绑定等。类是面向对象程序设计的核心 概念,程序中不仅可以使用自己建立的类,还可以使用系统所提供的 类,一个好的类库可以大大减少编码的数量。MFC成功之处在于,它是 一个类库、一个包罗计算机系统方方面面的类库、一个集MicroSoft 各路软件高手之大成的类库。通过从MFC继承自己所需要的类,可以充 分利用基类所具有的各种功能。 MFC将类、类的继承、动态约束、类的关系和相互作用等应用程序 概念封装起来,可以使开发者高效、轻松地建立Windows应用程序,而 不受设备限制并且由事件进行驱动。 MFC具有良好的通用性和可移植性,它定义了应用程序的轮廓,并 提供了用户接口的标准实现方法,程序员所要做的工作就是通过VC所 提供的各种工具来完成这个工作。
第7章分析问题-课件
第7章 分析问题
2024/11/1
8
7.3 分析过程概述
1. 使用系统需求模型查找候选 的类,以描述与系统相关的 对象,并在类图上建立它们
2. 确定类之间的关系(关联、聚 合、复合和继承)
3. 确定类的属性(对象的、已 指定的简单特性)
第7章 分析问题
2024/11/1
9
分析过程概述
4. 检查系统用例,确定已有的 对象支持它们。在检查过程 中微调类、属性和关系,这 个用例的实现过程将生成一 些操作,来补充属性
{...}//不需要创建任何Person对
象,其Students都是已有的Person
对象
public void destroy()
{...}//只需要关掉School对象和 断开它与自己所有的Person对象的 关联即可,Person对象是不会销毁 的
}
2024/11/1
31
6. 实现关系
• 实现:指的是一个类元描述了 另一个类元保证实现的契约。 对类来说,就是一个类实现了 一个接口
• 组合是用带实心菱形的实线来表示。
第7章 分析问题
NewClass2
2024/11/1
29
复合关系
public Class Window {
private Menu menu; public Window() {
menu = new Menu(); }//可以在这时候创建Menu对象, 也可以在之后创建
• 对于具有聚集关系(尤其是强聚集关系)的两个对 象,整体对象会制约它的组成对象的生命周期。部 分类的对象不能单独存在,它的生命周期依赖于整 体类的对象的生命周期,当整体消失,部分也就随 之消失。比如张三的电脑被偷了,那么电脑的所有 组件也不存在了,除非张三事先把一些电脑的组件 (比如硬盘和内存)拆了下来。
第 7章 类和对象
char GetSex(); };
7.5 数据成员的初始化
1.在构造函数的函数体中进行初始化。 2.在构造函数的头部初始化。 3.混合初始化。 4.拷贝构造函数
1. 在构造函数的函数体中初始化
class Person { char m_strName[20]; int m_nAge; int m_nSex; Person(){ strcpy(m_strName,”XXX”); m_nAge=0; m_nSex=0; } Person(char *name, int age, char sex) public:
家庭情况
基本工资: double 岗位津贴: double 劳保福利: double 独生子女: double 房租: double 电费: double 水费: double 取暖费: double 保育费: double 实发工资: double
类(Class)----数据类型
<数据成员或成员函数表>;
例7-1 定义一个Person类,用来说明人员类对象
// Example 7-1:定义Person类 class Person {private: char m_strName[20]; int m_nAge; int m_nSex; public: void Register(char *name, int age, char sex); char * GetName(); int GetAge(); char GetSex(); void ShowMe(); };
3. 对象的引用
对象是包含现实世界物体特征的抽象实体,反映了系统为之保 存信息和(或)与之交互的能力。
《面向对象程序设计》课程标准
《面向对象程序设计》课程标准1.课程说明《面向对象程序设计》课程标准课程编码〔 38321 〕承担单位〔计算机信息学院〕制定〔〕制定日期〔2022年11月16日〕审核〔专业指导委员会〕审核日期〔2022年11月20日〕批准〔二级学院(部)院长〕批准日期〔2022年11月28日〕(1)课程性质:本门课程是物联网应用技术专业的必修课程。
(2)课程任务:主要针对程序员、测试员等岗位开设,主要任务是培养学生在软件工程项目开发岗位上的程序设计能力,要求学生掌握面向对象程序设计方面的基本技能。
(3)课程衔接:在课程设置上,前导课程有《计算机应用基础》、《C语言程序设计》、《Java程序设计》,后续课程有《物联网应用系统开发》、《物联网综合项目实训2》。
2.学习目标通过本门课程的学习,使学生掌握面向对象的基本概念和使用面向对象技术进行程序设计的基本思想;掌握面向对象编程工具的使用方法;培养学生动手开发程序的能力,使学生养成善于观察、独立思考的习惯,同时通过教学过程中的实际开发环节强化学生的职业道德意识和素养,为学生以后从事专业化软件开发工作奠定坚实基础。
通过本门课程的学习,使学生熟练掌握C#程序设计开发运行的环境配置和使用方法,使学生能够应用C#程序设计语言进行程序编写和调试,进一步掌握面向对象程序设计的基本理念。
3.课程设计本课程以C#物联网实训系统项目为载体,与新大陆公司合作设计了若干个典型事例作为具体的学习情境;根据岗位要求,确定学习目标及学习任务;本课程采取项目教学和案例教学的教学模式,以学生为主体、以培养学生面向对象程序设计能力和提高团队合作意识为导向组织教学考核。
表1:学习领域的内容与学时分配表2:课程总体设计4.教学设计表3:学习情境设计5.课程考核本课程的考核主要由平时成绩、期末考试两部分组成。
其中:(1)平时成绩:平时成绩占总成绩的30%,主要考查指标有:平时上课出勤情况、课堂表现、作业完成情况、实训环节等。
UML系统建模基础教程课后习题答案
UML 系统建模基础教程课后答案第一章面向对象设计与UML1.填空题(1)UML(2)封装继承多态(3)继承(4)瀑布模型喷泉模型基于组件的开发模型XP 开发模型2. 选择题(1)C(2)A B C D(3)A B C D(4)A B C(5)A1.试述对象和类的关系。
(1)类是具有相同或相似结构、操作和约束规则的对象组成的集合,而对象是某一类的具体化实例,每一个类都是具有某些共同特征的对象的抽象。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类.类描述了一组有相同特性和相同行为的对象。
第二章UML 通用知识点综述(1)依赖泛化关联实现(2)视图图模型元素(3)实现视图部署视图(4)构造型标记值约束(5)规格说明修饰通用划分2. 选择题(1)D(2)C(3)A(4)A B(5)D(6)1)在UML 中面向对象的事物有哪几种?在UML 中,定义了四种基本的面向对象的事物,分别是结构事物、行为事物、分组事物和注释事物等。
(7)2)请说出构件的种类。
构件种类有:源代码构件、二进制构件和可执行构件。
(8)3)请说出试图有哪些种类。
在UML 中主要包括的视图为静态视图、用例视图、交互视图、实现视图、状态机视图、活动视图、部署视图和模型管理视图。
(9)4)请说出视图和图的关系。
视图和图是包含和被包含的关系。
在每一种视图中都包含一种或多种图。
(10)5)请简述UML 的通用机制。
UML 提供了一些通用的公共机制,使用这些通用的公共机制(通用机制)能够使UML 在各种图中添加适当的描述信息,从而完善UML 的语义表达。
通常,使用模型元素的基本功能不能够完善的表达所要描述的实际信息,这些通用机制可以有效地帮助表达,帮助我们进行有效的UML 建模。
UML 提供的这些通用机制,贯穿于整个建模过程的方方面面。
前面我们提到,UML 的通用机制包括规格说明、修饰和通用划分三个方面。
第三章Rational 统一过程(11)1 )角色活动产物工作流(12)2 )逻辑视图过程视图物理视图开发视图用例视图(13)3)设计开发验证(14)4 )二维(15)5)周期迭代过程里程碑(16) A B C D(17) A C D(18) A C D(19) A B C(20) A B C D(21)1 )请描述迭代过程有几个阶段。
C#习题第7-12章
第七章类和对象一、选择题1.下列关于构造函数的描述正确的是()A)构造函数可以声明返回类型。
B)构造函数不可以用private修饰C)构造函数必须与类名相同D)构造函数不能带参数2.下列关于C#中索引器理解正确的是( )A)索引器的参数必须是两个或两个以上B)索引器的参数类型必须是整数类型C)索引器没有名字D)以上皆非3.以下类MyClass 的属性count 属于_____属性.class MyClass{int i;int count{get{ return i; }}}A)只读B)只写C)可读写D)不可读不可写4.类MyClass 中,下列哪条语句定义了一个只读的属性Count?A)private int Count;B)private int count;public int Count{get{return count;}}C)public readonly int Count;D)public readonly int Count{get{ return count;}set{count = value;}}二、填空题1.面向对象最重要的特点有、、。
2.默认的构造函数为,析构函数为。
三、简答题1.简述类和对象的关系2.请叙述属性与索引器的区别。
3.下列的Main 方法的定义是否为合法的程序入口点?namespace MyProgram{public static void Main() {MyClass.DoSomething();}class MyClass{public static void DoSomething(){……}}}4.请写出类声明的语法格式。
5.什么是常量?关键字是什么?6.请比较关键字readonly和const的区别。
7.构造函数有何特点?8.什么是重载?通过举例说明,有的程序中使用重载的必要性。
9.什么是属性过程?为何要使用属性过程?四、程序分析题1.下面程序是否有误?public int staticInt ;static MyClass(){Console.WriteLine(staticInt);Console.WriteLine("The static constructor invoked.");staticInt=1;}2.某文件中有类MyClass,代码如下:class MyClass{ public void MyFunc() {…}public static void MyMethod(){…}}现要在同一文件中类MainClass中使用MyClass类中的两个方法,请完成下面代码class MainClass{ static void Main(){//本行前添加调用MyFun方法的代码。
软件工程 第7章--面向对象设计
§1. OOD准则
5、Cohesion:模块内各个元素彼此结合的紧密程度。 服务内聚(service cohesion):一个服务只完成一个功能。
类内聚(class cohesion):一个类只有一个用途,否则分 解之。
一般-特殊内聚(general-particular cohesion):
17
类构件
类构件:面向对象技术中的“类” 。类构件有3种 重用方式:
–实例重用 –继承重用 –多态重用 1. 可重用类构件应具备的特点 (1) 模块独立性强。具有单一、完整的功能,且经 过反复测试被确认是正确的。是一个不受或很少受 外界干扰的封装体,其内部实现在外面是不可见的。
18
(2) 具有高度可塑性。软构件的应用环境比集成电 路更广阔、更复杂。显然,要求一个软构件能满足 任何一个系统的设计需求是不现实的。因此,可重 用的软构件必须具有高度可裁剪性,必须提供为适 应特定需求而扩充或修改已有构件的机制,而且所 提供的机制必须使用起来非常简单方便。
对象 设计
面向对 象分析
人机界 面设计
任务管 理设计
数据管 理设计
4
§1. OOD准则
§1. OOD准则:优秀软件设计的一个重要特点是 容易维护
回顾:SD准则包括
Modularization Information hiding
Abstraction
Module independence
对于 OOD有类似的准则: 1、Module = Object
• Inheritance —— 无须改动原有代码
13
② 设计重用 —— 当移植系统时
§3. 软件重用
③ 分析重用 —— 当需求未变,而系统结构改变 时(例如将HDIS改为OO实现)
《实用软件工程》第7章 面向对象分析
21
划分主题
B.主题图 上述的主题划分的最终结果能够形成一个完整的对象类图和一个主题图。 主题图一般有如下3种表示方式。 • 展开方式
18
建立对象模型
复杂问题(大型系统)的对象模型 通常由下述5个层次组成:主题层(也称 为范畴层)、类与对象层、结构层、属 性层和服务层,如图所示。
上述5个层次对应着在面向对象分析 过程中建立对象模型的5项主要活动:划 分主题;找出类与对象;识别结构;定 义属性;定义服务。实际上五项活动没 有必要的完成顺序,设计时也不需要严 格遵守自顶向下原则。
12
面向对象分析原则
1.定义有实际意义的对象 特别要注意的是,一定要把在应用领域中有意义的、与所要解决的问题有关系的所有事物作为对象,
既不能遗漏,也不要定义无关对象。 2.模型的描述要规范、准确
强调实体的本质,忽略无关的属性。对象描述应尽量使用现在时态,陈述语句,以保证语义的清晰。 定义对象时还应该描述对象之间的关系及对象的背景信息 3.共享性
27
确定属性
例:多媒体商店销售系统
需要处理的文件:图像文件和声音文件,都拥有名称和唯一编码,作者信息和 格式信息,声音文件还包括文件时长(秒)。 功能:①添加新的媒体文件;
②通过编码查找需要的文件; ③删除指定文件; ④统计系统中文件的数量。
28
确定属性
分析过程:根据文件的信息,图像文件和声音文件的类都需要有属性:id-编码,author-作者, format-格式。为了方便处理,还可加入source-文件位置。由功能①③,应该有按参数构造和按编码 删除的两个方法。此外还有findByld-查找,count-查找两个方法。
第七章-面向对象设计PPT课件
面向对象的软件设计过程
7.1 设计用例实现方案
本节介绍UML交互图的语言机制和用例实现方案的设 计方法。
UML的交互图包括顺序图和协作图,适于用例实 现方案的表示。
用例实现方案的设计方法有三个步骤: (1) 提取边界类、实体类和控制类; (2) 构造交互图; (3) 根据交互图精化类图。
7.1.1 顺序图
(1) 界面控制:包括输入数据的格式及内容转换,输出结果的 呈现,软件运行过程中界面的变化与切换等。
(2) 外部接口:实现目标软件系统与外部系统或外部设备之间 的信息交流和互操作。主要关注跨越目标软件系统边界的 通信协议。
(3) 环境隔离:将目标软件系统与操作系统、数据库管理系统、 应用服务器中间件等环境软件进行交互的功能与特性封装 于边界类之中,使目标软件系统的其余部分尽可能地独立 于环境软件。
UML四种类型的消息
(1) 简单消息(Simple Message) 以一种简单、抽象的函数表示对象之间的信息传 递,不考虑通信过程的内部细节。简单消息在 UML顺序图中用普通的有向箭头表示。
(2) 同步消息(Synchronous Message) 消息源发出消息后必须等待消息处理过程完毕并返 回处理结果后,消息源才可继续执行后续操作。前 面所述的自调用消息应该是同步的。同步消息的表 示图元与简单消息相同,这表明UML在缺省情形 下认为简单消息即为同步消息。
第七章 面向对象的设计方法
设计用例实现方案 设计技术支撑方案 设计用户界面 精化设计模型 RUP中的分析与设计流程
面向对象的设计方法
基于UML的面向对象设计方法将分析模型转换为设 计模型。
面向对象: 分析模型---顶层架构图、用例与用例图、领域概念 模型构成。 设计模型----- 以包图表示的软件体系结构图 以交互图表示的用例实现图 完整、精确的类图 复杂对象的状态图 描述流程化处理过程的活动图
第7章-实用软件工程(第4版)-陆惠恩-清华大学出版社
7.5.4 面向对象设计的启发规则
1.设计结果应该清晰易懂 2.一般—特殊结构的深度应适当 3.设计简单的类 4.使用简单的协议 5.使用简单的服务 6. 把设计变动减到最小
《实用软件工程(第3版)》 陆惠恩编著
13
7.6 面向对象系统的实现
7.6.1 选择面向对象语言
1. 选择编程语言的关键因素 2. 面向对象语言的技术特点 3.选择面向对象语言的实际因素
《实用软件工程(第3版)》 陆惠恩编著
10
4 、 画状态转换图
【例7.5】分别画出旅馆管理系统中旅客和床位的状态转换图。
《实用软件工程(第3版)》 陆惠恩编著
11
7.4 建立功能模型
确定输入、输出值 画数据流图 定义服务
7.5 面向对象设计
7.5.1 系统设计
1. 将系统分解为子系统 2. 设计问题域子系统 3. 设计人-机交互子系统 4. 设计任务管理子系统 5. 设计数据管理子系统
7.7.2 面向对象的测试步骤
1、制定测试计划 2、设计测试用例 3、实现测试构件 4、集成测试 5、系统测试 6、测试评估
《实用软件工程(第3版)》 陆惠恩编著
15
第7章 小结
面向对象方法是一种将数据和处理相结合的方法。 面向对象方法不强调分析与设计之间的严格区分。 面向对象分析
1、发现对象 2. 分析对象之间的关系 3.划分主题 4.编写脚本、建立动态模型 5.建立功能模型
《实用软件工程(第3版)》 陆惠恩编著
3
7.2.3 确定类的相互关系
1. 类的一般-特珠关系
《实用软件工程(第3版)》 陆惠恩编著
4
2. 聚集关系
“整体—部分”关系
90 80 70 60 50 40 30 20 10
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.2.2 筛选出候选类
对列出的名词作个初步筛选。方法如下: (1) 去除重复的概念,保留一个最确切的名称。 (2) 去除无关的概念,只保留与问题密切相关的 概念。 (3) 去除笼统的概念,用明确具体的名称代替它 们。
(4) 去除属性。 (5) 去除操作。 (6) 去除实现细节性的名词。
最后,分正常情况和异常情况分别画 出对象交互的时序图。时序图描述了各个 对象的协作执行顺序,上面的事件先执行, 下面的事件后执行。
周明 : 售货员
售货
records : ADODB.Recordse
收款
打印小票
输入商品编号、数量 要求求查询该商品信息 单价等商品详细信息
...... ...... ......
模型就是为了理解事务而对事务 作出的一种抽象,通常是用一组图示 符号和组织这些符号的规则来定义和 描述问题域中的术语和概念。
信息系统的模型常见的有形式化和图示化 两种。形式化描述方法非常精确、严谨,易 于系统以后的实现,但难以掌握和理解,模 型可读性差,往往只有专业人员才会使用, 因而难于推广。图形化方法用一组图示符号 和组织这些符号的规则来定义和描述问题域 中的术语和概念,模型直观、自然,易于描 述系统的层次结构、功能组成,且简单易学, 通常还有工具软件支持,因而成为信息系统 的主要描述工具,尽管这种方法的精确性和 严谨性较差,但实际应用很广泛。
7.1.2 建模的目的
构造模型通常的目的是: (1) 在着手解决一个复杂问题之前,建立 与检测解决方案。 (2) 对复杂问题进行适度简化。 (3) 加强视觉效果。 (4) 客户和其他相关人员析设计模型的一般形式
一个系统的特征包括两个方面,即静态特 征和动态特征。静态模型描述系统的数据结构, 主要表现为类或对象包含的属性、行为,以及 类或对象相互之间的继承和关联关系;动态模 型描述系统的控制结构,主要表现为对象为完 成某一功能而相互合作以及它们动作执行的先 后顺序。
7.2 寻找系统中的类
7.2.1
列出需求说明中的名词
软件系统中的很多类或对象都是待解决问 题中有意义的事物的抽象,关键是抓住需求说 明中的名词,重点考虑如下四个方面: (1) 自然物理对象 (2) 概念实体 (3) 人或组织的角色 (4) 发生的事件
提取名词作为初选出的类时,应注意 以下原则: (1)选择一个最有意义的词。 (2)修饰语也常常是发现类属性的线索。 (3)被动语态写成的句子,通常有隐含的 主语。 (4) 对类的种类进行建模。 (5) 从属性值抽象出类。
用面向对象的方法对软件系统进行 分析设计,首先要做的就是找出系统中的 类和对象,对它们各自的属性和操作进行 分析和设计。
7.1 建立类和对象的模型 7.2 寻找系统中的类 7.3 确定类或对象之间 7.4 设计类的属性 7.5 设计类的职责 7.6 小结
7.1 建立类和对象的模型
7.1.1
什么是模型
(2) 筛选 仔细认真地考虑那些经初步分析而确定下来 地属性,从中删掉不正确的或不必要的属性。 ① 判别是属性还是对象 ② 识别冗余属性 ③ 去除链属性 ④ 区分属性和内部状态 ⑤ 不应过于细化 ⑥ 去除无关属性
7.5 设计类的职责
类必须有其独立存在的意义,就是说, 既具备一定的属性,又负有一定的职责, 即对外提供服务。 先弄清系统的职责,再将这些职责分 配到每个类。在分析开始前,我们已经拥 有了两个重要的资源:需求说明和初步确 定的类。
7.1.3.3 表示对象的行为以及相互合作的 符号 所有的对象都具有自己的生命周期 (或称为运行周期)。生命周期中的阶段也 就是对象的状态。系统运行过程中各对象 之间总是在相互作用,某一对象受到其它 对象的触发(如发送消息要求服务),就会 发生状态的改变。
初始状态
事件1[ 条件 ] / 动作
状态1
7.4 设计类的属性
类的属性就是类的性质,对象取不同 的属性值就有不同的状态。 一般来说,确定属性的过程包括分析 和筛选两个步骤。
(1) 分析 属性的确定既与问题域有关,也和目标 系统的任务有关。应该仅考虑与具体应用直 接相关的属性,不要考虑那些超出所要解决 的问题范围的属性。
取消退货
图7.25 异常情况下退货时序图
有的系统中会有某个类与其它类的交 互行为相当复杂,这时仅仅时序图对这个 类的描述可能还不够清楚,这时我们就需 要把这个类单独提出来,用状态图加以分 析。如果围绕一个对象发生的事件较少, 问题较简单,就不必画出它的状态图来分 析。
要求输入实收金额
entry/ 计算并显示总消费金额
图7.3 继承关系的表示符号
整体
部分 1
部分 2
图7.4 聚集关系的表示符号
类1 1
类3 1 0..*
类2 1
类4
图7.5 关联关系的表示符号
两类对象之间的二元关联关系分为三 种基本类型,即一对一(1:1),一对多(1: M)和多对多(M:N)分别用数字1:1、1: 0..*和0..* :0..*标识在表示关联关系的横 线下。
对象2:类名2 对象3:类名3 消息1 消息2 消息3
对象1:类名 1
消息4
图7.9 三个对象交互的时序图
7.1.4 面向对象分析设计的一般原则
设计一个优秀的面向对象软件系统至 少要遵循以下原则: (1) 模块化与系统分解 (2) 抽象 (3) 信息隐蔽 (4) 模块间弱耦合和模块内强内聚 (5) 可重用
7.5.1 分析系统的交互行为
我们通过编写典型交互行为的脚本的 方式来明确系统的行为。 脚本是指系统在某一执行期间内出现 的一系列事件。
脚本描写的范围并不是固定的,既可 以包括系统中发生的全部事件,也可以只 包括由某些特定对象触发的事件。脚本描 写的范围主要由编写脚本的具体目的决定。 首先编写正常情况的脚本。然后,考 虑特殊情况 。
接着,我们要明确事件的发送对象和 接受对象。某事件对于它的发送对象来说 是输出事件,但是对于它的接受对象来说 则是输入对象。当一个事件的发送和接受 对象相同时,这个事件就既是输出事件又 是输入事件,比如,自发消息。
然后,我们要理清事件发生的先后 顺序,这在脚本中也应有大致的表现,不 清楚的情况要与领域专家咨询和讨论。
7.3 确定类或对象之间的关系
找出关联关系 分析关联关系能促使分析员考虑问题 的边缘情况,有助于发现那些尚未被发现 的类。 (1) 从动词短语初步找出关联 (2) 筛选出必要的关联 (3)划分主题
7.3.1
7.3.2 组成关系
组成关系是一种特殊的关联关系。组 成关系实际上描述的是所谓“……的一部 分”、“组成”或者“……包含……”这 样一类关系,即部分与整体之间的关系。
7.3.3 继承关系
有两种方式可以发现和建立继承关系: (1) 自底向上。 当子类具有和父类相同的属性和行为 时,它们存在着继承关系。
(2) 自顶向下。 把现有的类细化成更具体的子类,留 意那些带有修饰词的名词和名词词组,它 们往往暗示了一些具体类。过深的子类嵌 套会难于理解,通常经过仔细考虑和少量 的重构造,就能减少过多的继承层次。
事件2[ 条件 ] / 动作
状态2
事件3[条件]/动作
状态3
事件4[ 条件 ] / 动作
最终状态
图7.7 对象状态变化的表示符号
状态图总是针对某个特定的对象而 言的,描述该对象响应一系列事件触发发 生的状态转变。状态图中定义的状态有初 始状态、最终状态、中间状态、复合状态。
我们常用时序图来描述几个对象的交 互作用。表示符号如图7.9所示。
7.1.3.1 表示类和对象的图形符号
图7.1是类和对象的表示符号,类和对 象都用矩形框表示,类或对象名、每个属性、 每个操作(行为)都各占一格。
的符号
7.1.3.2 表示类之间关系 继承、聚集(组成)、关联等关系表示符 号分别如图7.3、图父类 7.4、图7.5所示。
子类 1
子类 2
首先找出系统中的类,然后确定类或 对象之间的关系,接着再设计类的属性, 最后确定类的职责。初学者应该严格按照 这些方法、步骤先分析设计一些简单的系 统,主要是在学习中建立起以对象为中心 来分析系统设计问题的思维方式。
精品课件!
精品课件!
但是,对象的设计不是个严格的流水线操 作过程,很多问题的发现和解决是相互启发和 补充的,比如,几个类的公共属性导致了继承 关系的发现,新加入的操作需要给类补充新的 属性。所以,面向对象的分析设计方法是相当 灵活的,由于对象模型在整个开发阶段都是有 用的,整个分析设计过程就是一个反复修改完 善的过程。在系统实现前,分析阶段的设计结 果可能还会有必需的改动,这和系统的实现语 言和开发环境有较大关系。
7.5.2 将交互行为分配到类或对象
首先,我们要根据脚本确定系统中发 生了哪些事件。这些事件包括: (1) 系统与用户或外部设备交互的所有信 号、输入输出、中断、动作等等。正常情 况和异常情况下发生的事件都必须考虑在 内。
(2) 发送信息的对象的动作。大多数对象 到对象的交互行为都对应着事件。如前台 终端请求中央计算机验证用户的身份,就 对应了一个事件。
确认无误 显示收款窗口 显示消费总金额 输入实收金额 显示找零 确认收款完成 打印购物小票 记录此次销售信息 记录购物小票信息
图7.24 正常情况下售货时序图
周明 : 售货员
退货
record : ADODB.Recordse
输入小票编号、退货编号、数量 检查退货数量 数量错误 显示出错窗口 确认 清除退货 窗口信息 撤销退货窗口