Языки программирования - концепции и принципы

distinguished receiver) сообщения set_speed. Отличимый


a.set_speed(100);

Объект а является отличимым получателем ( distinguished receiver) сообщения set_speed. Отличимый получатель является неявным параметром, в данном случае обозначающим, что скорость (speed) будет установлена (set) для объ­екта а.

 

Динамический полиморфизм

Перед обсуждением динамического полиморфизма в языке Ada 95 мы долж­ны коснуться различий в терминологии языка Ada и других объектно-ориен­тированных языков.

    В языке C++ термин класс обозначает тип данных, который используется для создания экземпляров объектов этого типа. Язык Ada 95 продолжает ис­пользовать термины типы и объекты даже для теговых типов и объектов, которые известны в других языках как классы и экземпляры. Слово класс ис-| пользуется для обозначения набора всех типов, которые порождаются от об-|щего предка, в языке C++ мы их назвали семейством классов. Нижеследую­щее обсуждение лучше всего провести в правильной терминологии языка Ada 95; будьте внимательны и не перепутайте новое применение слова класс с его использованием в языке C++.

    С каждым теговым типом Т связан тип, который обозначается как T'Class

и называется типом класса (class-wide type)". T'Class покрывает (covered) все

 типы, производные от Т. Тип класса — это неограниченный тип, и объявить

объект этого типа, не задав ограничений, нельзя, подобно объявлению

 неограниченного массива:

type Vector is array(lnteger range <>) of Float;

V1: Vector;                                                          -- Запрещено, нет ограничений

type Airplane_Data is tagged record . . . end record;

A1: Airplane_Data'Class:                                  -- Запрещено, нет ограничений

Объект типа класса может быть объявлен, если задать начальное значение:

V2: Vector := (1 ..20=>0.0);                                -- Правильно, ограничен

Х2: Airplane_Data;                                              -- Правильно, конкретный тип


Содержание  Назад  Вперед