面向对象设计(UML)实验指导书电信学院测控系戴立红I目录实验一:C++程序设计(1)——类和对象.................................................................................1实验二:C++程序设计(2)——继承.........................................................................................3实验三:C++程序设计(3)——多态.........................................................................................5实验四:C++程序设计(4)——模板和运算符重载.................................................................6实验五:UML建模(1)——用例建模......................................................................................7实验六:UML建模(2)——类图建模......................................................................................9实验七:UML建模(3)——动态建模....................................................................................10实验八:UML建模(4)——物理建模....................................................................................121实验一:C++程序设计(1)——类和对象一、实验教学的目的与基本要求目的:1、熟练掌握VC++的编程环境;2、掌握面向对象的方法以及面向对象程序设计语言C++;3、重点掌握类和对象基本概念;4、能够利用所学的面向对象基本概念,用C++编写类和对象程序。要求:1、按时参加实验,保证实验出勤率;2、独立或是在同学及老师指导下完成实验内容;3、实验之前做好预习及准备工作,掌握实验的基本目的和要求;4、实验结束后,独立做好实验报告的填写工作。二、实验内容以下2个实验内容至少实现1个。1、定义一个学生类(Student),包含姓名(name)、班级(myClass)、年龄(age)、本课程成绩(courseScore)等属性。要定义构造函数和析构函数。要求输出自己本人的相关信息。提示:姓名和班级定义成字符数组类型。获得姓名函数以及获得班级函数的返回值类型定义成字符指针。字符串拷贝函数strcpy(d,r)是将后面的r中的内容拷贝到d中。注意使用字符串拷贝函数要包含头文件string.h。2、定义一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数运行(run)、停止(stop)。在主函数中建立一个CPU类的对象,并显示这个CPU的等级、频率、电压以及运行或停止状态。观察构造函数和析构函数的调用顺序。提示:等级(rank)定义为enumCPU_Rank={P1=1,P2,P3,P4,P5,P6,P7},频率(frequency)为单位为MHz的整型数,电压(voltage)为浮点型的电压值。定义构造函数,实现对等级、频率和电压的初始赋值,以及用语句进行提示在调用构造函数。定义析构函数,提示在调用析构函数,释放对象所占用的内存空间。此外,2要定义相应的成员函数以返回CPU的等级、频率、电压。3实验二:C++程序设计(2)——继承一、实验教学的目的与基本要求目的:1、熟练掌握VC++的编程环境;2、掌握面向对象的方法以及面向对象程序设计语言C++;3、重点掌握继承基本概念;4、掌握多重继承中的二义性及其解决方法;4、能够利用所学的面向对象基本概念,用C++编写单继承和多重继承程序。要求:1、按时参加实验,保证实验出勤率;2、独立或是在同学及老师指导下完成实验内容;3、实验之前做好预习及准备工作,掌握实验的基本目的和要求;4、实验结束后,独立做好实验报告的填写工作。二、实验内容以下3个实验内容至少实现一个。1、设计一个抽象类车(Vehicle),由它派生出轿车类(Car)和卡车类(Truck)。轿车类(Car)包含名称(name)、颜色(color)、载客数(passengerNumber)三个数据成员,卡车类(Truck)包含名称(name)、颜色(color)、载重量(passengerWeight)三个数据成员。要求分别输出一辆轿车和一辆卡车的相关信息。2、设计一个车(Vehicle)基类,具有最大速度(maxSpeed)、重量(weight)等成员变量,运行(run)、停止(stop)等成员函数,由此派生出自行车(Bicycle)类、汽车(Motorcar)类。自行车类有高度(height)等属性,汽车类有座位数(seatNum)等属性。从自行车(Bicycle)和汽车(Motorcar)派生出摩托车(Motorcycle)类。要求,创建一个摩托车对象,显示其最大速度,重量,高度,座位数,运行及停止状态。3、设计一个家具类(Furniture),具有私有的数据成员为重量(weight)。有两种家具:沙发(Sofa)和床(Bed)。沙发类中有成员函数(watch)用于显示沙发的作用是观看。床类中有成员函数(sleep)用于显示床的作用是睡觉。此外还有沙发床(SofaBed),有两个成员函数(collapse)和(expand),分别显示摊开放是张床,张开4时是沙发。在主函数中定义沙发床的对象,首先将其张开,然后观看,接着摊开,然后睡觉,最后设置重量并显示其重量。5实验三:C++程序设计(3)——多态一、实验教学的目的与基本要求目的:1、熟练掌握VC++的编程环境;2、掌握面向对象的方法以及面向对象程序设计语言C++;3、重点掌握多态基本概念,以及用虚函数实现多态的方法;4、能够利用所学的面向对象基本概念,用C++编写多态程序。要求:1、按时参加实验,保证实验出勤率;2、独立或是在同学及老师指导下完成实验内容;3、实验之前做好预习及准备工作,掌握实验的基本目的和要求;4、实验结束后,独立做好实验报告的填写工作。二、实验内容要求用虚函数实现。以下3个实验题目至少实现一个。1、设计三种水果(苹果、香蕉和桔子),显示三种水果的名称。2、设计一个动物类(Animal),和其两个派生类老虎(Tiger)和羊(Sheep),设计动物叫声函数soar()以及饮食函数eat(),分别输出老虎和羊的叫声(mie咩)和饮食。3、设计一个汽车类Motor,该类具有可载人数passengerNum、轮胎数wheelNum、马力数power、生产厂家Make和车主owner五个数据成员,根据Motor类派生出Car类、Bus类和Truck类。其中Bus类除继承基类的数据成员外,还具有表示车厢节数的数据成员number;Truck类除继承基类的数据成员之外,还具有表示载重量的数据成员weight。每个类都具有成员函数display,用于输出各类对象的相关信息。6实验四:C++程序设计(4)——模板和运算符重载一、实验教学的目的与基本要求目的:1、熟练掌握VC++的编程环境;2、掌握面向对象的方法以及面向对象程序设计语言C++;3、重点掌握多态、类模板和函数模板以及运算符重载的基本概念;4、能够利用所学的面向对象基本概念,用C++编写类模板和函数模板以及运算符重载的程序。要求:1、按时参加实验,保证实验出勤率;2、独立或是在同学及老师指导下完成实验内容;3、实验之前做好预习及准备工作,掌握实验的基本目的和要求;4、实验结束后,独立做好实验报告的填写工作。二、实验内容以下实验内容中1和2必做题,3为选做题。1、使用类模板实现返回类内两个数据成员的值,数据成员可以是任意类型的,并且要求两个数据成员的类型可以不同。提示:定义两个模板参数。2、使用函数模板实现任意类型的两个数的求和运算,并编写主测试程序实现两个整型数相加,两个实型数相加。3、运算符重载设计一个学生类Student,包括姓名和三门课的成绩score1,score2,score3,利用重载运算符“+”求出所有学生每门课的总成绩以及每门课的平均成绩。7实验五:UML建模(1)——用例建模一、实验教学的目的与基本要求目的:1、熟练掌握RationalRose/Visio的使用环境;2、掌握面向对象的方法以及UML建模的基本思想;3、掌握UML各种图的表示方法及建模步骤;4、能够利用所学的UML基本知识,能够进行用例图设计。要求:1、按时参加实验,保证实验出勤率;2、独立或是在同学及老师指导下完成实验内容;3、实验之前做好预习及准备工作,掌握实验的基本目的和要求;4、实验结束后,独立做好实验报告的填写工作。二、实验内容以下实验内容中,1和2为必做题,3为选做题。1、对简易教学管理系统进行分析和建模,画出相应的UML用例图。简易教学管理系统包括两个主要功能:选课管理和成绩管理。其中成绩管理包括下面的功能:学生使用该系统可以查询学生成绩。教师使用该系统可以查询学生成绩,也可以查询课程成绩。管理员使用该系统进行学生成绩管理和成绩统计。注意在进行以上各种操作前都要进行身份验证。如果忘记了自己的密码,则可以找回密码。提示:上述几个基本用例和身份验证用例之间为包含关系,而找回密码用例和身份验证用例之间为扩展关系。其中选课管理包括下面的功能:学生使用该系统进行选课注册,并将选课注册的结果送交给财务系统。教师使用该系统可以查询课程信息。注意在进行以上各种操作前都要进行身份验证。如果忘记了自己的密码,8则可以找回密码。管理员使用该系统管理老师信息、管理学生信息、管理课程信息、管理开设课程。此外,系统中允许管理员对课程信息和开设课程进行导出、打印。提示:管理课程信息和管理开设课程这两个用例分别与导出信息以及打印信息之间为扩展关系。2、绘制下述银行系统的用例图。银行职员(Clerk)登录银行系统,在登录时需要进行身份验证。职员可以对客户(Customer)的账户进行管理,包括创建新的账户,修改账户和删除账户。客户依赖于银行职员实现相应的需求:存款、取款和转账。转账又包括本行转账和跨行转账两种。其中跨行转账要和另外一家银行(Bank)交互。3、绘制简单即时聊天系统的用例图。以下为其简单的需求分析:(1)客户端的需求用户首先要在聊天系统中注册成为会员,然后才能登录该系统。在系统中可以进行修改个人信息,好友管理和聊天管理的操作。其中,好友管理包含了新增好友,删除好友和好友上下线提示三个功能;在删除好友时,首先应执行查找好友的功能。同时,聊天管理也包含了私聊和群聊的功能。最后,用户使用完本系统应退出聊天系统。(2)服务器端的需求系统管理员首先登录系统,然后可以进行服务器维护和服务器状态监视。其中服务器维护包含了启动服务器和停止服务器的功能。服务器状态监视包含了查看在线用户和查看系统日志的功能。最后,系统管理员退出系统。9实验六:UML建模(2)——类图建模一、实验教学的目的与基本要求目的:1、熟练掌握RationalRose/Visio的使用环境;2、掌握面向对象的方法以及UML建模的基本思想;3、掌握UML各种图的表示方法及建模步骤;4、能够利用所学的UML基本知识,能够进行类图设计。要求:1、按时参加实验,保证实验出勤率;2、独立或是在同学及老师指导下完成实验内容;3、实验之前做好预习及准备工作,掌握实验的基本目的和要求;4、实验结束后,独立做好实验报告的填写工作。二、实验内容以下实验内