您的位置:首页 > 其它

第十三周实验报告2

2012-05-16 11:12 246 查看
实验目的:

【任务2】下面给出了基类Animal和main()函数。

(任务2.1)根据main()函数给出的注释提示,设计出相关的各个类。

(任务2.2)显然,Animal设计为抽象类更合适,Animal不需要能够实例化,是专门作基类使用的。改造程序,使Animal设计为抽象类,这时main()函数中p = new Animal();将出错,将此行删除。

(任务2.3)每一个Animal的派生类都有一个“名字”数据成员,改造上面的程序,将这一数据成员作为抽象类Animal数据成员被各派生类使用。

实验代码:

#include <iostream>

#include <string>

using namespace std;

class Animal
{
public:
virtual void cry() {cout << "不知道哪种动物,让我如何叫? " << endl;}
};

class Mouse:public Animal
{
public:
Mouse(string name)
{
this->name = name;
}
virtual void cry() {cout << "我叫" << name << ", 是一只老鼠,我的叫声是:吱吱吱!" << endl;}
private:
string name;
};

class Cat:public Animal
{
public:
Cat(string name)
{
this->name = name;
}
virtual void cry() {cout << "我叫" << name << ", 是一只猫,我的叫声是:喵喵喵!" << endl;}
private:
string name;
};

class Dog:public Animal
{
public:
Dog(string name)
{
this->name = name;
}
virtual void cry() {cout << "我叫" << name << ", 是一只狗,我的叫声是:汪汪汪!" << endl;}
private:
string name;
};

class Giraffe:public Animal
{
public:
Giraffe(string name)
{
this->name = name;
}
virtual void cry() {cout << "我叫" << name << ", 是长颈鹿,脖子太长,发不出声音来!" << endl;}
private:
string name;
};

int main()
{
Animal *p;
p = new Animal();
p->cry();

Mouse m("Jerry");
p = &m;
p->cry();

Cat c("Tom");
p = &c;
p->cry();

Dog d("Droopy");
p = &d;
p->cry();

Giraffe g("Gill");
p = &g;
p->cry();

return 0;
}实验结果:
不知道哪种动物,让我如何叫?
我叫Jerry, 是一只老鼠,我的叫声是:吱吱吱!
我叫Tom, 是一只猫,我的叫声是:喵喵喵!
我叫Droopy, 是一只狗,我的叫声是:汪汪汪!
我叫Gill, 是长颈鹿,脖子太长,发不出声音来!
Press any key to continue

1.2实验代码:

#include <iostream>

#include <string>

using namespace std;

class Animal
{
public:
virtual void cry() const = 0;
};

class Mouse:public Animal
{
public:
Mouse(string name)
{
this->name = name;
}
virtual void cry() const {cout << "我叫" << name << ", 是一只老鼠,我的叫声是:吱吱吱!" << endl;}
private:
string name;
};

class Cat:public Animal
{
public:
Cat(string name)
{
this->name = name;
}
virtual void cry() const {cout << "我叫" << name << ", 是一只猫,我的叫声是:喵喵喵!" << endl;}
private:
string name;
};

class Dog:public Animal
{
public:
Dog(string name)
{
this->name = name;
}
virtual void cry() const {cout << "我叫" << name << ", 是一只狗,我的叫声是:汪汪汪!" << endl;}
private:
string name;
};

class Giraffe:public Animal
{
public:
Giraffe(string name)
{
this->name = name;
}
virtual void cry() const {cout << "我叫" << name << ", 是长颈鹿,脖子太长,发不出声音来!" << endl;}
private:
string name;
};

int main()
{
Animal *p;

Mouse m("Jerry");
p = &m;
p->cry();

Cat c("Tom");
p = &c;
p->cry();

Dog d("Droopy");
p = &d;
p->cry();

Giraffe g("Gill");
p = &g;
p->cry();
system("pause");

return 0;
}

运行结果:

我叫Jerry, 是一只老鼠,我的叫声是:吱吱吱!
我叫Tom, 是一只猫,我的叫声是:喵喵喵!
我叫Droopy, 是一只狗,我的叫声是:汪汪汪!
我叫Gill, 是长颈鹿,脖子太长,发不出声音来!
Press any key to continue实验2.3代码:
#include <iostream>

#include <string>

using namespace std;

class Animal
{
private:
string name;
public:
Animal(string name)
{
this->name = name;
}
virtual void cry() const = 0;
};

class Mouse:public Animal
{
public:
Mouse(string name):Animal(name)
{
this->name = name;
}
virtual void cry() const {cout << "我叫" << name << ", 是一只老鼠,我的叫声是:吱吱吱!" << endl;}
private:
string name;
};

class Cat:public Animal
{
public:
Cat(string name):Animal(name)
{
this->name = name;
}
virtual void cry() const {cout << "我叫" << name << ", 是一只猫,我的叫声是:喵喵喵!" << endl;}
private:
string name;
};

class Dog:public Animal
{
public:
Dog(string name):Animal(name)
{
this->name = name;
}
virtual void cry() const {cout << "我叫" << name << ", 是一只狗,我的叫声是:汪汪汪!" << endl;}
private:
string name;
};

class Giraffe:public Animal
{
public:
Giraffe(string name):Animal(name)
{
this->name = name;
}
virtual void cry() const {cout << "我叫" << name << ", 是长颈鹿,脖子太长,发不出声音来!" << endl;}
private:
string name;
};

int main()
{
Animal *p;

Mouse m("Jerry");
p = &m;
p->cry();

Cat c("Tom");
p = &c;
p->cry();

Dog d("Droopy");
p = &d;
p->cry();

Giraffe g("Gill");
p = &g;
p->cry();
system("pause");

return 0;
}
实验结果:
我叫Jerry, 是一只老鼠,我的叫声是:吱吱吱!
我叫Tom, 是一只猫,我的叫声是:喵喵喵!
我叫Droopy, 是一只狗,我的叫声是:汪汪汪!
我叫Gill, 是长颈鹿,脖子太长,发不出声音来!
请按任意键继续. . .
实验心得:
实验的第一问还是挺简单的,在老师给的代码的基础上,主要是根据主函数,添加代码就可以了,单纯的虚函数罢了,看好课本相关章节,这个问题真的挺简单的,第二个实验是在第一问的基础上进行改造,将基类改为抽象类,也只是进行略微的修改,注意在派生类里面对纯虚函数进行再定义就是了,其他照搬问题一就好了,至于实验三,看来老师真的是很有心思,还刻意在实验中想方设法的给我们机会回顾以前的知识,只需根据要求,在基函数中增加数据成员,在派生类中继承就可以了,这也是以前做过的问题,看就看你能不能想到喽!

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string class 任务 system c