Описания в виде фреймов и диаграмм
Свойства отношения частного порядка:
§ рефлексивность
любой 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 множественное наследование основано на интерфейсах
19. Базовые и производные классы в C#
20. Понятие инкапсуляции в математике и программировании. Описание и применение инкапсуляции в C#
Формализация (понятие инкапсуляции в математике)
1) лямбда – исчисление
§ лямбда термы выполняют роль объектов
§ связанные переменные выполняют роль свойств
§ свободные переменные выполняют роль методов
2) Комбинаторная логика
§ Комбинаторы роль объектов
§ Переменные роль свойств
§ Комбинаторы роль методов
Степень инкапсуляции:
1) Public – публичная область видимости
Private – приватная область видимости
Расширение области видимости:
§ Protected – доступность из класса и классов наследников
§ Internal – доступность из сборки с описание объекта
§ Protected internal – доступность из класса с описанием объекта, а также из сборки с описанием объекта
Инкапсуляция полей и констант:
1) Поле:
§ Инициализация факультативна, однако запрещен доступ к полям и методам того же типа
|
|
§ Поля структуры не подлежат инкапсуляции
2) Константа:
§ Значение должно быть вычислено в процессе компиляции
3) Поле только для чтения:
§ Необходимо инициализировать в описании или конструкторе
§ Значение обязательно должно быть вычислимым в ходе компиляции
§ Занимает область памяти
Статические поля и константы принадлежат классу а не объекту.
Виды области видимости. Рекомендации
Понятие полиморфизма
Работы:
· 1934 – Черч – изобрёл лямбда- счисление
· 1936 – Стратегия вызова по имени или значению
· 1960 – Лендин– SECD машина
· 1969 – Хиндли- Полиморфные системы типов
· 1978 – Милнер- предл. расширить систему полиморфной типизации для ЯП ML
· 1989-90- Кук, Кэннинг, Хилл и др. исследовали полиморфизм в ООП
· Полиморфизм позволяет переопределять реакцию объекта производного класса на метод, определенный в базовом классе.
Преимущества полиморфизма:
· унификация обработки объектов различной природы
· снижение стоимости ПО
· повторное использование кода
· интуитивная прозрачность исходного текста
· строгое математическое основание
концепция является универсальной и в равной степени применимо в ООП
Методы вызова процедур. Абстрактные типы данных
|
|
Методы вызова процедур:
1) Вызов по значению:
§ Формальный параметр является копией фактического параметра
§ Фактический параметр является выполняемым
Вызов по имени (ссылке)
§ Формальный параметр является подстановкой фактического параметра
§ Фактический параметр должен быть переменной, формальный параметр является копией фактического параметра
Вызов по необходимости
§ Значение не передается вызывающей функции
§ Не следует использовать в методах до того, как значение будет получено
Передача параметров
§ По умолчанию параметры передаются по значению
§ Out и ref позволяют передавать параметры по ссылке
Out – можно не инициализировать
Ref – необходимо инициализировать в вызываемом методе, а в вызываемом можно как читать так и записывать
Перезагрузка методов
§ Исполнение методов, используемых одинаковые имена
§ Изменение числа, типов и последовательности параметров
§ можно использование Sqr(int) и Sqr(long)…
Список параметров
· В с# можно описывать методы со списком параметров
· Для задания параметра, который представляет собой список, используют массив
Компилятор передаёт параметр как массив заданного типа
|
|
Абстрактные структуры данных. «Запечатанные» классы
Динамическое и статическое связывание. Виртуальные классы и методы
Динамическое связывание означает то, что выбор вызываемого метода определяется не на этапе компиляции, а на этапе выполнения программы.
Сокрытие методов – используется ключевое слово new в дочерних классах.
Сложное динамическое связывание:
virtual – может быть изменён в наследниках
override – перепис-т
Требования к методам с приоритетами:
§ Свойства и индексаторы также могут иметь приоритет (virtual, override)
§ Статические методы не могут иметь приоритета
§ Только методы, описанные как виртуальные могут иметь приоритет в производных классах
§ Методы с приоритетами необходимо описывать как override
«Запечатанные» классы:
§ Такой класс, который не может иметь наследников
§ Описывается ключевым словом Sealed
§ Sealed может быть применено к классам и методам
Преимущества:
§ Безопасность
§ Эффективность
Преимущества полиморфизма:
§ унификация обработки объектов различной природы
§ снижение стоимости ПО
§ повторное использование кода
§ интуитивная прозрачность исходного текста
§ строгое математическое основание
|
|
концепция является универсальной и в равной степени применимо в ООП
Дата добавления: 2018-04-15; просмотров: 374; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!