Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 13 / Farm / Animals
diff options
context:
space:
mode:
Commite012bcac0a5c5fc804fbeadb0e8ab382c5e6feb7 (patch)
Author
 angeld55 <angel_dimitriev@abv.bg>
2022-05-31 00:56:24 +0300
Committer
 angeld55 <angel_dimitriev@abv.bg>
2022-05-31 00:56:24 +0300
Files5e0fa501c9dae5a2ab8f3b043d1d43946ed66b44 /Sem. 13/Farm/Animals
Object-oriented_programming_FMI-e012bcac0a5c5fc804fbeadb0e8ab382c5e6feb7.tar
Object-oriented_programming_FMI-e012bcac0a5c5fc804fbeadb0e8ab382c5e6feb7.tar.gz
Object-oriented_programming_FMI-e012bcac0a5c5fc804fbeadb0e8ab382c5e6feb7.zip
Parentb5eb0ed6a0a3f8e728c30e5b03d2b366881aca76 (diff)
split in to folders
7 files changed, 71 insertions, 0 deletions
-rw-r--r--Sem. 13/Farm/Animals/Animal.h11
-rw-r--r--Sem. 13/Farm/Animals/Cat.cpp12
-rw-r--r--Sem. 13/Farm/Animals/Cat.h8
-rw-r--r--Sem. 13/Farm/Animals/Dog.cpp12
-rw-r--r--Sem. 13/Farm/Animals/Dog.h8
-rw-r--r--Sem. 13/Farm/Animals/Mouse.cpp12
-rw-r--r--Sem. 13/Farm/Animals/Mouse.h8
diff --git a/Sem. 13/Farm/Animals/Animal.h b/Sem. 13/Farm/Animals/Animal.h
new file mode 100644
index 0000000..9c55bce
--- /dev/null
+++ b/Sem. 13/Farm/Animals/Animal.h
@@ -0,0 +1,11 @@
+#pragma once
+#include <iostream>
+class Animal
+{
+public:
+ virtual void sayHello() const = 0;
+
+ virtual Animal* clone() const = 0;//създава копие на текущия обект.
+
+ virtual ~Animal() {} //!!!
+}; \ No newline at end of file
diff --git a/Sem. 13/Farm/Animals/Cat.cpp b/Sem. 13/Farm/Animals/Cat.cpp
new file mode 100644
index 0000000..8716d4b
--- /dev/null
+++ b/Sem. 13/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. 13/Farm/Animals/Cat.h b/Sem. 13/Farm/Animals/Cat.h
new file mode 100644
index 0000000..8d60fd1
--- /dev/null
+++ b/Sem. 13/Farm/Animals/Cat.h
@@ -0,0 +1,8 @@
+#pragma once
+#include "Animal.h"
+class Cat : public Animal
+{
+public:
+ void sayHello() const override;
+ Animal* clone() const override;
+}; \ No newline at end of file
diff --git a/Sem. 13/Farm/Animals/Dog.cpp b/Sem. 13/Farm/Animals/Dog.cpp
new file mode 100644
index 0000000..879957f
--- /dev/null
+++ b/Sem. 13/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. 13/Farm/Animals/Dog.h b/Sem. 13/Farm/Animals/Dog.h
new file mode 100644
index 0000000..2c69e03
--- /dev/null
+++ b/Sem. 13/Farm/Animals/Dog.h
@@ -0,0 +1,8 @@
+#pragma once
+#include "Animal.h"
+class Dog : public Animal
+{
+public:
+ void sayHello() const override;
+ Animal* clone() const override;
+}; \ No newline at end of file
diff --git a/Sem. 13/Farm/Animals/Mouse.cpp b/Sem. 13/Farm/Animals/Mouse.cpp
new file mode 100644
index 0000000..e3789ce
--- /dev/null
+++ b/Sem. 13/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. 13/Farm/Animals/Mouse.h b/Sem. 13/Farm/Animals/Mouse.h
new file mode 100644
index 0000000..f2c70de
--- /dev/null
+++ b/Sem. 13/Farm/Animals/Mouse.h
@@ -0,0 +1,8 @@
+#pragma once
+#include "Animal.h"
+class Mouse : public Animal
+{
+public:
+ void sayHello() const override;
+ Animal* clone() const override;
+}; \ No newline at end of file