Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1)
- Като анализирате следващата програма, добавете като коментар къде при изпълнение на главната функция ще се изведат следните изрази на екран и обяснете защо.
- "Mammal constructor...";
- "Mammal(int) constructor...";
- "Mammal destructor...";
- "Dog constructor...“;
- "Dog(int) constructor“;
- „Dog(int, int) constructor”;
- „Dog(int, int, BREED) constructor“;
- „Dog(int, BREED) constructor“;
- „Dog destructor“;
- Програма 1
- #include <iostream>
- using namespace std;
- enum BREED { YORKIE, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB };
- class Mammal
- {
- public:
- Mammal();
- Mammal(int age);
- ~Mammal();
- int GetAge() const { return itsAge; }
- void SetAge(int age) { itsAge = age; }
- int GetWeight() const { return itsWeight; }
- void SetWeight(int weight) { itsWeight = weight; }
- void Speak() const { cout << "Mammal sound!\n"; }
- void Sleep() const { cout << "shhh. I'm sleeping.\n"; }
- protected:
- int itsAge;
- int itsWeight;
- };
- class Dog : public Mammal
- {
- public:
- Dog();
- Dog(int age);
- Dog(int age, int weight);
- Dog(int age, BREED breed);
- Dog(int age, int weight, BREED breed);
- ~Dog();
- BREED GetBreed() const { return itsBreed; }
- void SetBreed(BREED breed) { itsBreed = breed; }
- void WagTail() { cout << "Tail wagging...\n"; }
- void BegForFood() { cout << "Begging for food...\n"; }
- private:
- BREED itsBreed;
- };
- Mammal::Mammal():
- itsAge(1),
- itsWeight(5)
- {
- cout << "Mammal constructor...\n";
- }
- Mammal::Mammal(int age):
- itsAge(age),
- itsWeight(5)
- {
- cout << "Mammal(int) constructor...\n";
- }
- Mammal::~Mammal()
- {
- cout << "Mammal destructor...\n";
- }
- Dog::Dog():
- itsBreed(YORKIE)
- {
- cout << "Dog constructor...\n";
- }
- Dog::Dog(int age):
- Mammal(age),
- itsBreed(YORKIE)
- {
- cout << "Dog(int) constructor...\n";
- }
- Dog::Dog(int age, int weight):
- Mammal(age),
- itsBreed(YORKIE)
- {
- itsWeight = weight;
- cout << "Dog(int, int) constructor...\n";
- }
- Dog::Dog(int age, int weight, BREED breed):
- Mammal(age),
- itsBreed(breed)
- {
- itsWeight = weight;
- cout << "Dog(int, int, BREED) constructor...\n";
- }
- Dog::Dog(int age, BREED breed):
- Mammal(age),
- itsBreed(breed)
- {
- cout << "Dog(int, BREED) constructor...\n";
- }
- Dog::~Dog()
- {
- cout << "Dog destructor...\n";
- }
- int main()
- {
- Dog fido;
- Dog rover(5);
- Dog buster(6,8);
- Dog yorkie (3,YORKIE);
- Dog dobbie (4,20,DOBERMAN);
- fido.Speak();
- rover.WagTail();
- cout << "Yorkie is " << yorkie.GetAge() << " years old\n";
- cout << "Dobbie weighs ";
- cout << dobbie.GetWeight() << " pounds\n";
- return 0;
- }
- ----------
- 2)
- Отбележете като коментар в главната функция на следващата програма, колко крачки ще направи обектът bigAnimal и колко обектът fido. Обяснете защо.
- Програма 2
- #include <iostream>
- using namespace std;
- enum BREED { YORKIE, CAIRN, DANDIE, SHETLAND, DOBERMAN, LAB };
- class Mammal
- {
- public:
- Mammal() { cout << "Mammal constructor...\n"; }
- ~Mammal() { cout << "Mammal destructor...\n"; }
- void Move()const { cout << "Mammal move a step!\n"; }
- void Sleep()const { cout << "shhh. I'm sleeping.\n"; }
- protected:
- int itsAge;
- int itsWeight;
- };
- class Dog : public Mammal
- {
- public:
- Dog(){ cout << "Dog constructor...\n"; }
- ~Dog(){ cout << "Dog destructor...\n"; }
- void WagTail() { cout << "Tail wagging...\n"; }
- void BegForFood() { cout << "Begging for food...\n"; }
- void Move()const { cout << "Dog move 5 step\n"; }
- private:
- BREED itsBreed;
- };
- int main()
- {
- Mammal bigAnimal;
- Dog fido;
- bigAnimal.Move();
- fido.Move();
- return 0;
- }
- =====================
- 3)
- Променете дадената програма така, че обектът fido да направи крачки, чийто брой да се въвежда от клавиатурата.
- a)като промените и декларация на клас, и главната функция
- б)като само промените главната функция, без да променяте декларация на клас
- Програма 3
- #include <iostream>
- using namespace std;
- class Mammal
- {
- public:
- void Move() const { cout << "Mammal move 1 step\n"; }
- void Move(int distance) const
- { cout << "Mammal move ";
- cout << distance <<" steps.\n"; }
- protected:
- int itsAge;
- int itsWeight;
- };
- class Dog : public Mammal
- {
- public:
- void Move() const { cout << "Dog move 5 steps.\n"; }
- };
- int main()
- {
- Mammal bigAnimal;
- Dog fido;
- bigAnimal.Move();
- bigAnimal.Move(2);
- fido.Move();
- return 0;
- ====
- 4)
- Отбележете коя функция е виртуална в базовия клас . Отбележете като коментар в главната функция колко крачки ще направи обектът с указател pSharo и какво ще изведе като звук. Направете същото и за обекта с указател pMecho.
- Програма 4
- #include <iostream>
- using namespace std;
- class Mammal
- {
- public:
- Mammal():itsAge(1) { cout << "Mammal constructor...\n"; }
- ~Mammal() { cout << "Mammal destructor...\n\n"; }
- virtual void Move() const { cout << "Mammal move one step\n"; }
- void Speak() const { cout << "Mammal speak!\n"; }
- protected:
- int itsAge;
- };
- class Dog : public Mammal
- {
- public:
- Dog() { cout << "Dog Constructor...\n"; }
- ~Dog() { cout << "Dog destructor...\n\n"; }
- void WagTail() { cout << "Wagging Tail...\n"; }
- void Speak()const { cout << "Wow!Wow!\n"; }
- void Move()const { cout << "Dog moves 5 steps...\n"; }
- };
- int main()
- {
- Mammal *pSharo = new Dog;
- pSharo->Move();
- pSharo->Speak();
- delete pSharo;
- Dog *pMecho = new Dog;
- pMecho->Move();
- pMecho->Speak();
- pMecho->WagTail();
- delete pMecho;
- return 0;
- }
- =========
- 5)
- Анализирайте следващия програмен код и обяснете какъв вид наследственост е приложена-единична или множествена. . Aкo създадете следните обекти: 1 кон и 4 пегаса и запълните масива от указатели съответно, кои от обектите ще могат да летят и защо.
- Програма 5
- #include <iostream>
- using namespace std;
- class Animal
- {
- public:
- virtual void Move(){}
- private:
- int itsAge;
- };
- class Horse :public Animal
- {
- public:
- void Move(){ cout << "Galloping...\n"; }
- };
- class Pegasus : public Animal
- {
- public:
- void Move() { cout << "I can fly! I can fly! I can fly!\n"; }
- };
- const int NumberHorses = 5;
- int main()
- {
- Animal* Ranch[NumberHorses];
- Animal* pHorse; //
- int choice,i;
- for (i=0; i<NumberHorses; i++)
- {
- cout << "(1)Horse (2)Pegasus: ";
- cin >> choice;
- if (choice == 2)
- pHorse = new Pegasus;
- else
- pHorse = new Horse;
- Ranch[i] = pHorse;
- }
- cout << "\n";
- for (i=0; i<NumberHorses; i++)
- {
- Ranch[i]->Move();
- delete Ranch[i];
- }
- return 0;
- }
- ======
- 6)
- Анализирайте следващия програмен код и обяснете какъв вид наследственост е приложена-единична или множествена. Aкo създадете следните обекти: 2 коня и 3 пегаса и запълните масива от указатели съответно, какви звуци ще издават обектите и кои от тях ще могат да летят.
- Програма 6
- #include <iostream>
- using namespace std;
- class Horse
- {
- public:
- Horse() { }
- virtual ~Horse() { }
- virtual void Fly() const
- {
- cout << "I can't' fly! I can't fly! I can't' fly! ";
- }
- virtual void Whinny() const { cout << "Whinny!... "; }
- private:
- int itsAge;
- };
- class Bird
- {
- public:
- Bird() { }
- virtual ~Bird() { }
- virtual void Chirp() const { cout << "Chirp... "; }
- virtual void Fly() const
- {
- cout << "I can fly! I can fly! I can fly! ";
- }
- private:
- int itsWeight;
- };
- class Pegasus : public Horse, public Bird
- {
- public:
- void Chirp() const { Whinny(); }
- void Fly() const {Bird::Fly();}
- Pegasus() { }
- ~Pegasus() { }
- };
- const int MagicNumber = 5;
- int main()
- {
- Horse* Ranch[MagicNumber];
- Horse * pHorse;
- int choice,i;
- for (i=0; i<MagicNumber; i++)
- {cout << "\n(1)Horse (2)Pegasus: ";
- cin >> choice;
- if (choice == 2)
- pHorse = new Pegasus;
- else
- pHorse = new Horse;
- Ranch[i] = pHorse; }
- for (i=0; i<MagicNumber; i++)
- { cout << "\nRanch[" << i << "]: " ;
- Ranch[i]->Whinny();
- Ranch[i]->Fly();
- delete Ranch[i]; }
- return 0; }
- =======
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement