
- •Программирование и алгоритмические языки. Курс за третий семестр.
- •Введение в объектно-ориентированное программирование (ооп)
- •Идеологический обзор
- •Базовые принципы ооп
- •Наследование имён. Наследование значений.
- •Коллизия
- •Что такое имя процедуры?
- •Ооп как оперирование типами
- •Именование типов в c# Тип данных «класс»
- •Конструкторы и деструкторы
- •И нкапсуляция данных
- •Наследование (краткое введение)
- •Наследование реализации как уточнение семантики типа
- •Пополнение и переопределение методов Отношение пополнения интерфейса
- •Открытие реализации для проектирования классов - опция protected
- •Полиморфизм Полиморфизм как уточнение семантики типа переменной
- •Динамические методы как поддержка полиморфизма- опции static, virtual, override
- •Событийное программирование Обработка событий
- •Идея: Когда что-то вставляется, срабатывает некоторый предикат. Например, после вызывается команда проверки, каскадного удаления или какая-нибудь другая команда. Генераторы и приёмники сообщений
- •Событийное программирование нужно:
- •Событийный стиль в процедурном программировании - управление данными (на примере)
- •Событийное программирование в c# (delegate, event)
- •Введение в компонентное программирование
- •Объекты, реализующие интерфейсы
- •Частный случай общей проблемы взаимодействия программного обеспечения разных производителей на уровне исполняемого кода
- •Базовый интерфейс компонент
- •Проблема множественности иерархий
- •Коллизия имён
- •Коллизия реализации
- •«Симметричное» решение – агрегаты (декартовы произведения классов)
- •Множественное наследование
- •«Асимметричное» решение - именованные интерфейсы
- •Основные отличия интерфейса и абстрактного класса
- •Наследование интерфейса (компонентный подход)
- •Обработка исключений в ооп
- •Определение и генерация исключений в c#
- •Выбрасывание исключений
- •Захват исключения
- •Блок finally
- •Коды программ
Введение в компонентное программирование
Компонентно-ориентированное программирование (component-oriented programming) — парадигма программирования, ключевой фигурой которой является компонент.
Существует область, в которой понятие интерфейса играет главенствующую роль.
Проблема поддержки версий:
Большие программные приложения построены на модульном принципе и состоят из начальных модулей, библиотек и т. д.
-
Microsoft Word
Проверка орфографии
В
ерсия 1
Версия n
Версия 2
Новая версия проверки орфографии (обновление версии происходит независимо)
модуль (библиотека)
Создание новых версий MS Word= Новые версии проверки орфографии
Обновление частей программы происходит независимо (т.е. программа не сразу обновляется).
Значит, можно использовать старую версию MS Word, имея при этом новую версию проверки орфографии (и наоборот).
Интерфейс-список функций (сервисов), предоставляемых объектом (например, модулем). Технически, интерфейс - список заголовков и методов без реализаций, но со спецификацией.
Иерархия интерфейсов - наследование (пополнение) имён.
Таким образом, проверка орфографии обязана сохранять (поддерживать) старые версии и может предоставлять новые версии (функции).
Замечание: новые функции могут добавляться, а старые функции обязаны поддерживаться.
Объекты, реализующие интерфейсы
В листьях этого дерева компоненты - объекты, реализующие все интерфейсы.
Если объектная иерархия реализуется постепенно (уточняются методы реализации и т.д.), то подобная иерархия имён реализует всё сразу. Такого рода объекты называются компонентами.
Частный случай общей проблемы взаимодействия программного обеспечения разных производителей на уровне исполняемого кода
-
Среда программирования
1) Разные среды
2) Разные языки
3) Разные версии
Соглашения уровня операционной системы.
Модуль – один уровень программирования.
Исполняемый код:
(OLE(Object Linking and Embedding), Active Pluse, Com, Cobra)- многопользовательские системы - динамически связанные библиотеки
Библиотека компонент |
|
С каждой компонентой связано некоторое системное имя или глобально-уникальный идентификатор, т.е. GUID (Globally Unique Identifier). Каждая следующая версия может лишь пополнять другую (наследование имён).