Описания в виде фреймов и диаграмм



Свойства отношения частного порядка:

§ рефлексивность

любой 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!