Описания в виде фреймов и диаграмм
Свойства отношения частного порядка:
§ рефлексивность
любой a: a is A a
§ транзитивность
любые a, b, c : a is A b, b is A с => a is A с
§ антисимметричность
любые a, b : a is A b => NOT (b is A a)
Наследование
1. основная концепция ООП
2. в C# классы и стр. могут наследовать
3. наследуют все члены – поля, методы, свойства…
4. класс родитель называют базовый класс
5. класс наследник – дочерний
6. наследование позволяет установить иерархию типов
в .NET множественное наследование основано на интерфейсах
26. Реализация наследования в C#
интерфейсы:
§ описывают совокупность методов и свойств
§ описывается только прототип метода
§ могут использоваться для описания абстрактных типов данных
§ элементы interface не должны быть статическими
§ классы и структуры могут реализовывать множественные интерфейсы
§ интерфейс может расширять другой интерфейс
абстрактные классы и методы:
§ реализуют концепцию полиморфизма
§ абстрактные методы не имеют реализации
§ абстрактные методы неявно являются виртуальными
§ если класс имеет абс. методы, то его нужно описывать как абстракцию
§ запрещено создавать объекты абст-х классов
Явная реализация интерфейсов:
§ интерфейс может быть имплементирован явно
§ можно реализовывать несколько интерфейсов, которые содержат методы с одинаковой структурой
§ когда член интерфейса имплементирован явно он становится недоступным через сущность класса, но доступен через интерфейс
|
|
§ в .net позволено в одном классе иметь 2 метода с одинаковой сигнатурой с единой явной имплементацией интерфейса
Требования к реализации интерфейсов:
§ классы наследуют свойство 1 базового класса, но могут реализовать несколько интерфейсов
§ структура может наследовать свойства любого типа и при этом реализовать множественные интерфейсы
§ любой элемент интерфейса может реализовать свойство класса
§ реализованные методы интерфейса нельзя описывать как override а можно как virtual либо abstract.
Классовые диаграммы:
§ представляют стандарт UML нотацию для изображения классовой иерархии
§ создают визуальное представление взаимосвязей между классами
§ классы изображают прямоугольниками в которых заключены и члены
§ связи между классами изображают в виде стрелок
§ классовые диаграммы наглядно представляют иерархию классов, полученную при многократном наследовании
Преимущества наследования:
§ Отсутствие необходимости явного указания свойств и методов для производимых объектов
§ Гибкое определение уравнения абстракции предметной области
§ Возможность моделирования сколь угодно сложной предметной области
|
|
Простой и прямолинейный подход к построению свойств и методов
27. Понятие инкапсуляции
Формализация (понятие инкапсуляции в математике)
1) лямбда – исчисление
§ лямбда термы выполняют роль объектов
§ связанные переменные выполняют роль свойств
§ свободные переменные выполняют роль методов
2) Комбинаторная логика
§ Комбинаторы роль объектов
§ Переменные роль свойств
§ Комбинаторы роль методов
28. Инкапсуляция в C#
Степень инкапсуляции:
1) Public – публичная область видимости
Private – приватная область видимости
Расширение области видимости:
§ Protected – доступность из класса и классов наследников
§ Internal – доступность из сборки с описание объекта
§ Protected internal – доступность из класса с описанием объекта, а также из сборки с описанием объекта
Инкапсуляция полей и констант:
1) Поле:
§ Инициализация факультативна, однако запрещен доступ к полям и методам того же типа
§ Поля структуры не подлежат инкапсуляции
2) Константа:
§ Значение должно быть вычислено в процессе компиляции
3) Поле только для чтения:
§ Необходимо инициализировать в описании или конструкторе
§ Значение обязательно должно быть вычислимым в ходе компиляции
§ Занимает область памяти
|
|
Статические поля и константы принадлежат классу а не объекту.
29. Свойства в C#
Свойства:
§ Свойства классов, структур и интерфейсов контролируют доступ к полям
§ Свойства могут иметь 2 компонента:
Ø Программный код для чтения значений
Ø Программный код для присвоения значений
§ Могут быть:
Ø Только на чтение
Ø На чтение и на запись
Ø Только на запись
Преимущества инкапсуляции:
§ Унификация моделируемой предметной области
§ Прямолинейный подход к модификациям предметной области
§ гибкое управление уровнем абстракции данных
Безопасность и независимость пользователя
30. Понятие полиморфизма
Полиморфизм позволяет переопределять реакцию объекта производного класса на метод, определенный в базовом классе.
Преимущества полиморфизма:
· унификация обработки объектов различной природы
· снижение стоимости ПО
· повторное использование кода
· интуитивная прозрачность исходного текста
· строгое математическое основание
концепция является универсальной и в равной степени применимо в ООП
31. Методы вызова процедур
Методы вызова процедур:
1) Вызов по значению:
§ Формальный параметр является копией фактического параметра
|
|
§ Фактический параметр является выполняемым
Вызов по имени (ссылке)
§ Формальный параметр является подстановкой фактического параметра
§ Фактический параметр должен быть переменной, формальный параметр является копией фактического параметра
Вызов по необходимости
§ Значение не передается вызывающей функции
§ Не следует использовать в методах до того, как значение будет получено
Передача параметров
§ По умолчанию параметры передаются по значению
§ Out и ref позволяют передавать параметры по ссылке
Out – можно не инициализировать
Ref – необходимо инициализировать в вызываемом методе, а в вызываемом можно как читать так и записывать
Перезагрузка методов
§ Исполнение методов, используемых одинаковые имена
§ Изменение числа, типов и последовательности параметров
§ можно использование Sqr(int) и Sqr(long)…
Список параметров
§ В с# можно описывать методы со списком параметров
§ Для задания параметра, который представляет собой список, используют массив
Компилятор передаёт параметр как массив заданного типа
32. Обобщения
33. Итераторы
Назначение:
§ Определение последовательности обхода множества оператором for each
§ Перечисление – объект, который реализует интерфейс
§ Итератор – это средство реализации перечисления
С помощью итераторов можно реализовывать не только перечислители в чистом виде, но и просто методы, которые возвращают IEnumerate или IEnumerator.
Блок итератора отличается от обычного блока наличием одного или более операторов yield.
Yield return – следующий элемент итерации
Yield break – конец итерации
Индексаторы:
§ Предоставляют индексируемый доступ к данным, подобно доступу к элементам массива
§ Похожи на свойства, но получают как параметр идентификатор или индекс на элемент, с которым работают
§ На практике используют описание оператора [] для произвольного типа
Перегрузка операторовизменение программного кода в зависимости от цел. зн-я того или иного метода:
1.могут перегр-ся унарные и бинарные операторы
2.не может быть изменён приоритет операторов
3.не все операторы перегружаемы
4.описание операторов:
· используют описание стат. метода
· исп-т ключевое слово operator
имеют 1 или 2 параметра с которыми работает оператор
34. Индексаторы
35. Связывание
36. Понятие события
События в Математике:
Событие – соотнесение над объектом предметной области. Произв. семейство объектов может быть параметризовано не только типами, но и событиями.
События в программировании:
Событие – способ внедрения фрагмента в код с целью изменения поведения программы.
Делегаты – тип, который описывает сигнатуру метода (список, типы и последовательность параметров)
Преимущества СОП:
· возможность моделирования произвольных реальных объектов
· потенциальная лёгкость настройки интерфейса
· программирование основанное на сценариях
· гибкость реинженеринга ПО
· строгое мат. осн-е (концептуализация)
процент повторного использования кода высокий
37. Делегаты
Делегаты – тип, который описывает сигнатуру метода (список, типы и последовательность параметров)
Управление событиями с помощью делегатов:
· переменная делегат может иметь пустое значение null (метод не неазначен)
· пустая переменная делегат не может быть вызвана (искл ситуация)
· Переменные – делегаты являются объектами первого рода; их можно хранить в структурах данных, передавать как параметр.
Виды делегатов:
1) Единичные
· Содержат ссылку к одному единственному методу
· Наследники класса System.Delegate
2) Множественные
· Содержат связанный список ссылок к методам
· Наследник класса System.MulticastDelegate
System.MulticastDelegate
· при вызове использует последовательно друг за другом все методы из списка
· если multicast делегат возвращает значение или имеет ref или out параметр, результат только последний вызванный метод от списка методов делегата
· если при вызове multicast делегата один из методов в списке вызвал исключение, следовательно метод из списка не вызывается
на практике single-cast делегаты почти не используются и под делегатом обыкновенно понимают multicast
38. События
События:
· Используются для уведомления о некотором событии
· Объект, вызывающий событие – инициатор (sender)
· Объект, получающий событие – получатель (receiver)
· Для получения события получатель предварительно подписывается на него
· События поддерживаются через делегаты
· События в с# специальные сущности делегата, декларированные ключевым словом event
Различия событий и делегатов:
· События не эквивалентны члену, переменной типа делегат
· События могут быть членами интерфейса, а делегаты не могут
· Вызов события может происходить только из класса в котором оно описано
· Доступ к событию по умолчанию синхронизирован
Конвенция для событий:
· делегат который использует события
· имеет имя обретаемое от глагола + EventHandler (SomeVerbEventHandler)
· возвращает void и принимает 2 параметра (объект-инициатор типа System.Object и объект, содержащий данные о событии типа, наследника System.EventArgs)
· события объявляют как public, начинаются с заглавной буквы и заканчиваются глаголом
· Для вызова событий создают protected метод, не имеющий возвращаемого типа
· метод-получатель (обработчик) события имеет имя объект_событие
Делегат System.EventHandler:
· Описывает ссылку к callback методу, который обрабатывает событие, для которого не нужна дополнительная информация
Часто используется в .net Framework
39. Анонимные методы
· Вставка кода в метод, вместо создания ещё одного метода
· Уменьшение количества методов класса
· Создание «замкнутых областей»
· Тип делегата вводится автоматически
· Локальная переменная блока, в котором определён анонимный метод, является для него внешней
· Внешняя переменная, использующаяся анонимным методом, называется захваченной
· захваченные объекты существуют до тех пор пока существуют использующие их методы
· нельзя использовать ref и out параметры
· нельзя использовать this в анонимном методе, если он опр-ся в структуре
addButton.Click + = AddClick
События и интерфейсы:
· События могут быть членами интерфейса
· При имплементации события интерфейса для него могут быть реализованы специфичные add и remove методы
· В отличии от свойств, при реализации события методы add и remove не обязательны
Интерфейсы, события, делегаты:
1. В .NET поведение «обратного вызова» (callback) может быть реализовано через интерфейсы, делегаты или события.
2. когда использовать интерфейсы?
- когда объект предоставляет сов-сть многих callback методов
3. события использовать
- когда разрабатывается компонент, который должен извещать об изменениях
4. делегаты использовать
- имеется единичный callback метод, который не связан с компонентной моделью .NET
40. Управление исключениями
· Заменяет процедурно-ориентированный подход, при котором любая функция возвращает код ошибки
· Упрощает написание и поддержку программного кода
· Проблемные случаи обрабатываются намного лучше
Обработка исключений:
- В с# исключения могут быть обработаны программной конструкцией try {} catch {}
- catch может иметь несколько путей соответственно для различных исключений
- если error нет то catch не вызывается
- Большая часть стандартных методов выполняет генерацию исключений при проблемной ситуации
Класс System.Exception:
- Является базовым классом для всех исключений в CLR
- содержит информацию о наступившей ошибке или другой ситуации:
· Message – текстовое описание ошибки
· StackTrace – визуализация
· Source- источник ошибки
Алгоритм работы оператора try:
1. условия обнаружения (catch) проверяется последовательно
2. в итоге одно из условий всегда удовлетворяется (если список условий не пуст)
3. имя параметра exeption в условии обнаружения можно опустить
4. тип exeption должен быть выводим из System.Exeption
в случае отсутствия параметра exeption подраз-ся System.Exeption
41. Использование исключений
Генерация исключений (throwing):
1) имеет цель уведомить вызываемый код при возникновении проблемы
2) исполняет в случае наступления ошибки или др. ситуации
3) при возникновении прекращается исполнение программы и обходит стек на достижение catch блока для соответствующего исключения
4) в C# вызывается оператором throw
5) обычно создаётся объект, наследник класса System.Exeption, в котором описана проблема
6) в catch блоке вызываемое исключение может быть обработано
Собственные классы исключений:
1) В .NET программист может описать собственный класс исключений и создать иерархию классов
2) такая возможность лучше при управлении ошибками и др. ситуациями
3) для описания собственного исключения:
§ наследник класса System.ApplicationExeption
§ создать подходящий конструктор
§ можно добавить дополнительные свойства, дающие представление о проблеме
Конструкция try- finally:
§ выполняется в любом случае
§ используют для исполнения очищаемого кода, освобождения ресурсов
Алгоритм работы оператора try:
5. условия обнаружения (catch) проверяется последовательно
6. в итоге одно из условий всегда удовлетворяется (если список условий не пуст)
7. имя параметра exeption в условии обнаружения можно опустить
8. тип exeption должен быть выводим из System.Exeption
в случае отсутствия параметра exeption подраз-ся System.Exeption
42. Компонентное программирование в .NET Framework
Компоненты это:
· независимые повторно используемые и типизируемые модули
· в целом более крупные, чем объект
· могут содержать множественные классы
· независимы от языка реализации
Сравнение ООП и КОП:
1)Основные понятия Ооп
· класс
· интерфейс
2)основные понятия КОП
· свойства (property)
· события (event)
· сборка (assembly)
Модели КОП:
1) Component object model (com) – для конкретизации и использования компонента внутри процесса, между процессами и между компьютерами. Основа для Actuve X, OLE
2) Java beans- стандарт SunMicrosystem для компонентов (не является независимым от языка)
3) Corba- громоздкий IDL – интерфейс, сложность отображения одного языка в реализации другого.
Web- сервисы в .NET:
заменяют компонентный подход в среде Internet
1.программируемые компоненты приложений, доступные посредством стандартных Интернет-протоколов
2.центральная часть архитектуры .NET
3.распределяют функциональность по глобальной сети
4.строятся на существующих развивающихся стандартах
Преимущества КОП:
1. снижение стоимости ПО
2.возможность повторного использования
3.унификация обработки объектов различной природы
4.менее человекозависимый процесс создания ПО
5.строгое математическое основание (лямбда-счисление)
концепция универсальна и одинакова
43. Сборки и модули
Сборка – совокупность чего-либо.
Сборка– логическая единица развертывания приложения, содержащая манифест, метаданные, MSIL и необходимые ресурсы.
Сборки могут быть представлены в виде *.exe – файла или *.dll – файла.
Манифест- совокупность метаданных о компонентах сборки (версии, типы, зависимости…)
Метаданные – исчерпывающе описывают все типы, определённые в сборке: свойства, методы, аргументы…
Преимущества сборок:
1) устранение проблемы с библиотеками
· имеют уникальный номер версии
· несколько версий одной и той же сборки могут существовать и использоваться одновременно
2) решение проблемы инсталляции
Границы сборки:
· граница безопасности
· граница типов
· область ссылок
· границы версий
· единица для разделения
· элемент публикации
Манифест сборки:
Метаданные описывают сборку.
Метаданные содержат:
· идентификацию: имя + версия + культура + собственник
· список файлов
· ссылочные сборки
· предоставляют типы и ресурсы
· извлекают права доступа
Идентификация сборки:
· имя сборки (произвольная строка)
· версия
1. содержит 4 идентификатора, которые разделены точкой Major. Minor. Build. Revision (т.е 2.0.1765.2)
2. использует CLR при version policy
· собственник сборки (публичный ключ собств.)
· культура (locate – сборки (REC766))
Сильно именованная сборка (служит для создания индивидуального идентификатора 1й сборки):
1. имя
2. версия
3. культура
4. хеш публичного ключа (public key token)
Только сильно именованная сборка может создаваться в GAC
Global Assembly Cache (GAC):
1.общий контейнер, где инсталлированы разделяющие сборки
2.возможно в GAC имеется 2 различные версии одной сборки
3.утилиты для администрирования:
· Gacutie
· Windows Shell Exeption
· .NET Configuration Management Console
Модули:
1.одна сборка- совокупность файлов
2.все входят в один и тот же указанный модуль
3.один из них может содержать манифест сборки
4.модули содержат только приложения в которых нуждаются
5.модули могут быть и ресурсными файлами типа .jpg, .xls, .mab
6.VS.NET не может компилировать одну сборку в различные модули
Поиск сборки:
1.случаи в которых ищется сборка
· при указании на вн. слабоименованную сборку (LateBinding)
· приложение использует много сборок
· при указании на сильноименованную сборку
· при указании на часть сильноименованной сборки
2.процесс поиска называется Probing
Конфигурационные файлы:
App.exe.config используют:
· для администрирования
· для конфигурирования путей
· для смены версии
вместо добавления записи в реестре (WinRegistry)
44. Шаблоны проектирования
45. Атрибуты
Применяются для описания вспомогательной информации к коду:
· при компилировании записываются в метаданные
· могут быть извлечены из метаданных и обработаны в различных инструментах
· сущность класса, наследника от System.Attribute
· можно использовать стандартные и собственные атрибуты
Атрибуты с объектами:
Соглашение об именовании .NET:
· любые классы описывающие атрибуты должны завершаться на Attribute
· при использовании атрибутов окончание Attribut можно опустить
При описании атрибута могут быть заданы параметры для конструктора со значением и публичного поля и свойства
В процедуре атрибут [Dll Import] требует от компилятора:
· создать объект класса System.Runtime InteropServicesDll Import
· в конструктор передаёт параметр со значением «user32.dll»
· в публичное поле EnterPoint
Указания назначения:
· для декларативного управления
· для исполнения автоматизации объектов
· для взаимодействия с дизайнером при создании новых компонентов
· для разработки приложений ASP.net
· для взаимодействия с неуправляемым кодом
применение в remoting – технологиях.
46. Собственные атрибуты
Ограничения:
· требуется, чтобы атрибут был наследником System.atribute
· имена должны завершаться на Atribute
· требуется описание допустимого назначения
· могут описывать конструкторы с несколькими параметрами
· могут описываться публичные поля и свойства
atribute usage:
через этот атрибут можно указать:
· для чего используется атрибут
· атрибут наследуется при наследовании типа, для которого он описан
· Может обладать однократным или многократным применением.
Применяются для определения области описания. Преимущества атрибутов:
· расширение документирования кода
· широкая область применения
· унификация хранения данных
Условные атрибуты:
# define DEBUG
# undef DEBUG
Сохранение атрибута:
· представляется последовательность битов
· записывается в таблицу метаданных для типа, объявленного в приложении
· считывается с помощью Reflection из метаданных и является обыкновенным объектом от класса атрибута
Компиляция:
· считывается компилятором
· представляется последовательностью битов
записывается в таблицу метаданных для типа, объявленного в приложении
47. Отражение
48. Сериализация
49. Графический интерфейс Windows Forms
WinForms:
· библиотека построена на GUI
· поддержка концепции быстрой разработки приложений Rapid Application Development (RAD)
- компонентно-ориентированная архитектура
- управление, основанное на событиях
· широкий набор элементов управления
· Data-aware компоненты
Компонентная модель .NETописывает:
- стандарты по использованию и разработке программных компонентов
- жизненный цикл компонентов
Компонентная модель .NET Framework:
- определяет правила на создание и использование компонентов .NET
Программные компоненты:
- решают специф. задачи
- повторно используемые
Программная модель Windows Forms:
Описывает:
- файлы, диалоги
- контролы
- события
- жизненный цикл приложения
- модель рисования на контроле
- управление фокусом ввода и навигаций
Главная нить приложения Windows Forms работает:
o постоянно слушает сообщения
o при получении сообщение обрабатывается:
o определяет контрол к которому относится сообщение
o передаёт ему сообщение
контрол или контрол-контейнер реагирует на сообщение
50. Базовые классы Windows Forms
Библиотека WF описывает совок. базовых классов компонентов управления и контейнеров.
Основные базовые классы:
- Component - компонент .NET
- Control - графич. контрол
- ScrollControl - контрол с поддержкой скроллинга
- ContainerControl – контрол, содержащий другие контролы
Класс Control
- класс System.Windows.Forms.Control является основой любых граф. контролов WF
- его свойства являются общими для всех контролов WF
Дата добавления: 2018-04-15; просмотров: 371; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!