|
|
|
|
|
|
|
LISTING 18.6 DERIVING ADTS FROM OTHER ADTS |
|
|
|
 |
|
|
|
|
1: // Listing 18.6
2: // Deriving ADTs from other ADTs
3: #include <iostream.h>
4:
5: enum COLOR { Red, Green, Blue, Yellow, White, Black, Brown } ;
6:
7: class Animal // common base to both horse and bird
8: {
9: public:
10: Animal(int);
11: virtual ~Animal() { cout << Animal destructor\n; }
12: virtual int GetAge() const { return itsAge; }
13: virtual void SetAge(int age) { itsAge = age; }
14: virtual void Sleep() const = 0;
15: virtual void Eat() const = 0;
16: virtual void Reproduce() const = 0;
17: virtual void Move() const = 0;
18: virtual void Speak() const = 0;
19: private:
20: int itsAge;
21: };
22:
23: Animal::Animal(int age):
24: itsAge(age)
25: {
26: cout << Animal constructor\n;
27: }
28:
29: class Mammal : public Animal
30: {
31: public:
32: Mammal(int age):Animal(age) { cout << Mammal constructor\n;}
33: virtual ~Mammal() { cout << Mammal destructor\n;}
34: virtual void Reproduce() const
35: { cout << Mammal reproduction depicted\n; }
36: };
37:
38: class Fish : public Animal
39: {
40: public:
41: Fish(int age):Animal(age){ cout << Fish constructor\n;}
42: virtual ~Fish() {cout << Fish destructor\n; }
43: virtual void Sleep() const { cout << fish snoring\n; }
44: virtual void Eat() const { cout << fish feeding\n; }
45: virtual void Reproduce() const { cout << fish laying eggs\n; } |
|
|
|
 |
|
|
|
|
continues |
|
|
|
|
|