Ранее мы изучили, что такое объекты и классы. Также, рассмотрели свойства, которыми объекты обладают. Кроме того, были затронуты действия, которые могут совершаться над объектами, называемые методами.  Главной задачей объектно — ориентированного подхода является упрощение процесса разработки. Весь подход стоит на трех основных принципах: наследование, инкапсуляция и полиморфизм. Рассмотрим каждый из них.

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

Используя наследование, мы может определить ряд дочерних классов. Они же будут наследовать свойства и методы базового. Таким образом, мы расширяем функциональность базового класса.

Вернемся к ранее рассмотренному примеру кода. Был описан класс «Персонаж», который является базовым. От него могут быть унаследованы более «узкие» классы персонажей, такие как «Воин», «Стрелок», «Маг» и другие. Следует заметить, что класс может наследоваться только от одного базового класса.

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

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

Полиморфизм

Достаточно сложное в определении понятие. Если говорить упрощенно, мы можем использовать свойства и методы потомков. К примеру, мы объявили несколько потомков класса «Персонаж».

При подобной записи warrior будет являться объектом класса «Воин» несмотря на то, что типом мы указали базовый класс.

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

В C# любой класс является наследником класса Object. Благодаря этому свойству экземпляр любого класса обладает рядом полезных методов.

  • Equals() — сравнение переданного в качестве параметра объекта с текущим.
  • GetHashCode() — возвращает хеш-код текущего объекта в памяти.
  • GetType() — позволяет идентифицировать тип объекта.
  • ToString() — приводит класс к строке.
  • Finalize() — отвечает за уничтожение объекта (вызывается автоматически).
  • MemberwiseClone() — возвращает точную копию объекта.

Любой из этих методов может быть переопределен для изменения или дополнения функциональности.

Итак, это минимум, необходимый для понимания что такое объектно-ориентированное программирование. Переопределение методов мы рассмотрим далее. Удачных экспериментов, коллеги.

Также рекомендую изучить статью SOLID в объектно-ориентированном программировании

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

Вконтакте
Telegram
Facebook
Twitter
Одноклассники
Дзен
Google+

 
Рубрики: C#

×
%d такие блоггеры, как: