kutuzzzov

Задачи на наследование

Oct 15th, 2025
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.34 KB | None | 0 0
  1. **Задача 2: Агрегация в библиотеке**
  2. Создайте класс `Book` (книга) с полями `title` и `author`. Создайте класс `Library` (библиотека), который содержит коллекцию книг.
  3.  
  4. #include <iostream>
  5. #include <vector>
  6. #include <string>
  7. using namespace std;
  8.  
  9. // создайте необходимые классы и методы
  10.  
  11. int main() {
  12.     Library library;
  13.     library.addBook(Book("C++ Primer", "Stanley B. Lippman"));
  14.     library.addBook(Book("Effective C++", "Scott Meyers"));
  15.  
  16.     library.displayBooks();
  17.  
  18.     return 0;
  19. }
  20. ```
  21.  
  22. #### Пояснение:
  23. - Класс `Library` использует агрегацию, так как книги могут существовать независимо от библиотеки.
  24.  
  25. ---
  26.  
  27. ### **Задача 3: Композиция в компьютере**
  28. Создайте класс `CPU` (процессор) и класс `Computer` (компьютер). Класс `Computer` должен содержать объект класса `CPU` и предоставлять метод для вывода информации о процессоре.
  29.  
  30. #include <iostream>
  31. #include <string>
  32. using namespace std;
  33.  
  34. // создайте необходимые классы и методы
  35.  
  36. int main() {
  37.     Computer myPC("Intel Core i7");
  38.     myPC.displayInfo();
  39.  
  40.     return 0;
  41. }
  42. ```
  43.  
  44. #### Пояснение:
  45. - Класс `Computer` владеет объектом `CPU`, что является композицией.
  46.  
  47. ---
  48.  
  49. ### **Задача 4: Полиморфизм и наследование**
  50. Создайте базовый класс `Animal` с методом `makeSound()`. Создайте производные классы `Dog` и `Cat`, которые переопределяют этот метод. Используйте полиморфизм для вызова методов.
  51.  
  52. #include <iostream>
  53. using namespace std;
  54.  
  55. // создайте необходимые классы и методы
  56.  
  57. int main() {
  58.     Dog dog;
  59.     Cat cat;
  60.  
  61.     animalSound(&dog);
  62.     animalSound(&cat);
  63.  
  64.     return 0;
  65. }
  66. ```
  67.  
  68. #### Пояснение:
  69. - Полиморфизм позволяет вызывать методы производных классов через указатель на базовый класс.
  70.  
  71. ---
  72.  
  73. ### **Задача 5: Наследование и доступ к членам**
  74. Создайте базовый класс `Person` с приватными полями `name` и `age`. Создайте производный класс `Employee`, который добавляет поле `salary` и предоставляет метод для вывода всей информации.
  75.  
  76. #include <iostream>
  77. #include <string>
  78. using namespace std;
  79.  
  80. // создайте необходимые классы и методы
  81.  
  82. int main() {
  83.     Employee emp("John Doe", 30, 50000);
  84.     emp.display();
  85.  
  86.     return 0;
  87. }
  88. ```
  89.  
  90. #### Пояснение:
  91. - Защищённые поля базового класса (`name`, `age`) доступны в производном классе.
  92.  
  93. ---
  94.  
  95. ### **Задача 6: Агрегация в магазине**
  96. Создайте класс `Product` (товар) и класс `Store` (магазин). Магазин содержит коллекцию товаров.
  97.  
  98. #include <iostream>
  99. #include <vector>
  100. #include <string>
  101. using namespace std;
  102.  
  103. // создайте необходимые классы и методы
  104.  
  105. int main() {
  106.     Store store;
  107.     store.addProduct(Product("Laptop", 1200));
  108.     store.addProduct(Product("Phone", 800));
  109.  
  110.     store.displayProducts();
  111.  
  112.     return 0;
  113. }
  114. ```
  115.  
  116. #### Пояснение:
  117. - Товары могут существовать независимо от магазина, что делает это агрегацией.
  118.  
  119. ---
  120.  
  121. ### **Задача 7: Композиция в доме**
  122. Создайте класс `Room` (комната) и класс `House` (дом). Дом содержит несколько комнат.
  123.  
  124. #include <iostream>
  125. #include <vector>
  126. #include <string>
  127. using namespace std;
  128.  
  129. // создайте необходимые классы и методы
  130.  
  131. int main() {
  132.     House house({"Living Room", "Bedroom", "Kitchen"});
  133.     house.displayRooms();
  134.  
  135.     return 0;
  136. }
  137. ```
  138.  
  139. #### Пояснение:
  140. - Комнаты не могут существовать без дома, что делает это композицией.
  141.  
  142. ---
  143.  
  144. #include <iostream>
  145. #include <string>
  146. using namespace std;
  147.  
  148. // создайте необходимые классы и методы
  149.  
  150. ostream& operator<<(ostream& os, const Point& point) {
  151.     point.display();
  152.     return os;
  153. }
  154.  
  155. int main() {
  156.     ColoredPoint cp(3, 4, "Red");
  157.     cout << cp << endl;
  158.  
  159.     return 0;
  160. }
  161. ```
  162.  
  163. #### Пояснение:
  164. - Оператор `<<` перегружен для работы с базовым и производным классами.
  165.  
  166. ---
  167.  
  168. ### **Задача 9: Агрегация в школе**
  169. Создайте класс `Student` (ученик) и класс `Classroom` (класс). Класс содержит учеников.
  170.  
  171. #include <iostream>
  172. #include <vector>
  173. #include <string>
  174. using namespace std;
  175.  
  176. // создайте необходимые классы и методы
  177.  
  178. int main() {
  179.     Classroom classroom;
  180.     classroom.addStudent(Student("Alice"));
  181.     classroom.addStudent(Student("Bob"));
  182.  
  183.     classroom.displayStudents();
  184.  
  185.     return 0;
  186. }
  187. ```
  188.  
  189. #### Пояснение:
  190. - Ученики могут существовать независимо от класса, что делает это агрегацией.
  191.  
  192. ---
  193.  
  194. ### **Задача 10: Композиция в телефоне**
  195. Создайте класс `Battery` (батарея) и класс `Phone` (телефон). Телефон содержит батарею.
  196.  
  197. #include <iostream>
  198. #include <string>
  199. using namespace std;
  200.  
  201. // создайте необходимые классы и методы
  202.  
  203. int main() {
  204.     Phone phone(5000);
  205.     phone.displayInfo();
  206.  
  207.     return 0;
  208. }
  209. ```
  210.  
  211. #### Пояснение:
  212. - Батарея не может существовать без телефона, что делает это композицией.
  213.  
  214. ---
Advertisement
Add Comment
Please, Sign In to add comment