< previous page page_295 next page >

Page 295
LISTING 18.6 DERIVING ADTS FROM OTHER ADTS

d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
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; }
d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
continues

 
< previous page page_295 next page >

If you like this book, buy it!