
- •Лекции по курсу "Технология программирования" (1-й семестр) Оглавление
- •Технология .Net Предыдущее состояние дел.
- •Главные компоненты платформы .Net (clr, cts и cls)
- •Общеязыковая среда выполнения (clr)
- •О бщая система типов и общеязыковые спецификации (cts и cls)
- •Библиотека базовых классов
- •Роль языка с#
- •Компоновочные блоки
- •Роль метаданных типов .Net
- •Роль манифеста компоновочного блока
- •Общая система типов.
- •Объектно-ориентированное программирование
- •Главные элементы объектно-ориентированного подхода
- •Дополнительные элементы ооп
- •Принципы объектно-ориентированного программирования.
- •Классы Инкапсуляция
- •Объект (экземпляр класса).
- •Ключевое слово this
- •Отношения между объектами.
- •Основные отличительные особенности класса
- •Спецификаторы доступа
- •Состав класса
- •Поля класса
- •Доступ к полям
- •Статические и экземплярные переменные
- •Методы (функции-члены класса)
- •Переменное число параметров метода
- •Статические методы
- •Конструкторы
- •Закрытые конструкторы или классы без экземпляров
- •Статические конструкторы.
- •Деструкторы
- •Абстрактные методы и классы.
- •Свойства
- •Индексаторы
- •Статические классы
- •Частичные классы
- •Рекомендации по программированию
- •Наследование Понятие наследования в программировании
- •Типы наследования
- •Наследование реализации
- •Определение наследующих классов
- •Уровень доступа protected и internal
- •Ссылка на объект базового класса
- •Протоклассы
- •Предотвращение наследования с помощью ключевого слова sealed.
- •Отношения между классами
- •Абстрактные классы.
- •Класс object
- •Функциональные замыкания
- •Разработка функциональных замыканий с помощью наследования
- •Разработка функциональных замыканий с помощью экземпляров класса
- •Заключение.
- •Полиморфизм
- •Полиморфизм наследующих классов.
- •Переопределение методов родительского класса. Раннее связывание.
- •Виртуальные методы и их переопределение.
- •Как вызывают виртуальные методы
- •Виртуальные функции и принцип полиморфизма
- •Перегрузка.
- •Перегруженные конструкторы
- •Рекомендации программисту.
Главные элементы объектно-ориентированного подхода
1. Абстрагирование. Абстракция - это такие существенные характеристики некоторого объекта, которые отличают его от всех других объектов и, таким образом, четко определяют особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа. Абстрагирование концентрирует внимание на внешних особенностях объекта и позволяет отделить самые существенные особенности поведения от деталей их осуществления. Таким образом, интерфейс объекта содержит только существенные аспекты поведения. Выбор достаточного множества абстракций для заданной предметной области является главной проблемой ООП.
2. Ограничение доступа. Дополняет первый принцип. Если абстрагирование фокусирует внимание на внешних особенностях объекта, то ограничение доступа не позволяет различать внутреннее устройство объекта. Обращение к объекту возможно только через его интерфейс. Ограничение доступа - это процесс защиты составных частей объекта, не затрагивающий его существенных характеристик как нечто целого.
Модульность и декомпозиция. Одним из основных способов анализа сложных систем является декомпозиция. При проектировании сложной программной системы необходимо разделять ее на все меньшие и меньшие подсистемы, каждую из которых можно совершенствовать независимо. Декомпозиция разрабатываемой программной системы на ряд тесно связанных раздельно компилируемых модулей с целью снижения затрат на программирование за счет независимой разработки и тестирования существенно уменьшает затраты. Различают следующие виды декомпозиции: алгоритмическая (разбиение на подпрограммы) и объектно-ориентированная (разбиение на совокупность взаимодействующих объектов). Опыт показывает, что полезней вначале применить объектный подход, а затем после упрощения системы - алгоритмический.
Иерархия. Это ранжированная или упорядоченная система абстракций.
Существуют следующие типы иерархий.
- Структура классов.
- Структура объектов.
Наследование - это такое соотношение между классами, когда один класс использует структурную или функциональную часть одного или нескольких других классов (соответственно простое или множественное наследование).
Дополнительные элементы ооп
5. Типизация - это ограничение, накладываемое на класс объектов и препятствующее замене одних классов другими (или сильно сужающее возможность такой замены).
6. Параллелизм - свойство объектов находиться в активном, либо пассивном состоянии. ООП удовлетворяет требованиям распределенных систем, поскольку явно определяет блоки распределения и перемещения или взаимодействующие объекты.
7. Устойчивость - свойство объекта существовать во времени (вне зависимости от процесса, породившего данный объект) и (или) в пространстве (перемещение объекта из адресного пространства, в котором он был создан)|. Есть разные способы существования объектов, начиная с объектов, которые существует лишь во время определенных вычислений и кончая объектами в базе данных, которые существуют даже вне программ.
Различают следующие виды устойчивости:
- Промежуточные результаты вычислений выражений.
- Локальные переменные в вызове процедур.
- Собственные переменные.
- Данные, сохраняющиеся между вызовами основной программы.
- Данные, которые переживают всю программу.
Необходимо отметить, что количество абстракций в системе намного превышает возможности их одновременного контроля. Ограничение доступа позволяет в какой-то мере устранить это препятствие, убрав из поля зрения внутреннее содержание абстракций. Модульность также упрощает эту задачу, объединяя логически связанные абстракции в группы. Значительное упрощение в понимании сложных задач достигается за счет образования иерархической структуры из абстракций.
Таким образом, объектно-ориентированный подход позволяет:
снизить сложность программного обеспечения;
повысить надежность программного обеспечения;
обеспечить возможность модификации отдельных компонентов программного обеспечения без изменения остальных его компонентов;
обеспечить возможность повторного использования отдельных компонентов программного обеспечения.
Систематическое применение объектно-ориентированного подхода позволяет разрабатывать хорошо структурированные, надежные в эксплуатации и достаточно просто модифицируемые программные системы. Этим объясняется интерес программистов к объектно-ориентированному подходу и объектно-ориентированным языкам программирования. Объектно-ориентированный подход является одним из наиболее интенсивно развивающихся направлений теоретического и прикладного программирования.
Создание объектно-ориентированных приложений включает следующие этапы.
определение объектов и классов;
подготовка словаря данных;
определение зависимостей между объектами;
определение атрибутов объектов и связей;
организация и упрощение классов при использовании наследования;
дальнейшее исследование и усовершенствование модели.