实验四 类与对象
【免费下载】实验4 类和对象3
(一)UML 简介 UML(Unified Modeling Language)即统一建模语言,是 OMG(Object Management Group)发表的图标式软件设计语言。UML 是针对面向对象软件开发的,而 C++正是这样 的一种语言,UML 在设计中被越来越多的使用着。 UML 主要由一系列视图组成,其中包括静态视图(Static view),用例视图(Use case view)活动视图(Activity view)等,不同的图用处自然也不一样,而对开发人员来讲,更 重要的应该是静态视图中的类图(class diagram)和交互视图(Interaction view)中的顺序 图(Sequence diagram)。 UML 可以使用图表的形式来表现业务关系或者物理关系,可以促进对问题的理解和解 决。它提供了一种通用的、精通的、没有歧义的通信机制进行。同时,UML 还可以通过自 己的语法规则使得可以通过使用建模工具软件将设计模式映射到一种语言上,继而可以产 生系统设计文档。 UML 包括如下几种图:
return salary; }
public void setSalary(int salary) {
this.salary = salary; } }
4. 实验内容与实验步骤
1、在程序中按照如图 4-3 UML 类图定义 Animal 类。Animal 类的所有成员变量的访 问权限为 private。所有成员函数的访问权限都为 public。其中 Animal 类的成员函数 move() 功能是输出一个字符串“animal moving”,setXXX()函数设置该类的成员变量,getXXX()函 数返回类的成员变量的值,display()函数分行输出类的 3 个成员变量,输出格式:“变量 名:变量值”。并定义 main 函数实例化一个对象,然后调用相应的函数测试相应的功能。
实验四类图参考答案
实验四类图参考答案实验四类图【实验⽬的】1.掌握类的定义,类的3要素,UML中类的表⽰⽅法。
2.掌握类与类之间的各种关系代表的含义及表⽰⽅法。
3.掌握实体类、边界类、控制类的概念和表⽰⽅法。
4.接⼝和抽象类的概念和表⽰⽅法,类的多重性关系。
【实验性质】设计性实验。
【实验要求】1.通过⽹上选课系统学习识别类和类之间关系的⽅法;2.学习使⽤Rational Rose绘制类图的⽅法;3.掌握类图中属性和操作的添加⽅法。
【实验内容】设计绘制选课系统中的类图和对象图。
【实验步骤】1.分析实验三中选课⽤例的顺序图,除了⾓⾊之外,有以下名词:课程,界⾯和控制对象。
从⽽抽象出三个类:课程类Course、界⾯类FormObject和控制对象类ControlObject。
2.课程类Course应具有的属性有:课程名称、开课教室、授课教师、选课的学⽣、开课起始时间、允许选课的学⽣⼈数,操作有设置课程名称、设置开课教师、设置课程号、设置授课教师信息、设置开课起始时间、设置允许选课的学⽣⼈数、查询课程名称、查询开课教师、查询授课教师信息、查询开课起始时间、查询允许选课的学⽣⼈数。
根据以上分析,绘制课程类Course的类图。
3.类似的,⾃⼰分析建⽴界⾯类FormObject和控制对象类ControlObject的类图。
4.在选课系统中,涉及到的⽤户包括Student(学⽣)和Registrar(管理员),其主要特性相似,所以可以建⽴统⼀基类People,Student和Registrar由People派⽣。
如下图所⽰:PeopleStudent (from Use Case View)Registrar (from Use Case View)5.在选课系统中涉及到的⾓⾊包括:(1)学⽣Student;(2)管理员Registrar;(3)学⽣和管理员的⽗类People;(4)数据库Database。
这些类和⾓⾊之间的关系如下:(1)⾓⾊Student和Register从People派⽣;(2)学⽣、管理员在与系统交互时,都有⼀个界⾯与之对应;(3)⼀个界⾯可能和课程相关(0-多门);(4)控制对象负责课程的处理,处理结果显⽰在界⾯上;(5)控制对象完成对数据库的操作;(6)界⾯请求控制对象的服务。
实验四 Java知识
实验四java知识本实验目的是练习如何创建Java 的基本语法,以及面向对象的知识,为后续的实验作好准备工作。
【课堂练习】一(1)对数组排序【实验效果】根据实验要求,您必须在浏览器的地址栏中输入:Tomcat服务器的IP地址和端口号,如:http://localhost:8080/sort.jsp【课堂练习】Java面向对象思想课堂练习——包创建和引用案例:新建Project项目,在该项目中创建aa.bb包,然后再引入java.util包中的Date类,并创建ShiJian类,练习包的创建和引用。
课堂练习——相同包之间的访问案例:在已经建立Project项目中创建mr.bbb包,然后在该包中创建Test和ImpTest两个类,测试同包之间类的访问。
课堂练习——不同包中类之间的访问案例:在已经建立Project项目中创建mr.aaa包和mr.zzk包,然后分别在包中创建Exam 和ImpExam两个类,测试不同包之间类的访问。
课堂练习——final变量案例:在已经建立Project项目中创建mingri包,并在该包中创建T1类,在该类中定义一个final变量,然后再主方法中创建T1类的实例,并测试能否改变final变量的值。
课堂练习——final方法案例:在已创建的项目Project的包mingri中创建T1类的之类ExT1,然后再ExT1类中测试是否能重写父类T1中的final方法。
课堂练习——继承性案例:在项目的包aaa中创建A和B两个类,使类B是类A的子类,然后在子类B中创建B的实例,并通过该实例分别调用类A和类B的方法,掌握继承的原理。
课堂练习——抽象类案例:在项目的包aaa中创建抽象类Example及其子类SubExample,在抽象类Example 中分别定义一个成员方法和一个抽象方法,并在子类中进行测试。
课堂练习——权限访问案例:在项目的包aaa中创建类Exm,在该类中分别定义4种权限修饰符的成员变量并附初值,然后在主方法中创建类的实例,并分别输出这4个成员变量的值,测试上述4种权限修饰符的成员变量在当前类中的可见性。
实验4 类与对象
2.掌握JAVA中类、对象的定义、创建和使用方法
3.掌握Java中方法的重载
实验仪器和器材
具有JDK环境的计算机一台
实验内容和要求
一、三角形、梯形和圆形的类封装
1.请按模板要求,将【代码】替换为Java程序代码,运行该程序时的运行效果如图4.1所示。
图4.1类与对象的运行效果
{
above=a;bottom=b;height=h; //方法体,将参数a,b,c分别赋值给above,bottom,height
}
double getArea()
{
area=(above+bottom)*height/2;
return area; //方法体,,要求计算出area返回
}
}
class Circle
{
sideA=a;
sideB=b;
sideC=c; //参数a,b,c分别赋值给sideA,sideB,sideC
if(a+b>c&&b+c>a&&a+c>b) //a,b,c构成三角形的条件表达式
{ boo=true;//给boo赋值。
}
else
{
boo=false; //给boo赋值。
}
}
double getLength()
{
boo=true; //给boo赋值。
}
else
{
boo=false; //给boo赋值。
}
}
doublegetsideA()
{
returnsideA;
}
doublegetsideB()
java类与对象实验报告
java类与对象实验报告Java类与对象实验报告一、引言Java是一种面向对象的编程语言,类和对象是Java编程的基本概念。
在本次实验中,我们将学习和掌握Java类和对象的概念、定义和使用方法,并通过实际的编程实验来加深对这些概念的理解。
二、实验目的1. 理解Java类和对象的概念;2. 学会定义和使用Java类;3. 掌握创建和操作Java对象的方法;4. 熟悉Java类和对象的相关语法和规范。
三、实验过程1. 类的定义在Java中,类是对象的模板,用于描述对象的属性和行为。
我们首先需要定义一个类,以便创建对象。
类的定义包括类名、属性和方法。
属性即对象的特征,方法即对象的行为。
2. 对象的创建通过使用关键字"new",我们可以创建一个类的对象。
对象是类的实例化,每个对象都有自己的属性和方法。
3. 对象的属性和方法对象的属性和方法可以通过对象名加点操作符来访问。
属性可以是基本类型或其他类的对象,方法可以是对象的行为或功能。
4. 构造方法构造方法是一种特殊的方法,用于创建对象时进行初始化操作。
构造方法的名称必须与类名相同,没有返回类型,可以有参数。
5. 封装性封装性是面向对象编程的重要特性之一,它将数据和方法封装在类中,对外部隐藏内部实现细节。
通过使用访问修饰符(private, public, protected)来控制属性和方法的访问权限。
6. 继承继承是面向对象编程的另一个重要特性,它允许我们创建一个新类,并从现有类中继承属性和方法。
通过使用关键字"extends"来实现继承。
7. 多态性多态性是面向对象编程的核心概念之一,它允许我们使用一个父类类型的引用来引用子类的对象。
通过方法的重写和重载来实现多态性。
四、实验结果通过本次实验,我们成功定义了一个Java类,并创建了多个对象。
我们可以通过对象名来访问对象的属性和方法,并对其进行操作。
我们还学习了构造方法的使用,以及封装性、继承和多态性的相关概念。
c++程序设计类和对象实验总结
一、实验目的在本次C++程序设计实验中,主要目的是通过对类和对象的学习和掌握,进一步加深对C++程序设计语言的理解和应用。
通过具体的实验操作,提高学生的编程能力和解决问题的能力,培养学生的动手能力和团队协作精神。
二、实验内容1. 掌握类的概念和基本语法,包括类的定义、成员变量、成员函数等;2. 熟悉对象的概念和使用方法,了解对象的初始化和销毁;3. 学习类的继承和派生的知识,掌握继承与派生的语法和使用;4. 能够独立编写包含类和对象的程序,实现各种功能;5. 通过实践项目,提高自己的编程水平,锻炼解决问题的能力。
三、实验过程在实验过程中,首先我们需要了解类和对象的概念,理解类的定义和对象的创建方法。
编写简单的程序进行练习,例如创建一个包含学生信息的类,并实例化对象,调用成员函数来输出学生信息。
也需要深入学习类的继承和派生的知识,理解基类和派生类的关系,掌握虚函数的概念和使用方法。
在实验中,我们编写了多个实例程序来练习类的继承和派生,加深了对这一知识点的理解。
在实验过程中,我们还遇到了一些问题,例如在使用多重继承时需要特别注意类的构造和析构顺序,以及在使用虚函数时需要注意动态绑定的原理等。
通过解决这些问题,我们不断提高了自己的编程水平,加深了对C++语言的理解。
四、实验总结通过本次实验,我们深刻理解了类和对象的概念,掌握了类的定义和对象的创建方法。
在实验中,我们编写了多个功能丰富的程序,包括学生信息管理系统、图形类的继承等。
这些程序不仅巩固了所学的知识,也让我们感受到了编程的乐趣。
通过与同学的讨论和交流,我们也学到了很多新的知识和技巧。
本次实验对我们的帮助很大,让我们更深入地理解了C++程序设计语言,提高了我们的编程水平。
希望在以后的学习和实践中,能够进一步加深对类和对象的理解,不断提高自己的编程能力。
在本次的C++程序设计实验中,我们深入学习了类和对象的概念,并通过实际的编程练习加深了对C++程序设计语言的理解和应用。
java面向对象 实验四 类和对象编程(面向对象特征)
学号姓名实验序号实验四实验名称类和对象编程—面向对象特征实验地点实验日期实验内容1.设计3个类,分别学生类Student,本科生类Undergaduate,研究生类Postgraduate,学生类包含一些基本属性,如姓名、所学课程、课程成绩等,具有一个空方法getGrade();本科生类Undergaduate与研究生类Postgraduate继承学生类Student,都覆盖了父类的getGrade()方法,用于通过分数计算成绩的等级,计算方法不同,研究生的标准要比本科生的标准高一些,如下表所示。
要求对属性进行适当封装,通过方法来访问。
表课程成绩等级本科生标准研究生标准80--100优秀90—100优秀70--80良好80—90良好60--70一般70—80一般50--60及格60—70及格50以下不及格60以下不及格编写测试类,在测试类里创建Undergaduate与Postgraduate对象,计算他们的成绩,并输出他们的个人信息。
实验过程及步骤根据实验要求编写程序如下:class Student {private String name;private String course;private int score;public String getName() {return name;}public void setName(String name) { = name;}public String getCourse() {return course;}public void setCourse(String course) {this.course = course;}public int getScore() {return score;}public void setScore(int score) { this.score = score;}public String getGrade() {return"";}}class Undergaduate extends Student { Undergaduate(String _name, String_course, int _score) {setName(_name);setCourse(_course);setScore(_score);实验过程及步骤}public String getGrade() {int grade = getScore();if (grade >= 80)return ("优秀");if (grade >= 70)return ("良好");if (grade >= 60)return ("一般");if (grade >= 50)return ("及格");return ("不及格");}}class Postgraduate extends Student { Postgraduate(String _name, String _course, int _score) {setName(_name);setCourse(_course);setScore(_score);}public String getGrade() {int grade = getScore();if (grade >= 90)return ("优秀");if (grade >= 80)return ("良好");if (grade >= 70)return ("一般");if (grade >= 60)return ("及格");return ("不及格");}}public class Test {public static void main(String[] args) {Undergaduate a1 = new Undergaduate("张三", "JAVA", 80);Undergaduate a2 = new实验过程及步骤Undergaduate("李四", "JAVA", 60);Postgraduate b1 = newPostgraduate("王五", "JAVA", 90);System.out.println(a1.getName() + "的" + a1.getCourse() + "成绩为"+ a1.getGrade());System.out.println(b1.getName() + "的" + a1.getCourse() + "成绩为"+ a1.getGrade());System.out.println(a2.getName() + "的" + a2.getCourse() + "成绩为"+ a2.getGrade());}}得到结果:实验结果及分析教师评阅。
实验题目
实验一 Java语言概述【实验目的】1.掌握开发Java应用程序的三个步骤:编写源文件、编译源文件和运行应用程序。
2.熟悉Java应用程序的基本结构,并能联合编译应用程序所需要的类。
文件保存要求:在D:盘新建文件夹“学号”,在“D:\ 学号”下新建文件夹“timu1”。
题目1的文件保存在“timu1”中,以下依次类推。
【题目1】1、实验要求:编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。
2、程序模板:请按模板要求,将【代码】替换为Java程序代码。
3、实验后的练习a.编译器怎样提示丢失大括号的错误。
b.编译器怎样提示语句丢失分号的错误。
c.编译器怎样提示将System写成system这一错误。
d.编译器怎样提示将String写成string这一错误。
【题目2】1、实验要求:编写3个源文件:、、,每个源文件只有一个类。
含有应用程序的主类(含有main方法),并使用了Teacher和Student类。
将3个源文件保存到同一目录,D:\timu2,然后编译。
2、程序模板:请按模板要求,将【代码】替换为Java程序代码。
3、实验后的练习a.将编译通过后,不断地修改源文件中的【代码2】。
比如,在命令行窗口输出“我是语文老师”或“我是数学老师”。
要求每次修改源文件后,单独编译,然后直接运行应用程序(不要再编译)。
b.如果需要编译某个目录下的全部Java源文件,如D:\1001目录,可以使用如下命令:D:\1001>javac *.java请练习上述命令。
【题目3】1、实验要求:课本第15页习题2、实验后的练习习题8.(4)实验四类与对象【实验目的】1.掌握使用类来封装对象的属性和行为。
2.掌握对象的组合以及参数传递。
3.掌握类变量与实例变量,以及类方法与实例方法的区别。
文件保存要求:在D:盘新建文件夹“shiyan04”,在“D:\ 20120shiyan04”下新建文件夹“timu1”。
实验四C#面向对象程序基础
实验四C#面向对象程序基础(一)一、实验目的1.理解C#语言是如何体现面向对象编程基本思想。
2.掌握类对象的定义。
3.了解类的封装方法,以及如何创建类和对象。
4.了解成员变量和成员方法的特性。
5.掌握静态成员的用法。
6.加深理解面向对象编程的概念,如类、对象、实例化等;二、实验要求1. 分析程序,上机验证结果。
2. 写出程序,并调试程序,要给出测试数据和实验结果。
3. 整理上机步骤,总结经验和体会。
4. 完成实验日志和上交程序。
三、作业提交1. 建立以自己名字命名的文件夹,文件夹中包含两个文件夹,名字各为:实验成果,实验流程。
2. 实验成果文件夹中保存实验过程中的解决方案、项目等文件。
3.实验流程中存放撰写实验流程的word文档。
四、实验内容题目一:定义一个圆类,计算圆的面积和周长,并应用该类。
题目二:求n!的值,用递归的方法求n!(n>=0)。
】实验步骤:1)定义递归方法fac,计算整数n的阶乘,方法中需要递归调用自身。
2)在Main方法中读入整数n的值。
3)在Main方法中调用fac方法,求出整数n的阶乘。
4)Main方法中输出计算结果。
题目三:给三个整数排序并求其和及平均值定义一个方法,给三个整数按从小到大的顺序排序并求其和及平均值。
其中,三个待求整数及排序后的结果由引用参数传递;其和由输出参数传递;平均值由返回值返回。
在Main()方法中实现三个待求整数的输入及结果的输出。
实验步骤:1)定义方法Sort,给三个整数按从小到大的顺序排序并求其和及平均值。
其中,三个待求整数及排序后的结果由引用参数传递,其和由输出参数传递,平均值由返回值返回。
2)在Main方法中读入待求的三个正整数。
3)在Main方法中调用方法Sort给三个整数排序并求其总和及平均值。
4)在Main方法中输出结果。
题目四:程序阅读假设某银行共发出M张储蓄卡,每张储蓄卡拥有唯一的卡号,每天每张储蓄卡至多支持储蓄卡持有者的N笔“存款”或“取款”业务。
类与对象实验
实验四类与对象实验(设计性实验4学时)实验题目11、目的要求:1)理解类与对象的概念;2)掌握类的声明和定义方法;3)掌握对象的定义和使用方法;4)掌握带参数的构造函数的定义和使用;5)掌握静态数据成员和静态成员函数的定义和使用方法;6)理解类与对象之间的关系。
2、实验内容定义一个学生类Student,包括3个数据成员:学号id,姓名name,分数score;两个静态数据成员:总分total和学生人数count;带参数的构造函数用来初始化对象,成员函数ChangeScore用来修改分数,静态成员函数GetA verage用来打印计算得到的平均分。
3、实验步骤:1)定义一个学生类Student,包括题目中要求的数据成员和成员函数;2)在类外对静态数据成员进行定义声明,以获得存储空间;3)定义类中的成员函数;4)在main函数中声明类的对象并初始化;5)使用该对象的成员函数进行计算并打印结果。
4、主要实验仪器设备:计算机假设有三个学生#include<iostream>#include<string>using namespace std;class Student{public:Student(int m,string n,float f):id(m),name(n),score(f){}void ChangeScore();static void GetA verage();private:int id;string name;float score;static float total;static int count;};float Student::total=0;int Student::count=0;void Student::ChangeScore(){total+=score;count++;}void Student::GetA verage(){cout<<"平均分:"<<total/count<<endl;}int main(){Student stud[3]={Student(001,"li ming",90.5),Student(002,"wang li",90),Student(003,"zeng lan",89)};for(int i=0;i<3;i++) stud[i].ChangeScore();Student::GetA verage();return 0;}实验题目21、目的要求:1)理解类的组合的概念和使用方法;2)学会定义并使用带参数的构造函数和不带参数的默认构造函数;3)掌握组合类构造函数和析构函数的定义、实现和调用顺序。
实验四1、 面向对象分析建模
实验四面向对象分析建模(一)需求描述:王大夫在小镇上开了一家牙科诊所。
他有一个牙科助手、一个牙科保健员和一个接待员。
王大夫需要一个软件系统来管理预约。
当病人打电话预约时,接待员将查阅预约登记表,如果病人申请的就诊时间与已定下的预约时间冲突,则接待员建议一个就诊时间以安排病人尽早得到治疗。
如果病人同意建议的就诊时间,接待员将输入约定时间和病人名字。
系统将核实病人的名字并提供记录的病人数据,数据包括病人的病历号等。
在每次治疗或清洗后,助手或保健院将标记相应的预约诊治已经完成,如果必要的话会安排病人下一次再来。
系统能够按病人姓名和日期进行查询,能够显示记录的病人数据和预约信息。
接待员可以取消预约,可以打印出前两天预约尚未接诊的病人清单。
系统可以从病人记录中获知病人的电话号码。
接待员还可以打印出关于所有病人的每天和每周的工作安排。
(二)实验目的:(1)根据给出的需求描述进行面向对象分析建模;(2)建立系统的对象模型中的初始类图;建立系统功能模型中的用例图;(3)初始类图给出搜索类的过程;(4)熟练使用画图工具“visio”绘制图形,软件---UML模型。
(三)实验内容:用面向对象的分析方法建立系统的对象模型、功能模型。
(四)实验步骤:(1)根据需求描述搜索系统中可能成为类的名词或名词词组。
然后进行筛选获得系统初始的类对象。
(2)搜索需求描述中的动词或动词词组找出类对象之间可能存在的关系(关联、共享聚集、组合聚集、泛化、依赖等)。
(3)用“visio”完成初试类图、时序图的绘制。
五:试验结果:(1).王大夫牙科诊所牙科助手牙科保健员接待员病人登记表软件系统(2).开了一家牙科诊所需要一个软件系统来管理预约打电话预约查阅预约登记表申请的就诊时间预约时间安排病人尽早得到治疗同意建议输入约定时间和病人名字系统将核实提供记录的病人数据标记相应的预约诊治已经完成安排病人下一次再来查询显示记录取消预约打印清单获知病人的电话号码打印工作安排(3).。
实验四 类和对象编程(面向对象特征)
实验四类和对象编程—面向对象特征一、实验目的1.理解封装含义;2.掌握继承的使用;3.掌握多态的含义及使用。
二、实验器材计算机硬件环境:PIII 667以上计算机;软件环境:MyEclipse6.0以上。
三、实验内容设计3个类,分别学生类Student,本科生类Undergaduate,研究生类Postgraduate,学生类包含一些基本属性,如姓名、所学课程、课程成绩等,具有一个空方法getGrade();本科生类Undergaduate与研究生类Postgraduate继承学生类Student,都覆盖了父类的getGrade()方法,用于通过分数计算成绩的等级,计算方法不同,研究生的标准要比本科生的标准高一些,如下表所示。
要求对属性进行适当封装,通过方法来访问。
表课程成绩等级编写测试类,在测试类里创建若干个Undergaduate与Postgraduate对象,计算他们的成绩,并输出他们的个人信息。
四、实验步骤Student类package .tqc;public class Student {private String name;private int chinese;private int math;private int english;public Student (String name,int chinese,int math,int english){ = name;this.chinese = chinese;this.math = math ;this.english = english;}public String getName() {return name;}public void setName(String name) { = name;}public int getChinese() {return chinese;}public void setChinese(int chinese) {this.chinese = chinese;}public int getMath() {return math;}public void setMath(int math) {this.math = math;}public int getEnglish() {return english;}public void setEnglish(int english) {this.english = english;}public float pingjun(int english,int math,int chinese){float a;a = (english+math+chinese)/3;return a;}}本科生类Undergaduatepackage .tqc;public class Undergaduate extends Student {public Undergaduate(String name, int chinese, int math, int english){super(name, chinese, math, english);// TODO Auto-generated constructor stub}public void Undergradute(String name, int chinese, int math, int english) {}public float pj(int st,float bk){float a;a = (bk+st)/2;return a;}public void benkepd(float a){if (a>80){System.out.println("该学生为优秀");}else if(a>70){System.out.println("该学生为良好");}else if(a>59){System.out.println("该学生为及格");}else {System.out.println("该学生为不及格");}}研究生类Postgraduatepackage .tqc;public class Undergaduate extends Student {public Undergaduate(String name, int chinese, int math, int english) {super(name, chinese, math, english);// TODO Auto-generated constructor stub}public void Undergradute(String name, int chinese, int math, int english) {}public float pj(int st,float bk){float a;a = (bk+st)/2;return a;}public void benkepd(float a){if (a>80){System.out.println("该学生为优秀");}else if(a>70){System.out.println("该学生为良好");}else if(a>59){System.out.println("该学生为及格");}else {System.out.println("该学生为不及格");}}Text类package .tqc;public class Test {public static void main(String[] args) {Undergaduate zhansan = (Undergaduate) newUndergaduate("zhangsan", 80, 89,97);int zcj=zhansan.pingjun(80, 89,97);System.out.println("学生名字"+zhansan.getName());System.out.println(zhansan.getName()+"语文:"+zhansan.getChinese());System.out.println(zhansan.getName()+"数学:"+zhansan.getMath());System.out.println(zhansan.getName()+"英语:"+zhansan.getEnglish());System.out.println(zhansan.getName()+"总平均分为:"+zcj);zhansan.getGrade(zcj);Postgraduate lisi = (Postgraduate) new Postgraduate("lisi", 98,87,90);int zcj1=lisi.pingjun( 98,87,90);System.out.println("学生名字:"+lisi.getName());System.out.println(lisi.getName()+"语文:"+lisi.getChinese());System.out.println(lisi.getName()+"数学:"+lisi.getMath());System.out.println(lisi.getName()+"英语:"+lisi.getEnglish());System.out.println(lisi.getName()+"总平均分为:"+zcj);lisi.getGrade(zcj1);}}运行结果五、实验总结。
实验四----《面向对象程序设计C++》综合性实验指导书
《面向对象程序设计C++》综合性实验指导书实验题目:学生选课小系统(实验四)课程名称:面向对象程序设计C++计划学时:4起稿人:邹金安一、实验目的1、理解面向对象程序设计的基本概念(类、对象、成员函数、成员变量);2、掌握面向对象程序设计的基本方法;3、综合复习课程的所有知识点,进一步熟练面向对象程序的开发方法和流程,提高独立分析问题和解决问题的能力,培养实践动手技能。
二、实验任务请设计一个学生选课小系统。
要求:描述课程类和学生类。
用重用类的多文件程序结构形式,编制面向对象应用程序。
学生有名字,学生最多可学五门课程,学生实际学的门数,可以给定学生的名字,可以得到学生的名字,可以得到学生给定课程的成绩,可以得到学生所学课程的平均成绩,可以给学生增加一门课(同时在该课程中增加一个学生)。
课程最多有30个学生,课程有实际学生数,课程有实际学生名单,课程有学分数,课程有每个学生成绩,课程可以得到学分数,课程可以设置学分数,课程可以得到班平均成绩,课程可以得到某个学生成绩。
现有数学课,张三学数学,成绩为3.1分,李四学数学,成绩为4.5分。
求其平均成绩,求张三的数学成绩。
现有物理课,学时数为4,张三学物理,成绩为4分。
求张三所学课程的平均成绩。
三、实验相关理论和原理在以往学习的基础上,对以往所学内容进行整合,综合运用类、对象等面向对象技术,进行管理系统的开发。
面向对象的几个基本概念:1、类与对象类是C++语言封装的基本单位,用来创建对象,它是对象形式的模块,指定代码和数据。
C++使用的规范构建对象,对象是类的实例。
定义一个类时,要声明其包含的数据以及处理这些数据的代码。
数据包含于有类定义的实例变量中,代码则包含于函数中,组成类的代码和数据成为这个类的成员。
2、构造函数构造函数在对象创建是进行初始化,为类定义的实例变量赋初始值,或者执行一个结构完整的对象必须的任何其他启动过程。
3、析构函数析构函数在对象的生命期行将结束的时候,系统自动调用。
实验4 类的定义
实验4 类的定义一、实验目的1.掌握类的定义2.了解如何根据描述发现类及其成员,具备初步的面向对象分析与设计能力二、实验概述现在有一个奥特曼打怪兽的角色扮演游戏。
请你根据下面的描述,定义两个类:奥特曼类和怪兽类。
在奥特曼的世界,打怪兽就是全部。
现在人人都有机会成为奥特曼,加入到与怪兽无止境的战斗中。
可惜,并非人人生来就是英雄,革命尚未成功,同志仍需努力啊。
每一个奥特曼都要从零开始,辛勤劳动,打怪升级,最终才能成为举世瞩目的大英雄。
奥特曼的等级(rank)从第一级开始,随着它打怪兽经验(exp)的增加,等级将不断攀升。
随着等级的升高,奥特曼的生命值(hp)上限和攻击力(damage)也将大大增强。
在与怪兽的战斗中,奥特曼收获的不仅仅是经验。
有时,运气好的话,还能从怪兽身上弄到点小钱(money)。
不要小看这些钱,关键时刻,它能给奥特曼买药补血呀。
奥特曼没有金刚不坏之身,在与怪兽的战斗中,奥特曼会受到伤害。
一旦奥特曼的生命值降到0,它英雄的一生就结束了。
好了,了解了奥特曼的基本情况,现在可以开始战斗了。
首先,我们需要一位全新的奥特曼,我们给它赋予一定的初始实力(initial)。
让它投入战斗吧!在与怪兽的战斗中要讲究策略。
所谓知己知彼,百战不殆,一旦碰到怪兽,我们首先要查看自己和对方的实力(display),包括双方的等级、生命值、攻击力、经验和所拥有的钱财。
所谓打得赢就打,打不赢就跑。
如果对手太强大,逃跑吧(escape)!偶尔逃跑无伤颜面,但会耗费一点生命值。
如果总是逃跑,生命被虚耗,那英雄就当不成了。
所以该出手时就出手,勇敢地战斗(attack)吧!每一回合的战斗中,怪兽会受到攻击(attacked),怪兽也会反击(fightback),让奥特曼受到攻击(attacked)。
每一回合结束,只要奥特曼还活着(isalive),而且怪兽也还活着,战斗就要继续。
如果奥特曼的生命值太低,也许抵挡不了下一轮的进攻,那么别财迷了,掏钱出来给它补血(restore)吧。
python程序设计的8个实验内容
一、概述Python是一种直观、易学、功能强大的计算机编程语言,广泛应用于Web开发、数据分析、人工智能等领域。
本文将介绍Python程序设计的8个实验内容,帮助读者深入了解和掌握Python编程技能。
二、实验一:基础语法1. 学习Python的基本语法,包括变量、数据类型、运算符等。
2. 编写一个简单的Python程序,实现对用户输入的数字进行排序并输出结果。
三、实验二:条件控制和循环1. 掌握Python的条件控制语句,如if-else和switch-case。
2. 熟练运用循环结构,包括for循环和while循环。
3. 编写一个Python程序,实现对用户输入的数字进行判断,输出是否为素数。
四、实验三:函数1. 学习Python函数的定义和调用。
2. 掌握参数传递和返回值的用法。
3. 编写一个Python程序,实现计算两个数的最大公约数和最小公倍数的函数,并进行调用测试。
五、实验四:列表和元组1. 了解Python中列表和元组的概念和用法。
2. 编写一个Python程序,实现对列表和元组的增删改查操作,并输出结果。
六、实验五:字典和集合1. 掌握Python中字典和集合的特点和用法。
2. 编写一个Python程序,实现对字典和集合的遍历和操作,并输出结果。
七、实验六:文件操作1. 学习Python文件的打开、读取和写入操作。
2. 编写一个Python程序,从文件中读取数据并进行处理,然后将结果写入新文件。
八、实验七:异常处理1. 理解Python中异常的概念和分类。
2. 编写一个Python程序,模拟发生异常并进行处理,保证程序正常运行。
九、实验八:面向对象编程1. 学习Python面向对象编程的相关知识,包括类、对象、继承等。
2. 编写一个简单的Python程序,实现一个基本的面向对象应用,并进行测试。
十、结语通过以上8个实验内容的学习,读者可以系统地了解和掌握Python程序设计的基础知识和技能,为进一步深入学习和应用Python打下坚实的基础。
c++输入输出流实验报告
实验四输入输出流实验课程名:面向对象程序设计(C++)专业班级:学号:姓名:实验时间:实验地点:指导教师:代码分析:1)在输入时调用getline()以换行符作为输入姓名时的结束标志,已达到输入空格的目的2)输出时采用resetiosflags(ios::right)实现结束向左对齐,用setw(8)实现输出域宽为8,使用一系列的格式控制字符来实现输出格式的控制。
2. 重载运算符“<<”和“>>”,使其能够输入一件商品的信息和输出这件商品的信息。
商品的信息由编号、商品名和价格。
假如商品类Merchandise的框架如下:class merchandise{public:Merchandiss();~Merchandiss();friend istream& operator>>(istream& in,Merchandiss& s);friend ostream&operator<<(ostream& out,Merchandiss& s);private:int no;char *name;double price;};要求实现该类,并编写以下的main函数对该类进行操作。
int main(){ Merchandise mer;cin>>mer;cout<<mer;return 0;}实验代码:#include<iostream>using namespace std;class merchandise{out<<s.no<<' '<<<<' '<<s.price<<endl;return out;}int main(){merchandise mer;cin>>mer;cout<<mer;return 0;}实验结果:实验分析:先定义一个商品的类,构造函数定义为无参函数在函数体中将name置为空,其他为0.在重载>>时使用getline函数,输入name以’\n’作为结束标记重载<<时直接输出。
实验一.类与对象实验报告
浙江理工大学信息学院面向对象程序设计实验报告实验名称:类的定义与使用学时安排: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 <iostream>#include <ctime>#include <windows.h>using namespace std;int n,floorNumber;class Elevator{private:int floor; //电梯总的楼层数bool up; //是否上行,bool为布尔类型,可取值true或falsebool down; //是否下行int currentFloor; //当前所在楼层public:Elevator(int floor);void setUpButton(); //按下上行按钮void setDownButton(); //按下下行按钮void setFloorNumber(int floorNumber); //根据要进入的楼层电梯开始运行,并逐层显示经过的楼层int getCurrentFloor();//获得当前所在楼层void charge();int choice();};Elevator::Elevator(int f){floor =f;up=false;down=false;currentFloor=1;};void Elevator::setUpButton(){if(currentFloor>floorNumber){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<"您不能上行!"<<endl<<endl;}else if(floorNumber>floor){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<"没这一层!太高啦!您想上天?!"<<endl<<endl;}else up=true;}void Elevator::setDownButton(){if(currentFloor<floorNumber){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<"您不能下行!"<<endl<<endl;}else if(floorNumber<1){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<"没这一层!太低啦!您想入地?!"<<endl<<endl;}else down=true;}void Elevator::setFloorNumber(int floorNumber){if(up){for(;currentFloor<floorNumber;currentFloor++){ cout<<"--"<<currentFloor<<"--"<<endl;Sleep(2000);}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED);cout<<"第"<<currentFloor<<"层到了"<<endl<<endl;up=false;}if(down){for(;currentFloor>floorNumber;currentFloor--){ cout<<"--"<<currentFloor<<"--"<<endl;Sleep(2000);}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED);cout<<"第"<<currentFloor<<"层到了"<<endl<<endl;down=false;}}int Elevator::getCurrentFloor(){return currentFloor;}int Elevator::choice(){cin>>n;if(n==2&&getCurrentFloor()==1){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<"您已经在第一层了!除非您自己打洞,不然我是不会带你下去的!"<<endl<<endl;return 0;}switch(n){case 1:cout<<"请输入要进入的楼层"<<endl;cin>>floorNumber;setUpButton();setFloorNumber(floorNumber); break;case 2:cout<<"请输入要进入的楼层"<<endl;cin>>floorNumber;setDownButton();setFloorNumber(floorNumber); break;case 3:return -1;default:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREG ROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN);cout<<"只能选上升和下降!您难道还想玩电梯漂移?!"<<endl<<endl; break;}SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);cout<<"当前电梯停在"<<getCurrentFloor()<<"层"<<endl;}void Elevator::charge(){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);cout<<"---请选择操作---"<<endl;cout<<"| 1.上升 |"<<endl;cout<<"| 2.下降 |"<<endl;cout<<"| 3.退出 |"<<endl;cout<<"|--------------|"<<endl;}int main(){long a;time(&a);int floor;cout<<"告诉我总共有几层"<<endl;cin>>floor;Elevator el(floor);SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_IN TENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);cout<<ctime(&a)<<endl;cout<<"本电梯共"<<floor<<"层,欢迎您的使用"<<endl<<endl;精选文档while(1){int i=0;el.charge();i=el.choice();if(i==-1) break;}return 0;}六运行结果七实验心得实验很有趣,让我初步体会了程序猿的感受。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四类与对象
一、实验目的
1. 掌握类的声明和使用。
2. 掌握类的声明和对象的声明。
3.复习具有不同访问属性的成员的访问方式。
4. 观察构造函数和析构函数的执行过程。
5.学习类的组合使用方法。
6. 使用 VC++的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、#include<iostream>
using namespace std;
enumCPU_Rank {P1=1,P2,P3,P4,P5,P6,P7};
class CPU
{
private:
ﻩCPU_Rank rank;
ﻩint frequency;
ﻩfloat voltage;
public:
CPU (CPU_Rank r, intf, float v)
ﻩ{
ﻩrank = r;
ﻩfrequency = f;
ﻩvoltage = v;
ﻩcout << "构造了一个CPU!" << endl;
ﻩ}
~CPU() { cout << "析构了一个CPU!" << endl; }
CPU_Rank GetRank()const { return rank; }int GetFrequency() const { return frequency; }ﻩfloat GetVoltage() const { return voltage; }
void SetRank(CPU_Rank r) {rank = r; }
void SetFrequency(int f) { frequency = f; }
void SetVoltage(floatv) { voltage = v; }
voidRun() {cout << "CPU开始运行!" << endl; }
void Stop() {cout<< "CPU停止运行!" << endl; } };
int main()
{
CPU a(P6,300,2.8);
ﻩ a.Run();
ﻩ a.Stop();
}
2、#include <iostream>
using namespace std;
enum CPU_Rank {P1=1,P2,P3,P4,P5,P6,P7};
class CPU
{
private:
CPU_Rank rank;
int frequency;
ﻩfloat voltage;
public:
CPU (CPU_Rank r, intf, float v)
ﻩ{
ﻩﻩrank = r;
frequency = f;
voltage = v;
ﻩcout << "构造了一个CPU!" << endl;
ﻩ}
ﻩCPU()
ﻩ{
cout << "构造了一个CPU!"<< endl;
};
~CPU ()
{
ﻩﻩcout<< "析构了一个CPU!" << endl;
ﻩ}
CPU_Rank GetRank() const { return rank; }
int GetFrequency() const {return frequency; }ﻩfloat GetVoltage() const { returnvoltage; }
void SetRank(CPU_Rank r) { rank = r;}
void SetFrequency(int f) { frequency = f; }voidSetVoltage(float v) { voltage =v; }
void Run() {cout << "CPU开始运行!"<< endl; }
ﻩvoid Stop() {cout << "CPU停止运行!" << endl;} };
class RAM
{
public:
RAM ()
{
cout << "构造了一个RAM!" << endl;
}
ﻩ~RAM ()
ﻩ{
cout << "析构了一个RAM!" << endl;
ﻩ}
void Run(){cout << "RAM开始运行!" << endl; }
void Stop() {cout << "RAM停止运行!" << endl; }
};
class CDROM
{
public:
CDROM (){ cout<<"构造了一个CDROM!" << endl; }
ﻩ~CDROM ()
ﻩ{
ﻩﻩcout << "析构了一个CDROM!" <<endl;
}
void Run() {cout << "CDROM开始运行!" << endl; }
void Stop() {cout << "CDROM停止运行!" << endl; }};
class COMPUTER
{
private:
CPU cpu;
ﻩRAM ram;
CDROM cdrom;
public:
COMPUTER()
{
ﻩcout << "构造了一个COMPUTER!" << endl;
ﻩ}
~COMPUTER ()
{
ﻩﻩcout << "析构了一个COMPUTER!" << endl;ﻩ}
void Run()
{
cout << "COMPUTER开始运行!" << endl;ﻩﻩcpu.Run();
ﻩram.Run();
}
void Stop()
{
ﻩram.Stop();
ﻩﻩcpu.Stop();
ﻩcout << "COMPUTER停止运行!" << endl;
}
};
int main()
{
COMPUTER a;
a.Run();
a.Stop();
}。