Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

AlgStr / Библиотека / POSIBNIK / Понятие о типе данных

.DOC
Скачиваний:
38
Добавлен:
23.03.2015
Размер:
93.18 Кб
Скачать

Понятие о типе данных.

Тип данных понимается как класс переменных ,  могут заменять друг друга в некоторых контекстах.

Понятие типовой безопасности: Цель контроля типов состоит в том, чтобы гарантировать, что фактическое использование объектов, как данных совместимо с установленным для них поведением, ассоциированных с типом их объекта.

Контроль типов должен обеспечит надежность программ.

Тип данных определяется по существу двумя свойствами:

  • поведением объекта, рассматриваемого типа;

  • структурным описанием,  определяет представление объектов этого типа;

  • (не обязательно) множество объектов рассматриваемого типа;

Под типом объекта понимается:

  • само множество объектов;

  • существенные свойства, т.е. представление объектов этого множества;

  • набор операций обеспечивающий доступ к объектам и позволяющий использовать их свойства;

Тип – это не объект, а атрибут; или может быть объектом, существующим в период компиляции. Такой подход дает нам преимущества:

  • напоминает, что представление типов данных (в период компиляции) извлеченное из спецификации этого типа имеет решающее значение для эффективности (в период компиляции) контроля типов;

  • дает основу для классификации механизмов типов данных в ЯВУ.

Концепция типов данных в языке Паскаль.

Тип определяется тройкой:

  • множество допустимых значений;

  • набор операций;

  • внутреннее представление;

Если тип данных встроен в язык, то он обеспечивает:

  • описание переменных;

  • взятие значений и присваивание;

  • сравнение значений;

  • обозначение констант;

  • выбор компонент(для структурированных типов):

Организация данных в Паскале основана на теории структурной организации данных Хоара:

  1. Тип определяется как класс значений,  могут принимать переменные или выражения;

  2. Каждое значение принадлежит только одному типу;

  3. Тип значения, константы, переменной, выражения можно ввести либо из контекста, либо из вида самого операнда;

  4. Каждой операции соответствует некоторый фиксированный тип ее операндов и результат;

  5. Для каждого типа свойства значений и элементарных операций можно задать с помощью аксиомы;

  6. Все это позволяет обнаруживать в программе бессмысленные конструкции (это контроль типов) и решать вопрос о представлении данных и преобразованиях в вычислительных машинах.

Классы операций воспринимаемых в Паскале:

  • неявные приведения;

  • приведение типа выражения;

  • приведение типа переменных;

Классификация средств определения данных в ЯВУ.

1)Средства структурирования данных;

(Алгол-60, Фортран);

а)существует набор встроенных типов данных:

  • integer;

  • real;

  • boolean;

  • characted;

б)средства структурирования:

  • array;

  • record;

  • union;

  • pointer;

2)Средства определения типов(Паскаль, Алгол-68); можно связать со структурой данных некоторое имя.

Type

Int Array = array[1..100] of integer;

Var

A,B:integer;

Два объекта считаются эквивалентными в языке Паскаль:

  • если описаны в одном операторе var;

  • если описаны одним идентификатором типа;

3)Абстрактные типы данных(АТД).

АТД – это, по существу, определение нового понятия в виде класса (одного или более) объектов с некоторыми свойствами и операциями. АТД предусматривает инкапсуляцию.

4)Средства ООП.

Симула 67 – язык программирования.

ООП – это методология программирования,  основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией некоторого класса, а классы образуют иерархию на принципах наследуемости.

Структурные единицы:

  • объекты;

  • каждый объект является реализацией некоторого класса;

  • классы организованы иерархически;

Поколения языков программирования.

Первое поколение ЯП: массивы, записи – не имели средств определения новых типов данных (Алгол-60, Фортран);

Второе поколение ЯП: появились средства определения новых типов данных, но не было средств связанных абстрактных типов (Алгол-68, Пасколь);

Третье поколение ЯП: связано с появлением АТД (Симула-67, Concurrent Pascal, CLU, Hephard, Modula);

Четвертое поколение ЯП: появились ООП языки (С++, Object Pascal).

Абстракция и декомпозиция.

Процесс разделения сложного на части, которые более простые, наз. декомпозицией.

Абстракция – создаются, в ходе программы, новые разработки, т.е. помогает осуществлять разумную декомбинацию.

Декомпозиция задачи предполагает разбиение задачи на подзадачи, причем:

  • каждая задача имеет один и тот же уровень рассмотрения;

  • каждая задача должна быть решена независимо от другой;

  • полученные решения могут быть объединены вместе и позволят решить исходную задачу.

Абстракция представляет собой эффективный метод декомпозиции, осуществляемый посредством изменения списка декомпозиции.

Абстракция – отвлечение от чего-то несущественного с целью лучше понять какую-то одну сторону изучаемого явления. Это метод создания новых понятий и обмена мыслями между людьми.

Абстрактные типы данных (АТД).

Абстрактные данные=<объекты, операции>

Новая языковая конструкция:

  • класс (Симула 67);

  • кластер (CLU);

  • форма (Alphard);

  • модуль (Modula);

  • пакет (Ada);

В памяти АТД в наиболее развитой форме входят следующие 4 части (Alphard):

  • внешность определяемого типа (имя, операции, функции и т.д.);

  • абстрактное описание операций и объектов, с которыми работает определенный тип на языке спецификации;

  • конкретное описание тех же объектов и операций средствами языка второго поколения;

  • описание связей между 2 и 3;

Инкапсуляция – это упрятывание.

Тип данных называется инкапсулированным, если предусмотрена защита; тип данных наз. абстрактным, если предусмотрено абстрактное описание; тип данных наз. пакетированным, если предусмотрено средство определения объектов и операций в одной языковой конструкции.

В языке CLU:

<Имя определяемого типа>=Cluster is<Список операций>

rep

<конкретное описание представления объектов определяемого типа>

<<конкретное описание операций определяемого типа>>

end;

Cluster – это средство абстракции т.к.:

  • новое понятие вводится через набор операций;

  • внешнюю по отношению к Cluster программу можно считать абстрактной программой, оперирующей с абстрактными объектами, с помощью операций кластеров;

  • абстрактная программа не зависит от представления;

  • защита представления класса;

Свойства CLU:

  • группировка операций в тип поведения;

  • фиксация уровней абстракции;

  • независимость от представления;

  • защита.