实验七 继承与派生(综合性实验)
c 继承与派生实验报告

c 继承与派生实验报告
C 继承与派生实验报告
实验目的:通过实验,掌握C语言中继承与派生的概念和使用方法,加深对面向对象编程的理解。
实验内容:在C语言中,继承与派生是面向对象编程中非常重要的概念。
在本次实验中,我们将通过一个简单的例子来演示C语言中的继承与派生的用法。
首先,我们定义一个基类(父类)Person,包括姓名和年龄两个成员变量,以及一个显示信息的成员函数。
然后,我们定义一个派生类(子类)Student,继承自Person类,新增一个成员变量学号,并重写显示信息的成员函数。
在实验中,我们首先创建一个Person对象,设置姓名和年龄,然后调用显示信息函数,观察结果。
接着,我们创建一个Student对象,设置姓名、年龄和学号,再次调用显示信息函数,观察结果。
实验结果:通过实验,我们成功实现了C语言中的继承与派生。
我们发现,通过继承,子类Student可以直接使用父类Person中的成员变量和成员函数,同时可以新增自己的成员变量和函数。
这样的设计使得代码更加简洁和灵活,提高了代码的复用性和可维护性。
结论:C语言中的继承与派生是面向对象编程中非常重要的概念,通过本次实验,我们深入理解了这一概念的用法和意义。
掌握了继承与派生的方法后,我们可以更加灵活地设计和编写程序,提高代码的质量和效率。
总结:通过本次实验,我们对C语言中的继承与派生有了更深入的理解,加深了对面向对象编程的认识。
在今后的学习和工作中,我们将更加灵活地运用继承与派生的方法,提高代码的质量和效率。
继承的应用实验报告

一、实验目的1. 理解继承的概念和作用。
2. 掌握Java中继承的实现方法。
3. 学习如何利用继承提高代码复用性。
4. 通过实验加深对继承的理解和应用。
二、实验环境1. 操作系统:Windows 102. 编译器:Eclipse IDE3. 编程语言:Java三、实验内容1. 创建一个基类:Animal,包含属性name和方法eat()。
2. 创建两个派生类:Dog和Cat,分别继承自Animal类,并添加各自特有的属性和方法。
3. 创建一个主类:TestInheritance,在主函数中创建Animal、Dog和Cat的对象,并调用它们的方法。
四、实验步骤1. 创建基类Animal:```javapublic class Animal {private String name;public Animal(String name) { = name;}public void eat() {System.out.println(name + " is eating."); }}```2. 创建派生类Dog:```javapublic class Dog extends Animal {private String breed;public Dog(String name, String breed) {super(name);this.breed = breed;}public void bark() {System.out.println(name + " is barking."); }}```3. 创建派生类Cat:```javapublic class Cat extends Animal {private String color;public Cat(String name, String color) {super(name);this.color = color;}public void meow() {System.out.println(name + " is meowing."); }}```4. 创建主类TestInheritance:```javapublic class TestInheritance {public static void main(String[] args) {Animal animal = new Animal("Animal");Dog dog = new Dog("Buddy", "Labrador");Cat cat = new Cat("Kitty", "Black");animal.eat();dog.eat();dog.bark();cat.eat();cat.meow();}}```五、实验结果与分析1. 运行主类TestInheritance,观察控制台输出:```Animal is eating.Buddy is eating.Buddy is barking.Kitty is eating.Kitty is meowing.```2. 分析结果:(1)Animal类作为基类,包含一个私有属性name和一个方法eat()。
C++语言程序设计实验答案_继承与派生教学提纲

C++语言程序设计实验答案_继承与派生实验07 继承与派生(4学时)(第7章继承与派生)一、实验目的二、实验任务7_1 声明一个基类Animal。
有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。
7_2 声明一个基类BaseClass。
有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。
7_3 声明一个车(vehicle)基类。
具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。
自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。
从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。
如果不把vehicle设置为虚基类,会有什么问题?编程试试看。
7_4 以实验6中的People(人员)类为基类。
派生出student(学生)类,添加属性:班号char classNo[7];派生出teacher(教师)类,添加属性:职务char principalship[11]、部门char department[21]。
从student类中派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacher adviser;从graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。
重载相应的成员函数,测试这些类。
类之间的关系如图7-1所示。
图7-1 类图三、实验步骤1.(编程)声明基类Animal,成员变量age声明为私有的。
构造派生类dog,在其成员函数SetAge(int n)中直接对age赋值时,会出现类似以下的错误提示:(注:在桌面创建一个文本文件,将输出框的内容复制到文本文件中,再复制到Word文件中,不会出现汉字的乱码)把age改为公有变量后重新编译就可以了。
C++继承与派生实验报告精编版

应用数学学院信息与计算科学(信息计算)专业1 班、学号3111008106姓名吴伟栓教师评定_________________实验题目继承与派生一、实验目的与任务实验目的:(1)学习声明和使用类的继承关系,声明派生类。
(2)熟悉不同继承方式下对基类成员的访问控制。
(3)学习利用虚基类解决二义性问题。
实验任务:(1)声明一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。
(2)声明一个基类BaseClass,有整形成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。
(3)声明一个车(vehicle)基类,具有MaxSpeed,Weight等成员变量,Run,Stop 等成员函数,由此派生出自行车(bicycle)类,汽车(motorcar)类。
自行车(bicycle)类有高度(Height)等属性,汽车(motorcar)类有座位数(SeatNum)等属性。
从bicycle 和motorcar派生出摩托车(motocycle)类,在继承过程中,注意把vehicle设置为虚基类。
如果不把vehicle设置为虚基类,会有什么问题?编程试试看。
(4)(选做)从实验六中的people(人员)类派生出student(学生)类,添加属性:班号char classNo[7];从people类派生出teacher(教师)类,添加属性:职务char principalship[11]、部门char department[21]。
从student类中派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacherradviser;从graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。
实验5类和对象、继承和派生

程序Ex_Class:定义一个人员类CPerson,包括数据成员:姓名、编号、性别、和用于输入、输出的成员函数。在此基础上派生出学生类CStudent(增加成绩)和教师类CTeacher(增加教龄),并实现对学生和教师信息的输入、输出。编写一个完整的测试程序,并将Ex_Class所有的类定义保存在Ex_Class.h,将类的成员函数实现代码保存在Ex_Class.cpp中。
stu.student.setSex(0);
stu.InputScore(80,90,85);
stu.Print();
CTeacher tea(" Ding","911085");
tea.Print();
tea.setID("9110234");
tea.Print();
}
(2)单击标准工具栏的“Save”按钮,弹出“保存为”文件对话框。将文件保存为Ex_Class.cpp。
}
//主函数
void main()
{ CStudent stu(" LiMing"," 21010211" );
cout<<stu.getName()<<endl;
cout<<stu.student.getName()<<endl;
stu.Print();
stu.student.setName(" LingLing");
3输入程序Ex_Class.cpp
(1)单击标准工具栏上的“New Text File”按钮,在新打开的文档窗口中输入下列程序代码:
#include<iostream.h>
(C++)实验报告六:继承与派生

实验6 继承与派生一、实验目的1.理解继承与派生、单继承与多继承的概念;2.理解基类与派生类的定义及使用方法,派生类对象的定义与初始化方法;3.理解继承与派生过程中,把派生类作为基类构成类族的概念及虚基类的概念。
二、实验环境一台PC机,Windows XP操作系统,Visual C++ 6.0开发环境。
三、实验内容1、由在校人员类(Person)作为基类派生出学生类(Student):实验步骤:#include <iostream>#include <string>using namespace std;class Person{public:Person(int i,char *n, char s, int a){ID=i;name=n;sex=s;age=a;};int getID(){return ID;}void show(){cout<<"ID: "<<ID<<endl;cout<<"name : "<<name<<endl;cout<<"sex: "<<sex<<endl;cout<<"age: "<<age<<endl;}private:int ID;string name;char sex;int age;};class Student:public Person{public:Student(int i,char *n,char s,int a,float m,float p,float e,float c):Person(i,n,s,a){math=m;physical=p;english=e;cpp=c;total=math+physical+english+cpp;}void show(){Person::show();cout<<"math: "<<math<<endl;cout<<"physical: "<<physical<<endl;cout<<"english: "<<english<<endl;cout<<"C++: "<<cpp<<endl;cout<<"total: "<<total<<endl;}private:float math,physical,english,cpp,total;};void main(){Person p1(1,"张帅",'M',22);p1.show();cout<<endl;Student s1(9901,"林维",'S',21,65,70,75,88);s1.show();}实验结果:2、由学生类、课程类作为基类,共同派生出选课类。
28.继承和派生实验

实验十四:继承和派生实验【课时安排】2学时【实验要求】掌握类的继承性【实验内容】1.下面的程序代码中已经构建好了一个基类Building,用来存储一座楼房的层数、房间数以及它的总平方英尺数。
现需要建立派生类Housing,继承Builidng,并存储下面的内容:卧室和浴室的数量。
然后,编制应用程序,建立住宅楼对象,并输出他们的有关数据(1)定义私有数据成员bedrooms和bathrooms分别用于表示卧室和浴室的数量,他们都是int型的数据。
(2)完成派生类Housing的构造函数的定义,实现数据成员的初始化。
(3)完成成员函数show的定义,将Housing对象的值输出到屏幕上程序运行后的输出结果如图所示。
//注意:除在指定位置添加语句之外,请不要改动程序中的其他内容,补充语句不限一句,可多句#include<iostream.h>class Building{public:Building(int f,int r,double ft){floors=f;rooms=r;footage=ft;}void show(){cout<<" floors: "<<floors<<endl;cout<<" rooms: "<<rooms<<endl;cout<<" total area: "<<footage<<endl;}protected:int floors;int rooms;double footage;};class Housing:public Building{public://请在两条星线之间填入相应的代码//完成派生类Housing的带参构造函数的定义, 实现数据成员的初始化,参数名称可自定/***********************************************************************//***********************************************************************/void show(){cout<<"\nHOUSING:\n";//请在两条星线之间填入相应的代码//补充完成成员函数show的定义,将Housing对象的值输出到屏幕上。
第三次上机实验:继承与派生类上机实践指导

继承与派生类上机实践指导一.实验目的1.理解继承的含义,掌握派生类的定义方法和实现;2.理解公有继承下基类成员对派生类成员和派生类对象的可见性,能正确地访问继承层次中的各种类成员;3.理解保护成员在继承中的作用,能够在适当的时候选择使用保护成员以便派生类成员可以访问基类的部分非公开的成员;二.实验内容1. (1) 将例5.3的程序修改、补充,写成一个完整、正确的程序,用保护继承方式。
在程序中应包括输入数据的函数。
(2) 修改例5.3的程序,改为用公用继承方式。
上机调试程序,使之能正确运行并得到正确的结果。
对这两种继承方式作比较分析,考虑在什么情况下二者不能互相代替。
2. 调试运行Ex12.1需求分析:某小型公司的人员管理信息系统。
三类人员:经理(manager)、技术人员(technician)、销售人员(salesman);后期又增加一类人员:销售经理(sales_manager)。
要求存储这些人员的姓名、编号、级别、当月工资、计算月薪总额并显示全部信息。
(1)人员编号:基数为1000,每增加一名人员时,人员编号加1;(2)人员级别:所有人员初始级别为1,然后进行升级。
升级规则:经理为4级、技术人员为3级、销售人员为1级、销售经理为3级;(3)月薪计算:经理=固定月薪8000元;技术人员=100元/小时;销售人员=当月个人销售额*4%;销售经理=固定月薪5000+所辖部门当月销售额*5%。
2.2数据结构:struct employee {char *name; /* 人员姓名*/int indiveidualEmpNo; /* 人员编号*/int grade; /* 人员级别*/float accumPay; /* 月薪总额*/char employeeType; /* 人员类型(经理、技术人员、销售人员)};2.3 再考虑用三个过程分别负责升级、计算月薪和显示人员信息。
我们可以三个C 函数: Promote ()Pay ()DisplayStatus ()这种数据结构与过程分离有很多问题,例如增加一类人员---销售经理,则三个C 函数都必须重新编写。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七继承与派生
(综合性实验)
1.实验目的
(1)理解C++中派生类对基类成员的访问控制
(2)理解C++中三种继承方式对基类成员访问属性的修改
(3)掌握继承和组合这两种代码重用方式
(4)掌握渐增式程序开发
2.实验内容和要求
(1)题目1:指出下面代码中的错误并加以说明
class Base{
int a;
void f( ){ cout<<a; }
public:
int b;
void g( ){ cout<<a; }
protected:
int c;
void k( ){ cout<<a; }
};
class Derived : public Base{
public:
void df( ){
cout<<a;
cout<<b;
cout<<c;
f();
g();
k();
}
};
(2)题目2:指出下面代码中的错误并加以说明
class Base{
int a;
void f( ){ cout<<a; }
public:
int b;
void g( ){ cout<<a; }
protected:
int c;
void k( ){ cout<<a; }
};
class Derived : public Base{
};
void main( ){
Derived b;
cout<<b.a;
cout<<b.b;
cout<<b.c;
cout<<b.f();
cout<<b.g();
cout<<b.k();
}
(3)题目3:指出下面代码中的错误并加以说明class Base{
int a;
void f( ){ cout<<a; }
public:
int b;
void g( ){ cout<<a; }
protected:
int c;
void k( ){ cout<<a; }
};
class Derived : private Base{
};
void main( ){
Derived b;
cout<<b.a;
cout<<b.b;
cout<<b.c;
cout<<b.f();
cout<<b.g();
cout<<b.k();
}
(4)题目4:指出下面代码中的错误并加以说明class Base{
int a;
void f( ){ cout<<a; }
public:
int b;
void g( ){ cout<<a; }
protected:
int c;
void k( ){ cout<<a; }
};
class Derived : protected Base{
};
void main( ){
Derived b;
cout<<b.a;
cout<<b.b;
cout<<b.c;
cout<<b.f();
cout<<b.g();
cout<<b.k();
}
(5)题目5:请设计一个具有点线、线、多边形、三角形和圆的图形系统。
要求如下:
1)使用继承和组合设计
2)进行渐增式软件开发。