Rationale for Ada 2005: Object oriented model

RUSTOP
BACKNEXT

ENG

1. Overview of changes

@ The WG9 guidance document [1] identifies very large complex systems as a major application area for Ada. It says "The main purpose of the Amendment is to address identified problems in Ada that are interfering with Ada's usage or adoption, especially in its major application areas (such as high-reliability, long- lived real-time and/or embedded applications and very large complex systems). The resulting changes may range from relatively minor, to more substantial." Object oriented techniques are of course important in very large systems in providing flexibility and extensibility. The document later asks the ARG to pay particular attention to Improvements that will remedy shortcomings in Ada. It cites in particular improvements in OO features, specifically, adding a Java-like interface feature and improved interfacing to other OO languages.

@ Ada 2005 does indeed make many improvements in the object oriented area. The following Ada Issues cover the relevant changes and are described in detail in this paper:

@ These changes can be grouped as follows.

@ First we discuss the fact that Ada 2005 has three new reserved words, interface, overriding, and synchronized. It so happens that these are all used in different aspects of the OO model and so we discuss them in this paper (284).

@ Then there is the introduction of the Obj.Op or prefixed notation used by many other languages (252, 407). This should make Ada easier to use, improve its image, and improve interfacing to other languages.

@ A huge improvement is the addition of Java-like interfaces which allow proper multiple inheritance (251, 396, 401, 411, 419). A related change is the introduction of null procedures as a category of operation somewhat like abstract operations (348).

@ Type extension is now permitted at a more nested level than that of the parent type (344). An important consequence is that controlled types no longer need to be declared at library level.

@ An interesting development is the introduction of generic functions for the dynamic creation of objects of any type of a class (260, 400, 405, 417). These are sometimes called object factory functions or just object factories.

@ Additional syntax permits the user to say whether an operation is expected to be overriding or not (218). This detects certain unfortunate errors during compilation which otherwise can be difficult to find at execution time. A small change to the overriding rules is that a function with a controlling result does not "go abstract" if an extension is in fact null (391). Finally, we discuss a minor but useful change to the overloading rules; in a sense this is not about OO at all since it concerns the rules for nondispatching operations but it is convenient to discuss it here (310).

@ There are in fact many other OO related improvements in Ada 2005 concerning matters such as access types, visibility, and generics. They will be described in later papers.

Rationale for Ada 2005: Object oriented model

@ENGRUSTOPBACKNEXT

1. Обзор изменений

@ Документ [1] руководства WG9 идентифицирует очень большие сложные системы как главную прикладную область Ады. В нём говорится, что "Основная цель Поправки состоит в том, чтобы обратиться к идентифицированным проблемам Ады с которыми сталкиваются пользователи, особенно в её главных прикладных областях (таких как высоко-надёжные, долго - живущие и/или встраиваемые приложения реального времени и очень большие сложные системы). Получающиеся изменения распологаются в порядке от относительно незначительных, к более существенным." Объектно-ориентированные средства несомненно важны в очень больших системах для обеспечения гибкости и расширяемости. В последующем документе заявлено что ARG обратил особое внимание на Усовершенствования которые исправят недостатки в Аде. Они включают усовершенствования специфические для OOП, добавление java-подобного интерфейса и улучшенние связи с другими языками OOП.

@ Ада 2005 действительно получила много усовершенствований в объектно-ориентированной области. Перечислим эти изменения затрагиваемые в этой статье:

@ Эти изменения могут быть группированы следующим образом.

@ Сначала мы обсудим появление в Аде 2005 трёх новых зарезервированных слова, interface, overriding и synchronized. Так получилось, что все они используются в различных аспектах модели OOП и, таким образом, мы обсуждаем их в этой статье (284).

@ Введена префиксная нотация при вызове процедур в формате Obj.Op, используемая во многих других языках (252, 407). Это должно сделать Аду более легкой для использования, улучшить её имидж и связь с другими языками.

@ Огромное усовершенствование - добавление java-подобного интерфейса, который разрешает множественное наследование (251, 396, 401, 411, 419). Связанное с ним изменение - введение категории нулевых процедур подобных абстрактным операциям (348).

@ Расширение типа теперь разрешено на более вложенном уровне чем родительский (344). Важное последствие этого состоит в том, что контролируемые (controlled) типы больше не обязательно должны быть объявлены на библиотечном уровне.

@ Интересная доработка - введение настраиваемых функций для динамического создания объектов любого типа (260, 400, 405, 417). Их иногда называют функциями-фабриками объектов или просто фабриками объектов.

@ Дополнительный синтаксис разрешает пользователю явно определить, будет ли операция иметь 'заменяемый' (overriding) тип или нет (218). Это позволяет обнаруживать досадные ошибки ещё на этапе трансляции, которые иначе бывает трудно найти во время выполнения. Небольшое изменение к правлам замены (overriding) - теперь функция с управляющим результатом не "go abstract", если расширение фактически нулевое (391). Наконец, мы обсудим небольшое, но полезное изменение к правилам перегрузки (overloading); в некотором смысле оно не относится к OOП вообще, а касается правил для недиспетчерируемых (nondispatching) операций, но его удобно обсудить здесь (310).

@ Имеются ряд других усовершенствований Ады 2005 связанных с ООП, таких как ссылочные (access) типы, видимость и настраиваемые (generic) средства. Они будут описаны в последующих разделах.

@ ENG RUS

TOP BACK NEXT

2010-10-26 14:41:45

. .