面向对象设计期末练习题
1、在一个商品订货系统的分析中建立了如图所示的关联,它表示一个供货商可能向多个购货商供货,一个购货商也可购买多个供货商的商品。
(1)讨论这种多对多的关联将给实现带来什么问题。
(2)给出一种解决办法,画出修改后的结果。
2、简要介绍OOD 模型的四个组成部分,并讨论它们的作用。
3、在OOD 中为何有时要把多继承化为单继承?对于下图所示的多继承结构,采用整体-部分结构或者采用关联把它化为单继承,画出转化之后的结构。
4、某机械制造厂生产车床、刨床和钻床三种机床和一种起重机。每一种机床和起重机都装配一台电动机,而电动机分为同步电机和异步电机两类。画出一个类图表示以上各种事物以及它们之间的结构关系。
5、举出一个含有多继承的一般-特殊结构的例子,画出其中的每一个类和它们之间的结构连接符,并填写各个类的主要属性与操作。
12、提高性能的改进措施错误的是()。
A.调整对象的分布
B.减少保存中间结果的属性或类
C.合并通信频频的类
D.用聚合关系描述复杂类
1、请你描述项目开发过程中“分析与设计”的两种不同观点。
3、在OOD阶段,若选择Java语言进行编程,针对下面的类图进行调整,给出其中的两种方案。
6、一个银行业务系统采用如图琐事的配置图,则错误的是()
A. 与GUI有关的类应该部署在Branch Client上
B. 这个图表示一个三层的体系结构,不管Branch Client、Financial App Server、Database
Server是运行在同一台机器上还是在不同机器上
C. 为了系统的可伸缩性(scalability),与业务逻辑有关的对象应该部署在Financial App
Server上
D. 为了系统的可伸缩性,与业务逻辑有关的对象应该部署在Branch Client上
15.在数据库设计的阶段开始考虑具体的数据库管理系统(DBMS)的特性。()
A. 需求分析
B. 概念设计
C. 逻辑设计.D 物理设计
13、不是人机交互设计准则的是()。
A.易学、易用、操作方便。
B.尽量保持个性化。
C.及时提供有意义的反馈。
D.尽量减少用户的记忆。
7、人机交互部分是人和计算机之间传递和交互信息的媒介,对它的设计涉及计算机科学、心理学、艺术学、认知科学和人机工程学等学科。()
8、对控制驱动部分的设计,只需定义和表示系统中的每个控制流。()
9、数据管理部分的设计是OOD模型中的一部分,负责使用关系数据库存储和检索永久对象。()
10、构件图是描述构件、构件的内部结构和构件之间关系的图。()
11、“死锁”的含义是什么()
A 两个进程或线程拒绝相互通信
B 对象的监视器允许其锁定早一点终止
C 一个对象等待一个资源,该资源正被另一个对象使用,而第二个对象正在等待第一个对象使用的资源
12、什么是线程()
A 运行在一个节点上的独立进程,有它自己的内存和IO
B 进程中一个与其他活动共享内存的活动
C 设计人员的思考过程
面向对象的设计方法与C++编程
北京邮电大学200X-200X学年第一学期 《面向对象的设计方法与C++编程》期末考试试卷+扩展+复习题 试题一:填空题(没空一分,共20分) 请在括号内填入你认为正确的内容。 1.软件工程是指导(计算机软件)开发和维护的(工程学科)。 2.应用软件工程方法开发软件系统的根本目的是为了改善下述四项软件品质因素: 提高所开发的软件系统的(效率); 降低所开发的软件系统的(成本); 改善所开发的软件系统的(质量); 缩短所开发的软件系统的(开发周期)。 3.抽象的对象模型由(属性)和(方法)两个部分构成。 4.一个消息必须具备的两个要素是(接受消息的对象标识)和(接受消息的对象的方 法标识)。 5.一个对象拥有另一个对象的(部分)或(全部)的属性和方法的关系则称为(继 承)关系。 6.失去(创建具体对象实例的(制造对象))能力的类成为抽象类。 7.一个类的属性不能出现对象拷贝则被称为(类属性)。 8.面向对象技术的三大特征是(封装)、(继承)和(多态)。 9.共生包容关系中的被包容类对象与包容类对象是(同时连带)生成的。 10.同时出现在两个具有关联关系的对象内的相同属性被称为(连接属性)。 课程复习--补充题: 1.软件的生存周期是一个软件产品从(定义)、(开发)、(使用)到(废弃)的时 间的总合。 2.C++语言中的静态成员函数是(类方法)的具体实现。 3.连接属性是(关联/链接)关系的两个对象内的属性。 4.边界类与(actor(角色))对呈一一对应关系。 5.复合聚合关系中的(聚合)类对象极其依赖(被聚合)类对象,在实现上往往具有 被同时(构造)的特征,因而具有极高的(耦合度)。 试题二:是非判断题(每题1分,共20分) 请在题后的括号内填入√(你认为正确时)或×(你认为错误时)。 1.消息必须含有返回信息。(错) 2.一个类必然具有生成对象的能力。(错)(抽象类不具备) 3.在包容关系中的被包容类也具有封装性。(对) 4.关联关系只是一个动作的抽象。(错) (表示两个类之间的联系,通过这种联系,一个类可以访问到另外一个类的属性和方法。) 5.一个类也可以接收消息。(对) 6.关联关系中的作用名标识了该关联关系的终点对象的恰当地位。(对)
软件工程 第八章 面向对象的设计方法
第八章面向对象的设计方法 本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。为完成这一转换过程,设计人员必须处理以下任务: (1)针对分析模型中的用例,设计实现方案。实现方案用 UML交互图表示。 (2)设计技术支撑设施。在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。例如,数据的持久存储服务、安全控制服务和远程访问服务等。在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。 (3)设计用户界面。 (4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序
设计的基础和依据的详尽类图。 面向对象的软件设计过程如图8-1-1所示。 图 8-1-1 面向对象的软件设计过程 第一节设计用例实现方案 UML 的交互图(顺序图、协作图)适于用例实现方案的表示。因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。该设计方法包含如下3个步骤: (1)提取边界类、实体类和控制类; (2)构造交互图; (3)根据交互图精华类图。 一、顺序图 顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。顺序图中的对象一般以“对象
《面向对象程序设计》第04章在线测试
A B D C 员 A B C D 、下面的语句中能将类 A B C D 是类A f(A tmp)是类 A B C D 、下面对于友元函数描述正确的是 A B C D
D、没有this指针,也就没有默认操作的对象 2、下面关于友元的说法正确的是() A、友元函数是拥有成员函数一切权利 B、友元是一种成员函数 C、友元可以直接访问类的所有成员 D、友元不能访问类的私有成员 3、下面关于友元函数正确的说法是() A、在类中用关键词friend声明友元函数 B、友元函数说明的位置只能在类的public区 C、友元函数的定义只能放在类的外部 D、友元函数不是类的成员函数 4、关于友元函数的说法正确的是() A、友元函数可以是普通函数,可以是其他类的成员函数,也可以是本类的成员函数 B、友元函数可以访问多个类的私有成员和保护成员 C、在调用友元函数的时候需要使用“.”运算符 D、如果友元函数是某个类的成员函数,在定义这个友元函数的时候要使用类前缀。 5、下面关于友元函数使用特点的说明正确的是() A、友元函数可以绕开成员函数直接访问类的私有和保护成员,避免调用成员函数相关的开销 B、友元函数虽然不是类的成员函数,但是因为友元函数是在类内说明的,所以也带有用this指针 C、友元函数可以以使用类内的所有成员,因此破坏了数据的安全性 D、友元函数的形参如果是类对象,可以用对象名,对象的引用或者对象指针 第三题、判断题(每题1分,5道题共5分) 1、友元只能访问类中的公有成员,不能访问私有成员。 正确错误 2、友元函数的定义只能放在类的外部,与类的成员函数放在一起。
正确错误 f()要操作类A的成员函数,把类 正确错误 、友元具有传递性,单向性和继承性的特点。 正确错误 、一个函数可以是多个类的友元函数。 正确错误 恭喜,交卷操作成功完成!你本次进行的《面向对象程序设计》第04章在线测试的得分为 20分(满分20分),本次成绩已入库。若对成绩不满意,可重新再测,取最高分。 测试结果如下: ? 1.1 [单选] [对] 若B类为A类的友元类,则下面的说法正确的是() ? 1.2 [单选] [对] 一个类的友元不是该类的成员,与该类的关系密切,所以它()。 ? 1.3 [单选] [对] 下面的语句中能将类B 定义为类A的友元类的是() ? 1.4 [单选] [对] 如果类B 是类A的友元类,n是类A的私有数据成员,函数f(A tmp)是类B的公有成员函数,a是类A的对象, b是B类的对象,下面语句正确的 是() ? 1.5 [单选] [对] 下面对于友元函数描述正确的是 ? 2.1 [多选] [对] 一个类的友元不是该类的成员,与该类的关系密切,所以下面它的说法错误的是()。 ? 2.2 [多选] [对] 下面关于友元的说法正确的是() ? 2.3 [多选] [对] 下面关于友元函数正确的说法是() ? 2.4 [多选] [对] 关于友元函数的说法正确的是() ? 2.5 [多选] [对] 下面关于友元函数使用特点的说明正确的是() ? 3.1 [判断] [对] 友元只能访问类中的公有成员,不能访问私有成员。 ? 3.2 [判断] [对] 友元函数的定义只能放在类的外部,与类的成员函数放在一起。 ? 3.3 [判断] [对] 如果函数f()要操作类A和类B的私有成员,可以把f()声明为类A的成员函数,把类A声明为类B的友元类。 ? 3.4 [判断] [对] 友元具有传递性,单向性和继承性的特点。 ? 3.5 [判断] [对] 一个函数可以是多个类的友元函数。
《面向对象程序设计》在线测试
封面
作者:PanHongliang 仅供个人学习
3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、若B类为A类的友元类,则下面的说法正确的是() A、B类的所有成员函数都是A类的友元函 数 B、B类指定的成员函数才是A类的友元 C、A类的所有成员函数可以访问B类的成员 D、B类的私有成员函数不能可以访问A类的私有成员 2、一个类的友元不是该类的成员,与该类的关系密切,所以它()。 A、有this指针,有默认操作的对象 B、没有this指针,可以有默认操作的对象 C、有this指针,不能执行默认操作 D、没有this指针,也就没有默认操作的对象 3、下面的语句中能将类B 定义为类A的友元类的是() A、friend class B。 B、class A{ friend B}。 C、class A{ friend class B。}。 D、class friend B class A。 4、如果类B 是类A的友元类,n是类A的私有数据成员,函数f(A tmp)是类B的公有成员函数,a是类A的对象, b是B类的对象,下面语句正确的是() A、main(){ f(a)。} B、main(){ b.f。}。 C、main(){ a.n。}。 D、main(){ b.f(a)。}。 5、下面对于友元函数描述正确的是 A、友元函数的实现必须在类的内部定义 B、友元函数是类的成员函数 C、友元函数破坏了类的封装性和隐藏性 D、友元函数不能访问类的私有成员 第二题、多项选择题(每题2分,5道题共10分) 1、一个类的友元不是该类的成员,与该类的关系密切,所以下面它的说法错误的是()。 A、有this指针,有默认操作的对象 B、没有this指针,可以有默认操作的对象 C、有this指针,不能执行默认操作 D、没有this指针,也就没有默认操作的对象 2、下面关于友元的说法正确的是() A、友元函数是拥有成员函数一切权利 B、友元是一种成员函数 C、友元可以直接访问类的所有成员 D、友元不能访问类的私有成员 3、下面关于友元函数正确的说法是() A、在类中用关键词friend声明友元函数 B、友元函数说明的位置只能在类的public区 C、友元函数的定义只能放在类的外部 D、友元函数不是类的成员函数 4、关于友元函数的说法正确的是() A、友元函数可以是普通函数,可以是其他类的成员函数,也可以是本类的成员函数 B、友元函数可以访问多个类的私有成员和保护成员
面向对象分析设计小结
?1、面向对象方法的基本观点: ?Coad-Y ourdon认为:面向对象=对象+类+继承+通信。 ?2、面向对象方法的特点包括: ?(1)、符合人们对客观世界的认识规律; ?(2)、对需求变化具有很强的适应性; ?(3)、支持软件复用; ?(4)、可维护性好。 ?3、对象、类、封装、继承、消息、多态性的基本概念。 对象是客观世界中具有可区分性的、能够唯一标识的逻辑单元,是现实世界中的一个事物(站在计算机技术角度,即对事物的模拟)。 类是一组具有相同属性和相同操作的对象的集合。 封装是把对象的属性和操作结合在一起,组成一个独立的单元。 继承是指子类(派生类、特化类)自动拥有其父类(基类、泛化类、超类)的全部属性和操作,即一个类可以定义为另一个更一般的类的特殊情况。 消息是对象之间采用消息传递来发生相互作用—互相联系、互发消息、响应消息、协同工作,进而实现系统的各项服务功能。 多态性是一种方法,使在多个类中可以定义同一个操作或属性名,并在每一个类中有不同的实现。 ?4、面向对象系统开发过程。 ?5、运用名词词组法来定义类(对象): ?例:音像商店出租/出售业务信息系统中的类的确定。 ?总目标:?A.提供及时培训。?B.实施的系统必须友好,易学易用。?C.实施的系统必须考虑安全问题。
?具体目标: ?1.1.1 提供一个自动系统协助顾客出售/出租结帐。 ?2.1.1 提供和维护一个自动的会员数据库。?a. 按要求提供最新会员信息。? b. 有添加、改变、删除会员信息的能力。 2.1.2 提供会员信息报表(但不限于)?a. 最少光顾的会员。?b. 最经常光顾的会员。?c. 有问题会员(欠钱,出租过期)? 4.1.1 提供、维护出售和出租项的库存数据库。?a. 按要求提供最新库存信息?b. 有添加、改变、删除库存信息(出售和出租)的能力 4.1.2 提供库存信息报表(但不限于)?a. 最不受欢迎的出租项?b. 最受欢迎的出租项?c. 过期的出租项?d. 出售和出租项的“订购”产品(采购报表) 5.1.1 提供出售报表(但不限于)?a. 用产品码表示的一段时间(天、星期、月)内销售情况?b. 用产品码表示的一段时间(天、星期、月)内出租情况相应的侯选对象清单为:安全问题、自动系统、顾客出售/出租结帐、会员数据库、会员信息、会员信息报表、库存数据库、出售和出租项、库存信息、库存信息报表、采购报表、出售报表。 ?6、对多值属性的处理方法:用部分-整体方法。 例:发票/发票行 第2章统一建模语言UML 1、UML描述的软件基本模型:用例视图、逻辑视图、构件视图、进程视图、 部署视图 2、UML的基本符号。 3、RUP项目开发过程的特征:用例驱动的系统、以体系结构为中心、螺旋 上升式的开发过程、以质量控制和风险管理为保障措施。
面向对象程序设计实验
实验一C++基础1.1 实验目的 1.了解并熟悉开发环境,学会调试程序; 2.熟悉C++中简单的标准输入输出函数的使用方法; 3.理解const修饰符的作用并学会应用; 4.理解内联函数的优缺点并学会其使用场合; 5.理解并学会函数重载; 6.理解并熟练掌握使用new和delete来分配内存; 7.理解并熟练掌握引用的使用方法。 1.2 实验内容 1.2.1 程序阅读 1.理解下面的程序并运行,然后回答问题。 #include
{ int x1 = 0; int x2 = 0; double d1 = 0.0; double d2 = 0.0; x1 = max_def(5,6); x2 = max_def(2,3,4); d1 = max_def(2.1,5.6); d2 = max_def(12.3,3.4,7.8);-----------------------------------------------------①cout<<"x1="<
面向对象程序设计实验项目
实验一 C++面向过程练习(一) (2学时) ? 实验目的和要求: 1. 掌握C ++程序的基本格式与规范,学会编写简单的C ++程序。 2. 理解C ++程序的结构和特点。 3. 熟悉C ++程序基本的输入和输出操作。 4. 掌握C ++数据类型、常量和变量以及修饰符的使用方法。 5. 掌握C ++的各种流程控制语句的使用。 6. 熟悉C ++语言实验环境,能够在VC6.0或BC3.0的环境下调试与运行程序。 ? 实验内容: 1. 求解方程02=++c bx ax 在复数域上的解,a,b,c 由终端输入。注意分析的全面性。 2. 用!1!21!111n e ++++≈ ,求e 之值,直到610! 1- 面向对象程序设计小测试 (1) 2009-10-12 姓名学号成绩 1、下面对Read()和ReadLine()方法的描述,哪些是正确的? A.Read()方法一次只能输入流中读取一个字符 B.使用Read()方法读取的字符不包含回车和换行符 C.ReadLine()方法读取的字符不包含回车和换行符 D.只有当用户按下Enter键时,Read()和ReadLine()方法才会返回2、下面对Write()和WriteLine()方法的描述,哪些是正确的? A.WriteLine()方法在输出字符串的后面添加换行符 B.使用Write()输出字符串时,光标将会位于字符串的后面 C.使用Write()和WriteLine()方法输出数据变量时,必须要先把数值变量转换成字符串 D.使用不带参数的WriteLine()方法时,将不会产生任何输出 3、假设存在下面的代码: double x=66666.66; Console.WriterLine(“{0,10:C4}”,x); 请从下面选择正确的输出结果: A.¥66,666.6600 B.¥66,666.66 C. 66,666.6600 D.66,666.66 4、 C#程序是从哪儿开始执行的? 5、在C#程序中,usingSystem 是必须的吗? 6、如何为程序添加注释? 7、以下标识符中,正确的是A: A. nName B.typeof C.6b D.x5# 8、以下标识符中,错误的是: A. b39 B.x345 C.6 321 D.nAverage 9、以下类型中,不属于值类型的是: A. 整数类型 B.布尔类型 C.字符类型 D.类类型 10、求一下表达式的值,要求同时写出值的类型。 Sizeof(int)*10/3.2 8>6+3 5-2<=3 6>2&&8>9 第一部分:项目概述 项目背景: 投资少,回收快。一项针对中国中小企业的情况调查显示,个人在网下启动销售公司的平均费用至少5万元,而网上开店建店成本非常小。一般说,筹办一家网上的商城投入很小,不用去办营业执照,不用去租门面,不用囤积货品,所需资金不过1500元左右;网上商城比同等规模的地面商店“租金”要低得多,同时租金不会因为营业面积的增加而增加,投资者也不用为延长营业时间而增加额外的费用。 基本不需要占压资金。传统商城的进货资金少则几千元,多则数万元,而网上商城则不需要压资金。 24小时营业时间。网上商城延长了商店的营业时间,一天24小时、一年365天不停地运作,无须专人值班看店,都可照常营业。传统店铺的营业时间一般为8-12小时,遇上坏天气或者老板、店员有急事也不得不暂时休息。 销售规模不受地盘限制。传统商城有多大就只能摆放多少商品,生意大小常常被小店面积限制。而在网上,即便在地面上只有一个小商城,或者干脆就没有门面,开店的生意却可以照样做得很大。 不受店面空间的限制。哪怕只是街边小店,在网上却可以拥有百货大楼那么大的店面,只要投资者愿意,可以摆上成千上万种商品。目前国内最大的专业拍卖网站同时在线的商品要超过10万件——已超过一些大超市。 不受地理位置影响。不管客户离店有多远,也不管顾客是国内还是国外,在网上,客户一样可以很方便地找到并购买商品。这令消费群体突破了地域的限制,变得无限广阔了。需求功能分析: 一、定单管理系统: 对产品下单,管理员查看订单状态。 二、商品管理系统: 产品排序管理:排序的方式选择(时间、价格、库存)、及手动排序。 产品修改:价格列表修改、介绍修改 产品上/下架/删除: 商品分类管理:对产品进行一级分类。 字段列表管理:新上产品的各个字段可以控制填加修改删除。 专题产品推广管理:连接静态页面,在静态页面调用产品价格及购物流程程序,完 成产品订购。 三、会员管理: 会员注册。 会员资料管理:用户名、密码、住址、电话等信息。 管理员删除会员权限。 工作任务分解: 面向对象软件的测试用例的设计方法 目前,面向对象软件的测试用例的设计方法,还处于研究、发展阶段。与传统软件测试(测试用例的设计由软件的输入处理输出视图或单个模块的算法细节驱动)不同,面向对象测试关注于设计适当的操作序列以检查类的状态。 12.4.1 测试类的方法 前面已经讲过,软件测试从“小型测试”开始,逐步过渡到“大型测试”。对面向对象的软件来说,小型测试着重测试单个类和类中封装的方法。测试单个类的方法主要有随机测试、划分测试和基于故障的测试等3种。 1. 随机测试 下面通过银行应用系统的例子,简要地说明这种测试方法。该系统的account(账户)类有下列操作: open(打开),setup(建立),deposit(存款),withdraw(取款),balance(余额),summarize(清单),creditLimit(透支限额)和close(关闭)。上列每个操作都可以应用于account 类的实例,但是,该系统的性质也对操作的应用施加了一些限制,例如,必须在应用其他操作之前先打开账户,在完成了全部操作之后才能关闭账户。即使有这些限制,可做的操作也有许多种排列方法。一个account类实例的最小行为历史包括下列操作: open·setup·deposit·withdraw·close 这就是对account类的最小测试序列。但是,在下面的序列中可能发生许多其他行为: open·setup·deposit·[deposit|withdraw|balance|summarize|creditLimit]n·withdraw·close 从上列序列可以随机地产生一系列不同的操作序列,例如: 测试用例#r1:open·setup·deposit·deposit·balance·summarize·withdraw·close 测试用例#r2:open·setup·deposit·withdraw·deposit·balance·creditLimit· withdraw·close 执行上述这些及另外一些随机产生的测试用例,可以测试类实例的不同生存历史。 2. 划分测试 与测试传统软件时采用等价划分方法类似,采用划分测试(partition testing)方法可以减少测试类时所需要的测试用例的数量。首先,把输入和输出分类,然后设计测试用例以测试划分出的每个类别。下面介绍划分类别的方法。 目录 1.图书管理系统开发背景 (2) 2. 图书管理系统设计 (2) 2.1任务目标 (2) 2.2 图书管理系统需求描述 (2) 2.2.1系统组成 (2) 2.2.2图书管理系统功能描述 (3) 2.2.3 系统参与者 (3) 2.3 图书管理系统功能模型 (3) 2.3.1 功能模型描述 (3) 2.3.2功能模型的用例图 (3) 2.3.2.1读者借书等的用例图 (3) 2.3.2.2图书馆管理员处理借书、还书等的用例图 (4) 2.3.2.3系统管理员进行系统维护的用例图 (5) 2.4 图书管理系统对象模型 (7) 2.4.1 对象模型描述 (7) 2.4.1.1读者Borrower类 (7) 2.4.1.2系统管理员Administrator类 (7) 2.4.1.3图书管理员Librarian类 (7) 2.4.1.4书目Title类 (7) 2.4.1.5其他类 (7) 2.4.2 类图 (6) 2.5 图书管理系统动态模型 (9) 2.5.1 图书管理系统动态模型 (9) 2.5.2图书管理系统系列图 (10) 2.5.2.1系统管理员添加书籍的时序图 (10) 2.5.2.2系统管理员添加借阅者帐户的时序图 (10) 2.5.2.3系统管理员删书目的时序图 (11) 2.5.2.4图书管理员处理书籍借阅的时序图 (11) 2.5.2.5 读者查询籍息的时序图 (12) 2.5.3图书管理系统活动图 (12) 2.5.3.1借阅者的活动图 (12) 2.5.3.2图书管理员的活动图 (14) 2.5.3.3系统管理员维护借阅者帐户的活动图 (15) 2.5.3.4系统管理员进行书目信息维护的活动图 (16) 2.5.3.5系统管理员维护书籍信息的活动图 (17) 面向对象设计原则 A. 面向对象设计七大原则 a) 开闭原则 ? 软件实体对扩展开发,对修改关闭。 ? 当软件系统面对着新的需求的时候,系统的设计是稳定的。 ? 满足“开-闭”原则系统的优点: 1. 通过扩展已有的模块,提供新的行为,满足新需求,使得变化中的软件系统有一定的适应性和灵活性 2. 已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使得变化中的模块有一定的稳定性和延续性. ? 怎样才能做到开闭原则? 1. 抽象化,为系统定义一个不再更改的抽象设计,这个设计预见了所有可能的变化。满足了开闭原则的“闭” 2. 找到系统中变化的部分,把可变性封装起来。使用继承或者其他方式来封装变化,将变化封装在一个方法中或者一个类中。 b) “里氏转换”原则(LSP) ? 定义:如果一个软件实体使用一个基类的话,那么一定适合于它的子类。也就是基类出现的地方,子类一定可以出现,替换后软件行为不会发生变化,而且它根本不能识别出基类和子类对象的区别。? 里氏转换原则是对开-闭原则的补充。违反了里氏原则,有就违反了开闭原则;反之不成立。 ? 里氏转换原则是继承复用的基础.只有当衍生类可以替换掉基类,软件功能不会受到影响的时候,基类才能被真正复用,而衍生类才能在基类的基础上增加新的行为。 ? 理氏转换原则是代理模式成立的基础.代理模式和真实主题模式都是抽象主题角色的子类。客户端只知道抽象主题,而代理主题可以替代抽象主题出现在任何地方 c) “依赖倒转”原则 ? 抽象不应该依赖于细节,细节应该依赖于抽象. ? (高层模块不应该依赖于底层模块,两个都依赖于抽象) ? 通俗地说:面向接口编程,不要对实现编程. d) “接口隔离”原则 ? 使用专门的接口比使用一个总的接口好;一个类对另外一个类的依赖性应当建立在最小的接口上的. 第一章测试 1 【单选题】(6分) 下列关于JDK的说法中,的是?() A. JDK是Java开发工具包的简称 B. 安装JDK后,还需要单独安装JRE C. JDK包括Java编译器、Java文档生成工具、Java打包工具等 D. JDK是整个Java的核心 2 【单选题】(6分) 下列关于classpath环境变量的说法中,哪一个是正确的?() A. 没有classpath环境变量就不能运行Java程序 B. classpath环境变量可以让虚拟机找到class文件的目录 C. classpath配置一次后可永久使用 D. 查看当前classpath配置的命令是:classpath 3 【单选题】(6分) Java属于以下哪种语言?() A. 汇编语言 B. 机器语言 C. 以上都不对 D. 高级语言 4 【单选题】(6分) 下列目录中,哪一个是用来存放JDK可执行程序的。() A. lib目录 B. db目录 C. bin目录 D. jre目录 5 【单选题】(6分) 下列哪个是Java应用程序主类中正确的main方法? A. publicstaticvoidmain(Stringargs[]) B. publicstaticvoidMain(Stringargs[]) C. staticvoidmain(Stringargs[]) D. publicvoidmain(Stringargs[]) 6 【单选题】(6分) 如果jdk的安装路径为:c:jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java 命令,需要将环境变量path设置为以下哪个选项() A. c:jrebin; B. c:jdk; C. c:jre; D. c:jdkbin; 1.面向对象程序设计中的数据隐藏指的是参考答案为:D A.输入数据必须输入保密口令B.数据经过加密处理 C. 对象内部数据结构上建有防火墙D.对象内部数据结构的不可访问性 [解析]输入数据必须输入保密口令和数据经过加密处理都不是面向对象程序设计的特征;对象内部数据结构上也不可能建有防火墙,所以它们都不是面向对象程序设计中所指的数据隐藏。面向对象程序设计系统中的封装单位是对象,对象之间只能通过接口进行信息交流,外部不能对对象中的数据随意地进行访问,这就造成了对象内部数据结构的不可访问性,也使得数据被隐藏在对象中。这就是面向对象程序设计中的数据隐藏所指。 2.下列各项中符合函数重载必须满足的条件的是参考答案为:D A.必须有不同的参数个数B.对应的参数类型必须不相同 C. A和B必须同时满足D.A和B只要满足一个即可 [解析]我们知道,在同一个作用域中,要实现函数重载必须满足的条件的是:① 有不同的参数个数;或者② 对应的参数有不相同的数据类型,即①和②中只要有一个满足就可以了。当然两者都满足更好,但这不是必须的。 3.下列带缺省值参数的函数说明中,正确的说明是参考答案为:A A.int Fun(int x,int y=2,int z=3); B.int Fun(int x=1,int y,int z=3); C. int Fun(int x,int y=2,int z); D.int Fun(int x=1,int y,int z=3); [解析]在带缺省值参数的函数说明中,正确的说明应该是无缺省值的参数依次排列在参数表的左边,排完无缺省值的参数后,再依次排列带缺省值的参数。从所给出的四个选项来看,只有“int Fun(int x,int y=2,int z=3)”符合这条规定,其它的都不符合。 4.有如下的对类“CSample”的说明,其中()是错误的。 class CSample { 参考答案为:A A.int a=23; B.CSample(); public: C.CSample(int val); D.~ CSample(); } [解析]在上面对类“CSample”说明中,“CSample()”和“CSample(int val)”是该类重载的构造函数、“~ CSample()”是该类的析构函数,这三个语句都是正确的。错误的语句是“int a=23”,因为它违反了在类的声明(不管是引用性声明,还是定义性声明)中都不能以赋值表达式的形式给它的数据成员进行初始化。 5.已知类A中的一个成员函数的说明如下: void Set(A &a); 则该函数的参数“A &a”的含义是参考答案为:C A.指向A的指针为a B.将变量a的地址赋给类A C.类A对象引用a用作函数的形参 D.变量A与a按位与后作函数参数 [解析]因为A是一个类,所以“A &a”表示a是类A的对象,但因为对象a的前缀了符号“&”,则“&a”表示是类A的对象引用。所以“A &a”的含义是类A对象引用a用作函数的形参。 6.若类A和类B的定义如下: class A { 1.什么是用例图?用例图有什么作用? 定义: 由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统 功能的图成为用例图。(2分) 作用: 用例图是从软件需求分析到最终实现的第一步,它显示了系统的用户和用户希望 提供的功能,有利于用户和软件开发人员之间的沟通(1分)。用例图可视化的 表达了系统的需求,具有直观、规范等优点,克服了纯文字性说明的不足(1分)。 用例方法是完全从外部来定义系统的,它把需求和设计完全分离开来(1分), 使用户不用关心系统内部是如何完成各种功能的。 2. 简述面向对象分析方法(OOA)的5个基本步骤 1)、识别对象,识别对象包括标识潜在的对象和筛选对象两步(1分) 2)、识别对象的属性(1分) 3)、识别对象的行为(1分) 4)、识别对象所属的类(1分) 5)、定义主题词(1分) 3. 简述时序图的建模步骤 建模步骤: 1)设置交互语境(1分) 2)确定对象(1分) 3)分析消息和条件(1分) 4)分析附加约束(1分) 5)对建模结果精化和细化(1分) 4. RUP统一过程中的四个阶段? 1)初始阶段(1分) 2)细化阶段(1分) 3)构造阶段(1分) 4)提交阶段(1分) 问答题和分析题 1. 网络的普及带给了人们更多的学习途径,随之而来的管理远程网络教学的“远程网络教学系统”诞生了。 “远程网络教学系统”的功能需求如下: ●学生登录网站后,可以浏览课件、查找课件、下载课件、观看教学视频。 ●教师登录网站后,可以上传课件、上传教学视频、发布教学心得、查看教学心得、 修改教学心得。 ●系统管理员负责对网站页面的维护、审核不合法课件和不合法教学信息、批准用 3.1面向对象程序设计方法简介(1课时) 教学目标: 1、 掌握面向对象程序设计语言的基本方法。 2、 熟悉对象、属性、事件、事件处理等概念,并学会运用(操作层面)。 教材分析: 学生初次接触面向对象的程序设计,对象、属性、类、事件和事件处理等概念都很陌生,教师可以通过一个具体、简单的vb 实例进行分析、探究,使学生掌握它们的含义及其关系,为进一步学习可视化的程序设计,在vb 中建立一个应用程序打下良好的基础。教学过程中可以采用讲授法、演示法和讨论教学法。教学时应该淡化名词、概念等抽象的内容,多一些具体的演示、讲解和分析。 学生分析 通过第一章的学习,学生已经从宏观上对算法的概念、设计和表达方法有了具体的了解。再加上第四章中的常量、变量、函数以及表达式等知识点,学生对于vb 语言表达式的计算有了初步的了解。 教学重点:对象、属性、类、事件和事件处理等概念 教学难点:面向对象程序设计的概念 教学流程 一、 复习引入 1、校对活动手册实践五的内容P10 2、复习:完成P92页练习1和2 (适当的缩减时间,快速的过去) 3、在我们学习了vb 语言的常量和表达式之后,我来学习一下vb 的界面设计(展示圆的面积计算机例子),这个就是用vb 工具开发的,Vb 是一个面向对象程序设计(OOP )开发工具。那什么是“面向对象程序设计” ? 二、 对象、属性 1、对象: 对象的概念来源于生活。在现实生活中,我们随时随地都在和对象打交道,我们骑的车、看的书以及我们自己,在一个VB 程序员眼中无一例外都是对象。 结合课本中的P48页的图312,构成这个应用程序的图形界面的,是以下各个对象。 对象:图形1 对象:标签1 对象:标签2 对象:命令按钮1 对象:文本框2 对象:文本框1 对象:窗体1 智慧树知到《面向对象分析与设计》章节测试答案 第一章 1、UML中接口可用于()。 A:提供构造型(stereotype)名称为《interface》的具体类 B:Java和C++程序设计中,而C#程序设计中不支持 C:定义可以在多个类中重用的可执行逻辑 D:声明对象类所需要的服务 答案: 声明对象类所需要的服务 2、在面向对象方法中,两个及以上的类作为一个类的父类时,称为( )。A:多重继承 B:多态 C:封装 D:层次继承 答案: 多重继承 3、以下关于封装在软件复用中所充当的角色的叙述,正确的是()。 A:封装使得其他开发人员不需要知道一个软件组件内部如何工作 B:封装使得软件组件更有效地工作 C:封装使得软件开发人员不需要编制开发文档 D:封装使得软件组件开发更加容易 答案: 封装使得其他开发人员不需要知道一个软件组件内部如何工作 4、在定义类一个类时,将其属性声明为private的目的是( )。 A:实现数据隐藏,以免意外更改 B:操作符重载 C:实现属性值不可更改 D:实现属性值对类的所有对象共享 答案: 实现属性值对类的所有对象共享 5、面向对象的四个基本特征是? A:继承、封装、多态、抽象 B:继承、封装、多态、层次 C:封装、多态、层次、模块化 D:抽象、封装、模块、结构 答案: 继承、封装、多态、抽象 6、首次提出“面向对象”概念的计算机科学家是()? A:比尔.盖茨 B:艾伦.灵图 C:艾伦.凯 D:史蒂夫.乔布斯 答案: 艾伦.凯 7、在面向对象方法中,讲逻辑上相关的数据及行为绑定在一起,使信息对使用者隐藏称为()A:抽象 B:继承 C:封装 D:多态 答案: 封装 《面向对象程序设计》第11章在线测试剩余时间:59:52 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、STL中能够保存其他类型的对象的类是() A、容器 B、迭代器 C、算法 D、数组 2、双队列(deque)属于() A、顺序容器 B、关联容器 C、前向容器 D、双向容器 3、集合(set)属于( ) A、顺序容器 B、关联容器 C、前向容器 D、双向容器 4、多重集(multiset)属于( ) A、顺序容器 B、关联容器 C、前向容器 D、双向容器 5、映射(map)属于( ) A、顺序容器 B、关联容器 C、前向容器 D、双向容器 第二题、多项选择题(每题2分,5道题共10分) 1、下面属于适配器容器的是( ) A、优先队列 B、堆栈 C、集合 D、映射 2、下面属于容器的头文件是() A、vector B、list C、quene D、set 3、下面的说法正确的是()题太坑!!!对的也显示错误! A、容器用于存放数据对象 B、算法用于操作容器中的数据对象 C、迭代器是容器的代替 D、迭代器用于链接容器和算法 4、下面关于string类型的说法正确的是() A、使用string类型前,程序必须包含头文件string B、string类型是C++的一部分 C、string类型与char* 类型的作用一样 D、string相当于一个保存字符的序列容器 5、下面属于顺序容器的是() A、向量 B、双队列 C、堆栈 D、列表 第三题、判断题(每题1分,5道题共5分) 1、容器是能够保存其它类型的对象的类。 正确错误2、算法就是一个按照一组定义明确的步骤来解决某个问题的处理过程。 正确错误 面向对象七大基本设计原则 面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心。在设计面向对象的程序的时,模式不是一定要套的,但是有一些原则最好是遵守。这些原则已知的有七个,包括:单一职责原则、开闭原则、里氏代换原则、依赖注入(倒转)原则、接口分离原则、迪米特原则、合成聚合复用原则。 原则一单一职责原则 单一职责原则(SRP:Single responsibility principle)又称单一功能原则 核心:解耦和增强内聚性(高内聚,低耦合)。 描述:类被修改的几率很大,因此应该专注于单一的功能。如果你把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,这时就需要新一轮的测试来避免可能出现的问题。 原则二里氏替换原则 里氏替换原则(LSP:Liskov Substitution Principle) 核心:在任何父类出现的地方都可以用他的子类来替代(子类应当可以替换父类并出现在父类能够出现的任何地方) 四层含义: (1)子类必须完全实现父类的方法。在类中调用其他类是务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。 (2)子类可以有自己的个性。子类当然可以有自己的行为和外观了,也就是方法和属性 (3)覆盖或实现父类的方法时输入参数可以被放大。即子类可以重载父类的方法,但输入参数应比父类方法中的大,这样在子类代替父类的时候,调用的仍然是父类的方法。即以子类中方法的前置条件必须与超类中被覆盖的方法的前置条件相同或者更宽松。 (4)覆盖或实现父类的方法时输出结果可以被缩小。 原则三依赖注入原则 依赖注入原则(DIP:Dependence Inversion Principle)别名:依赖倒置原则或依赖反转原则 核心:要依赖于抽象,不要依赖于具体的实现 三层含义: (1)高层模块不应该依赖低层模块,两者都应该依赖其抽象(抽象类或接口);(2)抽象不应该依赖细节(具体实现); 一、单项选择题 1、组成UML有三种基本的建筑块是:(),事物和图 A、关系 B、类 C、用例 D、实体 2、UML体系包括三个部分:UML基本构造块,()和UML公共机制 A、UML规则 B、UML命名 C、UML模型 D、UML约束 3、UML中的事物包括:结构事物,分组事物,注释事物和() A、实体事物 B、边界事物 C、控制事物 D、动作事物 4、下面哪个不是UML中的静态视图() A.状态图 B.用例图 C.对象图 D.类图 5、()技术是将一个活动图中的活动状态进行分组,每一组表示一个特定的类、人或部门,他们负责完成组内的活动。 A、泳道 B、分叉汇合 C、分支 D、转移 6、下列关于状态图的说法中,正确的是() A. 状态图是UML中对系统的静态方面进行建模的五种图之一。 B. 状态图是活动图的一个特例,状态图中的多数状态是活动状态 C.活动图和状态图是对一个对象的生命周期进行建模,描述对象随时间变化的行为。 D. 状态图强调对有几个对象参与的活动过程建模,而活动图更强调对单个反应型对象建模 7、对反应型对象建模一般使用()图 A、状态图 B、顺序图 C、活动图 D、类图 8、类通常可以分为实体类,()和边界类 A、父类 B、子类 C、控制类 D、祖先类 9、顺序图由类角色,生命线,激活期和()组成 A、关系 B、消息 C、用例 D、实体 10、()是系统中遵从一组接口且提供实现的一个物理部件,通常指开发和运行时类的物理实现 A、部署图 B、类 C、接口 D、组件 11、关于协作图的描述,下列哪个不正确() A.协作图作为一种交互图,强调的是参加交互的对象的组织; B.协作图是顺序图的一种特例 C.协作图中有消息流的顺序号; D.在ROSE工具中,协作图可在顺序图的基础上按“F5”键自动生成; 12、一个对象和另一个对象之间,通过消息来进行通信。消息通信在面向对象的语言中即() A、方法实现 B、方法嵌套 C、方法调用 D、方法定义 13、()是可复用的,提供明确接口完成特定功能的程序代码块。面向对象程序设计 小测试(1)
软件工程+面向对象的分析设计测试
面向对象软件的测试用例的设计方法
图书管理系统面向对象设计方法
面向对象设计七大原则-步骤资料
智慧树知道网课《面向对象程序设计(山东联盟)》课后章节测试满分答案
面向对象程序设计习题测验
UML面向对象分析与设计测验和答案
1面向对象程序设计方法简介(1课时)
智慧树知到《面向对象分析与设计》章节测试答案
面向对象程序设计第11章在线测试
面向对象七大基本设计原则
面向对象分析与设计测试题