实验四 类与对象

合集下载

【免费下载】实验4 类和对象3

【免费下载】实验4 类和对象3
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知识本实验目的是练习如何创建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 类与对象

实验4 类与对象
1.掌握使用类来封装对象的属性和功能的方法
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编程的基本概念。

在本次实验中,我们将学习和掌握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++程序设计实验中,主要目的是通过对类和对象的学习和掌握,进一步加深对C++程序设计语言的理解和应用。

通过具体的实验操作,提高学生的编程能力和解决问题的能力,培养学生的动手能力和团队协作精神。

二、实验内容1. 掌握类的概念和基本语法,包括类的定义、成员变量、成员函数等;2. 熟悉对象的概念和使用方法,了解对象的初始化和销毁;3. 学习类的继承和派生的知识,掌握继承与派生的语法和使用;4. 能够独立编写包含类和对象的程序,实现各种功能;5. 通过实践项目,提高自己的编程水平,锻炼解决问题的能力。

三、实验过程在实验过程中,首先我们需要了解类和对象的概念,理解类的定义和对象的创建方法。

编写简单的程序进行练习,例如创建一个包含学生信息的类,并实例化对象,调用成员函数来输出学生信息。

也需要深入学习类的继承和派生的知识,理解基类和派生类的关系,掌握虚函数的概念和使用方法。

在实验中,我们编写了多个实例程序来练习类的继承和派生,加深了对这一知识点的理解。

在实验过程中,我们还遇到了一些问题,例如在使用多重继承时需要特别注意类的构造和析构顺序,以及在使用虚函数时需要注意动态绑定的原理等。

通过解决这些问题,我们不断提高了自己的编程水平,加深了对C++语言的理解。

四、实验总结通过本次实验,我们深刻理解了类和对象的概念,掌握了类的定义和对象的创建方法。

在实验中,我们编写了多个功能丰富的程序,包括学生信息管理系统、图形类的继承等。

这些程序不仅巩固了所学的知识,也让我们感受到了编程的乐趣。

通过与同学的讨论和交流,我们也学到了很多新的知识和技巧。

本次实验对我们的帮助很大,让我们更深入地理解了C++程序设计语言,提高了我们的编程水平。

希望在以后的学习和实践中,能够进一步加深对类和对象的理解,不断提高自己的编程能力。

在本次的C++程序设计实验中,我们深入学习了类和对象的概念,并通过实际的编程练习加深了对C++程序设计语言的理解和应用。

java面向对象 实验四 类和对象编程(面向对象特征)

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”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();
}。

相关文档
最新文档