ООП, как идеология программирования. Отличия от предшествующих подходов, применяемых в программировании ранее. Полный
ООП — парадигма программирования, в которой основными концепциями являются понятия объекта и класса. ООП — идеология и технология программирования.
Объектно-ориентированные программы более просты и мобильны, их легче модифицировать и сопровождать, чем их "традиционных" собратьев. Кроме того, похоже, сама идея объектной ориентированности при грамотном ее использовании позволяет программе быть даже более защищенной от различного рода ошибок, чем это задумывал программист в момент работы над ней.
Однако сами идеи ООП довольно трудны для восприятия "с нуля".
Стратегию ООП лучше всего описать как смещение приоритетов в процессе программирования от функциональности приложения к структурам данных. Это позволяет программисту моделировать в создаваемых приложениях реальные объекты и ситуации.
Технология ООП обладает тремя главными преимуществами:
· повышенно надежна и проста для сопровождения — правильное проектирование обеспечивает простоту расширения и модификации объектно-ориентированных программ. Модульная структура позволяет вносить независимые изменения в разные части программы, сводя к минимуму риск ошибок программирования;
· ускоряет цикл разработки — модульность и здесь играет важную роль, поскольку различные компоненты объектно-ориентированных программ можно легко использовать в других программах, что уменьшает избыточность кода и снижает риск внесения ошибок при копировании.
Специфика ООП заметно повышает эффективность труда программистов и позволяет им создавать более мощные, масштабируемые и эффективные приложения.
Идеология ООП держится на трех китах: наследование, полиморфизм (то есть использование виртуальных функций), инкапсуляция. Но главный из них — наследование. Без наследования все остальное не имеет смысла.
Отличается от предыдущих подходов объединением данных и их обработки в единой синтаксической конструкции (классе).
2. Основные понятия ООП: класс, объект, поле, свойство, метод, событие. Реализация событий с помощью модели делегатов. Полный.
Объект — это специфическая компьютерная сущность, которая существует в компьютерной памяти и может описывать реальный объект (из реального мира).
В современных объектно-ориентированных языках программирования каждый объект является значением, относящимся к определённому классу. У класса существует множество определений
Класс — шаблон создания объекта.
Класс также представляет собой объявленный программистом составной тип данных, имеющий в составе:
Поля данных — параметры объекта, задающие его состояние (свойства объекта предметной области). Иногда поля данных объекта называют свойствами объекта, из-за чего возможна путаница. Физически поля представляют собой значения (переменные, константы), объявленные как принадлежащие классу.
Объекты одного класса имеют одинаковые поля.
Свойство — механизм доступа к полям.
Свойство — способ доступа к внутреннему состоянию объекта, имитирующий переменную некоторого типа. Обращение к свойству объекта выглядит так же, как и обращение к структурному полю (в структурном программировании), но, в действительности, реализовано через вызов функции. При попытке задать значение данного свойства вызывается один метод, а при попытке получить значение данного свойства — другой.
Свойство — псевдополе, доступное для чтения и / или записи.
Метод — процедура или функция, принадлежащая какому-либо классу (объекту).
Метод — процедура или функция (подпрограмма), управляющая данными, которые определены в классе. Они определяют действия, которые можно выполнять над объектом такого типа, и которые сам объект может выполнять. Может обеспечивать доступ к данным (как и свойство).
Делегаты. События и делегаты (без синтаксиса).
Делегат — шаблон, определяющий синтаксис оператора, который описывает метод.
Делегаты являются ссылками на методы, инкапсулирующими настоящие указатели и предоставляющими удобные сервисы для работы с ними. Ссылки представляют собой объекты соответствующего типа. Все делегаты являются объектами типа System.Delegate (или System.MulticastDelegate, который является производным от первого).
Делегаты позволяют без использования дополнительных механизмов присоединить к событию несколько функций обработчиков. Фактически, делегат представляет собой объект — черный ящик, скрывающий в своих недрах указатели на функции.