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

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

类与对象的实验报告类与对象的实验报告引言:在计算机科学领域,类与对象是面向对象编程(Object-Oriented Programming,简称OOP)的核心概念之一。
类是一种抽象的数据类型,用于描述具有相同属性和行为的对象集合。
对象则是类的实例,具体化了类的属性和行为。
本实验旨在通过编写一个简单的类与对象的程序,深入理解类与对象的概念及其在编程中的应用。
实验过程:1. 定义一个类:在这个实验中,我们以动物为例,定义了一个名为Animal的类。
该类具有以下属性和行为:- 属性:名称、年龄、种类- 行为:吃、睡、叫2. 创建对象:在主程序中,我们创建了两个Animal对象,分别代表一只狗和一只猫。
通过调用构造函数,为对象的属性赋值。
3. 调用对象的方法:我们通过调用对象的方法,模拟了动物的行为。
例如,我们调用了eat()方法,让动物吃东西;调用了sleep()方法,让动物睡觉;调用了make_sound()方法,让动物发出叫声。
4. 修改对象属性:我们还演示了如何修改对象的属性。
通过调用set_age()方法,我们改变了动物的年龄;通过调用set_type()方法,我们改变了动物的种类。
实验结果:通过运行程序,我们观察到以下结果:- 狗的名称是"旺财",年龄是3岁,种类是"狗"。
狗吃骨头,睡觉时打呼噜,发出汪汪的叫声。
- 猫的名称是"咪咪",年龄是2岁,种类是"猫"。
猫吃鱼,睡觉时打呼噜,发出喵喵的叫声。
- 经过修改后,狗的年龄变为5岁,种类变为"藏獒";猫的年龄变为3岁,种类变为"波斯猫"。
讨论与分析:通过这个实验,我们深入理解了类与对象的概念及其在编程中的应用。
类是一种抽象的模板,用于描述具有相似属性和行为的对象集合。
对象是类的实例,具体化了类的属性和行为。
通过定义类和创建对象,我们可以更好地组织和管理程序的代码。
c++上机实验报告(精品)

XX大学C++上机实验报告(一)学院:XX学院班级:XXX姓名:XXX学号:*******指导老师:XXX日期:年月日实验三类的定义和使用一.实验目的1.掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2.掌握类对象的定义;3.理解类的成员的访问控制的含义,公有、私有和保护成员的区别;4.掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。
能够根据给定的要求定义类并实现类的成员函数;5.掌握友元函数的含义,友元函数和成员函数的区别。
二.实验内容及要求1、定义一个圆类,计算圆的面积和周长。
要求:分别用成员函数和友元函数来求圆的面积和周长。
2、定义一个学生类,其中有3个数据成员有学号、姓名、年龄,以及若干成员函数。
同时编写主函数使用这个类,实现对学生数据的赋值和输出。
要求:1)使用成员函数实现对输出的输入、输出;2)使用构造函数和析构函数实现对数据的输入、输出。
3、定义日期类型Date。
要求有以下面成员:1)可以设置日期;2)日期加一天操作;3)输入函数,输入格式为“XXXX年XX月XX日”。
三.实验要求1)写出程序,并调试程序,要给出测试数据和实验结果。
2)整理上机步骤,总结经验和体会。
3)完成实验日志和上交程序。
四.算法思想1.圆类程序中,用Circle构造函数和Length友元函数分别计算圆的的面积和周长。
再通过主函数调用:Date d;cout<<"请输入圆半径r:";cin>>m;Circle p(m);Length(p);实现输入半径r并输出相关计算值。
2.学生类根据要求分别用构造函数Student(double n,int o,char c[50])和析构函数~Student(),实现学生信息的录入与输出。
于是,当在主程序中,定义学生类Student s(n,o,c)是调用构造函数录入信息,所在作用范围结束时,系统会自动调用析构函数输出信息。
实验报告_实验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( ) 法4.写出OverrideTest中所缺的三行代码:public class OverrideTest {public static void main(String[] args) {ength;j++) ength __________;j++) ength ___________;i++){ e ngth;j++){问题:(1)二维数组如何声明、创建?二维数组的列数是否一定要求相同?答:数据类型数组名[ ][ ] 或数据类型[ ][ ] 数组名;不要求相同。
学号姓名--类与对象基础实验(三)实验报告

个人收集整理-ZQ课程名称面向对象程序设计实验项目名称类与对象基础实验(三)学生姓名专业班级学号一. 实验目地和要求.掌握大数处理与类.掌握时间处理类与类、类.掌握异常处理与类二. 实验内容. 编程实现:大整数地数值计算. 编程实现:用大整数求阶乘之和. 编程实现:计算两个日期地天数之差. 编程实现:计算生日信息. 编程实现:数字转换地异常处理三. 实验结果与分析(可将程序运行结果截屏,也可分析运行结果). 编程实现:大整数地数值计算.编写一个应用程序,计算两个大整数地和、差、积和商,并计算一个大整数地因子个数.(部分源码参考讲义)文档来自于网络搜索请分析并回答以下问题:程序源码如下:请将运行结果截图:请比较和地主要区别,并简要说明地主要用途.答:. 编程实现:用大整数求阶乘之和.编写一个应用程序,用计算!…!.要求地值从键盘输入.文档来自于网络搜索请分析并回答以下问题:程序源码如下:请将运行结果截图:. 编程实现:计算两个日期地天数之差.编写应用程序,来计算任意两个日期地天数之差.要求:两个日期用字符串形式输入(比如输入“”表示年月日),需要将日期字符串地年、月、日分别转换为数字形式.文档来自于网络搜索程序源码如下:请将运行结果截图:. 编程实现:生日信息.编写应用程序,计算你地生日还有多少天,你地生日是星期几. 程序源码如下:请将运行结果截图:. 编程实现:数字转换地异常处理.输入两个数,计算两个数想除地结果(考虑除数为地异常情况).程序源码如下:请将运行结果截图:四. 讨论、心得(可写遇到地问题及解决方法,或者对技术地理解等)1 / 1。
C++面向对象程序设计》实验报告

《C++面向对象程序设计》实验内容实验1 C++程序设计初步1.实验目的(1)了解在C++编译系统(Visual C++6.0)上如何编辑、编译、连接和运行一个C++程序。
(2)通过运行简单的C++程序, 初步了解C++源程序的结构和特点。
(3)掌握简单C++程序的编写和调试方法。
(4)掌握重载函数的定义方法。
(5)能正确使用引用型变量。
2.实验内容和步骤(1)在Visual C++环境下编译和运行C++程序①先进入Visual C++6.0环境。
②在自己指定的子目录中建立一个名为test.cpp的新文件。
③从键盘输入以下程序int main(){int a,b;c=a+b;cout>> “a+b=”>>a+b;}选择Build→Compile test.cpp命令, 对此源程序进行编译。
观察和分析编译信息。
⑤根据编译信息指出的错误, 修改程序。
再进行编译, 如果还有错, 再重复此过程, 直到编译不出错为止。
⑥选择Build→Build test.exe命令, 对程序进行连接, 如果不出错, 就会生成可执行程序test.exe。
⑦选择Build→Execute test.exe命令, 执行可执行程序test.exe。
观察屏幕的变化。
在输出窗口应显示程序运行结果。
⑧分析结果是否正确, 如果不正确或认为输出格式不理想, 可以修改程序, 然后重新执行以上④和⑧步骤。
改过后的程序:#include<iostream>using namespace std;int add(int x,int y){int z;z=x+y;return(z);}int main(){int a,b,c;cin>>a>>b;c=add(a,b);cout<<"a+b="<<c<<endl;return 0;}实验2 C++对C的扩充(2)编一个程序, 用来求2个或3个正整数中的最大数。
类与对象实验报告

类与对象实验报告类与对象实验报告引言:类与对象是面向对象编程的基本概念,通过定义类和创建对象,可以实现对数据和行为的封装,使程序更加模块化和可扩展。
本实验旨在通过实际操作,加深对类与对象的理解,并掌握其基本用法。
实验过程:1. 定义类:在实验开始前,我们首先需要定义一个类。
类是对象的抽象描述,包含了对象的属性和方法。
以汽车为例,我们可以定义一个Car类,其中包含品牌、颜色和速度等属性,以及启动、加速和刹车等方法。
2. 创建对象:在定义了Car类之后,我们可以通过创建对象来实例化该类。
通过使用new关键字,我们可以创建多个汽车对象,每个对象都拥有独立的属性和方法。
例如,我们可以创建一个名为myCar的对象,它是Car类的一个实例。
3. 访问对象的属性和方法:创建了对象之后,我们可以通过点运算符来访问对象的属性和方法。
例如,通过myCar.brand可以获取myCar对象的品牌属性,通过myCar.start()可以调用myCar对象的启动方法。
这样,我们可以通过对象来操作和管理数据,使代码更加清晰和可读。
4. 对象之间的交互:在实际编程中,对象之间经常需要进行交互。
通过在类中定义方法,我们可以实现对象之间的数据传递和信息交流。
例如,我们可以定义一个方法来获取其他汽车对象的速度,并根据这些速度进行比较和判断。
实验结果:通过实验,我们深入了解了类与对象的概念和用法。
通过定义类和创建对象,我们可以更好地组织和管理代码,提高程序的可维护性和可扩展性。
通过访问对象的属性和方法,我们可以实现对数据和行为的封装,使代码更加模块化和易于理解。
通过对象之间的交互,我们可以实现数据的共享和协作,提高程序的效率和灵活性。
实验总结:类与对象是面向对象编程的核心概念,掌握了类与对象的基本用法对于开发高质量的程序至关重要。
通过本次实验,我们加深了对类与对象的理解,并通过实际操作掌握了其基本用法。
在以后的编程过程中,我们可以更加灵活地运用类与对象,提高代码的可读性和可维护性。
java 类与对象实验报告

java 类与对象实验报告Java 类与对象实验报告一、实验目的本次实验的目的是通过实际操作,加深对Java类与对象的理解与掌握。
通过编写程序,创建类和对象,实现类的各种属性和方法,并进行相应的测试和调试,从而熟悉类与对象的概念、创建与使用。
二、实验内容本次实验包括以下几个方面的内容:1. 创建一个名为"Student"的类,该类包含学生的姓名、年龄、性别等属性,以及相应的get和set方法。
2. 创建一个名为"Course"的类,该类包含课程的名称、学分、教师等属性,以及相应的get和set方法。
3. 创建一个名为"Teacher"的类,该类包含教师的姓名、年龄、性别等属性,以及相应的get和set方法。
4. 在"Student"类中添加一个名为"selectCourse"的方法,该方法可以选择课程,并将其添加到学生的课程列表中。
5. 在"Student"类中添加一个名为"dropCourse"的方法,该方法可以退选课程,并将其从学生的课程列表中移除。
6. 在"Course"类中添加一个名为"showInfo"的方法,该方法可以显示课程的详细信息。
7. 在"Teacher"类中添加一个名为"teachCourse"的方法,该方法可以教授课程,并显示教师的相关信息。
三、实验过程首先,我们需要创建一个名为"Student"的类。
在该类中,我们定义了学生的姓名、年龄、性别等属性,并为每个属性添加了相应的get和set方法。
接着,我们在该类中添加了一个名为"selectCourse"的方法,该方法可以选择课程,并将其添加到学生的课程列表中;同时,我们还添加了一个名为"dropCourse"的方法,该方法可以退选课程,并将其从学生的课程列表中移除。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告_实验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。
(2)Circle类定义了几个构造方法(即构造器)?Circle类中存在无参构造方法吗?如果要使用无参构造方法,应如何做?答:Circle类定义了个构造方法;不存在,写入Circle(){};(3)Circle Test类中创建了几个Circle对象?这些对象是如何创建的?答:Circle Test类创建了两个Circle对象;Circle 对象名=new Circle()。
(4)Circle Test类中如何调用对象的方法?答:Circle Test类调用对象方法:对象名.方法4.写出OverrideTest中所缺的三行代码:public class OverrideTest {public static void main(String[] args) {//使用Box类的无参构造方法创建方法创建对象box1;System.out.println(box1);//使用Box类的带一个参数的构造方法创建对象box2,参数值为5.0;System.out.println(box2);//使用带Box类带三个参数的构造方法创建对象box3,其中三个参数长、宽、高分别为10.1、20.2、30.3;System.out.println(box3);}}Box box1=new Box() Box box2=new Box(5.0); Box box3=new Box(10.1,20.2,30.3);5.回答下列问题:(1) this.length=length; 中的this代表什么?答:this代表类;(2) this(x, x, x); 中的this是什么含义?6.(基础题)一维数组的使用:根据注释填充程序所缺代码,然后编译、运行该程序,并回答相关问题://一维数组:声明,创建,初始化,数组元素的引用及数组拷贝______String week[]__________; // 声明一个名为week的String类型的一维数组______week=new string[7]__________________; // 为week数组分配存放7个字符串的空间for (int i=0; i<week.length;i++) // 输出week数组各元素的值System.out.println("week["+i+"] = "+____week[i]_________);问题:(1)一维数组如何声明、创建?如果没有给数组元素赋值,则它们的取值如何?答:a:数据类型[ ] 数组名=new 数据类型[数组的长度] ;b:数据类型数组名[ ]=new 数据类型[数组的长度];如果没有给数组赋值,则系统会自动默认它为0。
(2)数组的静态初始化具有什么功能?答:静态初始化:在定义数组的同时就为数组元素分配空间并赋值。
(3)要了解数组元素的个数,可用访问数组的什么属性得到?答:数组都有一个属性length来指明它的长度,例如:a.length 指明数组a的长度(即元素个数)。
(4)怎样引用数组的元素?写出它的下标取值范围。
答:数组名[index]其中:index为数组元素下标,可以是整型常量或整型表达式,如:a[0] , b[i] , c[5*i],利用循环语句可以批量设置或访问数组元素的值。
数组元素下标从0开始,最大下标为:数组长度-17.(基础题)二维数组的使用:根据注释填充所缺代码,然后编译、运行该程序,并回答相关问题://二维数组:声明,创建,动态初始化,数组元素的引用// 声明一个名为myArray的数组,该数组有2行,每行列数不等,并为其分配内存空间_______ int myArray[2][]__________________;myArray[0]=new int[5]; // 第一行有5个元素,并为其分配内存空间______ myArray[1]=new int[10]__________________; // 第二行有10个元素,并为其分配内存空间for (int j=0; j<myArray[0].length;j++) // 用1-10之间的随机整数给第一行元素赋值myArray[0][j]=_______ (int)(Math.random()*1+9)_______________;for (int j=0; j<______ myArray[1].length __________;j++) // 用100-200之间的随机整数给第二行元素赋值myArray[1][j]=(int)(Math.random()*100+100);for (int i=0; i<_____ myArray[1].length ___________;i++){ // 输出myArray数组各元素的值for (int j=0; j<myArray[i].length;j++){问题:(1)二维数组如何声明、创建?二维数组的列数是否一定要求相同?答:数据类型数组名[ ][ ] 或数据类型[ ][ ] 数组名;不要求相同。
(2)二维数组如何动态初始化?答:数据类型数组名[ ][ ]=new 数据类型[第1维大小][第2维大小](3)怎样理解“多维数组是数组的数组”?length作用于不同的数组:myArray.length,myArray[0].length,myArray[1].length,结果什么不同?(4)怎样引用数组的元素?它们下标取值范围怎样?8.(提高题)分析、运行下列程序,回答下列问题:(1)实例变量和类变量的含义是什么?如何声明它们?(2)实例方法和类方法的含义是什么?如何声明它们?(3)f()方法中可以访问什么类型的变量和方法?(4)g()方法中可以访问x变量吗?可以在其中调用f()方法吗?(5)在主类中,应如何调用实例方法和类方法?(6)运行程序时,出现如下错误:无法从静态上下文中引用非静态变量mystringSystem.out.println(mystring);请分别用“类变量、类方法”和“实例变量、实例方法”两种完全不同的方法进行修改,使其能正确运行。
9.(提高题)写出程序所缺代码,并回答相关问题package lab3;//导入Student类;public class ObjectArrayExample {//声明一个长度为4的对象数组Student1[] student = ;public ObjectArrayExample(){//初始化对象数组}void printArrayElement(){int max=0,j=0;int[] sum=new int[4];for(int i=0;i<student.length;i++){//使用循环语句来求每个学生三门课的总分,并赋给sum数组对应元素sum[i]= ;}for(int i=0;i<sum.length;i++){if(max<sum[i]){max=sum[i];j=i;}}//输出总分最高的学生的姓名、学号、语文成绩、英语成绩、英语成绩和总分System.out.println("总分最高的学生姓名:"+ +",学号:"++",语文成绩:"+ +",英语成绩:"++",数学成绩:"+ +",总分是:"+max);}public static void main(String args[]){ObjectArrayExample objarr=new ObjectArrayExample();objarr.printArrayElement();}}问题:(1)如何定义对象数组?(2)如何访问对象数组元素的成员变量?(3)包为lab3.arr.obj的类的保存路径是什么?。