Website Summary Files Commits Branches @commit @diff @stats
path: root / Sem. 12 / README.md
diff options
context:
space:
mode:
Commit8cf1283a4ffb9fe1901c29c087fa376de82726af (patch)
Author
 angeld55 <angel_dimitriev@abv.bg>
2022-02-19 23:30:52 +0200
Committer
 angeld55 <angel_dimitriev@abv.bg>
2022-02-19 23:30:52 +0200
Filesabdfe6bf526100dcce87a88563100e02adf7605e /Sem. 12/README.md
Object-oriented_programming_FMI-8cf1283a4ffb9fe1901c29c087fa376de82726af.tar
Object-oriented_programming_FMI-8cf1283a4ffb9fe1901c29c087fa376de82726af.tar.gz
Object-oriented_programming_FMI-8cf1283a4ffb9fe1901c29c087fa376de82726af.zip
Parentd73a7ec225516657dec74472a0491330e9999217 (diff)
clean up
1 files changed, 0 insertions, 190 deletions
-rw-r--r--Sem. 12/README.md190
diff --git a/Sem. 12/README.md b/Sem. 12/README.md
deleted file mode 100644
index 5c13eba..0000000
--- a/Sem. 12/README.md
+++ /dev/null
@@ -1,190 +0,0 @@
-
-# Наследяване
-## Пример за наследяване
-
-При създаване на нов клас, който има общи компоненти и поведение с вече дефиниран клас, вместо да дефинира повторно тези компоненти и поведение, можем да го обявим за наследник на вече дефинирания.
-
-```c++
-class A
-{
- .
- .
- .
-public:
- void f()
- {
- .
- .
- .
- }
- .
- .
- .
-};
-class B : public A
-{
- .
- .
- .
-}
-
-int main()
-{
- B obj;
- obj.f(); // OK!
-}
- ```
- При наследяването:
- - Наследяват се член-данните и методите на основните класове
- - Получава се достъп до **някои** от наследените компоненти на основните класове
-
-
-В нашия пример класът **В е наследник на класа А.** Обекти от класовете изглеждат така:
-
-![enter image description here](https://i.ibb.co/Fshm2LJ/Untitled-Diagram.png)
-
-
-След като В е наследник на класа А, то при създаване на обект от тип В се създава обект от тип А, **който е част от обекта** от тип В.
-
-
-## Видове наследяване
-Някои типове наследяване в c++:
-
- - private (по подразбиране)
- - protected
- - public
-
-Примери:
-```c++
-class A
-{
- public:
- int x;
- protected:
- int y;
- private:
- int z;
-};
-
-class B : public A
-{
- // x is public
- // y is protected
- // z is not accessible from B
-};
-
-class C : protected A
-{
- // x is protected
- // y is protected
- // z is not accessible from C
-};
-
-class D : private A // 'private' is default for classes
-{
- // x is private
- // y is private
- // z is not accessible from D
-};
- ```
-
-## Подаване като параметри на функции.
-Класове-наследници могат да бъдат подавани като параметри на функции, които приемат обекти от базовия клас. Може да се използва функционалността само от базовия клас.
-
-```c++
-class A
-{
- int a;
-}
-class B : public A
-{
-public:
- int b;
-}
-void f(A& obj)
-{
- obj.a++;
-}
-
-int main()
-{
- A obj1;
- B obj2;
-
- f(obj1); //OK!
- f(obj2); //OK!
-}
- ```
-
-## Конструктури и деструктори при наследяване.
-Във всеки контструктор на класът-наследник, трябва да се оказва кой конструктор да се извика за базовия клас. Ако не оказано, ще се извика конструктора по подразбиране.
-
-```c++
-class B : public A
-{
-.
-.
-.
-public:
- B(...) : A(...) //some constructor of A.
- {
- .
- .
- .
- }
-}
- ```
-Деструкторът на наследния клас извиква деструктора на базовия клас.
-
-
-## Копиране при наследяване
-При разписване на конструктора за копиране и оператора за присовяване на клас-наследник, трябва експлицитно да извикваме копиране и за базовия клас.
- ```c++
-B::B(const B& other) : A(other) // (copy constructor of A (base class)
-{
- copyFrom(other);
-}
-
-B& B::operator=(const B& other)
-{
-
- if (this != &other)
- {
- A::operator=(other); //operator= of A (base class)
- free();
- copyFrom(other);
- }
- return *this;
-}
- ```
-
-
-
-
-## Задачи
-
-**Задача 1:**
-Реализирайте класове бар, от който ще могат да се взимат напитки (нормални и алкохолни) в определен ред. Редът ще бъде по зареждането им в бара.
-**Напитката** има *име и количество (в мл)*, а **алкохолната напитка** има *име, количество и процент алкохол.*
-
-Примерен интерфейс:
- ```c++
-
-int main()
-{
- Bar b;
-
- b.addDrink("Coke", 330);
-
- b.addDrink("Fanta", 500);
-
- b.addAlocoholDrink("Zagorka", 500, 5);
-
- b.getAcloholDrink(); // Zagorka
-
- b.getDrink() // Coke
- b.getDrink() // Fanta
-}
- ```
-
-