Определение типов. Классификация систем типизации



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

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






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