0
点赞
收藏
分享

微信扫一扫

C++语言程序设计 项目六

yundejia 2022-03-23 阅读 129
c++

一、实验目的

l 1、掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性

l 2、掌握类对象的定义

l 3、理解类的成员的访问控制的含义,公有、私有和保护成员的区别

l 4、掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。能够根据给定的要求定义类并实现类的成员函数

二、准备内容

1、实验课前需预习实验内容,并做好实验设计。

2、复习视频及课上所讲授的C++中类与对象的C++基本知识

三、实验内容

设计并完成项目六:慕课网站上第六周的编程作业。

四、实验步骤

(一)编程代码

1. 设计Person类

#include <iostream>                  //头文件

using namespace std;                 //使用名字空间

class Person                         //创建一个类

{

private:                             //私有成员

    string name;                     //声明一个字符串类型的变量

    int age;                         //声明一个整形变量

    char sex;                        //声明一个字符型的变量

public:                              //共有成员

    void Register(string personName,int personAge,char personSex)            //创建有三个参数的函数

    {

        name =personName;            //形参的赋值

        age = personAge;

        sex = personSex;

    }

    void ShowMe()                    //声明一个没有参数的函数

    {

        cout<<name<<" "<<age<<" "<<sex<<endl;//输出

    }

};

int main()                          //主函数

{

    Person person1;                 //声明一个类的对象

    Person person2;

    string cinName;                 //声明一个字符串类型的变量

    int cinAge;                     //声明一个整形变量

    char cinSex;                    //声明一个字符型的变量

    cin>>cinName>>cinAge>>cinSex;   //输入

    person1.Register(cinName, cinAge, cinSex);//调用调用类中的Register函数并初始化

    person1.ShowMe();               //调用类中的ShowMe函数

    person2.Register("Zhang3",19, 'm');//调用调用类中的Register函数并初始化

    person2.ShowMe();               //调用类中的ShowMe函数

    return 0;                     //返回

}

2. 设计Dog类

#include <iostream>               //头文件

using namespace std;              //使用名字空间

class Dog                         //创建一个类

{

private:                          //私有成员

    string name;                  //声明一个字符串类型的变量

    int age;                      //声明一个整形变量

    char sex;                     //声明一个字符型的变量

    double weight;                //声明一个双精度类型的变量

public:                           //共有成员

    void setdata(string dogName,int dogAge,char dogSex,double dogWeight)//创建一个函数

    {

        name = dogName;           //形参的赋值

        age = dogAge;

        sex = dogSex;

        weight = dogWeight;

    }

    string GetName()               //创建一个没有参数的函数

    {

        return name;               //返回值给name

    }

    int GetAge()                   //创建一个没有参数的函数

    {

        return age;                //返回值给age

    }

    char GetSex()                  //创建一个没有参数的函数

    {

        return sex;                //返回值给sex

    }

   double GetWeight()              //创建一个没有参数的函数

    {

        return weight;             //返回值给weight

    }

};

int main()                        //主函数

{

    Dog dog;                       //声明一个类的对象

    string cinName;                //声明一个字符串类型的变量

    int cinAge;                    //声明一个整形变量

    char cinSex;                   //声明一个字符型的变量

    double cinWeight;              //声明一个双精度类型的变量

    cin>>cinName>>cinAge>>cinSex>>cinWeight;//输入

    dog.setdata(cinName, cinAge, cinSex, cinWeight);//调用dog类中的setdata函数并初始化

    cout<<"It is my dog."<<endl;    //输出

    cout<<"Its name is "<<dog.GetName()<<"."<<endl;

    cout<<"It is "<<dog.GetAge()<<" years old."<<endl;

    if(dog.GetSex()=='m'){         //if语句判断性别

        cout<<"It is male."<<endl;

    }else{//否则

        cout<<"It is female."<<endl;

    }

    cout<<"It is "<<dog.GetWeight()<<" kg."<<endl;

    return 0;

}

6.2

1.定义一个带重载构造函数的日期类

#include<iostream>

using namespace std;

class date{                            //定义一个date类

int year,month,day;                 //私有成员

public:                                //公有成员函数

date(){

year=1900,month=1,day=1;

}

date(int y,int m,int d){

year=y,month=m,day=d;

}

void init(int y,int m,int d){      

year=y,month=m,day=d;           

}

void show(){

cout<<year<<"-"<<month<<"-"<<day<<endl;

}

};

int main(){             

date d1,d2(2100,12,12);            //定义两个date类的函数

d1.show();d2.show();               //调用show函数

int y,m,d;

cin>>y>>m>>d;

d1.init(y,m,d);d1.show();          //调用init和show函数

return 0;

}

第三题:设计带构造函数的Dog类

#include<iostream>

#include<cstring>

using namespace std;

class Dog {                                 //定义一个dog类

char name[20];int age;char sex;double wight;//私有成员变量

public:                                     //公有成员函数

Dog() {

strcpy(name, "xxx"), age = 0, sex = 'm',wight=2.4;//把xxx拷贝到name上

}

~Dog() {

cout << "Now destroying the instance of Dog\n";

}

void Register(char n[],int a,char s,double w) {

strcpy(name, n), age = a;sex = s;wight = w;

}

void speak() {

cout << "Arf!Arf!\n";

}

void show() {

cout << name << "\n" << age << "\n" << sex<< endl<<wight<<endl;

}

};

int main() {

Dog *p1 = new Dog;                    //定义一个新的dog类

char name[20];int age;char s;double wight;

cin >> name >> age >> s>>wight;       //输入变量

p1->Register(name, age, s,wight);     // Register函数调用

p1->show();                           //show函数调用

p1->speak();                          //speak函数调用

return 0;

}

第四题:设计并测试一个椭圆类

#include<iostream>

#include<cstring>

using namespace std;

class Ellipse {                     //定义一个Ellipse类型

double x, y, l, r;               //定义双精度变量

public:                              

Ellipse() {

x = y = l = r = 0;            //赋值变量

}

~Ellipse() {

cout << "Now destroying the instance of Ellipse\n";

}

void Register(double x,double y,double l,double r) {

this->x = x;                  //this指针对私有成员变量赋值

this->y = y;

this->l = l;

this->r = r;

}

double area() {

return l * r*3.14;

}

};

int main() { //主函数

Ellipse *p1 = new Ellipse;    //定义一个新的Ellipse类p1

double x, y, l, r;           

cin >> x>>y>>l>>r;

p1->Register(x, y, l, r);    //函数调用

cout << p1->area();

return 0;

}

(二)运行结果

6.1

第一题:

 

第二题:

 

6.2

第一题:

 

第三题:

 

第四题:

 


五、实验结论

经过第六周的学习我学到了:类定义的格式:class<类名>

                     private://私有成员

                     <数据成员说明语句>;

                 <函数成员说明语句>;

                 public://公有成员

                     <数据成员说明语句>;

                 <函数成员说明语句>;

                     protected://保护成员

                     <数据成员说明语句>;

                 <函数成员说明语句>;

还有在类体外定义函数成员的一般格式如下:

<类型><类名>::<函数名>(<参数表>){

                               <函数体>

                                    }

以及公有成员:外界能够直接访问,起着接口作用;私有成员:外界不能直接访问,使得成员被隐藏起来;成员函数可以在类中定义,也可以在类外定义;公有成员:外界能够直接访问该成员,通过运算符。私有成员只能通过类中的公有函数对数据进行修改。这便是这周学到的知识。 

举报

相关推荐

0 条评论