Определение типов. Классификация систем типизации
Система типов CTS. Базисные типы
CTS (common type system) общая система типов
Функции:
§ Описывает типы данных и операции
§ Совместимость типов в разных ЯП
§ Имеет объектно – ориентированную направленность
Категории данных:
§ Значимые типы
§ Ссылочные типы
Управление типами в CTS:
§ Типы могут быть исполнены после инициализации
§ Над типами 2 рода преобр-й (явные/неявные)
§ Типы объединяются в совокупности (пространство имён, файлы, сборки)
§ Ссылочные типы
§ Типы значения
Упаковка(boxing)- приведения значимого типа к ссылочному
Обнуляемые типы:
§ Поддержка null – значений для значимых типов
§ Стандартизация подхода к задаче
§ Работа только с value Type типами
Чтобы определить переменную, которая может принимать ещё и null значение
Пространство имен. Преобразование типов
Пространство имён:
§ Много общего с пространством имен в с++ и пакетами в java
§ Выполняют логическую группировку
§ Могут содержать в себе классы, структуры, интерфейсы и др. пространства имен
§ не могут содержать методов и данных
§ Позв. описывать типы с одинаковыми именами (в различных пространствах)
§ Могут располагать в одном или нескольких различных файлов
§ Используются через директиву using
§ можно и без using, но с полным именем
Пространства имен (namespace) и ссылки
§ Для проекта могут быть указаны ссылки
§ Каждая ссылка идентифицирует универсальную сборку
§ Передается c# компилятору по ссылке
|
|
§ пространства имён дают возможность сохранять именования на уровне ЯП
§ ссылки указывают на сборку для использования в проекте
Преимущества типизации на .NET:
§ платформа использует CTS
§ строгое соответствие между примитивными типами ЯП и базовыми классами
§ явное разделение на ссылочные и значимые типы
гибкий и надёжный механизм преобразования типов значений в ссылочные и обратно (boxing & unboxing)
Явные(explicit):
§ Когда преобразование к другому типу напрямую несовместимо
§ Требуют вызова, могут приводить к потере точности
§ Checked-проверка
§ long- int, ...
Неявные(implicit):
§ Когда безопасно
§ Автоматически, всегда успешно
§ int- long, float- double, long- float
Оператор перечисления:
§ Список поименованных констант
§ Описываются словом enum
§ Встроено представляется типом INT? Но может быть и другим типом
§ Сильно типизирован
Тип System.Object базовый класс для всех типов .net , при описании типа по умолчанию наследник System.Object
Важные методы:
§ equals()- сравн. объекты
§ ToString()- предст. объекта как строки
§ GetHashCode()- выч. хеш-кода
§ Finalize()- уничтожение
§ GetType()- возвращение метаданных
§ MemberwiseClone()- кодирует бинарные представления в новую переменную
§ ReferenceEquals()- сравн. 2 объекта по ссылке
|
|
Клонирование объектов:
§ Создаёт идентичные копии
§ Копируется значение всех полей
§ Типы, которые позволяют клонирование
§ Clone() копирует рекурсивно все поля
Упаковка значимых типов (преобразование значимых типов в ссылочные и наоборот) Boxing-UnBoxing.
Наследование в ООП
Основные работы:
§ 1950 Х. Хассе – диаграммы для графической иллюстрации отношения частичного порядка
§ 1976 Руссополос – изобрел фреймы, ввел ISA отношения
§ 1979 Д.Скотт – теория полных и непрерывных решеток
§ 1988-90 Карделли, Кук и др. – исследовали семантику наследования
Принцип наследования в ооп позволяет создать класс, включающий в себя все данные и методы некоторого другого класса, и, кроме того, содержащий свои, присущие только ему данные и методы обработки. Такой подход позволяет строить целые иерархии классов, каждый следующий уровень которых отличается все большей детализацией по сравнению с предшествующими ему уровнями. Достоинства такого подхода наиболее полно проявляются при программировании достаточно сложных объектов, к которым по праву относится сама операционная система Windows.
Наследование позволяет описать сначала общий класс окна Windows, на его основе описать общий класс диалогового окна Windows, а уже на основе этого класса сформировать класс конкретного диалогового окна, используемого для реализации конкретного пользовательского интерфейса.
|
|
Наследование– свойсво произв. объекта сохранять поведение родительского
Дата добавления: 2018-04-15; просмотров: 356; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!