Лабораторная работа 6. Строки. Повторение классов
1. Понятие класса и объекта
Класс — это пользовательский тип данных, объединяющий переменные (поля) и функции (методы), которые работают с этими данными.
Пример простого класса:
#include <iostream> #include <string> using namespace std; class Student { private: string name; int age; double grade; public: void setData(string n, int a, double g) { name = n; age = a; grade = g; } void showData() { cout << "Имя: " << name << ", Возраст: " << age << ", Средний балл: " << grade << endl; } };
Объект — это конкретный экземпляр класса:
Student s1; s1.setData("Анна", 19, 4.7); s1.showData();
2. Модификаторы доступа
| Модификатор | Значение |
|---|---|
public | доступен из любой части программы |
private | доступен только внутри класса |
protected | используется при наследовании |
3. Инкапсуляция
Это принцип ООП, заключающийся в сокрытии данных и управлении доступом через методы.
Данные защищаются с помощью private, а доступ к ним — через public функции.
4. Конструкторы
Конструктор — это специальная функция, вызываемая при создании объекта.
Пример:
class Car { private: string brand; double price; public: Car(string b, double p) { // конструктор brand = b; price = p; } void print() { cout << "Марка: " << brand << ", Цена: " << price << endl; } };
5. Массивы объектов
Позволяют хранить несколько объектов одного класса:
Student group[3]; for (int i = 0; i < 3; i++) group[i].setData(...);
Можно также использовать vector<Student> из библиотеки <vector>.
6. Работа со строками (std::string)
Строки в C++ реализованы классом std::string.
Они удобны, безопасны и имеют встроенные методы.
| Метод | Назначение |
|---|---|
.length() | длина строки |
.find("текст") | поиск подстроки |
.substr(pos, len) | выделение подстроки |
.append("текст") | добавление текста |
.erase(pos, len) | удаление символов |
Пример:
string fullName = "Иванов Иван"; if (fullName.find("Иван") != string::npos) cout << "Имя найдено!" << endl;
Практическая часть
Задание 1. “Кинотеатр”
Создать класс Movie, содержащий:
название фильма (
string title);жанр (
string genre);рейтинг (
double rating).
Реализовать:
Методы
input()иprint().Метод
isHit()— возвращаетtrue, если рейтинг > 8.0.Создать массив из N фильмов.
Вывести фильмы с рейтингом выше 8.0.
Подсказка:
if (rating > 8.0) cout << title << " — хит!" << endl;
Задание 2. “Автосалон”
Создать класс Car, содержащий:
марку (
string brand);модель (
string model);цену (
double price).
Реализовать:
Конструктор и метод
printInfo().Метод
isLuxury()— возвращаетtrue, если цена > 5 000 000.Создать массив из 5 автомобилей.
Вывести все автомобили класса «люкс».
Задание 3. “Погода в городах”
Создать класс Weather с полями:
город (
string city);температура (
double temperature);описание погоды (
string description).
Реализовать:
Метод
input().Метод
print().Найти и вывести город с максимальной температурой.
Вывести города, где температура < 0°C.
Задание 4. “Счёт в банке”
Создать класс BankAccount, который хранит:
номер счёта (
string accountNumber);имя владельца (
string owner);баланс (
double balance).
Реализовать:
Методы
deposit(sum),withdraw(sum),printInfo().Проверку: нельзя снять больше, чем есть на счёте.
Массив из нескольких счетов.
Найти счёт с наибольшим балансом.
Задание 5. “Интернет-магазин”
Создать класс Item с полями:
название (
string name);категория (
string category);цена (
double price);количество (
int quantity).
Реализовать:
Методы
input(),print(),getTotalCost().Массив товаров.
Найти:
общую стоимость всех товаров;
самый дорогой товар;
товары заданной категории.
Задание 6 (на строки). “Анализ текста”
Создать класс TextAnalyzer, содержащий строку text.
Реализовать методы:
countWords()— количество слов;countLetters()— количество букв;containsWord(string word)— поиск слова в тексте.
Пример работы:
Введите текст: Программирование на C++ очень интересно! Введите слово для поиска: C++ Количество слов: 4 Количество букв: 28 Слово найдено!
Пример вывода (задание "Кинотеатр")
Введите количество фильмов: 3 1. Название: Дюна, Жанр: Фантастика, Рейтинг: 8.3 2. Название: Морбиус, Жанр: Боевик, Рейтинг: 5.6 3. Название: Оппенгеймер, Жанр: Драма, Рейтинг: 8.9 Хиты проката: Дюна (8.3) Оппенгеймер (8.9)