Найти в Дзене

Объекты и их ориентация, или рассказ о модном сейчас ООП

Оглавление

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

Предупреждаю сразу - здесь много букв и статья получилась достаточно большой. Поэтому запаситесь терпением.

Разделяют 2 стиля (вида) программирования: Процедурный и Объектный.

Процедурный, как следует из названия, основан на прямом описании выполняемых действий.

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

С этим термином лично я столкнулся еще в 2000 году когда активно начал изучение языка программирования С++.

В настоящее время везде и всюду требуют ООП подход в программировании, и если Вы его используете - Вы молодец!

Что же это такое, объекты? И причем здесь ориентация? Давайте подробнее разберем как данный подход можно применить в программировании.

Немного теории

Объект - это некая сущность. Хотел сказать, что объект - это некий объект, но тогда получается я вас запутаю. И все-же, объект - это сущность.

Если хотите, объект - это некий "черный ящик", который принимает данные на вход и отдает данные на выход. Или выполняет какие-либо действия. А целью ООП является описание взаимодействия множества таких вот "черных ящиков" друг с другом (внешним миром).

Вся прелесть подхода ООП заключается в том, что описание самих объектов может делать один программист, а их взаимодействие друг с другом - другой. Таким образом мы подобрались к самой сути ООП - повторное использование ранее написанного программного кода. При этом если программист использует в своих программах объекты, то ему уже абсолютно без разницы КАК объект выполняет то или иное действие. Ему гораздо важно знать необходимые параметры которые он может передать этому объекту, а также тот результат который выдаст данный объект.

Почти всегда каждый объект имеет свой набор "свойств", или как их еще называют, "характеристик". Иногда их еще называют "аттрибуты", но чаще всего можно услышать именно "свойства".

Понятно объясняю? Нет? Мне пока тоже не совсем понятно. Поэтому попытка номер два.

Перейдем из плоскости сухой скучной терминологии в плоскость "бытового" применения. Все что нас окружает - это и есть объекты. Абсолютно все, включая нас с вами. Мы все - объекты. У нас есть определенные задачи, которые мы выполняем. Также у нас есть данные, которые мы получаем на вход и должны выдать другому объекту для дальнейшей обработки.

Тут вы скажите, что с одушевленными предметами, вроде людей, все понятно. А как же быть с неодушевленными предметами, например, с чашкой, куда мы наливаем чай, кофе или другой любимый напиток. И тут тоже все просто. В данном случае чашка - это некий "контейнер", который предназначен для временного хранения всего того, что в него помещается. И отдать этот контейнер должен тот объект, который в него поместят.

Важно отметить то, что объекты описываются при помощи такого понятия, как класс.

Также следует сказать о том, что есть великолепная возможность наследования объектов один от другого. Под наследованием понимается то, что новый объект становится обладателем всех свойств и действий, которые присущи его предку (родителю), а также может иметь еще и набор своих "уникальных" качеств.

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

Переходим к практике

Оглянемся вокруг. И что мы увидим? Правильно, объекты. Нас всюду окружают объекты.

В качестве первого примера возьмем, например, человека как вид. Для упрощения мы не будем описывать полностью этот объект, я лишь постараюсь показать как применить принцип ООП для такого объекта, как человек.

класс : Человек

  • свойство : имя
  • свойство : руки
  • свойство : ноги
  • свойство : голова
  • свойство : туловище
  • действие : есть
  • действие : пить
  • действие : спать
  • действие : ходить
  • действие : лежать

конец описания класса

Как вы понимаете, я далеко не полностью описал все что можно описать в человеке, но основные моменты показал. При этом, как я говорил ранее, в качестве свойств мы можем использовать другие объекты. Именно это и показано в нашем описании. Например, класс Руки можно описать так:

класс : Руки

  • свойство : количество
  • свойство : длина
  • свойство : количество пальцев
  • действие : махать

конец описания класса

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

Размножение однотипных объектов

Объекты обладают замечательной способностью - они могут создавать себе подобных. Суть этого заключается в том, что один раз описав класс Человек мы можем наделать любое количество этих "человеков". При этом каждый из них будет обладать набором свойств и действий, которые мы задали при описании общего класса, но значения этих свойств и действий мы можем задавать индивидуально.

Например, создадим 2 человека. Кстати, во многих языках программирования для задания нового экземпляра класса используется ключевое слово new (новый - англ.). Одного назовем Петя, другого - Вася. Для этого нужно задать свойству имя нашего класса соответствующее значение. Также можно сделать так, что Петя будет, например, спать по 12 часов, а Вася - по 7 часов в сутки.

И после этого при подаче команды спать обоим человекам Петя проснется через 12 часов, а Вася - через 7. При этом нас абсолютно не будет волновать все процессы, которые будут проходить внутри человеков с именами Вася и Петя, Мы дали команду - получили результат. И если возникнет необходимость переделать так, чтобы Вася вместо 7 часов спал 8 часов, то мы должны будем изменить описание его действия спать соответствующим образом. Это делается один раз в одном месте. И все, после этого он будет спать по 8 часов, а не по 7 как раньше.

Если продолжать тему класса Человек, то можно взять в пример каждого из нас. Мы все человеки, являемся представителями (или как это принято называть, "экземплярами") класса Человек, который я описывал ранее. Но все мы уникальны. Мы имеем много общего с другими такими же человеками (общие свойства). но при этом у нас есть определенный набор уникальных свойств и действий. Мы взяли характеристики (свойства) от своих родителей, а они в свою очередь - от своих родителей и т.д. При этом в результате каких-то процессов нас наделили уникальными свойствами. Даже не так скажу. Свойства остались теми же, изменились их значения. У нас также есть руки, ноги, глаза, и т.п., но вот значения этих свойств уже изменены. Мы частично похожи на своих родителей, а кто-то похож даже не на родителей, а на бабушек и дедушек, или даже прабабушек и прадедушек.

Заключение

В заключении можно сказать о том, что все вокруг нас - это объекты. Любой предмет который нас окружает - это объект. И, как любой объект, его можно описать с помощью ООП. Т.е. создать класс и описать в нем все свойства и действия (методы) которые присущи этому объекту.

Небольшая подсказка: При описании сложных объектов лучше продвигаться "от общего к частному". Особенно когда дело доходит до описания объектов когда мы мало представляем о его внутреннем строении. И при более детальном разборе на составляющие мы будем получать модель данных объекта.

Продолжение следует ...

#Программирование #ООП