Объектно-ориентированное программирование в C#: кратко о ключевых концепциях и терминологии


По объектно-ориентированному программированию (ООП) написано немало статей, уроков, глав в книгах и даже целых учебников. Зачем же нужна еще одна статья? Все просто: в этой статье мы попытаемся вкратце рассмотреть некоторые ключевые концепции и терминологию ООП применительно к C#. Распишем максимально доступно даже для самого-самого начинающего, приведем аналогию и сравним с позиции ООП C и C#.

Итак, в ООП применяют классы для инкапсуляции (другим словом - объединения) данных (атрибутов) и методы (поведения). У объектов есть свойство, позволяющее скрывать свою реализацию от других (сокрытие информации). Некоторая часть объектов имеет возможность взаимодействовать между собой с помощью прописанных правил – интерфейсов. Однако, эта возможность взаимодействия не подразумевает того, что объекты «видят» реализацию в других, напротив, подробности реализации скрыты в самих объектах.

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

Существуют так называемые процедурные языки: к ним относится, например, C – в нем программирование ориентируется на операции. А вот в C# программирование объектно-ориентированное. Основной элемент программирования в C – функция, в C# - класс. Все объекты создаются (инстанциируются) из классов. Справедливости ради отметим, что в C# тоже есть функции, только их называют методами; и они инкапсулируются в пределах классов. Создавать программы на C# можно и не зная ООП – никто не мешает писать код только из одних методов. Однако, в некоторых случаях это нецелесообразно, а при создании более-менее крупного приложения очень и очень трудоемко.

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

А вот в C# дело обстоит по-другому: здесь программисты в основном занимаются тем, что создают классы – собственные, определяемые программистом типы. Во всех классах имеются данные и методы, с помощью которых и можно использовать их. Компоненты данных класса могут называться по-разному: наиболее употребительное слово поля, реже – переменные экземпляра, члены данных, члены экземпляров – это общеупотребительная терминология, а не термины C#.

В C# основной акцент сделан именно на классы, а не методы. В системных требованиях существительные помогают программистам в определении набора классов, с которого и начнется процесс создания приложения. Программист берет данные классы и строит из них объекты, которые взаимодействуют друг с другом и создают цельную систему.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, си шарп, ООП




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




Урок 12. Переназначение переменных PHP
Комментарии: три способа документировать Java код
C#: объединение текстовых файлов с одинаковыми именами из разных папок