PTA(二十)面向对象程序设计 第四章 作业 7-1 动物世界

7-1 动物世界 (15 分)

补充程序 :

1、实现Mammal类的方法

2、由Mammal类派生出Dog类,在Dog类中增加itsColor成员(COLOR类型)

3、Dog类中增加以下方法:

constructors: Dog()、Dog(int age)、Dog(int age, int weight)、Dog(int age, COLOR color)、 Dog(int age, int weight, COLOR color)、~Dog()

accessors: GetColor()、SetColor()

Other methods: WagTail()、BegForFood() ,并实现以上这些方法 。

提示:类似Speak()、WagTail()这些动作,函数体可以是输出一句话。比如:Mammal is spaeking… , The Dog is Wagging its tail…

4、补充主函数的问号部分,并运行程序,检查输出是否合理。

enum COLOR{ WHITE, RED, BROWN, BLACK, KHAKI };

class Mammal
{
public:
//constructors
Mammal();
Mammal(int age);
~Mammal();

    //accessors
    int GetAge() const;
    void SetAge(int);
    int GetWeight() const;
    void SetWeight(int);

    //Other methods    
    void Speak() const;
    void Sleep() const;        
protected:
    int itsAge;
    int itsWeight;

};

int main()
{
Dog Fido;
Dog Rover(5);
Dog Buster(6, 8);
Dog Yorkie(3, RED);
Dog Dobbie(4, 20, KHAKI);
Fido.Speak();
Rover.WagTail();
cout << “Yorkie is " << ?? << " years old.” << endl;
cout << “Dobbie weighs " << ?? << " pounds.” << endl;
return 0;
}

输入格式:


输出格式:

按照程序格式输出。
输入样例:

在这里给出一组输入。例如:

输出样例:

在这里给出相应的输出。例如:

Mammal is speaking…
The dog is wagging its tail…
Yorkie is 3 years old.
Dobbie weighs 20 pounds.
收获

  • 有基类函数的公有方法访问继承来的基类私有成员
  • 熟悉了对枚举的使用
  • 构造函数调用,继承来的成员不能使用初始化列表形式初始化
  • 析构函数调用记得加{},不然会报错
#include<iostream>
using namespace std;
enum COLOR{ WHITE, RED, BROWN, BLACK, KHAKI };

class Mammal
{
    public:
        //constructors
        Mammal(){
            SetAge(0);
            SetWeight(0);
        };
        Mammal(int age):itsAge(age){};
        ~Mammal(){
           // cout<<"~Mammal\n";
        };//??????????????

        //accessors
        int GetAge() const{
            return itsAge;
        };
        void SetAge(int a){
            itsAge=a;
        };
        int GetWeight() const{
            return itsWeight;
        };
        void SetWeight(int a){
            itsWeight=a;
        };

        //Other methods     
        void Speak() const{
            cout<<"Mammal is speaking..."<<endl;
        };
        void Sleep() const;        
    protected:
        int itsAge;
        int itsWeight;
};
class Dog: public Mammal{
    private:
    COLOR itsColor;
    public:
        //constructors
        Dog(){
            SetAge(0);
            SetWeight(0);
            SetColor(RED);
        };
        Dog(int age){
            SetAge(age);
        };
        Dog(int age,int weight){
            SetAge(age);
            SetWeight(weight);
        };
        
        Dog(int age,COLOR color){
            SetAge(age);
            itsColor=color;
        };
        
        Dog(int age,int weight,COLOR color){
            SetAge(age);
            SetWeight(weight);
            itsColor=color;
        };
        ~Dog(){
           // cout<<"~Dog\n";
        };
        //accessors:
        COLOR GetColor(){
            return itsColor;
        };
        void SetColor(COLOR color){
            itsColor=color;
        };
        //Other methods:
        void WagTail(){
            cout<<"The dog is wagging its tail...\n";
        };
        void BegForFood();
};

int main()
{
    Dog Fido;
    Dog Rover(5);
    Dog Buster(6, 8);
    Dog Yorkie(3, RED);
    Dog Dobbie(4, 20, KHAKI);
    Fido.Speak();
    Rover.WagTail();
    cout << "Yorkie is " << Yorkie.GetAge() << " years old." << endl;
    cout << "Dobbie weighs " << Dobbie.GetWeight() << " pounds." << endl;   
    return 0;
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值