Объектно-ориентированное программирование

Объектно-ориентированное программирование

BIT

Объектно-ориентированное программирование(ООП) - метод программирования, основными концепциями которого являются класс и объект.

Класс - это тип, описывающий данные и функциональность объектов.

Объект - это сущность, обладающая параметрами и функциональностью, задающей набор действий, которые может совершать объект. Объект является экземпляром класса, то есть конкретной реализацией класса, со своим набором параметров.

Пример на котах(все же любят котиков).


У нас есть класс - Кот. В нём задан набор параметров: имя, вес, возраст, цвет. Так же задана функциональность: спать, просить еду, кушать, играть, мурлыкать. И теперь мы можем создавать любое количество котов(экземпляров класса), со своим набором параметров. Любой кот будет объектом нашего класса, у них будет один набор функций, но у каждого будет свой вес, возраст и цвет.

Ключевыми принципами ООП являются инкапсуляция, наследование и полиморфизм. Так же часто выделяют ещё один важный принцип - абстракцию.

Инкапсуляция

Инкапсуляция - это принцип позволяющий объединить данные и функции, работающие с ними в классе и скрыть от пользователя детали реализации.

Инкапсуляция позволяет скрыть от пользователя все детали реализации и отрыть только то, что необходимо для использования объекта. Инкапсуляция реализуется с помощью модификаторов доступа. Прямой доступ к данным класса при этом закрывается, а возможности получения данных или их изменения реализуются на уровне функций. Это позволяет защитить программу от изменений со стороны неопытного пользователя.

Например: в нашем классе Кот пользователь не должен иметь возможность менять возраст, вес и цвет кота, поэтому мы оставляем ему возможность только узнать их значения. А вот поменять имя хозяин кота очень даже может, значит делаем две функции с возможностью изменить и узнать имя, соответственно.

Наследование

Ещё один не менее важный принцип, это наследование. Он позволяет создавать новые классы, дополняющие функции и параметры класса родителя. Так же класс наследник может переопределить некоторые функции класса родителя, т. е. реализовать по своему. Основной принцип наследования заключается в том, что объект класса наследника всегда является частным случаем реализации родительского класса.

Например: создаём два новых класса наследника класса Кот: УличныйКот и ДомашнийКот. УличныйКот наследует все параметры и функции класса родителя, но реализует новую функцию - убегать от собак. А ДомашнийКот аналогично наследует все параметры и функции класса родителя, но добавляет свой параметр - хозяина.

Полиморфизм

Полиморфизм позволяет создать общий интерфейс для группы близких по смыслу действий, т. е. позволяет реализовать свою функцию под разные наборы параметров, за счёт чего снижает сложность программ.

Например мы можем сделать несколько методов для ввода возраста и веса нашего кота, один из них будет обрабатывать текст, второй числа. Это поможет пользователю корректно задавать параметры объектов.

Абстракция

Абстракция является необязательным принципом ООП и во многих источниках не приводится, но она не менее важна чем остальные. Она позволяет выделить значимые характеристики объекта, исключая из рассмотрения не значимые.

Например если наша программа работает с котами в качестве хозяина, то такого набора параметров и функций достаточно, но что, если наша программа работает в качестве врача ветеринара. В таком случае наш класс должен содержать ещё данные медицинские данные кота, такие как перенесённые заболевания и сведения о прививках и не нужны функции кушать, играть, просить еду, мурлыкать. Этот пример показывает, что при написании класса нужно учитывать контекст использования его объектов и использовать только необходимые параметры и функции.


Report Page