Объектно ориентированное программирование (ООП) - что это такое - статья
Primary tabs
Forums:
Ранее мы говорили, о двух возможных подходах, теперь рассмотрим подробнее ООП.
Предположим, что мы программируем систему, моделирующую космический корабль в некотором пространстве.
Что он может?
Он может:
- Разгоняться
- Тормозить
- Открывать и закрывать солнечные паруса
В зависимости от "выполненности" операций представленных выше корабль будет двигаться с разной скоростью, мы можем написать несколько функций принимающих параметры - например число указывающее насколько сильно следует открыть паруса.
А в каких-то переменных мы будем хранить параметры которые меняются после вызова функций - скорость, ускорение - может что-то ещё.
Но что если нам необходимо поддержать замену парусов одного типа на паруса другого типа?
Конечно - мы можем написать соответствующую функцию, но хранить значения о том какие именно паруса используются опять же придётся в переменных -равно как и все специальные характеристики частей корабля, если они обладают некоторым функционалом, влияющим на состояние нашей модели (например, весом) - это весьма неудобно. Хочется изменить сам подход к построению программы - и вот тут то нам и приходит на помощь ООП.
ООП
ООП - объектно-ориентированное программирование, относится к типу походов построения языка (а обычно стиль поддерживается именно на уровне языка - то есть в языке например должно быть что-то вроде зарезервированного слова для объявления класса), ориентированных на данные.
Наш космический корабль - это объект, который в исходном коде программы описывается классом , у него есть:
- Поля - это значения (переменные класса), которые можно менять как непосредственным обозначением так и через вызов методов (см. ниже) - в них мы можем ранить все необходимые данные - скорость, суммарную массу, название корабля, имя капитана и т.д.
- Методы - это функции (подпрограммы) ,которые могут работать как с внешними данными (например считать путь до звезды по её координатам, которые передаются на наш корабль с Земли - то есть извне) , так и с данными самого класса - то есть, например, функция управляющая парусом может править значение скорости, которое мы договорились хранить в соответствующем поле.
Паруса, двигатель -и даже капитан - теперь тоже могут быть объектами - и эти объекты мы можем и будем хранить (вернее - ссылки на них, подробнее о типах смотри здесь) в полях класса "Корабль" ,просто задав им соответствующий тип.
Тип класса обычно описывается отдельно (не на месте объявления) - после того как он описан можно объявить поле соответствующего типа.
Вывод
Таким образом мы представили нашу систему в виде совокупности (в частности - иерархии ,как как например объект "двигатель" входит в объект "корабль") объектов и теперь можем поговорить об основных принципах ООП.
- Log in to post comments
- 5869 reads