Student类定义
实验2 类、对象定义与实现

实验2 类、对象定义与实现一类和对象(1) (2学时)实验目的:1.掌握类的定义方法。
2.掌握类成员函数的定义方法。
3.掌握类对象的定义及其访问方式。
4.理解构造函数和析构函数的定义、作用和调用机制。
5.掌握拷贝构造函数的作用和用法。
实验内容:1.定义一个学生类Student,学生类中有3个私有数据成员:num(学号)、name (姓名)、age(年龄);3个公有成员函数:Student(构造函数)、display、~Student(析构函数)。
使用构造函数为Student类的对象赋值(name使用动态内存分配空间),display负责显示学生的基本信息,在析构函数中释放动态分配的内存。
2.阅读程序,预测功能,再上机编辑、运行该程序,以验证自己的预测。
分析:理解拷贝构造函数的目的和调用。
在三种情况下,系统自动调用拷贝构造函数。
⑴当用类的一个对象去初始化该类的另一个对象时;⑵如果函数的形参是类的对象,调用函数,进行形参和实参的结合时;⑶如果函数的返回值是类的对象,函数执行完成返回调用者时。
以下程序都是定义一个屏幕上的点类,该类具有x、y坐标属性。
【程序1】#include <iostream.h>class Point{public:Point(int xx = 0, int yy = 0){X = xx; Y = yy;cout<<"调用构造函数\n";}Point(Point &p);int GetX(){ return X; }int GetY(){ return Y; }private:int X,Y;};Point::Point(Point & p){X = p.X;Y = p.Y;cout<<"调用拷贝构造函数\n";}void main(){Point A(3,4);Point B(A); //b行cout<<B.GetX()<<"\n";}思考:⑴将b行改写为Point B = A; 程序输出结果会有变化吗?⑵将b行改写为Point B; B = A; 程序输出结果会有变化吗?【程序2】#include <iostream.h>class Point{public:Point(int xx = 0,int yy = 0){X = xx; Y = yy;cout<<"调用构造函数\n";}Point(Point & p);int GetX(){ return X; }int GetY(){ return Y; }private:int X,Y;};Point::Point(Point & p){X = p.X;Y = p.Y;cout<<"调用拷贝构造函数\n";}void fun1(Point p)cout<<p.GetX()<<"\n";}void main(){Point A(4,5);Point B(A);cout<<B.GetX()<<"\n";fun1(B); //调用拷贝构造函数,实现形参和实参结合}` 【程序3】#include <iostream.h>class Point{public:Point(int xx=0,int yy=0){X = xx; Y = yy;cout<<"调用构造函数\n";}Point(Point & p);int GetX() {return X;}int GetY() {return Y;}private:int X,Y;};Point::Point(Point &p){X=p.X;Y=p.Y;cout<<"调用拷贝构造函数\n";}Point fun2(){Point Temp(10,20); //调用构造函数return Temp;}void main()Point A(4,5);Point B(A);cout<<B.GetX()<<"\n";B = fun2();cout<<B.GetX()<<"\n";}3.创建类Block用来描述长方体,私有数据成员length、width、height记录长方体的长、宽、高。
定义一个表示学生的类Student,

实验报告三学生姓名:学号:专业班级:实验类型:□验证□综合□设计□创新实验日期:实验成绩:一、实验项目名称编写程序并运行二、实验目的熟练掌握如何自定义一个类。
熟练掌握如何定义构造函数,如何创建对象。
三、实验基本原理实验一class Student {private String number,name,sex;private int age;public Student(String nu,String na,String s,int a){number=nu;name=na;sex=s;age=a;}public String getnumber( ){return number;}public String getname( ){return name;}public String getSex( ){return sex;}public int getAge( ){return age;}public void setAge(int a){age=a;}public String toString(){return"number="+number+",name="+name+",sex="+sex+",age="+age;}public static void main(String[] args){Student s=new Student("6100510023","wanwan","female",21);System.out.println(s.toString());}}四、主要仪器设备及耗材五、实验步骤定义一个表示学生的类Student,包括属性“学号”、“班号”、“姓名”、“性别”、“年龄”;方法“获得学号”、、“获得姓名”、“获得性别”、“获得年龄”、“修改年龄”。
结构类型

结构类型1.结构类型的定义①.直接用表示结构的关键字struct直接定义,例如:struct student 定义结构类型student;{int num; 学号char name[20]; 姓名char sex; 性别int age; 年龄float score; 分数};这是定义了一个关于学生的结构类型,类型名为student,该结构有五个成员。
结构的成员也称为域。
一个结构类型有几个域,根据所要处理的问题来决定。
②.定义的另外一种方法是用关键字typedef和struct来定义,例如:typedef struct{int num; 学号char name[20]; 姓名char sex; 性别int age; 年龄float score; 分数}STUDENT;这样定义的结构类型名为STUDENT,成员与前面的定义相同。
2.结构类型的嵌套定义对于上面的student类型,如果增加一个birthday域,此域又是由year,month,day三个域组成的结构类型,那么student定义中将出现结构类型嵌套定义,即:Typedef struct{Int year;Int month;Int day;}DA TE;Struct student{int num; 学号char name[20]; 姓名char sex; 性别int age; 年龄float score; 分数DA TE birthday; 这里的birthday不是简单类型而是结构类型,这种结构类型的某个成员又是结构类} 型的定义就是结构类型的嵌套定义。
3.全局结构类型定义域局部结构类型的定义在所有函数外定义的结构类型称作全局结构类型,可以在其后的所有函数中使用;在某个函数中定义的结构类型称作局部结构类型,只能在其定义的函数中使用。
4.结构类型变量的定义结构类型名和int char等一样,不能用来存储数据,必须用其来定义变量,定义的变量才能够储存数据。
4-2类图练习题

Student
Teacher
Professor
1 1 UnderGraduate Graduate TeacherAssistant n
1
2 创建类图 。 系统需求描述: (1)系统允许管理员通过从磁盘加载存货数据来运 行存货清单报告。 (2)管理员通过从磁盘加载存货数据、向磁盘保存 存货数据来更新存货清单。 (3)售货员做销售记录。 (4)电话操作员是处理电话订单的特殊售货员。 (5)任何类型的销售都需要更新存货清单。 (6)如果交易使用了信用卡,那么售货员需要核实 信用卡。 (7)如果交易使用了支票,那么售货员需要核实支 票。
类图练习题
1创建一个类图。下面给出创建类图所需的信息。 学生(student)可以是在校生 (undergraduate)或者毕业生(graduate)。 在校生可以是助教(tutor)。 一名助教指导一名学生。 教师和教授属于不同级别的教员。 一名教师助理可以协助一名教师和一名教授, 一名教师只能有一名教师助理,一名教授可以 有5名教师助理。 教师助理是毕业生。
credit card +Verify() 0..* n sale +Update() check +verify() 0..* n 1 n +Load() +Save() +Update()
inventory
3 图书管理系统需求如下: 添加图书 删除图书 添加标题 删除标题 添加借阅者信息 删除借阅者信息 登陆
phone order
walk-in sale
telephone operator
sales clerk
创建类图的步骤如下所示: (1)确定可以在用例图中找到的类。 (2)建模类与类之间的关系。 (3)为类图中的关联关系添加合适的角色名。 (4)为已被封装到类中的独立功能建模类。 (5)为类图中的类添加必要的特性和操作。
实验5 类和对象1答案

实验5:Java类与对象一、实验目的(1)使用类来封装对象的属性和功能;(2)掌握Java类的定义。
(3)java对象的使用二、实验任务(1)按要求编写一个Java程序。
(2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。
三、实验内容1.编写一个Java程序片断,以定义一个表示学生的类Student。
这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄”。
2.为类Student增加一个方法public String toString( ),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。
编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。
class Student{long studentID;int classID;String name;String sex;int age;public Student(long studentID,int classID,String name,String sex,int age){ this.studentID=studentID;this.classID=classID;=name;this.sex=sex;this.age=age;}public long getStudentID(){return studentID;}public int getClassID(){return classID;}public String getName(){return name;}public String getSex(){return sex;}public int getAge(){return age;}public String toString(){return "学号:"+getStudentID()+"\n班号:"+getClassID()+"\n姓名:"+getName()+"\n性别:"+getSex()+"\n年龄:"+getAge();}}public class StudentDemo{public static void main(String[] args){Student s1=new Student(90221,2,"Tom","male",20);System.out.println(s1.toString());}}运行结果:学号:90221班号:2姓名:Tom性别:male年龄:202.程序填空,程序中包含以下内容:一个学生类(Student),包含:属性:学号s_No,姓名s_Name,性别s_Sex,年龄s_Age。
类和类属性的定义、访问

类和类属性的定义、访问⼀、类的定义: 在⼀个类中,除了可以包含前⾯所说的属性,还可以包含各种⽅法。
属性对应⼀个类可以⽤来保存哪些数据,⽽⽅法对应⼀个类可以⽀持哪些操作(即数据处理)。
⼩提⽰: 类中的属性对应前⾯所学习的变量,⽽类中的⽅法对应前⾯所学习的函数。
通过类,可以把数据和操作封装在⼀起,从⽽使得程序结构更加清晰,这也就是所谓的类的封装性。
类的定义形式: class 类名: 语句1 语句2 ... ... 语句N提⽰:类体的各语句需要采⽤缩进⽅式以表⽰它们是类中的语句。
例:创建Student类对象class Student: #定义⼀个名字为Student的类pass#⼀个空语句,起到占位作⽤,表⽰Student类中没有任何属性和⽅法if__name__=='__main__':stu=Student() #创建Student类的对象,并将创建的对象赋给变量stuprint(stu) #输出stu输出:<__main__.Student object at 0x000002300639F4E0>提⽰:每次创建对象时,系统都会在内存中选择⼀块区域分配给对象,每次选择的内存通常是不⼀样的。
因此,实际运⾏时会看到⼀个不同的stu对象地址。
⼆、类属性的定义我们可以直接在定义类时指定该类的属性,即类属性。
例如: class Student: #定义Student类 name='Unknown' #定义Student类中有⼀个name属性对类属性的访问,既可以直接通过类名访问,也可以通过该类的对象访问,访问⽅式为:类名或对象名.属性名例:类属性的访问⽰例1class Student: #定义Student类2 name='Unknown'#定义Student类中有⼀个name属性3if__name__=='__main__':4print('第4⾏输出:',)5 stu1=Student() #创建Student类对象stu16 stu2=Student() #创建Student类对象stu27print('第7⾏输出:stu1 %s,stu2 %s'%(,))8 ='未知'#将Student的类属性name赋为“未知”9print('第9⾏输出:',)10print('第10⾏输出:stu1 %s,stu2 %s'%(,))11 ='李晓明'#将stu1的name属性赋值为“李晓明”12 ='马红'#将stu2的name属性赋值为“马红”13print('第13⾏输出:',)14print('第14⾏输出:stu1 %s,stu2 %s'%(,))15 ='学⽣'#将Student的类属性name赋为“学⽣”16print('第16⾏输出:',)17print('第17⾏输出:stu1 %s,stu2 %s'%(,))第4⾏输出: Unknown第7⾏输出:stu1 Unknown,stu2 Unknown第9⾏输出:未知第10⾏输出:stu1 未知,stu2 未知第13⾏输出:未知第14⾏输出:stu1 李晓明,stu2 马红第16⾏输出:学⽣第17⾏输出:stu1 李晓明,stu2 马红三、为对象动态绑定新属性 Python作为⼀种动态语⾔,除了可以在定义类时指定类属性外, 还可以动态地为已经创建的对象绑定新的属性。
java学生类的创建和使用

java学生类的创建和使用在Java中,创建一个学生类(Student)的基本步骤如下:1. 定义类:首先,你需要定义一个名为"Student"的类。
这个类将包含描述学生属性的字段(例如姓名、年龄和成绩)和描述学生行为的方法(例如打印学生信息)。
2. 创建类的实例:在Java中,创建类的实例是通过使用关键字"new"实现的。
你可以使用"new"关键字创建一个新的Student对象。
3. 访问对象的字段和方法:一旦你创建了一个Student对象,你就可以通过该对象访问其字段和方法。
下面是一个简单的示例代码,演示如何创建一个Student类并使用它:```java// 创建一个名为Student的类public class Student {// 定义学生属性字段private String name;private int age;private int grade;// 构造方法,用于初始化学生属性public Student(String name, int age, int grade) { = name;= age;= grade;}// 打印学生信息的方法public void printInfo() {("Name: " + name);("Age: " + age);("Grade: " + grade);}}// 主类,包含main方法,用于测试Student类public class Main {public static void main(String[] args) {// 创建一个新的Student对象Student student = new Student("John Doe", 18, 90);// 访问和打印学生信息();}}```在这个示例中,我们创建了一个名为Student的类,它有三个私有字段(name、age和grade)和一个构造方法。
4-2类图练习题

用例图示例
Administrator update inventory
<<include>> load inventory data <<include>>
run inventory reports
save inventory data <<include>>
<<include>> <<extend>> sale <<extend>> verify check verify credit card
credit card +Verify() 0..* n sale +Update() check +verify() 0..* n 1 n +Load() +Save() +Update()
inventory
3 图书管理系统需求如下: 添加图书 删除图书 添加标题 删除标题 添加借阅者信息 删除借阅者信息 登陆
创建类图的步骤如下: (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类的派生类。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cout<<"sex:"<<sex<<endl;
cout<<"score:"<<score<<endl;
}
void Student::input() //输入学生信息函数
{
cout<<"请输入学生信息:"<<endl;
cout<<"学号姓名性别成绩:"<<endl;
cin>>num;
cin>>name;
cin>>sex;
cin>>score;
}
//这是必须掌握的
class Student //定义Student类-存放学生信息
{
public:
Student(); //无参构造函数
Student(string ,string ,char, int); //有参构造函数
~Student(); //析构函数
void display(); //输出函数
{ቤተ መጻሕፍቲ ባይዱ
num=n;
name=nam;
sex=s;
score=c;
}
Student::~Student() //析构函数-函数体为空
{
//cout<<"Destructor called."<<endl;
}
void Student::display() //输出学生信息函数
{
cout<<"num:"<<num<<endl;
void input(); //输入函数
private:
string num; //学号
string name; //姓名
char sex; //性别
int score; //成绩
};
//成员函数的实现
Student::Student(string n,string nam,char s, int c) //有参构造函数,将参数值赋给成员