AlgStr / Библиотека / ЛЕКЦИИ / POSIBNIK / Понятие о типе данных
.DOCПонятие о типе данных.
Тип данных понимается как класс переменных , могут заменять друг друга в некоторых контекстах.
Понятие типовой безопасности: Цель контроля типов состоит в том, чтобы гарантировать, что фактическое использование объектов, как данных совместимо с установленным для них поведением, ассоциированных с типом их объекта.
Контроль типов должен обеспечит надежность программ.
Тип данных определяется по существу двумя свойствами:
-
поведением объекта, рассматриваемого типа;
-
структурным описанием, определяет представление объектов этого типа;
-
(не обязательно) множество объектов рассматриваемого типа;
Под типом объекта понимается:
-
само множество объектов;
-
существенные свойства, т.е. представление объектов этого множества;
-
набор операций обеспечивающий доступ к объектам и позволяющий использовать их свойства;
Тип – это не объект, а атрибут; или может быть объектом, существующим в период компиляции. Такой подход дает нам преимущества:
-
напоминает, что представление типов данных (в период компиляции) извлеченное из спецификации этого типа имеет решающее значение для эффективности (в период компиляции) контроля типов;
-
дает основу для классификации механизмов типов данных в ЯВУ.
Концепция типов данных в языке Паскаль.
Тип определяется тройкой:
-
множество допустимых значений;
-
набор операций;
-
внутреннее представление;
Если тип данных встроен в язык, то он обеспечивает:
-
описание переменных;
-
взятие значений и присваивание;
-
сравнение значений;
-
обозначение констант;
-
выбор компонент(для структурированных типов):
Организация данных в Паскале основана на теории структурной организации данных Хоара:
-
Тип определяется как класс значений, могут принимать переменные или выражения;
-
Каждое значение принадлежит только одному типу;
-
Тип значения, константы, переменной, выражения можно ввести либо из контекста, либо из вида самого операнда;
-
Каждой операции соответствует некоторый фиксированный тип ее операндов и результат;
-
Для каждого типа свойства значений и элементарных операций можно задать с помощью аксиомы;
-
Все это позволяет обнаруживать в программе бессмысленные конструкции (это контроль типов) и решать вопрос о представлении данных и преобразованиях в вычислительных машинах.
Классы операций воспринимаемых в Паскале:
-
неявные приведения;
-
приведение типа выражения;
-
приведение типа переменных;
Классификация средств определения данных в ЯВУ.
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:
-
группировка операций в тип поведения;
-
фиксация уровней абстракции;
-
независимость от представления;
-
защита.