Andriy Shyrokoryadov

.Net developer, data scientist

Разница между объектом и классом - вопрос №2 на собеседование C# / .NET

Текст к видео "Разница между объектом и классом" на канале YouTube

Не касаясь программирования можно смело утверждать, что нас окружают объекты. Вы читаете этот текст или смотрите видео на экране монитора. И экран как часть, и монитор в целом — это объекты. Монитор стоит на столе, который также является объектом. Стол находится в комнате. Комната — это объект. Комната находится в доме или в квартире… Дом или квартира — это объекты. Такую цепочку можно назвать для каждого предмета. Каждый предмет — это объект.

Чем может характеризоваться объект? Для наглядности возьмем телевизор. Как мы можем описать телевизор, как параметры мы будет использовать. Большинство из нас будет интересовать следующие параметры:

  • диагональ телевизора;
  • цвет корпуса;
  • цена телевизора;

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

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

  • просмотр телевизионных программ;
  • просмотр видео на YouTube;
  • запуск браузера и просмотр интернет страниц;

Обратите внимание что все вышеперечисленные характеристики символизируют какое-либо действие. Назовём данную группу параметров методами.

Существуют ли еще какие-либо параметры, которые влияют на качество телевизора и комфорт его использования? Да, есть такие параметры, но мы как пользователи телевизора не можем на них влиять. Данные параметры изначально заложены производителем телевизоров, и мы даже не задумываемся ни об этих параметрах, ни об их характеристиках и значениях. Что это за параметры? Ну например емкость конденсаторов и сопротивление резисторов, которые использованы в микросхемах внутри телевизора. Влияет ли значение этих параметров на работу телевизора – влияет, знаем ли мы значение этих параметров при использовании телевизора – не знаем, можем ли мы использовать телевизор, не зная этих параметров – можем. Эти параметры существенны, и они влияют, скажем так, на качество изображения, но они как бы скрыты от нас. Назовем эту группу параметров полями.

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

В процессе производства телевизора он собирается из определенных деталей – каждая деталь узко специализирована:

  • аудио плата отвечает за воспроизведение звука;
  • плата WiFi необходима для подключения к беспроводным сетям;
  • ТВ тюнер необходим для получения и обработки сигнала с телевизионной антенны;

Естественно, таких компонентов значительно больше, однако для нашего примера будет достаточно трёх компонентов. Смело можно сказать, что телевизор собирается из компонентов, которые имеют определенные узкоспециализированные функции. То есть мы собираем конструктор из компонентов, в результате сборки которого, получается телевизор. В предыдущем предложении ключевым словом является конструктор. Компоненты, из которых мы собираем конструктор назовём зависимостями.

Итак, мы обсудили характеристики объекта, телевизора. Ниже список из характеристик, которые мы выделили:

  • свойства;
  • методы;
  • поля;
  • события;
  • конструктор;
  • зависимости;

Если мы формализируем эти характеристики в каком-либо виде, то получим документ, который будет выглядеть примерно так:

  • каждый телевизор должен иметь следующие свойства: диагональ, цвет, цена;
  • каждый телевизор должен показывать ТВ программы, видеоролики на YouTube, а также с помощью телевизора можно просматривать интернет страницы;
  • каждый телевизор должен иметь определенные параметры конденсаторов и резисторов, значение этих параметров может быть недоступно конечному пользователю;
  • в ответ на определенные события (нажатия кнопок) телевизор должен реагировать определенным образом;
  • для сборки каждого телевизора нам будут необходимы аудио плата, плата WiFi и ТВ тюнер;

Такая формальная запись различных параметров, характеризующих объект в программировании, называется классом. То есть класс — это формальная запись свойств объекта в соответствии с синтаксисом данного языка программирования. А объектом данного класса является нечто, иногда говорят инстанция, с характеристиками описанными в классе, которые имеют определенное значение. Работая с классами в C# и декларируя классы, вы будете постоянно сталкиваться с этими понятиями:

  • свойства;
  • методы;
  • поля;
  • события;
  • конструктор;
  • зависимости;