From f9cb26728021bf85a61f263fdb711c093a7f749a Mon Sep 17 00:00:00 2001 From: angeld55 Date: Tue, 31 May 2022 20:21:57 +0300 Subject: Sem 14 --- Sem. 14/Farm/Animals/Animal.h | 27 +++++++++++++++++++++++++++ Sem. 14/Farm/Animals/Cat.cpp | 12 ++++++++++++ Sem. 14/Farm/Animals/Cat.h | 12 ++++++++++++ Sem. 14/Farm/Animals/Dog.cpp | 12 ++++++++++++ Sem. 14/Farm/Animals/Dog.h | 12 ++++++++++++ Sem. 14/Farm/Animals/Mouse.cpp | 12 ++++++++++++ Sem. 14/Farm/Animals/Mouse.h | 12 ++++++++++++ 7 files changed, 99 insertions(+) create mode 100644 Sem. 14/Farm/Animals/Animal.h create mode 100644 Sem. 14/Farm/Animals/Cat.cpp create mode 100644 Sem. 14/Farm/Animals/Cat.h create mode 100644 Sem. 14/Farm/Animals/Dog.cpp create mode 100644 Sem. 14/Farm/Animals/Dog.h create mode 100644 Sem. 14/Farm/Animals/Mouse.cpp create mode 100644 Sem. 14/Farm/Animals/Mouse.h (limited to 'Sem. 14/Farm/Animals') diff --git a/Sem. 14/Farm/Animals/Animal.h b/Sem. 14/Farm/Animals/Animal.h new file mode 100644 index 0000000..8038843 --- /dev/null +++ b/Sem. 14/Farm/Animals/Animal.h @@ -0,0 +1,27 @@ +#pragma once +#include +class Animal +{ + +public: + + enum AnimalType + { + Dog = 0, + Cat = 1, + Mouse = 2 + }; + virtual void sayHello() const = 0; + + virtual Animal* clone() const = 0;//създава копие на текущия обект. + + virtual ~Animal() {} //!!! + + AnimalType getType() const + { + return myType; + } + +protected: + AnimalType myType; +}; \ No newline at end of file diff --git a/Sem. 14/Farm/Animals/Cat.cpp b/Sem. 14/Farm/Animals/Cat.cpp new file mode 100644 index 0000000..8716d4b --- /dev/null +++ b/Sem. 14/Farm/Animals/Cat.cpp @@ -0,0 +1,12 @@ +#include "Cat.h" + +void Cat::sayHello() const +{ + std::cout << "Hello, I am a Cat!" << std::endl; +} + +Animal* Cat::clone() const +{ + Animal* newObj = new Cat(*this); //copy constr of Mouse + return newObj; +} \ No newline at end of file diff --git a/Sem. 14/Farm/Animals/Cat.h b/Sem. 14/Farm/Animals/Cat.h new file mode 100644 index 0000000..57aa627 --- /dev/null +++ b/Sem. 14/Farm/Animals/Cat.h @@ -0,0 +1,12 @@ +#pragma once +#include "Animal.h" +class Cat : public Animal +{ +public: + Cat() + { + myType = Animal::AnimalType::Cat; + } + void sayHello() const override; + Animal* clone() const override; +}; \ No newline at end of file diff --git a/Sem. 14/Farm/Animals/Dog.cpp b/Sem. 14/Farm/Animals/Dog.cpp new file mode 100644 index 0000000..879957f --- /dev/null +++ b/Sem. 14/Farm/Animals/Dog.cpp @@ -0,0 +1,12 @@ +#include "Dog.h" + +void Dog::sayHello() const +{ + std::cout << "Hello, I am a Dog!" << std::endl; +} + +Animal* Dog::clone() const +{ + Animal* newObj = new Dog(*this); //copy constr of Mouse + return newObj; +} \ No newline at end of file diff --git a/Sem. 14/Farm/Animals/Dog.h b/Sem. 14/Farm/Animals/Dog.h new file mode 100644 index 0000000..3bf27b9 --- /dev/null +++ b/Sem. 14/Farm/Animals/Dog.h @@ -0,0 +1,12 @@ +#pragma once +#include "Animal.h" +class Dog : public Animal +{ +public: + Dog() + { + myType = Animal::AnimalType::Dog; + } + void sayHello() const override; + Animal* clone() const override; +}; \ No newline at end of file diff --git a/Sem. 14/Farm/Animals/Mouse.cpp b/Sem. 14/Farm/Animals/Mouse.cpp new file mode 100644 index 0000000..e3789ce --- /dev/null +++ b/Sem. 14/Farm/Animals/Mouse.cpp @@ -0,0 +1,12 @@ +#include "Mouse.h" + +void Mouse::sayHello() const +{ + std::cout << "Hello, I am a Mouse!" << std::endl; +} + +Animal* Mouse::clone() const +{ + Animal* newObj = new Mouse(*this); //copy constr of Mouse + return newObj; +} \ No newline at end of file diff --git a/Sem. 14/Farm/Animals/Mouse.h b/Sem. 14/Farm/Animals/Mouse.h new file mode 100644 index 0000000..b979fa3 --- /dev/null +++ b/Sem. 14/Farm/Animals/Mouse.h @@ -0,0 +1,12 @@ +#pragma once +#include "Animal.h" +class Mouse : public Animal +{ +public: + Mouse() + { + myType = Animal::AnimalType::Mouse; + } + void sayHello() const override; + Animal* clone() const override; +}; \ No newline at end of file -- cgit v1.3.1-23-gd82d