当前位置:文档之家› 第3章类对象与方法实验题

第3章类对象与方法实验题

第3章类对象与方法实验题
第3章类对象与方法实验题

第三章类、对象与方法实验题

第1题:实验项目(2012)的上机实践3 类与对象

完善代码,编程实现三角形、梯形和圆形的类封装(见实验项目(2012)下的上机实践3 类与对象

//实验三类与对象(1)三角形题形和园形的类封装

//问题(1)程序中仅仅省略【代码15】,编译能通过?运行时会出现什么异常,分析原因//问题(2)程序中仅仅省略【代码16】,编译能通过?

//问题(3)程序中给Trangle类增加3个方法,用于返回3个边:sideA,sideB,sideC。

//问题(4)在AreaAndLength中增加代码:修改远的半径并输出iugaihoude半径及园的面积与周长

import javax.swing.JOptionPane;

class Trangle

{

double sideA,sideB,sideC,area,length;

boolean boo;

public Trangle(double a,double b,double c)

{

【代码1】//参数a,b,c分别赋值给sideA,sideB,sideC

if(【代码2】//a,b,c构成三角形的条件表达式

{

【代码3】//给boo赋值

}

else

{

【代码4】//给boo赋值

}

}

double getLength()

{

【代码5】//方法体,要求计算出length的值并返回

}

public double getArea()

{

if(boo)

{

double p=(sideA+sideB+sideC)/2.0;

area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC));

return area;

}

else

{

System.out.println("不是一个三角形,不能计算面积");

return 0;

}

}

public void setABC(double a,double b,double c)

{

【代码6】//参数a,b,c分别赋值给sideA,sideB,sideC

if(【代码7】) //a,b,c构成三角形的条件表达式

{

【代码8】//给boo赋值

}

else

{

【代码9】//给boo赋值

}

}

}

class Lader

{

double above,bottom,height,area;

Lader(double a,double b,double h)

{

【代码10】//方法体,将参数a,b,c分别赋值给above,bottom,height }

double getArea()

{

【代码11】//方法体,要求计算出area并返回

}

}

class Circle

{

double radius,area;

Circle(double r)

{

【代码12】//方法体

}

double getArea()

{

【代码13】//方法体,要求计算出area并返回}

double getLength()

{

【代码14】//getArea方法体的代码,要求计算出length并返回}

void setRadius(double newRadius)

{

radius=newRadius;

}

double getRadius()

{

return radius;

}

}

public class AreaAndLength

{

public static void main(String args[])

{

double length,area;

Circle circle=null;

Trangle trangle;

Lader lader;

【代码15】//创建对象circle,缺此行能编译通过,因为上面有Circle circle=null,初始化过了

【代码16】//创建对象trangle,缺此行不能编译通过

【代码17】//创建对象lader

【代码18】//调用Circle方法返回周长并赋值给length

System.out.println("圆的周长:"+length);

【代码19】//调用Circle方法返回面积并赋值给area

System.out.println("圆的面积:"+area);

【代码20】//调用Trangle方法返回周长并赋值给length

System.out.println("三角形的周长:"+length);

【代码21】//调用Trangle方法返回面积并赋值给area

System.out.println("三角形的面积:"+area);

【代码22】//调用Lader方法返回面积并赋值给area

System.out.println("梯形的面积:"+area);

【代码23】//调用Trangle方法设置三个边,要求将三个边修改为12,34,1

【代码24】//调用Trangle方法返回面积并赋值给area

System.out.println("三角形的面积:"+area);

【代码25】//调用Trangle方法返回周长并赋值给length

System.out.println("三角形的周长:"+length);

}

}

第2题:(实验指导书上机实验三(1)第8小题)

编写Java应用程序,自定义类Car中有4个成员变量:字符串name,表示汽车的品牌;字符串color,表示汽车的颜色;double型变量weight,表示汽车的自重;int型变量passenger,表示汽车能搭乘的人数。类中还定义一个构造方法,用来初始化上面的4个变量。在应用程序中创建类Car的1个对象(品牌:“本田”;颜色:“黑色”;自重:1500公斤;搭乘的人数:5人),并显示其信息。

第3题:(实验指导书上机实验三(1)第7小题)

重载3个不同版本的max方法和min方法,这些方法均有4个参数,分别用来求4个int、4个long、4个float数的最大值和最小值。编写Java应用程序,使用这些方法。

第4题:(实验指导书上机实验三(1)第10小题)

定义一个类实现银行帐户的概念,包括:

(1)帐号的信息,如"帐号",姓名,开户时间,"存款余额"等;

(2)方法有"存款"、"取款"、"查询余额"和”显示帐号”。

定义主类,创建3个用户(帐户类的3个对象),每添加一个用户要求显示现有的用户数并完成相应操作。

提示:关键代码如下:

public int getleftmoney(){ //查询余额

return leftmoney;

}

public void savemoney(double money){ //存钱

leftmoney+=money;

}

public void getmoney(double money){ //取钱

if(money<=leftmoney)

leftmoney-=money;

else

System.out.println("只能取:"+leftmoney);

}

bankaccount ba=new bankaccount(888123,“JXY”,1000); //生成一个储户

ba.savemoney(21000); //该储户存钱

System.out.println("存入21000元后余额为:"+ba.getleftmoney());

ba.getmoney(11500); //该储户取钱

System.out.println("11500元后余额为:"+ba.getleftmoney());

第5题:(实验指导书上机实验三(2)第5小题)

编写命令行界面的猜数游戏:猜数范围由命令行输入,将猜数的结果输出并提示,直到猜出正确的结果。

第6题:实验项目(2012)的上机实践3 实例成员与类成员

class A

{

【代码1】//声明一个float型实例变量a

【代码2】//声明一个float型变量b,即static变量b

void setA(float a)

{

【代码3】//将参数a的值赋值给成员变量a

}

void setB(float b)

{

【代码4】//将参数b的值赋值给成员变量b

}

float getA()

{

return a;

}

float getB()

{

return b;

}

void inputA()

{

System.out.println(a);

}

static void inputB()

{

System.out.println(b);

}

}

public class Example

{

public static void main(String args[])

{

【代码5】//通过类名操作类变量b,并赋值100

【代码6】//通过类名调用方法inputB()

A cat=new A();

A dog=new A();

【代码7】//cat调用方法setA(int a),将cat的成员a的值设置为200

【代码8】//cat调用方法setB(int b),将cat的成员b的值设置为400

【代码9】//dog调用方法setA(int a),将dog的成员a的值设置为150

【代码10】//dog调用方法setB(int b),将dog的成员b的值设置为300

【代码11】//cat调用inputA()

【代码12】//cat调用inputB()

【代码13】//dog调用inputA()

【代码14】//dog调用inputB()

}

}

/*问题:

(1)将inputA()方法中的语句System.out.println(a); 改写成System.out.println(a+b); 后编译是否出错?为什么?

(2)将inputB()方法中的语句System.out.println(b); 改写成System.out.println(a+b); 后编译是否出错?为什么?

第7题:定义一个表示学生信息的类Student,要求如下:

①类Student的成员变量:

sNO表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示Java课程成绩

②类Student的方法成员:

getNo():获得学号;getName():获得姓名;getSex():获得性别;getAge()获得年龄;getJava():获得Java 课程成绩

创建第(1)题的Student类的5个对象,输出5个学生的信息并求他们Java语言成绩的最大值和最小值和平均值。

第8题:先创建一个Point类,然后定义Triangle类。在Triangle类中定义三个Point 的实体来表示一个三角形的三个点,再定义一个方法setTri对这三个点进行初始化,然后定义两个方法求三角形的周长、面积。在main()中创建一个对象,求给定三点的三角形的周长、面积。

void setTri()

{

A=new point(0,0);

B=new point(0,1);

C=new point(1,1);

}

第9题:将上题的方法setTri改用构造方法实现初始化。

第10题:编写一个复数类ComplexNumber,其中包括成员变量Rez (复数的实部:double 型)、Imz (复数的虚部:double型)和方法如下:

(1)构造方法 ComplexNumber(double a,double b)//a,b分别为复数的实部和虚部

(2) ComplexNumber Add(ComplexNumber x) //当前复数对象与另一复数对象进行复数的加法运算,返回一新的复数对象;

(3) ComplexNumber Sub(ComplexNumber x) //当前复数对象与另一复数对象进行复数的减法运算,返回一新的复数对象;

(4)double GetRez() //获取复数对象的实部

(5)double GetImz () //获取复数对象的虚部

(6)void print () //按照实部+虚部+i(例如10+8i)的形式显示复数对象的值

注:复数的运算规则如下

加法:(a+bi)+(c+di)=(a+c)+(b+d)i

第11题:(实验项目(2012)实验4:上机实践5 字符串、时间与数字)实验1 String的方法

实验2 比较日期的大小

实验3 处理大整数

实验报告:图

实验报告(实验七) 专业班级姓名学号课程名称数据结构 学年2009 --2010 学期1□/ 2□课程类别专业必修□限选□任选□实践□ ●实验内容:实验时间:2010年7月2日 1.编写函数,采用邻接矩阵表示法,构造一个无向网。 2.编写函数,实现从键盘输入数据,建立一个有向图的邻接表。 3.编写函数,输出该邻接表。 4.编写函数,采用邻接表存储实现无向图的深度优先非递归遍历。 5.编写函数,采用邻接表存储实现无向图的广度优先遍历。 6.编写一个主函数,在主函数中设计一个简单的菜单,分别调试上述算法。 ●实验目的及要求: 1.掌握图的存储思想及其存储实现 2.掌握图的深度、广度优先遍历算法思想及其程序实现 3.掌握图的常见应用算法的思想及其程序实现 ●方法与步骤: 详见从第2页开始的源代码 ●实验结果: ●小结: 分数:批阅老师:2010年月日

实验报告(附页)源代码: #include #include #include #define MAX_VERTEX_NUM 10 //顶点最大个数 #define STACK_INIT_SIZE 100 //邻接矩阵的类型定义 #define INFINITY 888 /* 用888代替∞*/ typedef struct ArcCell { int adj; }ArcCell,AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; typedef struct { int vexs[MAX_VERTEX_NUM]; AdjMatrix arcs; int vexnum,arcnum; }MGraph; //构造无向网 MGraph *CreateUDN(MGraph *N) { int i,j,k,w; int v1,v2; printf("输入顶点的个数:"); scanf("%d",&N->vexnum); printf("输入边数:"); scanf("%d",&N->arcnum); printf("输入%d个顶点的元素:",N->vexnum); for(i=0;ivexnum;i++) { scanf("%d",&N->vexs[i]); } for(i=0;ivexnum;i++) for(j=0;jvexnum;j++) N->arcs[i][j].adj=INFINITY; for(k=0;karcnum;k++) {

类图

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++实验报告 第四章 类与对象

C++实验报告 实验4 类与对象 一、实验目的 1、掌握类的声明和使用 2、掌握类的声明和对象的声明 3、复习具有不同访问属性的成员的访问方式 4、观察构造函数和析构函数的执行过程 5、学习类的组合使用方法 6、使用DEBUG调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序 二、实验任务 1、声明一个CPU类,包含等级rank、频率frequency、电压voltage等属性,有两个公有成员函数run、stop。其中,rank为枚举类型CPU-Rank,声明为enum CPU-Rank{P1=1,P2,P3,P4,P5,P6,P7}, frequency为MHz的整数型,voltage为浮点型的电压值。观察构造函数好析构函数的调用顺序。 2、声明一个简单的Computer类,有数据成员芯片cpu、内存ram、光驱cdrom 等,有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM 类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。 3、设计一个用于人事管理的People类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number编号、sex性别、birthday出生日期、id身份证号等。其中出生日期声明为一个日期类内嵌子对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内嵌成员函数、组合。 三、实验内容 任务1:首先声明枚举类型,在这里出现了知识性错误,不清楚具体应如何声明,经查询相关书籍,知道应在类外进行声明。初次用类来进行编程,在概念上是有一些混乱的,例如构造函数和析构函数的调用顺序等。在用debug单步调试后,明白其中道理。 源程序: //Lab4_1.cpp #include using namespace std; enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7}; class CPU { //CPU类的定义 private: //私有数据成员 CPU_Rank rank; int frequency;

类图、对象图实验报告

UML建模课程 实验三、UML类图、对象图模型的设计 班级:信息0702 组别:指导老师:徐凯波姓名:王姗学号:2007030331205 一、实验要求:掌握利用UML建模工具建立类图和对象图的方法。 二、实验内容:利用UML建模工具设计类图和对象图 三、实验环境:Windows 2000 Professional以上环境、Rational Rose 2003、Sybase Power Designer 10 四、操作步骤: 五、遇到的问题和解决方法: 类图是所有图中比较好画的一种图,就是将角色、系统它们所具有的属性和活动输入到软件中去,我的类图中角色有管理员、学生,管理员的属性有:管理学的账号、管理员的姓名、管理员的性别、管理员的年龄,他所参与的活动有添加课程信息、删除课程信息、修改课程信息、查询课程信息、登录系统、添加学生信息、删除学生信息、修改学生信息、查询学生信息、查询学生信息;学生的属性有:学生账户、学生姓名、学生性别、学生年龄,他所参与的活动有:查询课程信息、选课、查询个人选课信息,登录系统。系统的包括:学生信息维护系统、课程管理系统、选课管理系统,学生信息维护系统的属性有:学生的账号、姓名、性别、年龄、管理员的账号;选课管理系统:学生账号、课程编号、课程名称、课程地点、课程时间、课程学分、课程学时;课程管理系统:课程编号、课程名称、课程地点、课程时间、课程学分、课程学时。在画整个类图的过程中,我没有遇到太多的问题。

六、实验心得和体会: 在老师的辅导下,我经过前一阶段的练习,基本掌握了UML的要领,类图我基本上没有太费时间,只是想好属性和动作,还有就是个角色之间的关系,类图的难点是角色与角色之间的关系,究竟是一对多、一对一、多对多。确定好角色与角色的关系,类图就很容易完成了。

UML实验报告

《面向对象分析与设计UML》 实验报告 学号:180108213 姓名:庞志伟 班级:08级软件2班 指导老师:姚宇峰

实验及作业一 一、实验目的 了解软件工程等基础知识,为后续的统一建模语言UML知识的学习做好准备工作。 二、实验设备与环境 装有Visio、RathionalRose的计算机。 三、实验内容 1、复习阐述“软件工程开发模型”的相关概念,并分析各种模型的优缺点,写成实验报告。 2、熟悉UML软件设计工具Visio、Rational Rose的安装及环境 四、实验过程及结果 1、软件工程开发模型有(1)瀑布模型,(2)原型模型,(3)螺旋模型,(4)喷泉模型(1)瀑布模型 将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 优点: 1)为项目提供了按阶段划分的检瀑布模型查点。 2)当前一阶段完成后,您只需要去关注后续阶段。 3)可在迭代模型中应用瀑布模型。 缺点: 1)在项目各个阶段之间极少有反馈。 2)只有在项目生命周期的后期才能看到结果。 3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。 (2)原型模型 原型模型又称快速原型,它是增量模型的另一种形式;它是在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。 优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。

UML实验报告全

《系统分析与建模》实验指导书__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 用例图

实验报告_实验3 类与对象

实验报告_实验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。

河北工业大学UML实验报告

《面向对象与UML》 实验报告

实验一UML建模基础 一、实验目的 1.熟悉UML建模工具Rational rose的可视化环境。 2.掌握利用Rational rose进行建模的步骤。 二、实验内容 1.熟悉Rational rose建模环境 2.建模基本步骤 3.结合日常生活中实际使用的系统,模仿2中的用例模型绘制用例图,并保存模型,熟悉利用Rational rose的建模过程,要求绘制的用例图中用例与2中的用例图不相同。 三、实验结果 建模基本步骤中得到的用例图 实验2 用例图 一、实验目的 1. 熟悉UML用例图的基本图形元素。 2. 掌握用例与用例之间的各种关系。 3. 熟悉针对具体场景使用例图进行软件建模的方法。 4. 掌握用例规格说明的概念和基本结构,以及用例规格说明的作用。

二、实验内容 1. 根据实验一建模实例,熟悉利用Raional rose软件绘制用例图的基本方法。 2 通过对“学生信息管理系统”的需求描述,确定系统用例图: “学生信息管理系统”的需求描述如下: 在每个新学年开始都会有新生入学,这时系统的管理人员可以通过系统将这些新生的学籍、年龄、家庭住址、性别、身高、学生证号、身份证号等基本信息存入数据库,每个新生都对应一个唯一的编号,此编号可以是学生,在日程管理中,系统管理员还可以对所有学生的基本信息进行查询、修改和删除等操作;同时校领导可以查询、修改全校所有学生的基本信息。 学校领导可以通过本系统了解每个班的任课教师、辅导员、学生姓名、学生人数、专业等班级基本信息。系统管理员可以进行查询班级基本信息、添加班级、修改班级基本信息、删除班级等操作。 在考试结束以后,教师可以将学生的考试成绩录入系统,还可以对学生的成绩进行查询和修改。学生可以通过本系统进行成绩的查询。 学生还可以在网上选择自己选修的课程(必修课必须上,所以不用选),学生通过本系统可以看到有哪些课程可以选以及课程的基本信息。课程的基本信息包括:课程号、所属专业、课程名称、开课学期、学时数、学分、任课教师等。每个学生每学期的选修课程数不得大于6门,如果已经选择了6门课程则不能再选择其他课程。只有将已选择的课程删除掉才能再选择新课程。系统管理员负责修改、增加、删除选修课程。 系统管理员可以对系统的账号进行添加、设置、删除、查询等操作,同时可以设置每个账号的权限以及对应的个人信息。 a) 请根据上述描述,确定系统的参与者 b) 确定系统的用例并绘制完整的用例图。 3. 根据2中所绘制的“学生信息管理系统”用例图,写出学生“选择课程”用例的 用例规格说明。 4. 考虑一个网络订餐系统的需求,并绘制出完整的用例图。 实验步骤: 1参与者:管理员学生校领导教师 2用例:登陆系统,录入学生基本信息,查询学生基本信息,修改学生基本信息,删除学生基本信息,(学生信息包括:学籍,年龄,家庭住址,性别,身高,学生证号,身份证号,查询班级基本信息(任课教师,辅导员,学生姓名,学生人数,专业班级),添加班级,修改班级基本信息,删除班级,录入成绩,查询成绩,修改成绩,查询课程信息,(课程基本信息包括:课程号,所属专业,课程名称,开课学期,学时数,学分,任课教师)选择课程,删除已选课程,修改课程,增加课程,删除选修课程,添加帐号,设置帐号(设置帐号的权限和对应

实验一.类与对象实验报告

浙江理工大学信息学院 面向对象程序设计实验报告 实验名称:类的定义与使用学时安排:3 实验类别:设计性实验实验要求:1人1组姓名:邵旸珂学号:2016329621068  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的 1)掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性; 2)掌握类对象的定义; 3)理解类的成员的访问控制的含义,公有、私有和保护成员的区别; 4)掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数; 二、实验原理介绍 通过建立类及对象,用类的成员函数和对象访问类的成员; 利用建立类的构造函数,完成类的成员的初始化工作; 三、实验设备介绍 软件需求: windows或linux下的c++编译器 硬件需求: 对于硬件方面的要求,建议配置是Pentium III 450以上的CPU

处理器,64MB以上的内存,200MB的自由硬盘空间、CD-ROM驱动器、能支持24位真彩色的显示卡、彩色显示器、打印机。 四、实验内容 编写一个程序,模拟电梯的功能。功能接口包括电梯上行按钮、下行按钮、楼层选择和电梯在行驶过程中的楼层显示。 要求: 1.由用户选择按上行按钮还是下行按钮,选择操作后再由用户输入要进入的楼层,进而电梯开始运行,显示所到的每一楼层层数。 2.如果是上行,则选择输入的楼层号不能比当前楼层号小,否则应给出不合法提示。 3. 如果是下行,则选择输入的楼层号不能比当前楼层号大,否则应给出不合法提示。 4.电梯一旦开始运作就会始终运行,直到窗口关闭。 5.电梯在经过不同楼层时,最好每个楼层的显示之间能有延迟,最终停靠的楼层的输出形式能更加醒目。如果可以,在电梯最初开始运行时,能在电梯由内部显示当前日期(提示:实现这些功能时,需要调用系统api,实现时间显示功能可以使用CDate类)。 五程序清单 #include #include #include using namespace std;

图书管理系统uml实验报告.doc

面向对象分析与设计大作业 学院:计算机科学与工程学院 班级:计算机软件 3 学生姓名:陈俊伟 学号:2174 指导老师:苏锦钿 提交日期:

华南理工大学 面向对象分析与设计大作业课程实验报告 实验题目 :_____ 图书管理系统 uml 图__________________________ 姓名 :___ 陈俊伟 ________学号:_ 2174_____ 班级 : ___09 软件 3 班________ 组别 : ________ 合作者 : __________________ 指导教师 : ______ 苏锦钿 __________ 实验概述 【实验目的及要求】 一.目的 1.掌握面向对象技术的基本原理和各种相关概念; Rational Rose 2003 、 IBM 2. 熟练掌握 UML的基本知识和9 种常见的 UML图形 , 并能够利 用 Software Architecture、或trufun UML工具进行建模; 3.根据问题进行学习,拓广、深化; 4.独立完成一个应用程序的分析、设计和建模,为以后软件项目的开发打下实践基础。 【实验原理】 UML建模,就是用模型元素来组建整个系统的模型,模型元素包括系统中的类、类和类 之间的关联、类的实例相互配合实现系统的动态行为等。UML提供了多种图形可视化描 述模型元素,同一个模型元素可能会出现在多个图中对应多个图形元素,人们可以从多 个视图来考察模型。UML建模主要分为结构建模、动态建模和模型管理建模 3 个方面,第 1 个方面是从系统的内部结构和静态角度来描述系统的,在静态视图、用例视图、实施视 图和配置视图中适用,采用了类图、用例图、组件图和配置图等图形。例如类图用于描述系 统中各类的内部结构(类的属性和操作)及相互间的关联、聚合和依赖等关系, 包图用于描述系统的分层结构等;第 2 个方面是从系统中对象的动态行为和组成对象间的相互 作用、消息传递来描述系统的,在状态机视图、活动视图和交互视图中适用,采 用了状态机图、活动图、顺序图和合作图等图形,例如状态机图用于一个系统或对象从 产生到结束或从构造到清除所处的一系列不同的状态;第 3 个方面描述如何将模型自身组织到高层 单元,在模型管理视图中适用,采用的图形是类图。建模的工作集中在前两 方面,而且并非所有图形元素都适用或需要采用

UML实验报告

中南民族大学管理学院学生实验报告 课程名称:UML面向对象分析与设计教程 年级: 专业:信息管理与信息系统 学号: 姓名: 指导教师: 实验地点:管理学院综合实验室 2013 学年至 2014 学年度第 2 学期

目录 实验一 UML建模基础实验二用例图 实验三 UML类图 实验四对象图 实验五包图 实验六动态模型图

实验(一) UML建模基础 实验时间: 实验目的 1.熟悉UML建模工具Rational Rose的基本菜单及操作。 2.掌握UML的三大组成部分及各部分作用。 3.掌握UML的可见性规则和构造型的作用。 实验内容 1.练习使用建模工具建立各种UML图形,并对图形进行相应编辑 和修改。 2.认识各种UML关系及可见性符号,并用工具表示出来。

分析与讨论 1.总结UML在软件工程中的作用以及使用UML建模的必要性。 答:统一建模语言(UML)是用来对软件密集系统进行可视化建模的一种语言,也是为面向对象开发系统的产品进行说明、可视化、构造和编制文档的一种语言。 UML作为一种模型语言,它使开发人员专注于建立产品的模型和结构,而不是选用什么程序语言和算法实现。当模型建立之后,模型可以被UML工具转化成指定的程序语言代码。 UML可以贯穿软件开发周期中的每一个阶段,最适于数据建模、业务建模、对象建模、组件建模。UML展现了一系列最佳工程实践,这些最佳实践在对大规模、复杂系统进行建模方面,特别是在软件架构层次方面已经被验证有效。 UML是一种功能强大的,面向对象的可视化系统分析的建模语言,它的各个模型可以帮助开发人员更好地理解业务流程,建立更可靠,更完善的系统模型,从而使用户和开发人员对问题的描述达到相同的理解,以减少语义差异,保障分析的正确性。 指导教师批阅:

UML面向对象设计与分析课后习题答案

分析了UML的几个重要图看看是否可以? 第2章用例图 1.一台自动售货机能提供6种不同的饮料,售货机上有6个不同的按钮,分别对应这6种不同的饮料,顾客通过这些按钮选择不同的饮料。售货机有一个硬币槽和找零槽,分别用来收钱和找钱。现在为这个系统设计一个用例图? 顾客 2.现有一个产品销售系统,其总体需求如下: 系统允许管理员生成存货清单报告。 管理员可以更新存货清单。 销售员记录正常的销售情况。 交易可以使用信用卡或支标,系统需要对其进行验证。 每次交易后都需要更新存货清单。 分析其总体需求,并绘制出其用例图? 3.绘制用例图,为如下的每个事件显示酒店管理系统中的用例,并描述各用例的基本操作流程。 客人预订房间。 客人登记。 客人的承担服务费用。 生成最终账单 客人结账 客人支付账单

第3章类图、对象图和包图 1.创建一个类图。下面给出创建类图所需的信息。 ●学生(student)可以是在校生(undergraduate)或者毕业生(graduate)。 ●在校生可以是助教(tutor)。 ●一名助教指导一名学生。 ●教师和教授属于不同级别的教员。 ●一名教师助理可以协助一名教师和一名教授,一名教师只能有一名教师助理,一名 教授可以有5名教师助理。 ●教师助理是毕业生。 创建类图的步骤如下: (1)将学生可以是在校生或者毕业生建模为3个类:Student、UnderGraduate和Graduate,其中,后两个类是Student类的子类。 (2)为“在校生可以是助教的一种”建立模型,即建立UnderGraduate类的另一个超类Tutor。 (3)通过创建从Tutor到Student的关联(名为tutors),建立一名助教指导一名学生的模型。 (4)将“教师和教授属于不同级别的教员”建模为3个类:Instructor、Teacher和Professor,其中,后两个类是Instructor类的子类。 (5)建立“一名教师助理可以协助一名教师和一名教授,一名教师只能有一名教师助理,一名教授可以有5名教师助理”的模型。创建TeacherAssistant类,并使其与Teacher 类和Professor类都建立关联。 (6)将TeacherAssistant类建模为Graduate类的派生类。

c++类和对象实验报告

实验一类和对象 实验课程名:面向对象程序设计(C++) 专业班级:学号:姓名: 实验时间:实验地点:指导教师: 一、实验目的和要求 (1) 理解类和对象的概念,掌握声明类和定义对象的方法。 (2) 掌握构造函数和析构函数的实现方法。 (3) 初步掌握使用类和对象编制C++程序。 (4) 掌握对象数组、对象指针和string类的使用方法。 (5) 掌握使用对象、对象指针和对象引用作为函数参数的方法。 (6) 掌握类对象作为成员的使用方法。 (7) 掌握静态数据成员和静态成员函数的使用方法。 (8) 理解友元的概念和掌握友元的使用方法。 二、实验内容 1.设计一个静态数组存储结构的顺序表类,要 求编程实现如下任务:建立一个线性表,首先 依次输人数据元素1,2,3,…,10,然后删除 数据元素6,最后依次显示当前线性表中的数 据元素。要求采用顺序表实现,假设该顺序表 的数据元素个数在最坏情况下不会超过50个。实验代码:#include using namespace std; const int MaxSize=100; //100只是示例性的数据,可根据实际问题具体定义 template //定义模板类SeqList class SeqList { public:

SeqList( ) {length=0;} //无参构造函数 SeqList(T a[ ], int n); //有参构造函数 ~SeqList( ) { } //析构函数为空 int Length( ) {return length;} //求线性表的长度 T Get(int i); //按位查找,取线性表的第i个元素 int Locate(T x ); //按值查找,求线性表中值为x的元素序号 void Insert(int i, T x); //在线性表中第i个位置插入值为x的元素 T Delete(int i); //删除线性表的第i个元素 void PrintList( ); //遍历线性表,按序号依次输出各元素 private: T data[MaxSize]; //存放数据元素的数组 int length; //线性表的长度 }; template SeqList::SeqList(T a[ ], int n) { int i; if (n>MaxSize) throw "参数非法";

UML实验报告

《面向对象分析与设计UML 》 实验报告 学号: 180108213 姓名:庞志伟 班级:08 级软件 2 班 指导老师:姚宇峰

实验及作业一 一、实验目的 了解软件工程等基础知识,为后续的统一建模语言UML 知识的学习做好准备工作。 二、实验设备与环境 装有 Visio 、RathionalRose 的计算机。 三、实验内容 1、复习阐述“软件工程开发模型”的相关概念,并分析各种模型的优缺点, 写成实验报告。 2、熟悉 UML软件设计工具 Visio 、Rational Rose的安装及环境 四、实验过程及结果 1、软件工程开发模型有(1)瀑布模型,( 2)原型模型,( 3)螺旋模型,( 4)喷泉模型(1)瀑布模型 将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物 理实现分开。将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试 和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 优点: 1)为项目提供了按阶段划分的检瀑布模型查点。 2)当前一阶段完成后,您只需要去关注后续阶段。 3)可在迭代模型中应用瀑布模型。 缺点: 1)在项目各个阶段之间极少有反馈。 2)只有在项目生命周期的后期才能看到结果。 3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。 (2)原型模型 原型模型又称快速原型,它是增量模型的另一种形式;它是在开发真实系统之前,构造一个原型,在该原型的基础上,逐渐完成整个系统的开发工作。快速原型模型的第一步是建造一 个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真 正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。 优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险。

体系结构实验报告

中南大学软件学院 软件体系结构 设计模式实验报告 学生姓名:宋昂 所在学院:软件学院 学生学号: 3901080115 学生班级:软件0801 指导老师:刘伟 完成日期: 2010-12-7

一、实验目的 熟练使用PowerDesigner和任意一种面向对象编程语言实现几种常见的设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,理解每一种设计模式的模式动机,掌握模式结构,学习如何使用代码实现这些模式,并学会分析这些模式的使用效果。 二、实验内容 使用PowerDesigner和任意一种面向对象编程语言实现简单工厂模式、工厂方法模式、抽象工厂模式、单例模式和适配器模式,包括根据实例绘制模式结构图、编写模式实例实现代码,运行并测试模式实例代码。 (1) 简单工厂模式 使用简单工厂模式设计一个可以创建不同几何形状(Shape)的绘图工具类,如可创建圆形(Circle)、方形(Rectangle)和三角形(Triangle) 对象,每个几何图形都要有绘制draw()和擦除erase()两个方法,要求在绘制不支持的几何图形时,提示一个UnsupportedShapeException,绘制类图并编程实现。 (2) 简单工厂模式 使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数“M”,则返回一个Man 对象,如果传入参数“W”,则返回一个Woman对象,使用任意一种面向对象编程语言实现该场景。现需要增加一个新的Robot类,如果传入参数“R”,则返回一个Robot对象,对代码进行修改并注意女娲的变化。 (3) 工厂方法模式 某系统日志记录器要求支持多种日志记录方式,如文件记录、数据库记录等,且用户可以根据要求动态选择日志记录方式,现使用工厂方法模式设计该系统。用代码实现日志记录器实例,如果在系统中增加一个中的日志记录方式——控制台日志记录(ConsoleLog),绘制类图并修改代码,注意增加新日志记录方式过程中原有代码的变化。

C++类和对象实验报告

计算机科学与技术实验报告 实验二类和对象(1) 姓名:易XX 班级:计科二班学号:2015110121 实验目的:深入理解类和对象,学会定义类,申明私有、公有变量,学会定义对象,并调用成员函数,解决实际问题。 实验内容: (一)、题目要求: 定义一个描述角度的类CAngle,包含的内容如下: (1)私有成员变量value,表示角度,类型为double; (2)公有成员变量SetValue,实现功能是使用形参为value赋值。 声明为:viod SetValue(double); (3)公有成员函数GetCos,实现功能计算余弦值,并作为返回值返回。 声明为 double GetCos(); 编程实现如下功能:定义一个Cangle类的对象deg,调用成员函数设置deg的角度为30度,调用成员函数计算并输出deg的余弦值。 代码: #include #include using namespace std; #define PI 3.1415 //定义宏常量PI class CAngle{ double value; //定义角度 public: void Setvalue(double x){ value =x/180*PI; //把角度转化为弧度 } double Getcos(){ return ( cos(value) ); //计算cos值 } }; int main(){ CAngle deg; //定义一个Cangle类的对象deg deg.Setvalue(30); cout<

UML实验报告概要

《面向对象与UML》 实验报告 姓名:陈万全 学号:132852 班级:软件131

实验一UML建模基础 一、实验目的 1.熟悉UML建模工具Rational rose的可视化环境。 2.掌握利用Rational rose进行建模的步骤。 二、实验内容 1.熟悉Rational rose建模环境 2.建模基本步骤 3.结合日常生活中实际使用的系统,模仿2中的用例模型绘制用例图,并保存模型,熟悉利用Rational rose的建模过程,要求绘制的用例图中用例与2中的用例图不相同。

实验二用例图 一、实验目的 1.熟悉UML用例图的基本图形元素。 2.掌握用例与用例之间的各种关系。 3.熟悉针对具体场景使用例图进行软件建模的方法。 4.掌握用例规格说明的概念和基本结构,以及用例规格说明的作用。 二、实验内容 1.根据实验一建模实例,熟悉利用Raional rose软件绘制用例图的基本方法。 2.通过对“学生信息管理系统”的需求描述,确定系统用例图: “学生信息管理系统”的需求描述如下: ?在每个新学年开始都会有新生入学,这时系统的管理人员可以通过系统将这些新生的学籍、年龄、家庭住址、性别、身高、学生证号、身份证号等基本信息存入数据库,每个新生都对应一个唯一的编号,此编号可以是学生,在日程管理中,系统管理员还可以对所有学生的基本信息进行查询、修改和删除等操作;同时校领导可以查询、修改全校所有学生的基本信息。 ?学校领导可以通过本系统了解每个班的任课教师、辅导员、学生姓名、学生人数、专业等班级基本信息。系统管理员可以进行查询班级基本信息、添加班级、修改班级基本信息、删除班级等操作。 ?在考试结束以后,教师可以将学生的考试成绩录入系统,还可以对学生的成绩进行查询和修改。学生可以通过本系统进行成绩的查询。 ?学生还可以在网上选择自己选修的课程(必修课必须上,所以不用选),学生通过本系统可以看到有哪些课程可以选以及课程的基本信息。课程的基本信息包括:课程号、所属专业、课程名称、开课学期、学时数、学分、任课教师等。每个学生每学期的选修课程数不得大于6门,如果已经选择了6门课程则不能再选择其他课程。只有将已选择的课程删除掉才能再选择新课程。系统管理员负责修改、增加、删除选修课程。 ?系统管理员可以对系统的账号进行添加、设置、删除、查询等操作,同时可以设置每个账号的权限以及对应的个人信息。 a)请根据上述描述,确定系统的参与者 b)确定系统的用例并绘制完整的用例图。

UML实验报告(1).doc

UML实验报告(1) 学生学号01第一学期实验课程名称:UML建模技术实验项目名称关于新的电脑销售系统点的需求文档实验成绩1实验者向尧专业班级软件工程0703班组别19同组者实验日期12月2日第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)实验目的:学会怎样为新的电脑销售系统点写需求文档实验内容:1、写一个概况陈述,包含信息系统相关的问题。 2、确定客户,包括公司名称、地址、电话号码,员工的头衔也要包含在他的名字之中 3、总结至少3个系统的目标 4、确定至少2个制约因素 5、建立一个基本功能和属性表 6、分析基本功能和属性的可行性 7、包括一个用类表现出来的环境图二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)需求一词在日常生活中经常使用,通常的需求是指人对于客观事务需要的表现,体现为愿望、意向和兴趣,因而成为行动的一种直接原因。 需求对用户和软件开发人员来说都是至关重要的,必须由他们共同合作才能写出较好的需求及需求文档。 需求是用户认为其所使用的系统应该具备的功能和性能。 三、主要仪器设备及耗材MicrosoftOfficeWord12月2日第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)实验目的:学会如何为类中描述的事件写一个基本用例实验内容:1、仿照教科书来描述每个用例。

事件的主流程(成功场景)是用例的最重要的部分。 确保它准确地描述这个过程,同时还有少量一些替代流程即扩展。 2、对于这个项目假设所有客户用现金或信用卡支付租金,不允许用支票支付! 3、要特别注意处理问题时的扩展,可以仿照你的老师给你的示例 4、有一些隐藏的要求:基本上租借出去的影碟信息必须有序地保存起来以跟踪物料,同样的归还的物品数据也应该保存起来,以备最后会计都会知道这些。 5、用例是:租赁项目,归还项目,迟交费项目,重新购置项目。 没有购买。 6、每天晚上待商店关门后,所有晚交的租金记入帐户持有人的信用卡。 7、每个夜晚商店关门后,所有超过10天迟了的租金记入帐户持有人信用卡的项目费用。 8、客户有一个帐号。 电话号码是首选,当客户第一次来时被分配。 如果客户不是在租赁的成员,成员的记录会临时创建。 他们的姓名,电话号码,信用卡号码和到期日被记录在其成员的记录里。 二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)1、根据系统的

20150528_152805_40_UML-实验报告(03)-类图

北京信息科技大学 实验(上机)报告 课程名称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 = "

Rentals for " + getName() + "

\n"; while (rentals.hasMoreElements()) { Rental each = (Rental) rentals.nextElement(); //显示该顾客的每个租赁

相关主题
文本预览
相关文档 最新文档