AlgStr / Библиотека / ЛЕКЦИИ / PZ00 / Крейсман Андрей
.DOC6. Понятие о типе данных в языках программирования (ЯП).
Понятие о типе данных.
Тип данных понимается как класс переменных, которые могут заменять друг друга в некоторых контекстах.
Понятие типовой безопасности: Цель контроля типов состоит в том, чтобы гарантировать, что фактическое использование объектов, как данных совместимо с установленным для них поведением, ассоциированных с типом их объекта.
Контроль типов должен обеспечит надежность программ.
Тип данных определяется по существу двумя свойствами:
-
поведением объекта, рассматриваемого типа;
-
структурным описанием, определяет представление объектов этого типа;
-
(не обязательно) множество объектов рассматриваемого типа;
Под типом объекта понимается:
-
само множество объектов;
-
существенные свойства, т.е. представление объектов этого множества;
-
набор операций обеспечивающий доступ к объектам и позволяющий использовать их свойства;
Тип данных обозначается с помощью некоторой (зависящей от языка) спецификацией типа. Последнюю можно рассматривать как аналог обращения к процедуре периода компиляции, а не выполнения. Это дает:
-
напоминает, что представление типов данных (в период компиляции) извлеченное из спецификации этого типа имеет решающее значение для эффективности (в период компиляции) контроля типов;
-
дает удобную основу для классификации механизмов типов данных в Я.В.У.
Тип данных ::=<множество допустимых значений, набор операций, внутреннее представление>
Встроенные типы данных определяют следующие основные операции:
-
описание переменных;
-
взятие значений и присваивание;
-
сравнение значений;
-
обозначение констант;
-
выбор компонент (для структурированных типов).
Классификация средств определения данных в Я.В.У.
1) Средства структурирования данных (Алгол-60, Фортран);
Типичный набор типов данных включает:
-
cкалярные типы (integer, real, boolean, char, …)
-
структурные (array, record, union, pointer)
В представлении структ. Объектов очевиден их недостаток – поведение неочевидно.
2) Средства определения нового типа (Паскаль, Алгол-68);
Type имя типа = <описание типа>
Преимущества:
- удобное сокращение.
- можно связывать разные типы с одним и тем же представлением.
Недостатки:
- поведение не очевидно
3) Абстрактные типы данных (АТД).
АТД – это, по существу, определение нового понятия в виде класса (одного или более) объектов с некоторыми свойствами и операциями.
(CLU, Modula, Ada)
Эта идея родилась у Morris, B. Liskov.
Выбираем представление объекта и на нем реализуем поведение. Скрываем представление после выполнения реализации выполнения. АТД предусматривает инкапсуляцию – защита представления от несанкционированного доступа.
4) Средства ООП.
ООП – это методология программирования, которая основана на представлении программы в виде совокупности объектов, каждый из которых является реализацией некоторого класса, а классы образуют иерархию на принципах наследуемости.
Элементы ООП:
-
объекты;
-
каждый объект является реализацией некоторого класса;
-
классы организованы иерархически;
Поколения языков программирования.
Первое поколение ЯП: массивы, записи – не имели средств определения новых типов данных (Алгол-60, Фортран);
Второе поколение ЯП: появились средства определения новых типов данных, но не было средств связанных абстрактных типов (Алгол-68, Пасколь);
Третье поколение ЯП: связано с появлением АТД (Симула-67, Concurrent Pascal, CLU, Hephard, Modula);
Четвертое поколение ЯП: появились ООП языки (С++, Object Pascal).