实验四 类和对象定义
- 格式:doc
- 大小:51.00 KB
- 文档页数:5
实验四类与对象名称一、实验目的和要求1、掌握使用类来封装属性和方法的功能。
2、掌握继承的概念。
3、掌握构造方法的使用。
二、实验内容和原理1、用类来描述游戏角色的交手次数、经验值、生命值之间的关系,并断定角色决斗的胜负。
2、用类来描述“形状”、“三角形”、“圆形”以及它们之间的关系。
三、实验环境硬件:计算机软件:Windows 2000/XP、JDK、Eclipse四、算法描述及实验步骤1.建立角色类,给出相应的成员,并能以生命值、经验值初始化角色对象。
public class Boxer {int b=1000;/*声明并初始化生命值b*/int e=0;/*声明并初始化经验值e*/int i;/*与对手交手一次,生命值消耗点数*/int j;/*与对手交手一次,经验值消耗点数*/Boxer(int a,int b){this.i=a;this.j=b;}}2.建立fight方法,接收二个角色类型的参数,返回胜者。
void fight(Boxer another){int c=0;/*声明并初始化对战次数c*/int num;while(this.b>0&&another.b>0){c++;this.b+=this.i;another.b+=another.i;this.e+=this.j;another.e+=another.j;if(this.e>=50){this.b++;this.e=-50;}if(another.e>=50){another.b++;another.e=-50;}}if(this.b>another.b){System.out.print("A win B fight number "+c);}else if(this.b==another.b){System.out.println("A win B fight number "+c);}else{System.out.println("A and B deduce");}}3.给定二个不同的角色,判定交手的胜负关系。
《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个正整数中的最大数。
实验一类和对象实验课程名:面向对象程序设计(C++)专业班级:学号::实验时间:实验地点:指导教师:p->PrintList();cout<<"请输入要删除的元素所在的位置:"<<endl;cin>>n;p->Delete(n);p->PrintList();return 0;}运行结果:2.设计一个带头结点的单链表类,要求:(1)生成一个整数线性表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数(尽量利用已知的存储空间)。
(2)设计一个测试主函数,实际运行验证所设计单链表类的正确性。
实验代码:#include<iostream>using namespace std;L3.PrintList( );cout<<"链表的长度为:"<<L1.Length( )<<endl;cout<<"链表的第四个元素为:"<<L1.Get(4)<<endl;cout<<"链表中元素5为第"<<L1.Locate(5)<<"个元素"<<endl;L1.Insert(4, 17);cout<<"插入元素后链表为:";L1.PrintList( );L1.Delete(8);cout<<"删除第8个元素后链表变为:";L1.PrintList( );return 0;}实验结果:3.设计一个不带头结点的单链表类,要求:(1)不带头结点单链表类的成员函数包括取数据元素个数、插入元素、删除所有值为k的元素、取数据元素。
{int a[10]={0,1,2,3,4,5,6,7,8,9};LinkList<int> L(a,10);cout<<"链表长为:"<<L.Length()<<endl;cout<<"链表的第6个元素为:"<<L.Get(6)<<endl;L.Insert(5,17);cout<<"在链表第5个位置插入元素17后链表变为:";L.PrintList();L.Delete(8);cout<<"删除第8个元素后链表变为:";L.PrintList();return 0;}实验结果为:4.设计一个带头结点的循环单链表类,实现约瑟夫环问题;问题描述:设编号为1,2,…,n(n>0)个人按顺时针方向围坐-圈,每人持有一个正整数密码。
浙江理工大学信息学院面向对象程序设计实验报告实验名称:类的定义与使用学时安排: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_INTENSITY|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_INTENSITY|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;}六运行结果七实验心得实验很有趣,让我初步体会了程序猿的感受。
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类,并创建了多个对象。
我们可以通过对象名来访问对象的属性和方法,并对其进行操作。
我们还学习了构造方法的使用,以及封装性、继承和多态性的相关概念。
实验报告一、实验项目:类与对象二、实验目的:1。
学会使用类来封装对象的属性和功能2. 掌握类变量与实例变量,以及类方法与实例方法的区别3。
掌握使用package和import语三、实验器材:计算机、Java编程软件JCreator四、实验原理(或仪器装置图):1. 类与对象类是组成Java程序的基本要素。
类封装了一类对象的状态和方法。
类是用来定义对象的模板。
类声明class 类名{类体}对象的声明一般格式为:类的名字对象名字;定义对象引用后,用new运算符完成对象的创建工作,分配存储空间,并对其初始化。
变量名=new 类名([构造方法实参表]);对象的使用访问成员的基本语法形式如下:对象名。
变量成员名对象名.方法成员名([实际参数表])2.成员变量和局部变量成员变量格式:[修饰符] 变量类型变量名[=初值];成员方法:格式:[修饰符]返回值的数据类型方法名(参数1,参数2,…){语句序列;return[表达式];}类中定义的变量是成员变量,而方法中定义的变量是局部变量。
3. 构造方法构造方法是一种特殊的方法,创建对象时被自动调用.与一般的方法不同,它没有返回值类型的说明,方法体中也不可以用return语句带回返回值。
构造方法的方法名与类名相同在构造方法中可以通过this关键字调用该类中其他的构造方法。
4。
包包是Java语言中有效地管理类的一个机制。
①通过关键字package声明包语句。
package 语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包.package语句的一般格式为:package 包名;②import 语句:使用import 语句可以引入包中的类。
五、实验步骤及数据记录:1.定义一个圆柱体类Cylinder,并创建相应的对象,然后计算圆柱体的底面积与体积。
class Cylinder{double radius;int height;double pi=3.14;void area(){System。
学号姓名实验序号实验四实验名称类和对象编程—面向对象特征实验地点实验日期实验内容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());}}得到结果:实验结果及分析教师评阅。
实验四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笔“存款”或“取款”业务。
《面向对象程序设计》实验指导书(新)《面向对象程序设计》实验指导书一、课程教学与实验教学计划学时比:48/16二、适用专业:信息管理与信息系统三、实验目的基本要求能够充分理解面向对象程序设计的思想和应用方法。
能够使用面向对象编程语言进行相应的程序设计和开发。
理解面向对象的基本思想、概念和特性以及面向对象的分析、建模、设计技术与方法。
掌握C++语言基本构成、类与对象、消息传递与函数、函数与运算符重载、继承性、多态性与虚拟函数、数据封装和隐藏及Windows 程序设计基础。
通过实验动手实践,使学生能够掌握面向对象程序设计的特征和基本思想,以及相应的具体实现和Windows程序设计基础知识。
四、实验内容实验一:循环控制(一)实验目的要求:熟悉VC++集成开发环境,学习使用控制台应用程序;创建工程,建立可执行文件并执行,观察结果。
掌握变量的声明和定义方法,掌握循环语句和条件语句的定义、作用和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:1.编程求1!+2!+3!+4!+…+12!。
2.编程求所有的3位数素数,且该数是对称的。
所谓“对称”是指一个数,倒过来还是该数。
例如,375不是对称数,因为倒过来变成了573。
实验二:递归函数(一)实验目的要求:掌握函数的概念和使用方法,掌握递归函数的概念和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:1.用递归函数来求1!+2!+3!+…+12!。
2.用递归的方法建立一个函数int fibonacci(int n),求Fibonacci数列中第n个数的值。
实验三:用气泡法排序(一)实验目的要求:掌握文件读写的方法,掌握递归函数的概念和使用方法。
(二)实验设备:1.服务器;2.交换机;3.计算机。
(三)实验内容:建立一个文件,文件中包含一系列数,用这些数构成一个数组,并按照数值,为这个数组从小到大排序,把排序结果输出到另一个文件中。
实验四 Java语言面向对象基础编程一、实验目的1.理解Java语言是如何体现面向对象编程基本思想,2.了解类的封装方法,以及如何创建类和对象,3.了解成员变量和成员方法的特性。
二、实验内容1.类的定义、封装和对象创建的使用。
编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。
具体要求如下:(1)Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。
另外,Trangle类还具有一个boolean 型的属性,该属性用来判断三个属能否构成一个三角形。
(2)Lader类具有类型double的上底、下底、高、面积属性,具有求面积的功能。
(3)Circle类具有类型为double的半径、周长和面积属性,具有求周长、面积的功能。
package exercise;class Trangle{double sideA,sideB,sideC,area,length;boolean boo;//带三个参数的构造函数public Trangle(double a,double b,double c) {sideA=a;//参数a,b,c 分别赋值给sideA,sideB,sideCsideB=b;sideC=c;if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideB+sideC>sideA){//a,b,c 构成三角形的条件表达式boo=true;//给boo 赋值。
}else{boo=false;//给boo 赋值。
}}double getLength(){return sideA+sideB+sideC;//方法体,要求计算出length 的值并返回}//计算三角形的面积publicdouble 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;}}publicvoid setABC(double a,double b,double c){sideA=a;//参数a,b,c 分别赋值给sideA,sideB,sideCsideB=b;sideC=c;if(sideA+sideB>sideC&&sideA+sideC>sideB&&sideB+sideC>sideA){//a,b ,c 构成三角形的条件表达式boo=true;//给boo 赋值。
实验四类与对象实验(设计性实验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.理解封装含义;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);}}运行结果五、实验总结。
类与对象的设计实验报告一、实验目的本实验旨在通过设计类与对象,加深对面向对象编程的理解,掌握类的定义、对象的创建和调用以及类与对象之间的关系。
二、实验过程1. 类的定义首先根据需求分析,确定了需要设计的类,包括Student类和Course 类。
其中Student类包括学生的姓名、学号、性别和年龄等属性,还包括选修的课程信息;Course类包括课程的名称、学分和教师等属性。
pythonclass Student:def __init__(self, name, student_id, gender, age): = nameself.student_id = student_idself.gender = genderself.age = ageself.courses = []def add_course(self, course):self.courses.append(course)def show_courses(self):for course in self.courses:print(course)class Course:def __init__(self, name, credit, teacher): = nameself.credit = creditself.teacher = teacherdef __str__(self):return f"Course: {}, Credit: {self.credit}, Teacher: {self.teacher}"2. 对象的创建和调用在主程序中,我们可以创建相应的对象并进行属性赋值、方法调用等操作。
pythons1 = Student("Tom", 1001, "male", 18)c1 = Course("Math", 4, "Mr. Smith")c2 = Course("English", 3, "Ms. Johnson")s1.add_course(c1)s1.add_course(c2)s1.show_courses()3. 类与对象之间的关系通过调用对象的方法,我们可以为一个学生对象添加多门课程,进一步说明了类与对象之间的关系。
实验6:类与对象一 、实验目的1.学习类与对象的定义和声明;2.掌握类与对象的使用方法;3.学习数据成员与成员函数的访问方式。
二、实验仪器:1.硬件:Lenovo通用PC机,2.软件:WINDOWS7,WORD,Microsoft VC++ 6.0编译器三、实验原理:1. 类的定义方法class 类名{类的成员;};2. 成员的访问属性(1)private:私有访问属性(2)protected:保护访问属性(3)public:公有访问属性3.成员函数的定义方法(1)定义在类中,处理为内联函数(2)定义在类外,用::表示隶属关系,可由用户指定是否是内联函数四、实验步骤:1.编程实现一个student类,管理一个学生的基本信息,包括学生姓名、学号、语文成绩、数学成绩、英语成绩、平均成绩等数据成员,然后在main函数中,从键盘输入得到一个学生的基本信息,最后输出所有数据成员值到屏幕上;2.完成教材习题3.30和3.31(以下题目说明可以不写到报告上)30题:下面是一个计数器类的定义,请完成该类成员函数的实现。
class counter{ public:counter(int number);void increment(); //给原值加1void decrement(); //给原值减1int getvalue(); //取得计数器值int print(); //显示计数器值private:int value;}31题:根据注释语句的提示,实现Date的成员函数。
#include<iostream>using namespace std;class Date{ public:void printDate(); //显示日期void setDay(int d); //设置日的值 void setMonth(int m); // 设置月的值 void setYear(int y); //设置年的值 Private:int day,month,year;};int main(){Date testDay;testDay.setDay(5);testDay.setMonth(10);testDay.setYear(2003);testDay.printDate();};五、数据处理及结论《此处填写答案代码,关键语句需要注释》。
面向对象的编程C++ 课程实验报告课程名称面向对象的编程C++班级B0901 实验日期姓名贺军学号09405020107 实验成绩实验名称实验:类和对象(1)实验目的及要求了解面向对象程序设计基本原理及主要特点——抽象、封装、继承和多态,掌握类和对象的概念以及如何利用类来解决具体问题。
实验环境Visual C++集成环境、Windows XP 操作系统实验内容1. 写出声明一个称为Employee的类的代码,该类有一下数据成员:age、yearsOfService、Salary;重写Employee类使其数据成员为私有并提供公有方法来获得和设置每个数据成员;写一个带有Employee类的程序,生成两个Employees;设置它们的age、yearsOfService和Salary;且打印它们的值。
2. 定义一个Dog类,包含name、age、sex和weight等属性及对这些属性的操作方法。
实现并测试这个类。
参考输出结果:算法描述及实验步骤定义一个类Employee。
在主函数中,定义了该类的两个一般对象d1和d2,有定义了一个指向类Employee的指针pd,初始化后它指向对象d2。
通过调试成员函数setEmployee()分别给对象d1和d2进行了赋值,即改变了这两个对象的数据成员的值。
根据给出的四个条件设置不同的类型的参数,在根据类的定义格式写出程序。
在定义name时,一定要注意设置参数。
调试过程及实验结果总结(对实验结果进行分析,问题回答,实验心得体会及改进意见)附录第一个程序:#include<iostream.h>class Employee{public:void setEmployee(int a,int b,int c){age=a;yearofservice=b;salary=c;}void Print(){cout<<"age="<<age<<"yearofservice="<<yearofservice<<"salary="<<salary<<endl;}private:int age,yearofservice,salary;};void main(){第二个程序:#include <iostream.h>#include <string.h>class Dog{public:Dog(char a[],int b,char c,float d){strcpy(name,a);age=b;sex=c;weight=d;}void print(){cout<<"Dog'name:"<<name<<endl;cout<<"Dog'age:"<<age<<endl;cout<<"Dog'sex:"<<sex<<endl;cout<<"Dog'weight:"<<weight<<endl;Employee d1,d2,*pd=&d2;d1.setEmployee(26,2,5000); pd->setEmployee(34,1,4800); d1.Print();d2.Print();}}private:char name[20];int age;char sex;float weight;};void main(){Dog d("旺财",3,'m',2.4);d.print();}。
实验4 类的定义一、实验目的1.掌握类的定义2.了解如何根据描述发现类及其成员,具备初步的面向对象分析与设计能力二、实验概述现在有一个奥特曼打怪兽的角色扮演游戏。
请你根据下面的描述,定义两个类:奥特曼类和怪兽类。
在奥特曼的世界,打怪兽就是全部。
现在人人都有机会成为奥特曼,加入到与怪兽无止境的战斗中。
可惜,并非人人生来就是英雄,革命尚未成功,同志仍需努力啊。
每一个奥特曼都要从零开始,辛勤劳动,打怪升级,最终才能成为举世瞩目的大英雄。
奥特曼的等级(rank)从第一级开始,随着它打怪兽经验(exp)的增加,等级将不断攀升。
随着等级的升高,奥特曼的生命值(hp)上限和攻击力(damage)也将大大增强。
在与怪兽的战斗中,奥特曼收获的不仅仅是经验。
有时,运气好的话,还能从怪兽身上弄到点小钱(money)。
不要小看这些钱,关键时刻,它能给奥特曼买药补血呀。
奥特曼没有金刚不坏之身,在与怪兽的战斗中,奥特曼会受到伤害。
一旦奥特曼的生命值降到0,它英雄的一生就结束了。
好了,了解了奥特曼的基本情况,现在可以开始战斗了。
首先,我们需要一位全新的奥特曼,我们给它赋予一定的初始实力(initial)。
让它投入战斗吧!在与怪兽的战斗中要讲究策略。
所谓知己知彼,百战不殆,一旦碰到怪兽,我们首先要查看自己和对方的实力(display),包括双方的等级、生命值、攻击力、经验和所拥有的钱财。
所谓打得赢就打,打不赢就跑。
如果对手太强大,逃跑吧(escape)!偶尔逃跑无伤颜面,但会耗费一点生命值。
如果总是逃跑,生命被虚耗,那英雄就当不成了。
所以该出手时就出手,勇敢地战斗(attack)吧!每一回合的战斗中,怪兽会受到攻击(attacked),怪兽也会反击(fightback),让奥特曼受到攻击(attacked)。
每一回合结束,只要奥特曼还活着(isalive),而且怪兽也还活着,战斗就要继续。
如果奥特曼的生命值太低,也许抵挡不了下一轮的进攻,那么别财迷了,掏钱出来给它补血(restore)吧。
一、实验目的1. 理解类的定义和基本概念。
2. 掌握如何使用类定义实现数据封装和抽象。
3. 学会使用类定义创建对象,并调用对象的方法。
二、实验环境1. 操作系统:Windows 102. 编程语言:Java3. 开发工具:IntelliJ IDEA三、实验内容1. 创建一个名为“Person”的类,包含以下属性和方法:- 属性:name(姓名)、age(年龄)、gender(性别)- 方法:setName(设置姓名)、getName(获取姓名)、setAge(设置年龄)、getAge(获取年龄)、setGender(设置性别)、getGender(获取性别)、toString(返回对象的字符串表示)2. 在主函数中创建一个“Person”对象,并使用该对象调用相关方法进行测试。
四、实验步骤1. 创建一个名为“Person”的类,包含name、age、gender三个属性,以及相应的setter和getter方法。
```javapublic class Person {private String name;private int age;private String gender;public void setName(String name) { = name;}public String getName() {return name;}public void setAge(int age) {this.age = age;}public int getAge() {return age;}public void setGender(String gender) {this.gender = gender;}public String getGender() {return gender;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +", gender='" + gender + '\'' +'}';}}```2. 在主函数中创建一个“Person”对象,并使用该对象调用相关方法进行测试。