C实验报告第四章类与对象
C#实验四类与对象

实训五、在C#中实现面向对象编程一、实训目的:通过本章的学习,主要把握以下内容:•理解C# 的类和对象•使用C# 构造函数和析构函数•使用C# 访问修饰符•使用方法•在C#中使用方法的重写•理解属性及其不同的类型、实现•理解和使用索引器三、实验目的与要求(1)加深理解面向对象编程的概念,如类、对象、实例化等;(2)熟悉掌握类的声明格式,特别是类的成员定义、构造函数、初始化对象等。
(3)数量掌握方法的声明,理解并学会使用方法的参数传递,方法的重载等。
四、实训内容:(1)定义一个描述学生基本情况的类,数据成员包括姓名,学号,C#、英语和数学成绩。
成员函数包括输出数据、置姓名和学号、置三门课的成绩,求出总成绩和平均成绩。
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ClassStudent{class Program{class Student{public string Sname;public string Sno;public int Csharp;public int English;public int Math;public void display(){Console.WriteLine("大䨮家¨°好?!ê?我¨°是º? {0}分¤? ,ê?学¡ì号?是º? {1} ,ê?我¨°的Ì?C#成¨¦绩¡§ {2}分¤? 我¨°的Ì?英®¡é语®?成¨¦绩¡§ {3}分¤? 我¨°的Ì?数ºy学¡ì成¨¦绩¡§ {4}分¤? ", this.Sname, this.Sno, this.Csharp, this.English, this.Math);//this.我¨°自Á?己o的Ì?****}public void GiveSname(string name){this.Sname = name;}public void GiveSno(string Sno){this.Sno = Sno;}public void GiveCsharp(int Csharp){this.Csharp = Csharp;}public void GiveEnglish(int English){this.English = English;}public void GiveMath(int Math){this.Math = Math;}public double Avg(int c, int e, int m){double avg = (c + e + m) / 3.0;return avg;}public double Count(int c, int e, int m){double con = (c + e + m);return con;}}static void Main(string[] args){double a, c;Student s = new Student();Console.WriteLine("姓?名?:êo");String Sname = Console.ReadLine();s.GiveSname(Sname);Console.WriteLine("学¡ì号?:êo");String Sno = Console.ReadLine();s.GiveSno(Sno);Console.WriteLine("C#成¨¦绩¡§:êo");int Csharp = Convert.ToInt16(Console.ReadLine());s.GiveCsharp(Csharp);Console.WriteLine("英®¡é语®?成¨¦绩¡§:êo");int English = Convert.ToInt16(Console.ReadLine());s.GiveEnglish(English);Console.WriteLine("数ºy学¡ì成¨¦绩¡§:êo");int Math = Convert.ToInt16(Console.ReadLine());s.GiveMath(Math);s.display();Console.WriteLine("我¨°的Ì?平?均¨´分¤?是º? {0}分¤? ,ê?我¨°的Ì?总Á¨¹分¤?是º? {1}分¤? ", a = s.Avg(Csharp, English, Math), c = s.Count(Csharp, English, Math));}}}(2)定义一个人员类CPerson,包括数据成员:姓名、编号、性别和用于输入输出的成员函数。
实验报告(类和对象4)

class Sell
{
public:static void A
(int n, double price);
static double getSum();
static double getPri();
private:static double sum;
static double Pri;
}
double Sell::getPri()
{
returnBiblioteka Pri;}double Sell::getSum()
{
return sum;
}
int main()
{
Sell::A(5, 25);
Sell::A(10, 23);
Sell::A(20, 20);
cout<<Sell::getSum()<<endl;
程序一:
程序二:
总结
(对实验结果进行分析,问题回答,实验心得体会及改进意见)
注意静态成员的定义,调用函数时要那顺序编辑,到时候方便修改。
附录
(源程序清单等)
程序一:
#include<iostream>
using namespace std;
class Car;
class Dog
{
private: int Dogweight;
cout<<Sell::getPri()<<endl;
return 0;
}
.
C++程序设计语言课程实验报告
课程名称
C++程序设计语言
班级
B1101
C 类和对象实验报告

C 类和对象实验报告C++类和对象实验报告引言:C++是一种面向对象的编程语言,它提供了类和对象的概念,使得程序的设计和实现更加模块化和可重用。
本实验旨在通过实际编程操作,深入理解C++中类和对象的概念,并掌握其基本用法。
实验目的:1. 理解类和对象的概念;2. 掌握类的定义和对象的创建方法;3. 熟悉类的成员变量和成员函数的使用;4. 学会通过对象调用成员函数实现数据的封装和操作。
实验内容:1. 类的定义和对象的创建在C++中,通过关键字class可以定义一个类。
类定义了一种数据类型,它包含了数据成员和成员函数。
我们可以通过类来创建对象,即类的实例化。
例如,我们可以定义一个类Person,其中包含姓名和年龄两个数据成员,以及一个显示个人信息的成员函数。
然后通过Person类来创建多个对象,每个对象都有自己的姓名和年龄。
2. 成员变量和成员函数的使用类的成员变量是类的数据成员,用于存储对象的状态信息。
成员函数是类的操作成员,用于实现对对象的操作和功能。
在类的成员函数中,可以通过this指针来访问对象的成员变量和成员函数。
this指针指向当前对象的地址,可以用于区分不同对象的成员变量和成员函数。
例如,在Person类的成员函数中,可以通过this指针来访问当前对象的姓名和年龄。
3. 数据的封装和操作类的一个重要特性是数据的封装,即将数据和操作数据的函数封装在一起,形成一个完整的类。
通过对象调用成员函数,可以实现对数据的操作。
例如,在Person类中,我们可以定义一个设置姓名的成员函数set_name()和一个获取姓名的成员函数get_name()。
通过对象调用这两个成员函数,可以设置和获取对象的姓名。
实验结果:通过实验,我们成功定义了一个Person类,并创建了多个Person对象。
通过对象调用成员函数,实现了对对象的操作和数据的封装。
通过实验,我们深入理解了C++中类和对象的概念,掌握了类的定义和对象的创建方法,熟悉了类的成员变量和成员函数的使用,学会了通过对象调用成员函数实现数据的封装和操作。
实验4(类与对象)

void Increment(); //给原值加1
void Decrement(); //给原值减1
int GetValue(); //获取计算结果
void Print(); //输出计算结果
};
*10、定义一个字符串处理类CString,此类具有两个数据成员:字符串的内容(contents)和长度(length),并实现字符串的一系列操作,如显示字符串、计算字符串的长度、给现有字符串后添加字符串、给字符串赋值、查找字符窜中字符和子串等功能。
}
void main()
{
time_t x;
x=time(NULL);
time_data ob(x);
ob.show();
return;
}
9、下面是一个计算器类的定义,请完成该类的实现,并在主函数中实现18、19、20等的加1;减1;显示计算结果。
class Counter{
int value;
public:
class time_data
{
private:
time_t systime;
public:
time_data(time_t t);
void show();
};
time_data::time_data(time_t t)
{
systime=t;
}
void time_data::show()
{
cout<<ctime(&systime)<<endl;
{
cout<<"Price="<<Price<<" "<<"Count"<<Count<<" Total="<<Total<<endl;
类与对象的实验报告

类与对象的实验报告类与对象的实验报告引言:在计算机科学领域,类与对象是面向对象编程(Object-Oriented Programming,简称OOP)的核心概念之一。
类是一种抽象的数据类型,用于描述具有相同属性和行为的对象集合。
对象则是类的实例,具体化了类的属性和行为。
本实验旨在通过编写一个简单的类与对象的程序,深入理解类与对象的概念及其在编程中的应用。
实验过程:1. 定义一个类:在这个实验中,我们以动物为例,定义了一个名为Animal的类。
该类具有以下属性和行为:- 属性:名称、年龄、种类- 行为:吃、睡、叫2. 创建对象:在主程序中,我们创建了两个Animal对象,分别代表一只狗和一只猫。
通过调用构造函数,为对象的属性赋值。
3. 调用对象的方法:我们通过调用对象的方法,模拟了动物的行为。
例如,我们调用了eat()方法,让动物吃东西;调用了sleep()方法,让动物睡觉;调用了make_sound()方法,让动物发出叫声。
4. 修改对象属性:我们还演示了如何修改对象的属性。
通过调用set_age()方法,我们改变了动物的年龄;通过调用set_type()方法,我们改变了动物的种类。
实验结果:通过运行程序,我们观察到以下结果:- 狗的名称是"旺财",年龄是3岁,种类是"狗"。
狗吃骨头,睡觉时打呼噜,发出汪汪的叫声。
- 猫的名称是"咪咪",年龄是2岁,种类是"猫"。
猫吃鱼,睡觉时打呼噜,发出喵喵的叫声。
- 经过修改后,狗的年龄变为5岁,种类变为"藏獒";猫的年龄变为3岁,种类变为"波斯猫"。
讨论与分析:通过这个实验,我们深入理解了类与对象的概念及其在编程中的应用。
类是一种抽象的模板,用于描述具有相似属性和行为的对象集合。
对象是类的实例,具体化了类的属性和行为。
通过定义类和创建对象,我们可以更好地组织和管理程序的代码。
[实验报告]类和对象
![[实验报告]类和对象](https://img.taocdn.com/s3/m/8f6f0aaeb9f67c1cfad6195f312b3169a451ea9b.png)
string name[100];
float math[100],English[100],c[100];
double p[100];
public:
void input();
void count();
void output();
};
int main()
{
News a;
a.input();
a.count();
a.output();
return 0;
}
void News::input()
{
cout<<"请输入共有几位同学:";
cin>>num;
for(i=1;i<=num;i++)
{
cout<<"请输入第"<<i<<"个同学的姓名和数学,英语,c++成绩:";
cin>>name[i];
计算学生的平均成绩的函数;
在main函数中调用以上函数实现相应功能。
步骤如下:
1、打开电脑,双击桌面C++的快捷方式就启动了C++程序。
2、输入程序,代码如下:
#include<iostream>
#include<string>
using namespace std;
class News
{
private:
cin>>math[i]>>English[i]>>c[i];
}
}
void News::count()
类与对象实验报告

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

c 类与对象实验报告C++ 类与对象实验报告一、引言C++ 是一种面向对象的编程语言,它提供了类和对象的概念,使得程序的设计和实现更加模块化和可维护。
本实验旨在通过实际案例,深入理解 C++ 类与对象的概念和使用方法。
二、实验目的1. 掌握类的定义和对象的创建。
2. 熟悉类的成员变量和成员函数的使用。
3. 理解构造函数和析构函数的作用和使用。
4. 学会使用访问权限控制类的成员。
5. 掌握类的继承和多态的概念。
三、实验过程1. 类的定义和对象的创建在 C++ 中,类是一种用户自定义的数据类型,它由数据成员和成员函数组成。
通过类的定义,我们可以创建对象,即类的实例。
对象是类的具体化,它可以调用类的成员函数来完成特定的操作。
2. 成员变量和成员函数的使用类的成员变量是类的属性,它们用于存储对象的状态信息。
成员函数是类的行为,它们用于实现对象的操作。
通过成员变量和成员函数的配合使用,我们可以实现对对象的控制和操作。
3. 构造函数和析构函数的作用和使用构造函数是一种特殊的成员函数,它在对象创建时被调用,用于初始化对象的成员变量。
析构函数也是一种特殊的成员函数,它在对象销毁时被调用,用于释放对象占用的资源。
构造函数和析构函数的使用可以保证对象的正确初始化和销毁。
4. 访问权限控制类的成员在 C++ 中,类的成员可以设置为私有、保护或公有。
私有成员只能在类的内部访问,保护成员可以在类的内部和派生类中访问,公有成员可以在任何地方访问。
通过访问权限控制,我们可以限制对类的成员的访问,提高程序的安全性和可维护性。
5. 类的继承和多态的概念类的继承是一种重要的面向对象的特性,它允许我们创建一个新的类,从已有的类派生而来。
派生类继承了基类的成员变量和成员函数,并可以添加新的成员变量和成员函数。
多态是指在继承关系中,派生类可以重写基类的成员函数,实现不同的行为。
通过继承和多态,我们可以实现代码的重用和灵活性。
四、实验总结通过本次实验,我深入理解了 C++ 类与对象的概念和使用方法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++实验报告
实验4 类与对象
一、实验目的
1、掌握类的声明和使用
2、掌握类的声明和对象的声明
3、复习具有不同访问属性的成员的访问方式
4、观察构造函数和析构函数的执行过程
5、学习类的组合使用方法
6、使用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:首先声明枚举类型,在这里出现了知识性错误,不清楚具体应如何声明,经查询相关书籍,知道应在类外进行声明。
初次用类来进行编程,在概念上是有一些混乱的,例如构造函数和析构函数的调用顺序等。
在用debug单步调试后,明白其中道理。
源程序:
b.
c.
d.
3、执行对象的run()和stop()
4、调用析构函数
所遇问题:
1、枚举类型的定义不知如何书写,不能准确理解枚举的意义,从而,导致开始便出现错误。
2、创建带参数的对象则调用带参数的构造函数,结果清晰明了,不用刻意添加默认构造函数。
任务2:此例主要考察对类的组合的应用同理解。
在Lab4-1的基础上,进行类的组合的编写,特别要注意的是组合类构造函数的实现!在实验中,开始并没有认真理解清楚组合类构造函数的定义,导致运行出错,在请教老师和同学后,发现是构造函数的调用出现问题,之后经过改正,最终程序能够成功运行。
源程序:
建CPU、RAM、CDROM类的对象,依次调用其构造函数
2.创建组合类COMPUTER的对象,调用组合类复制构造函数,(注意:其中首先调用CDROM的复制构造函数),同时,创建完成后,立刻析构
3.组合类的对象构造结束,并且到达其生存期末时,调用析构函数
所遇问题:
1、未编写复制构造函数,当创建组合类对象时,调用默认构造函数,因而在DOS 界面不显示复制函数的构造过程。
2、当进行调用复制构造函数时,系统先对初始化列表中位于后方的参数进行赋值,因此,先输出“使用构造函数构造了一个CDROM”。
3、析构函数执行过程恰与构造过程相反,同时,析构函数调用的次数和构造函数的调用次数正好相对应,均为10次。
任务3:考察构造函数和析构函数、拷贝构造函数、内联成员函数和组合类的应用。
首先声明一个Date类,然后创建Date类的对象birthday,同时,birthday 也是People类的私有数据成员之一,运用组合类的概念,实现最终的程序运行。
源程序:
//
#include<iostream>
#include<string>
using namespace std;
class Date{ //Date类的定义
int year;
int month;
int day;
Date(){}
Date(int y,int m,int d){ //Date的构造函数
year=y;
month=m;
day=d;
}
Date(Date &birthday){ //Date的复制构造函数的实现year=;
month=;
day=;
}
void set() { //设置数据函数
cin>>year>>month>>day;
}
void show() //显示函数
{
cout<<year<<"年"<<month<<"月"<<day<<"日";
}
};
//类的组合
class People{ //People类定义
int number;
string sex;
int id;
Date birthday; //Date类的对象
People(){}
People(int n,string s,int i,Date b);
void input() { //输入函数
cout<<"录入数据:"<<endl;
cout<<"编号:";
cin>>number;
cout<<"性别(m男/f女):";
cin>>sex;
cout<<"生日:";
();
cout<<"身份证号:";
cin>>id;
}
void output(){ //输出函数
cout<<"编号:"<<number<<endl;
cout<<"性别:"<<sex<<endl;
cout<<"生日:";
();
cout<<endl;
cout<<"身份证号:"<<id<<endl;
}
~People(){ //Pople类析构函数
cout<<" "<<number<<"号人员已经录入"<<endl;}
};
People::People(int n,string s,int i,Date b):number(n),sex(s),id(i),birthday(b){} //People组合类构造函数
//主函数
int main(){
People P1; //无需加括号"People P()"为错误写法!
();
();
return 0;
}
实验结果:
Debug调试过程:
1、由于构造函数的函数体部分均为空,故调用时无显示,直至调用对象的input()函数,DOS显示如下
2、执行output()函数,输出信息,同时,最终调用析构函数
遇到的问题:
1、未声明类的默认构造函数,当需要调用无参数的构造函数时,运行出错;
2、由于参数的问题,主函数中的对象是无参数的,也不需要加括号。
因而不需要调用带参数的构造函数,同时,其的函数体为空,故去掉其亦无影响。
3、定义sex为string类型,需要包含头文件。
4、整个对象生存期结束,自动调用析构函数,输出"number号人员已经录入"。