Структуры и классы (введение в ООП)
struct
Иногда мы хотим, чтобы наш объект имел несколько характеристик. Так, например, для характеристики автомобиля мы можем указать следующие параметры: цвет, марка, стоимость и т.д.
В языке C++ уже определена такая вещь как структура. Структура - это составной тип данных, который может содержать в себе несколько переменных-членов.
Создадим стуктуру, описанную нами выше:
Как обращаться со стуктурой? Это достаточно просто - мы можем обращаться как с обычной переменной:
ООП
Использование структур неминуемо ведет нас в Объектно Ориентированное Программирование (ООП). ООП - это особый концептуальный подход к проектированию программ. Наиболее важными характеристиками ООП являются:
- Абстракция
- Инкапсуляция и сокрытие данных
- Полиморфизм
- Наследование
- Повторное использование кода
Класс - расширение С++ (относительно С), предназначенное для реализации средств. Чтобы упростить идентификацию классов, программисты прищли к соглашению, что классы должны именоваться с большой буквы. Рассмотрим объявление класса:
Здесь мы создали Bank_account. Класс - это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью. В данном случае наш класс описывает счет в банке. Пусть методами данного класса будут Add (добавить некоторую сумму), Remove (снять некоторую сумму) и Show_money - показать баланс.
Объектом (экземпляром) класса будем называть отдельный представитель класса. Людей много, а счет один.
Новыми словами являются private и public. Любая программа, использующая объект определенного класса, может иметь доступ к членам из раздела public. Доступ к членам из раздела private программа может получить только через открытые функции-члены из раздела public, или по другому, из интерфейса. Этот подход называется сокрытием данных. Открытые функции-члены называют методами.
Рассмотрим члены private. Здесь мы описываем то, как хранятся наши данные. В данном случае у нас всего одна переменная - amount (количество средств). Доступ к этому члену происходит только через public.
Теперь рассмотрим члены public. Первый член данного раздела - конструктор этого класса. Что такое конструктор? Конструктор - это особая функция, инициализирующая значения переменных из private. В нашем конструкторе мы инициализировали amount = 0. При отсутствии конструктора он создастся автоматически.
Далее у нас перечислены методы класса. Согласно стандарту программирования C++ классы должны именоваться с большой буквы (Bank_account). Также все определения должны собираться в особый файл - заголовочный. Он имеет расширение .h
Пусть наш заголовочный файл будет называться bank.h. Тогда мы помещаем определение нашего класса в этот файл:
Теперь, если мы захотим использовать класс Bank_account нам нужно будет подключить заголовочный файл “bank.h”. Для определений создадим файл исходного кода def.cpp и поместим туда все определения методов из класса.
Теперь в главном файле нам достаточно подключить “bank.h”. Как же нам теперь использовать данный класс? Это достаточно просто, создаем объект класса Kate (по легенде, Kate открыла счет в банке, и этот счет называется её имененм). Теперь используем методы класса, также как мы это делали с обычными функциями.
Данный подход, а именно разделение программы на несколько составляющих файлов называется раздельной компиляцией и очень полезен в промышленном программировании, где стандартизация и упорядоченность играют огромную роль.
Как вы видите, классы - это достаточно мощный инструмент в языках программирования. В данной статье были рассмотрены базовые понятия ООП, и теперь вы и сами в состоянии двигаться дальше.