Главная    Почта    Новости    Каталог    Одноклассники    Погода    Работа    Игры     Рефераты     Карты
  
по Казнету new!
по каталогу
в рефератах

Объектно-ориентированные языки програмирования

ных продуктов, основанных на Си.


          Таблица С2.3 Продавцы и продукты языков, основанных на Си



|Продукт             |Платформа                         |Продавец       |
|                    |Трансляторы C++                   |               |
|Advantage C++       |IBM PC под MS-DOS, Xenix, Unix    |Lifeboat       |
|Designer C++        |Macintosh II                      |Oasys          |
|                    |IBM PC под MS-DOS, OS/2           |               |
|                    |IBM RT                            |               |
|                    |PC 80386 под Unix, Xenix          |               |
|                    |HP 9000/300 и 9000/800            |               |
|                    |NEC Astra                         |               |
|                    |AT&T 3b2                          |               |
|                    |DEC Vax под VMS и Ultrix          |               |
|                    |Sun-3, Sun-4                      |               |
|Glockenspiel C++    |IBM PC под MS-DOS, OS/2           |Glockenspiel   |
|                    |386/ix и Xenix                    |               |
|                    |AT&T 3b2 под Sys V.2              |               |
|                    |HP 9000/300                       |               |
|                    |Sun-3, Sun/386i                   |               |
|                    |IBM RT под Sys V.2                |               |
|                    |Apollo                            |               |
|                    |DEC Vax под Ultrix и VMS          |               |
|Guidelines C++      |IBM PC под MS-DOS                 |Guidelines     |
|                    |Компиляторы С++                   |               |
|Oregon C++          |Sun-3                             |Oregon         |
|                    |DEC Vax под Ultrix                |               |
|                    |PC 386 под Xenix                  |               |
|Zortech C++         |IBM PC под MS-DOS                 |Zortech        |
|Другие продукты, основанные на языке Си                                 |
|C-talk              |IBM-PC под MS-DOS                 |CNS            |
|                    |Macintosh                         |               |
|Complete C          |IBM PC под MS-DOS, OS/2, Unix     |Complete       |
|                    |                                  |Computer       |
|                    |                                  |Corporation    |
|Objective C         |Sun                               |Stepstone      |
|                    |DEC Vax                           |               |
|                    |Apollo                            |               |
|                    |HP 9000 series 200/300            |               |



                                 2.3.1. C++


                                    Язык

    Язык С++ в основном является языком Си со специальными  синтаксическими
расширениями для определения и управления объектами. В  нем  был  учтен  ряд
недостатков языка Си: теперь  ведется  проверка  типов  аргументов  функций,
можно производить макроподстановку функций. Также в него включены  некоторые
средства проекта  стандарта  Ansi  C.  По  завершении  стандарта  C++  будет
пересмотрен  для  удаления  несовместимостей  двух  языков.   Важной   новой
особенностью  C++  является  поддержка   абстракции   данных   и   объектно-
ориентированного  программирования.  Абстракция  данных   поддерживается   с
помощью введения типов, определенных пользователем.  Например,  предположим,
что есть новый тип данных shape, используемый в графической
системе. Этот тип определяется с помощью оператора class:

    class shape {
            point centre;
            colour col;
            // ... комментарий

    public:
            point where() {return centre; }
            void move(point to)
            { centre = to; draw(); }
            virtual void draw();
            virtual void rotate(int);
            // ... комментарий
    };

    Это определение содержит информацию как общую, так и  частную.  Сначала
представление фигуры shape определяется двумя элементами  частных  данных  -
центром  и  цветом.  Затем  идет  интерфейс,  содержащий  общую  информацию.
Пользователь может получить координаты центра,  перемещать  центр  фигуры  в
данную точку, рисовать фигуру  и  вращать  ее.  Функции  draw()  и  rotate()
нельзя определить для абстрактного типа shape. Они  называются  виртуальными
функциями и определяются позже для каждой специфической фигуры:  окружности,
треугольника или квадрата. Каждая из них определяется оператором class.  Это
означает, что,  например,  новый  тип  данных  circle  является  производным
класса shape, который называется  его  базовым  классом.  Производный  класс
наследует свойства базового класса. В данном случае класс  circle  наследует
члены класса col и centre класса  shape.  Кроме  этого,  у  него  есть  член
radius. Функции draw() и rotate() теперь реализованы для класса circle:

    class circle: public shape {      // окружность - это контур
          int radius;

    public:
          void draw() { /* ... */ };
          void rotate(int) {}            // rotate - нулевая функция
    };

    Объектно-ориентированное программирование поддерживается в языке С++  в
основном  реализацией  наследования  методом  задания  взаимодействия  типов
данных [Stroustrup 1988].
    С++  не  поддерживает  автоматическую  сборку  мусора:   размещение   и
освобождение памяти осуществляется  функциями  конструктора  и  деструктора.
При   нормальном   вызове   функции   происходит   статическое   связывание,
определяемое во время компиляции. Динамическое  связывание  реализовано  как
вызов виртуальной функции, где вызываемая функция зависит от типа объекта  и
не может быть определена  до  выполнения  программы.  Некоторые  версии  С++
поддерживают множественное наследование.
    Хотя С++ поддерживает объектно-ориентированное программирование, он  не
навязывает его. Можно игнорировать  объектные  расширения  и  просто  писать
обычные программы языка Си. Это преимущество с  точки  зрения  совместимости
двух языков и основная причина повышенного интереса к С++ в  разработке  ПО.
С другой стороны, могут  возникнуть  недоумения  по  поводу  того,  в  какой
степени С++  можно  считать  объектно-ориентированным  языком.  Более  того,
трудно  оценить,  какая  часть  рынка  языка  отражает  уникальный   поворот
сообщества Си в сторону ООС. Есть признаки, что  при  соответствующем  курсе
С++ отойдет от  объектно-ориентированного  сообщества:  в  1988  ассоциацией
пользователей UNIX (Usenix) была созвана отдельная  конференция  по  С++,  а
также был создан новый журнал The C++ Report издателями журнала  Journal  of
Object-Oriented Programming.

                                    Среда

    С++ - это язык программирования, а не среда  разработки  программ  типа
Smalltalk. Поэтому ему нужны средства поддержки  работы  программиста:  сюда
входят расширения существующих средств языки  Си  (редакторы,  отладчики)  и
средства поддержки работы с  объектами  (окна  просмотра  классов).  В  свою
очередь,  эти  средства  должны  соединяться  со  средой   программирования.
Быстрый рост рынка С++ предоставляет хорошие перспективы продавцам,  имеющим
продукты  для  С++.  К  ним  относятся,  например,   существующие   продавцы
компиляторов и трансляторов С++. Один из интересных проектов в этой  области
- соглашение между ParcPlace Systems и Glockenspiel о разработке  Cynergy  -
версии среды Smalltalk, поддерживающей программы на С++.

                                 Поставщики

    AT&T  поставляет  транслятор,  обрабатывающий  программу   на   С++   и
генерирующий исходный код Ansi C,  который  затем  компилируется  нормальным
образом. Транслятор пока еще  остается  продуктом  AT&T  без  сопровождения.
Лицензию можно купить прямо на фирме. Кроме этого, транслятор  перенесен  на
разнообразные платформы фирмой Glockenspiel (Дублин). Несколько  организаций
имеют подлицензии: Oasys для рабочих станций  (Sun,  Apollo),  Guidelines  и
Lifeboat для IBM PC.
    Две  другие  фирмы,  Zortech  и  Oregon  Software,  недавно   выпустили
компиляторы С++. Они больше основаны на справочном  руководстве  [Stroustrup
1986], а не на исходных текстах, и не имеют лицензии от AT&T.


                             2.3.2. OBJECTIVE-C


                                    Язык

    Другим  ведущим  продавцом  продуктов,  основанных  на   Си,   является
Stepstone, бывший PPI.  Objective-C  -  это  гибридный  язык,  состоящий  из
подмножества Ansi C  и  основных  положений  Smalltalk-80.  Тексты  программ
могут содержать  чистые  операторы  языка  Си  или  объектно-ориентированные
конструкции. Объекты задаются новым типом данных, называемым  id.  Сообщения
посылаются объектам  с  помощью  модифицированной  версии  синтаксиса  языка
Smalltalk. Новые объекты создаются посылкой сообщения new специальному  типу
объекта,  называемому  объектом-производителем.  Например,  новый  экземпляр
класса Pen создается с помощью следующего текста:

     extern id Pen;
     id aPen;
     aPen = [Pen new];

Objective-C не поддерживает множественное наследование и автоматическую
сборку мусора, однако, тестовая версия последней создана и протестирована
фирмой Stepstone [Cox 1986].
Компилятор Objective-C генерирует исходный текст на языке Си. По умолчанию
используется динамическое связывание методов, однако, для повышения
надежности и эффективности можно выбрать статическое связывание.
Среда
Кроме компилятора, фирма Stepstone предоставляет (необязательно)
интерактивную среду программирования Objective-C Interpreter. Она
поддерживает целый ряд бычных действий программиста: написание программ,
компиляцию, связывание, тестирование и отладку. Она включает команды для
вычисле
12345След.
скачать работу

Объектно-ориентированные языки програмирования

 

Отправка СМС бесплатно

На правах рекламы


ZERO.kz
 
Модератор сайта RESURS.KZ