Введение в ООП в C++
Сейчас мы займемся изучением ООП в C++. Давайте рассмотрим пример из жизни, а потом перенесем его в C++.
В качестве примера возьмем автомобиль. У него есть колеса, цвет, вид кузова, объем двигателя и так далее. Кроме того, водитель может отдавать ему команды: ехать, остановиться, повернуть направо, налево и т.п.
Можно говорить о том, что существует некоторый класс автомобилей, обладающий общими свойствами (у всех есть колеса и всем им можно отдавать команды).
Конкретный автомобиль, стоящий на улице - это представитель этого класса, или, другими словами, объект этого класса. У всех объектов этого класса есть свойства: количество колес, цвет, вид кузова и методы: ехать, остановиться, повернуть направо, налево.
Другими словами сам класс - это чертеж, по которому на заводе делаются автомобили. Объект же - это сама машина, сделанная по этим чертежам.
В C++ класс создается с помощью ключевого
слова class, за которым следует название
этого класса. Давайте сделаем класс Car:
class Car {
// тут код, то есть чертеж автомобиля
};
Укажем теперь в нашем чертеже, что любой автомобиль, созданный по этому чертежу, будет иметь свойство для цвета и свойство для количества топлива.
Для этого внутри класса напишем свойство
color и свойство fuel:
#include <string>
class Car {
public:
// Зададим свойства (по сути переменные класса):
std::string color; // цвет автомобиля
int fuel; // количество топлива
};
Давайте теперь сделаем методы нашего класса.
В C++ методы, подобно обычным функциям, объявляются
внутри класса. Перед ними пишется ключевое
слово public.
Как уже упоминалось выше, наш автомобиль может ехать, может поворачивать, может останавливаться. Сделаем соответствующие методы в нашем классе:
#include <string>
class Car {
public:
std::string color; // цвет автомобиля
int fuel; // количество топлива
// Команда ехать:
void go()
{
// какой-то код
}
// Команда поворачивать:
void turn()
{
// какой-то код
}
// Команда остановиться:
void stop()
{
// какой-то код
}
};
Мы с вами сделали чертеж нашего автомобиля. Теперь нужно отправиться на завод и сделать объект этого класса (то есть конкретный автомобиль).
В C++ это делается объявлением переменной, тип которой - имя класса. Если просто написать имя класса - это ни к чему не приведет (это все равно, что, к примеру, объявить массив и никуда его не записать). Нам нужна переменная для хранения этого объекта.
Пусть эта переменная будет называться myCar
- запишем в нее созданный нами объект:
Car myCar;
После создания автомобиля можно обращаться к его свойствам. Обращение к ним происходит через точку. Давайте установим свойства нашего объекта:
#include <string>
Car myCar; // командуем заводу сделать автомобиль
// Устанавливаем свойства объекта:
myCar.color = "red"; // красим в красный цвет
myCar.fuel = 50; // заливаем топливо
Все, наш автомобиль создан, покрашен и заправлен. Теперь мы можем отдавать ему команды через методы этого автомобиля.
Обращение к методам также происходит через точку, но, в отличие от свойства, после имени метода следует писать круглые скобки. Давайте покомандуем нашим объектом:
myCar.go();
myCar.turn();
myCar.stop();