第4章类图与对象图习题
一、简答题
1. 什么叫对象?
答:对象的本意是指认识的指向物。在计算机软件中,对象用来表示客观事物的一
个实体,它封装了一组属性和操作。从形式上看,对象是一段具有特定语法规则的程
序单元,它能够作为软件系统的一个相对独立的基本单位,在软件中承担确定的服务
职能。
2. 简述实例的概念。
答:实例是类元中的一个元素。
3. 简述类元的概念。
答:类元是对聚集一组具有共同特征的实例的模型元素的通称,类、接口、用例、
参与者、关联等都属于类元。类元的名字用标识符来表示,首字母要大写。类元会包
括一组实例。
4. 什么叫类?
答:类是具有相同性质的一组对象的集合,这组对象具有相同的特征、约束和语义。
5. 类有哪几种类型?
答:按阶段分:业务对象,PIM类,PSM类;按作用分:实体类,控制类,界面类。
6. 简述接口的概念。
答:接口是一种类元,聚集了一组需要通过其他类元实现的公共的操作和属性。
二、填空题
1.认识的对象可以是客观中一个具体的(事物),也可以是主观中的一个抽象(观念)。
2.软件中的对象是一段具有特定语法规则的(程序单元),它能够作为软件系统的一个相对独立的基本单位,在软件中承担确定的(服务职能)。
3.类描述具有相同性质的一组对象的(集合),类用(矩形)来表示。
4.按作用,可以把类分为(控制类)、边界类和(实体类)几种类型。
5.接口可以分为(供口)和(需口)两种类型。
三、选择题
1.在认识过程中,下面哪个不是对象的要素(D)
A:认识的指向物 B:认识者
C:认识指向物在认识者主观中的反映 D:认识的背景
2.下面哪一个对对象的说法不正确(B)
A:客观实体 B:事物的对立面
C:认识的指向物 D:软件的一个基本单位
3. 下面属性命名不正确的是(A)
A *BirthDay:Date
B #studentBirthDay:Date=1999-10-21
C -price:float=12.01{R/W}
D +studentName:String=“张敏”
4.指出下面不合适的类名(B)
A:材料 B:事物
C:订单 D:会员
5.下面不是对象图作用的是(A)
A:功能逻辑建模
B:初期分析工具
C:描述业务场景
D:模拟运行场景
四、练习题
1.在一个订货系统中,采购员从供货商处订货,双方需要签订订单,一个采购
员可以订多个供货商的货品,一个供货商也可以给多个采购员供货。分析这个问题,并用类图对这个问题进行建模。
答:
图1
2.一个企业可以雇佣多个人员。企业的性质包括名称、住址、电话、简况。人员的情况包括姓名、年龄、性别、住址、电话、简历等。雇佣的信息包括雇佣的开始日期、截止日期,简要说明等。双方要签订雇佣合同。雇佣还涉及到被雇用人员所从事的工作岗位。分析这个问题,提取这个问题所涉及到类,定义各个类之间的关系,并画出类图。
答:见图2。
3.宾馆客房业务管理提供客房预订、预订变更、客房入住、退房结帐、旅客信息查询几个方面的功能。订房人可以通过电话、短信、网络或面对面等方式预定客房。允许预定人根据自己情况的变化更改预定信息。旅客入住客房前需要出示证件并登记,
并要预交一定的押金。旅客提交押金后,柜台工作人员将在电脑上登记旅客信息,分
配房间,并打印旅客入住单,旅客持入住单到指定客房入住。旅客离开宾馆前需要退房结账。旅客或宾馆管理人员可以随时查询旅客或客房的入住信息。分析这个问题,提取涉及的类,并画出类图。
答:见图3。
图2
图3
4
.根据你的理解,对下图不合理的地方进行修改。
答:
5
.修改下图。
答:
6.某高校中有以下事物:学校、教师、教室、教材、课程、课桌、学生、班级、
学院、讲台、机房、计算机、交换机、社团,试绘制反映这些事物联系的类图。 答:
7.分析书店图书销售管理业务,提取相关的类,并画出的类图。答:
8
.分析超市购物管理业务,提取相关的类,并画出类图。
答:
实验3 类和对象的创建与使用 一、实验目的 1、掌握类的定义和对象的创建; 2、掌握构造方法的作用、格式及重载; 3、掌握修饰词对成员存取权限的限制。 4、掌握实例成员、类成员的定义和使用方法。 二、实验内容 1、定义储蓄账户类,并创建对象模拟银行基本操作。 2、两游戏角色决斗。给定二个不同的角色,判定交手的胜负关系。(选做) 3、设计学生类、学校类、录取类,根据学生成绩和学校分数线,判断是否录取。 三、实验步骤 说明:请将第1,3题代码写入实验报告实验步骤处。 1、模拟银行账户功能。 编写程序,模拟银行账户功能。要求如下: 属性:账号、姓名、地址、存款余额、最小余额。 方法:存款、取款、查询。 根据用户操作显示储户相关信息。 如存款操作后,显示储户原有余额、今日存款数额及最终存款余额。 取款时,若取款成功,显示信息提示;若最后余额小于最小余额,拒绝取款,并显示信息提示。具体显示信息可据方便性原则自拟。 public class AccountOperation { public static void main(String [] args) { Account account1=new Account("650101","柳眉","天河学院",800.00); Account account2=new Account("650102","郑杰","天河学院",200.00); account1.transfer(account1,account2,300.0); account1.deposit(300.5); account1.withdraw(200); account1.withdraw(300); account1.query(); System.out.println(account1.toString()); //System.out.println(https://www.doczj.com/doc/007738514.html,); error!! } } class Account { private String account; private String name; private String address; private double balance;
uml实验报告 学院 班级学号姓名 uml实验报告 实验一:用例图 实验结果: 小结实验心得体会: 用例模型用于需求分析阶段,它描述了待开发系统的功能需求,并驱动了需求分析之后 各阶段的开发工作。用例图是uml中用来对系统的动态方面进行建模的7种图之一。用例图 描述了用例、参与者以及它们之间的关系。用例图从用户角度描述系统功能,并指出各功能 的操作者。通过本次实验,我熟悉rational rose建模环境,更加清楚的了解了用例图的语 义和功能,如何清晰明了的识别参与者、用例,学会了如何使用事件流描述用例。同时掌握 了用例间的类属关系、include关系和extend关系的语义、功能和应用。最后通过本次实验 学习了如何使用用例图为系统的上下文以及系统的需求建模。 思考题: 1. 如果要删除参与者、用例,请问是在导航窗口删除,还是在绘图窗口删除? 答:都可以删除,但在绘图窗口中有两种删除方式:一种是只删除参与者、用例,而不 改变其在导航窗口中的存在,另一种是从建模中完全删除。 2. 如果要删除参与者和用例的联系,用例和用例的联系,请问是在绘图中删除,还是在 参与者或用例的设置对话框中删除? 答:都可以删除。 实验二:类对象模型的建立 实验结果: 小结实验心得体会: 类图是面向对象系统建模最常用的图,描述了类图、接口集、协作以及它们之间的关系。 类图描述了系统的静态设计视,该视主要体现系统的功能需求,即系统应该提供给用户的服 务。通过本次实验,加深了我对类图语义的理解和功能的应用,掌握了类之间的联系,关联、 依赖、聚合等,同时基本掌握了在rational rose中绘制类的关联、依赖、泛化关系。 思考题:选中一个模型对象,点击鼠标右键,比较快捷菜单项“edit——delete”与“edit ——delete from model”,它们二者之间区别在哪里? 答:“edit——delete”只是在绘图窗口中删除了模型对象,而“edit——delete from model”则是彻底的删除了模型对象。 实验三:顺序图、协作图 实验结果: 顺序图: 1. 归还图书 2.借出图书 协作图: 1. 归还图书 2. 借出图书 小结实验心得体会: 顺序图描述了对象之间的动态合作关系,它强调对象之间消息发送的时间顺序,同时显 示对象之间的交互。协作图与顺序图是同构的,rose可自动转换。顺序图是强调消息的交互
UML实践----用例图、顺序图、状态图、类图、包图、协作图 2009-01-20 作者:Randy Miller 来源:网络 面向对象的问题的处理的关键是建模问题。建模可以把在复杂世界的许多重要的细节给抽象出。许多建模工具封装了UML(也就是Unified Modeling Language?),这篇课程的目的是展示出UML的精彩之处。 UML中有九种建模的图标,即: ?用例图 ?类图 ?对象图 ?顺序图 ?协作图 ?状态图 ?活动图 ?组件图 ?配置图 本课程中的某些部分包含了这些图的细节信息的页面链接。而且每个部分都有一个小问题,测试一下你对这个部分的理解。 为什么UML很重要? 为了回答这个问题,我们看看建筑行业。设计师设计出房子。施工人员使用这个设计来建造房子。建筑越复杂,设计师和施工人员之间的交流就越重要。蓝图
就成为了这个行业中的设计师和施工人员的必修课。 写软件就好像建造建筑物一样。系统越复杂,参与编写与配置软件的人员之间的交流也就越重要。在过去十年里UML就成为分析师,设计师和程序员之间的“建筑蓝图”。现在它已经成为了软件行业的一部分了。UML提供了分析师,设计师和程序员之间在软件设计时的通用语言。 UML被应用到面向对象的问题的解决上。想要学习UML必须熟悉面向对象解决问题的根本原则――都是从模型的建造开始的。一个模型model就是根本问题的抽象。域domain就是问题所处的真实世界。 模型是由对象objects组成的,它们之间通过相互发送消息messages来相互作用的。记住把一个对象想象成“活着的”。对象有他们知道的事(属性attributes)和他们可以做的事(行为或操作behaviors or operations)。对象的属性的值决定了它的状态state。 类Classes是对象的“蓝图”。一个类在一个单独的实体中封装了属性(数据)和行为(方法或函数)。对象是类的实例instances。 用例图 用例图Use case diagrams描述了作为一个外部的观察者的视角对系统的印象。强调这个系统是什么而不是这个系统怎么工作。 用例图与情节紧紧相关的。情节scenario是指当某个人与系统进行互动时发生的情况。下面是一个医院门诊部的情节。 “一个病人打电话给门诊部预约一年一次的身体检查。接待员找出在预约记录本上找出最近的没有预约过的时间,并记上那个时间的预约记录。” 用例Use case是为了完成一个工作或者达到一个目的的一系列情节的总和。角色actor是发动与这个工作有关的事件的人或者事情。角色简单的扮演着人或者对象的作用。下面的图是一个门诊部Make Appointment用例。角色是病人。角色与用例的联系是通讯联系communication association(或简称通讯communication)
宁夏师范学院数学与计算机科学学院《面向对象程序设计(C++)》实验报告
}*/ // ~CPU() {cout<<"析构了一个CPU!"< 《系统分析与建模》实验指导书__2011__/__2012__年第__二__学期 姓名:____钱秀梅_________ 学号:__ 10030117_____ 班级:_ 10计一_______ 指导教师:___殷凯__________ 计算机科学与技术系编写 系统分析与建模实验指导书―1―计算机科学与技术系 目录 实验0 熟悉软件开发环境 (1) 实验1 用例图设计………………………………………………… 实验2 类和对象图设计 (3) 实验3 交互图设计 (7) 实验4 状态图设计 (9) 实验5 活动图设计 (12) 实验6 包图设计 (15) 实验7 物理图设计 (17) 附录考核登记表 (23) 实验0 熟悉软件开发环境 一、实验目的 学习使用EA开发环境创建模型的一般方法,理解EA界面布局和元素操作的一般技巧。 二、实验环境 软件平台:Microsoft Windows2000 /XP。软件工具:EA 7.5。 三、实验内容与要求 1.学会启动和关闭EA 7.5开发环境。 2.使用目标项目(Project)的向导创建一个项目。 3.了解EA 7.5界面的六大组成部分(菜单Menu、浏览器Browser、文档窗口Document Window、图窗口Diagram Window、日值窗口Log Window和工具栏。 4.在浏览器中实现如下操作:增加模型元素(包括角色、用例、类、组建、图等); 查看现有模型元素;查看现有模型元素之间的关系;移动模型元素;更名模型元 素;访问元素的详细规范。 5.分别在在图中增加删除图元素和在浏览器中增加删除图元素。 四、实验预习和准备 参考相关书籍,能够熟练地安装和使用EA 7.5软件建立模型。 五、实验过程与结果 读者 借书 还书 续借图0-1 用例图 实验一:类和对象 【实验目的】 1.理解对象和类,掌握类的定义及如何创建一个对象; 2.掌握构造方法的运用; 3.掌握方法的定义和参数传递; 4. 掌握类的继承机制。 【实验准备】 一、复习配套教材相关章节的内容; 二、预习本次实验; 【实验内容】 1.编写一个程序,显示水果的定购行情。定义一个带有参数的构造方法,这些参数用于存放产品名,数量和价格。在主程序中输出三种不同的水果。package avage; public class text { String name; int agr; double page; public text(){ } public text(String name,int agr,double page){ https://www.doczj.com/doc/007738514.html,=name; this.agr=agr; this.page=page; } public void evagre(){ System.out.println("水果名为:"+https://www.doczj.com/doc/007738514.html,); System.out.println("水果数量:"+this.agr); System.out.println("水果单价:"+this.page); } } public class text1 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub text s=new text(); https://www.doczj.com/doc/007738514.html,="苹果"; s.agr =10; s.page=1.0; s.evagre(); text c=new text(); https://www.doczj.com/doc/007738514.html,="香蕉"; s.agr =10; s.page=1.0; s.evagre(); text d=new text(); https://www.doczj.com/doc/007738514.html,="橘子"; s.agr =10; s.page=1.0; s.evagre(); 2. 编写一个学生类,封装学生的学号、姓名、成绩等信息。再编写一个主类, 北京信息科技大学 实验(上机)报告 课程名称U M L及建模工具学号2012012194姓名李自然成绩_______ 附录: 影片租赁源程序 //租赁类的定义 class Rental { private Movie _movie; // 影片 private int _rentDate; // 租赁日期 private int _daysRented; // 租期 public Rental(Movie movie, int daysRented) { _movie = movie; _daysRented = daysRented; } public int getDaysRented() { return _daysRented; } public Movie getMovie() { return _movie; } double getCharge() { return _movie.getCharge(_daysRented); } int getFrequentRenterPoints() { return _movie.getFrequentRenterPoints(_daysRented); } } //顾客类的定义 class Customer { private String _name; // 姓名private String _phone; // 电话号码private Vector _rentals = new Vector(); // 租借纪录 public Customer(String name) { _name = name; } public void addRental(Rental arg) { _rentals.addElement(arg); } public String getName() { return _name; } //输出租赁交易报告 public String statement() { Enumeration rentals = _rentals.elements(); String result = "Rental Record for " + getName() + "\n"; while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); //显示该顾客的每个租赁 result += "\t" + each.getMovie().getTitle()+ "\t" + String.valueOf(each.getCharge()) + "\n"; } //结尾打印(总费用和积分) result += "Amount owed is " + String.valueOf(getTotalCharge()) + "\n"; result += "You earned " + String.valueOf(getTotalFrequentRenterPoints()) + " frequent renter points"; return result; } //已超文本方式输出租赁交易报告 public String htmlStatement() { Enumeration rentals = _rentals.elements(); String result = " \n"; while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); //显示该顾客的每个租赁 实验报告_实验3 类与对象(学生学号_姓 名) 一、实验目的 1.熟悉类的组成,掌握类的声明方法; 2.理解构造方法的作用,并掌握构造方法的定义; 3.熟练使用访问器和设置器实现信息隐藏和封装; 4.熟悉一般方法、构造方法的重载; 5.能够正确地区分静态变量与实例变量、静态方法与实例方法的不同,掌握静态变量和静态方法的使用;6.掌握对象的创建、引用和使用及向方法传递参数的方式; 7.掌握this关键字的使用以及对象数组的创建和访问; 8.掌握Java包的创建、包成员的各种访问方式; 9.掌握一维数组:声明,创建,初始化,数组元素的访问; 10.掌握多维数组的概念:二维数组的声明,初始化,元素的访问。 二、实验内容与步骤 1.请回答下列问题: (1)Cirecle类定义了几个属性?它们的类型、访问权限各为什么? 答:两个PI,floatl类型,静态私有权限 Radius,float;类型,私有权限 (2)类中的“PI”的值可以在程序的方法中更改吗? 答:不可以,因为PI为静态变量 (3)Cirecle类定义了几个方法?它们的访问权限怎样? 答:四个,getRadius(),setRadius(float radius),getPerimeter(),getArea()都是公有权限 2.写出Rectangle类的程序代码: class Rectangle { private float width; private float length; public float getWidth( ) //获取矩形宽度 {return width;} public float getLength( ) //获取矩形长度 {return length;} public float getPerimeter( ) //获取矩形周长 {return 2*(width+length);} public float getArea( ) //获取矩形面积 {return (width*length);} public void setWidth(float w) //设置矩形宽度 {width=w;} public void setLength(float l) //设置矩形长度 {length=l;} } 3.回答下列问题: (1)该程序中有几个类?主类是什么?如果将这两个类放在一个文件中,源程序文件名应是什么?答:两个类:Circle、CircleTest;主类是CircleTest;源程序文件名是CircleTest。 实验一类和对象 Visual C++ 6.0集成开发环境的使用: Visual C++系列产品是微软公司推出的一款优秀的C++集成开发环境,其产品定位为Windows 95/98、NT、2000 系列Win32 系统程序开发,由于其良好的界面和可操作性,被广泛应用。由于2000 年以后,微软全面转向.NET 平台,Visual C++6.0 成为支持标准C/C++规范的最后版本。 1.启动 安装完系统后,可以选择如下两种方式启动 1) 点击Windows “开始”菜单,选择“程序”菜单下“Microsoft Visual Studio 6.0”子菜单下的快捷方式Microsoft Visual C++ 6.0 启动Visual C++ 6.0。 2) 点击Windows “开始”菜单,选择“运行”,输入msdev,即可启动。启动后的界面如下: 图 1 启动界面 2.建立工程 选择“File”菜单下的“New”菜单项或直接按Ctrl+N,启动新建向导,如图2 所示: 图 2 新建向导 选择在“Projects”属性页选择Win32 Console Application,在Project Name 中输入项目名称demo,在Location 中选择项目文件,如图2 中c:\test\demo,项目所有文件将保存在此文件。输入完毕,单击确定按钮,进入下一界面如图3: 图 3 项目类型向导 在图 3 所示界面中选择a simple application,然后点击Finish 按钮,系统显示图4 所示界面。如果想退回上一步可以选择“Back”按钮。 图 4 项目信息 在图 4 中选择OK 按钮,系统完成项目的创建,并保存项目相关的信息。项目的目录结构如图5 所示。 1) Demo.dsw 是项目工作区文件,双击此文件,即可打开此项目; 2) Demo.dsp 为项目文件; 3) demo.cpp 是项目中的一个源程序;stdafx.h 和stdafx.cpp 为自动创建的源程序,一般不用修改。 图 5 目录结构 天津理工大学华信软件学院 天津理工大学(华信软件学院) 实验指导书 课程名称:软件工程与UML建模 适应课程: (1969216) 上机实验(三)创建类和类图 一、实验目的: 在Rose 环境下创建类和类图, 完成应用案例的类图设计。 二、实验内容: (一)创建类 1)根据“需求陈述”提炼对象和类 2)分析对象,并将对象抽象成类 (二) 创建类图 建立类之间的关系(关联关系、泛化关系、聚集或组合关系、依赖关系等)创建类图。 (三) 综合应用练习。 三、操作步骤: (一) 创建类 1、启动Rose 2003进入后,在左面结构框内右击Logical View; 2、选New 选Class Diagram ,再在Class Diagram下创建类; 3、给类命名(比如Course); 4、增加属性(右击框途中的类,选New Attribute); 5、添加类操作(右击框途中的类,选New Operation); (二) 建立类之间的关系 1.首先关联关系 (使用按钮工具,如果当前工具栏中没有,右击工具栏,然后添加相关按钮) 1) 单项关联; 2) 双向关联。 2.练习聚集和组合 (先建立关联,再右击靠近“整体”方的关联线,选Aggregate选项。) 3.然后泛化关系。 4.最后练习依赖关系。 四.实例练习(不能用课件及教材上的示例,要自己来想。) 1.举实例说明类之间的关联关系。 包括:单、双向关联、一对一关联、一对多关联、多对多关联、自反关联、限定关联和关联类。 2.举实例说明类之间的聚合(组合)关系。 3.举实例说明类之间的泛化(继承)关系。包括:单继承、多继承。 4.举实例说明接口与实现,抽象类与子类等。 五.综合应用: (一)以“学生选课系统”为例建立类图 1.“学生选课系统”涉及到的类: 1) Database类UML实验报告全
实验:类和对象1
20150528_152805_40_UML-实验报告(03)-类图
Rentals for " + getName() + "
实验报告_实验3 类与对象
实验一 类和对象
UML 新编实验指导书(实验三 类图)
C++实验二类与对象(附答案)