Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- **Задача 2: Агрегация в библиотеке**
- Создайте класс `Book` (книга) с полями `title` и `author`. Создайте класс `Library` (библиотека), который содержит коллекцию книг.
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- // создайте необходимые классы и методы
- int main() {
- Library library;
- library.addBook(Book("C++ Primer", "Stanley B. Lippman"));
- library.addBook(Book("Effective C++", "Scott Meyers"));
- library.displayBooks();
- return 0;
- }
- ```
- #### Пояснение:
- - Класс `Library` использует агрегацию, так как книги могут существовать независимо от библиотеки.
- ---
- ### **Задача 3: Композиция в компьютере**
- Создайте класс `CPU` (процессор) и класс `Computer` (компьютер). Класс `Computer` должен содержать объект класса `CPU` и предоставлять метод для вывода информации о процессоре.
- #include <iostream>
- #include <string>
- using namespace std;
- // создайте необходимые классы и методы
- int main() {
- Computer myPC("Intel Core i7");
- myPC.displayInfo();
- return 0;
- }
- ```
- #### Пояснение:
- - Класс `Computer` владеет объектом `CPU`, что является композицией.
- ---
- ### **Задача 4: Полиморфизм и наследование**
- Создайте базовый класс `Animal` с методом `makeSound()`. Создайте производные классы `Dog` и `Cat`, которые переопределяют этот метод. Используйте полиморфизм для вызова методов.
- #include <iostream>
- using namespace std;
- // создайте необходимые классы и методы
- int main() {
- Dog dog;
- Cat cat;
- animalSound(&dog);
- animalSound(&cat);
- return 0;
- }
- ```
- #### Пояснение:
- - Полиморфизм позволяет вызывать методы производных классов через указатель на базовый класс.
- ---
- ### **Задача 5: Наследование и доступ к членам**
- Создайте базовый класс `Person` с приватными полями `name` и `age`. Создайте производный класс `Employee`, который добавляет поле `salary` и предоставляет метод для вывода всей информации.
- #include <iostream>
- #include <string>
- using namespace std;
- // создайте необходимые классы и методы
- int main() {
- Employee emp("John Doe", 30, 50000);
- emp.display();
- return 0;
- }
- ```
- #### Пояснение:
- - Защищённые поля базового класса (`name`, `age`) доступны в производном классе.
- ---
- ### **Задача 6: Агрегация в магазине**
- Создайте класс `Product` (товар) и класс `Store` (магазин). Магазин содержит коллекцию товаров.
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- // создайте необходимые классы и методы
- int main() {
- Store store;
- store.addProduct(Product("Laptop", 1200));
- store.addProduct(Product("Phone", 800));
- store.displayProducts();
- return 0;
- }
- ```
- #### Пояснение:
- - Товары могут существовать независимо от магазина, что делает это агрегацией.
- ---
- ### **Задача 7: Композиция в доме**
- Создайте класс `Room` (комната) и класс `House` (дом). Дом содержит несколько комнат.
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- // создайте необходимые классы и методы
- int main() {
- House house({"Living Room", "Bedroom", "Kitchen"});
- house.displayRooms();
- return 0;
- }
- ```
- #### Пояснение:
- - Комнаты не могут существовать без дома, что делает это композицией.
- ---
- #include <iostream>
- #include <string>
- using namespace std;
- // создайте необходимые классы и методы
- ostream& operator<<(ostream& os, const Point& point) {
- point.display();
- return os;
- }
- int main() {
- ColoredPoint cp(3, 4, "Red");
- cout << cp << endl;
- return 0;
- }
- ```
- #### Пояснение:
- - Оператор `<<` перегружен для работы с базовым и производным классами.
- ---
- ### **Задача 9: Агрегация в школе**
- Создайте класс `Student` (ученик) и класс `Classroom` (класс). Класс содержит учеников.
- #include <iostream>
- #include <vector>
- #include <string>
- using namespace std;
- // создайте необходимые классы и методы
- int main() {
- Classroom classroom;
- classroom.addStudent(Student("Alice"));
- classroom.addStudent(Student("Bob"));
- classroom.displayStudents();
- return 0;
- }
- ```
- #### Пояснение:
- - Ученики могут существовать независимо от класса, что делает это агрегацией.
- ---
- ### **Задача 10: Композиция в телефоне**
- Создайте класс `Battery` (батарея) и класс `Phone` (телефон). Телефон содержит батарею.
- #include <iostream>
- #include <string>
- using namespace std;
- // создайте необходимые классы и методы
- int main() {
- Phone phone(5000);
- phone.displayInfo();
- return 0;
- }
- ```
- #### Пояснение:
- - Батарея не может существовать без телефона, что делает это композицией.
- ---
Advertisement
Add Comment
Please, Sign In to add comment