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

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


МИНИСТЕРСТВО
ОБРАЗОВАНИЯ
РФ


ВОРОНЕЖСКИЙ
ИНСТИТУТ ВЫСОКИХ
ТЕХНОЛОГИЙ


Факультет
заочно-дистанционного
обучения


КУРСОВАЯ
РАБОТА



по курсу:
"ИНФОРМАТИКА"



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

















Выполнил: ст. гр.
ИСз-011
Старовойтов
С. А.
Принял: к.т.н.,
доцент
Питолин
А. В.


ВОРОНЕЖ
2002


ВВЕДЕНИЕ 2


ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ 5


1.1.
ТЕХНОЛОГИИ
ПРОГРАММИРОВАНИЯ 5


1.2.
СУЩНОСТЬ
ОБЪЕКТНО-ОРИЕНТИРОВАННОГО
ПОДХОДА К
ПРОГРАММИРОВАНИЮ 7


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


2.1.
SIMULA 67 10


2.2.
SMALLTALK 11


2.3.
ПРОДУКТЫ, ОСНОВАННЫЕ
НА ЯЗЫКЕ СИ 14


2.3.1.
C++ 16


2.3.2.
OBJECTIVE-C 18


ВВЕДЕНИЕ


Вопросы
реализации
программного
обеспечения,
разработка
которого велась
с применением
одной из
объектно-ориентированных
методологий,
рассматриваются
в разделе 5.
Реализация
программного
обеспечения
связана с
использованием
одного из языков
программирования.
Показано, что
наиболее удобными
для реализации
программных
систем, разработанных
в рамках
объектно-ориентированного
подхода, являются
объектно-ориентированные
языки программирования,
хотя возможна
реализация
и на обычных
(не объектно-ориентированных)
языках (например,
на языке C и на
языке Fortran).



Объектно-ориентированные
языки программирования
пользуются
в последнее
время большой
популярностью
среди программистов,
так как они
позволяют
использовать
преимущества
объектно-ориентированного
подхода не
только на этапах
проектирования
и конструирования
программных
систем, но и на
этапах их
реализации,
тестирования
и сопровождения.



Первый
объектно-ориентированный
язык программирования
Simula 67 был разработан
в конце 60-х годов
в Норвегии.
Авторы этого
языка очень
точно угадали
перспективы
развития
программирования:
их язык намного
опередил свое
время.



Однако современники
(программисты
60-х годов) оказались
не готовы воспринять
ценности языка
Simula 67, и он не выдержал
конкуренции
с другими языками
программирования
(прежде всего,
с языком Fortran).
Прохладному
отношению к
языку Simula 67 способствовало
и то обстоятельство,
что он был реализован
как интерпретируемый
(а не компилируемый)
язык, что было
совершенно
неприемлемым
в 60-е годы, так
как интерпретация
связана со
снижением
эффективности
(скорости выполнения)
программ.



Но достоинства
языка Simula 67 были
замечены некоторыми
программистами,
и в 70-е годы было
разработано
большое число
экспериментальных
объектно-ориентированных
языков программирования:
например, языки
CLU, Alphard,
Concurrent
Pascal
и др. Эти языки
так и остались
экспериментальными,
но в результате
их исследования
были разработаны
современные
объектно-ориентированные
языки программирования:
C++, Smalltalk, Eiffel и др.



Наиболее
распространенным
объектно-ориентированным
языком программирования
безусловно
является C++.
Свободно
распространяемые
коммерческие
системы программирования
C++ существуют
практически
на любой платформе.
Широко известна
свободно
распространяемая
система программирования
G++, которая дает
возможность
всем желающим
разобрать
достаточно
хорошо и подробно
прокомментированный
исходный текст
одного из образцовых
компиляторов
языка C++. Завершается
работа по
стандартизации
языка C++: последний
Draft стандарта
C++ выпущен в июне
1995 г. (он доступен
по Internet).



Разработка
новых объектно-ориентированных
языков программирования
продолжается.
С 1995 года стал
широко распространяться
новый объектно-ориентированный
язык программирования
Java, ориентированный
на сети компьютеров
и, прежде всего,
на Internet. Синтаксис
этого языка
напоминает
синтаксис
языка C++, однако
эти языки имеют
мало общего.
Java интерпретируемый
язык: для него
определены
внутреннее
представление
(bytecode) и интерпретатор
этого представления,
которые уже
сейчас реализованы
на большинстве
платформ.
Интерпретатор
упрощает отладку
программ, написанных
на языке Java,
обеспечивает
их переносимость
на новые платформы
и адаптируемость
к новым окружениям.
Он позволяет
исключить
влияние программ,
написанных
на языке Java, на
другие программы
и файлы, имеющиеся
на новой платформе,
и тем самым
обеспечить
безопасность
при выполнении
этих программ.
Эти свойства
языка Java позволяют
использовать
его как основной
язык программирования
для программ,
распространяемых
по сетям (в
частности, по
сети Internet).

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ
1.1. ТЕХНОЛОГИИ
ПРОГРАММИРОВАНИЯ


Технология
программирования
- это совокупность
методов и средств
разработки
(написания)
программ и
порядок применения
этих методов
и средств.



На ранних
этапах развития
программирования,
когда программы
писались в виде
последовательностей
машинных команд,
какая-либо
технология
программирования
отсутствовала.
Первые шаги
в разработке
технологии
состояли в
представлении
программы в
виде последовательности
операторов.
Написанию
последовательности
машинных команд
предшествовало
составление
операторной
схемы, отражающей
последовательность
операторов
и переходы
между ними.
Операторный
подход позволил
разработать
первые программы
для автоматизации
составления
программ - так
называемые
составляющие
программы.



С увеличением
размеров программ
стали выделять
их обособленные
части и оформлять
их как подпрограммы.
Часть таких
подпрограмм
объединялась
в библиотеки,
из которых
подпрошраммы
можно было
включать в
рабочие программы
и затем вызывать
из рабочих
программ. Это
положило начало
процедурному
программированию
- большая программа
представлялась
совокупностью
процедур-подпрограмм.
Одна из подпрограмм
являлась главной
и с нее начиналось
выполнение
программы.



В 1958 году были
разработаны
первые языки
программирования,
Фортран и Алгол-58.
Программа на
Фортране состояла
из главной
программы и
некоторого
количества
процедур -
подпрограмм
и функций. Программа
на Алголе-58 и
его последующей
версии Алголе-60представляла
собой единое
целое, но имела
блочную структуру,
включающую
главный блок
и вложенные
блоки подпрограмм
и функций.
Компиляторы
для Фортрана
обеспечивали
раздельную
трансляцию
процедур и
последующее
их объединение
в рабочую программу,
первые компиляторы
для Алгола
предполагали,
что транслируется
сразу вся программа,
раздельная
трансляция
процедур не
обеспечивалась.



Процедурный
подход потребовал
структурирования
будущей программы,
разделения
ее на отдельные
процедуры. При
разработке
отдельной
процедуры о
других процедурах
требовалось
знать только
их назначение
и способ вызова.
Появилась
возможность
перерабатывать
отдельные
процедуры, не
затрагивая
остальной части
программы,
сокращая при
этом затраты
труда и машинного
времени на
разработку
и модернизацию
программ.



Следующим
шагом в углублении
структурирования
программ стало
так называемое
структурное
программирование,
при котором
программа в
целом и отдельные
процедуры
рассматривались
как последовательности
канонических
структур: линейных
участков, циклов
и разветвлений.
Появилась
возможность
читать и проверять
программу как
последовательный
текст, что повысило
производительность
труда программистов
при разработке
и отладке программ.
С целью повышения
структурности
программы были
выдвинуты
требования
к большей
независимости
подпрограмм,
подпрограммы
должны связываться
с вызывающими
их программами
только путем
передачи им
аргументов,
использование
в подпрограммах
переменных,
принадлежащих
другим процедурам
или главной
программе,
стало считаться
нежелательным.



Процедурное
и структурное
программирование
затронули
прежде всего
процесс описания
алгоритма как
последовательности
шагов, ведущих
от варьируемых
исходных данных
к искомому
результату.
Для решения
специальных
задач стали
разрабатываться
языки программирования,
ориентированные
на конкретный
класс задач:
на системы
управления
базами данных,
имитационное
моделирование
и т.д. При разработке
трансляторов
все больше
внимания стало
уделяться
обнаружению
ошибок в исходных
текстах программ,
обеспечивая
этим сокращение
затрат времени
на отладку
программ.



Применение
программ в
самых разных
областях человеческой
деятельности
привело к
необходимости
повышения
надежности
всего программного
обеспечения.
Одним из направлений
совершенствования
языков программирования
стало повышения
уровня типизации
данных. Теория
типов данных
исходит из
того, что каждое
используемое
в программе
данное принадлежит
одному и только
одному типу
данных. Тип
данного определяет
множество
возможных
значений данного
и набор операций,
допустимых
над этим данным.
Данное конкретного
типа в ряде
случаев может
быть преобразовано
в данное другого
типа, но такое
преобразование
должно быть
явно представлено
в программе.
В зависимости
от степени
выполнения
перечисленных
требований
можно говорить
об уровне типизации
того или иного
языка программирования.
Стремление
повысить уровень
типизации языка
программирования
привело к появлению
языка Паскаль,
который считается
строго типизированным
языком, хотя
и в нем разрешены
некоторые
неявные преобразования
типов, например,
целого в вещественное.
Применение
строго типизированного
языка при написании
программы
позволяет еще
при трансляции
исходного
текста выявить
многие ошибки
использования
данных и этим
повысить надежность
программы.
Вместе с тем
строгая типизация
сковывала
свободу программиста,
затрудняла
применение
некоторых
приемов преобразования
данных, часто
используемых
в системном
программировании.
Практически
одновременно
с Паскалем был
разработан
язык Си, в большей
степени ориентированный
на системное
программирование
и относящийся
к слабо типизированным
языкам.



Все универсальные
языки программирования,
несмотря на
различия в
синтаксисе
и используемых
ключевых словах,
реализуют одни
и те же канонические
структуры:
операторы
присваивания,
циклы и разветвления.
Во всех современных
языках присутствуют
предопределенные
(базовые) типы
данных (целые
и вещественные
арифметические
типы, символьный
и, возможно,
строковый тип),
имеется возможность
использования
агрегатов
данных, в том
числе массивов
и структур
(записей). Для
арифметических
данных разрешены
обычные арифметические
операции, для
агрегатов
данных обычно
предусмотрена
только операция
присваивания
и возможность
обращения к
элементам
агрегата. Вместе
с тем при разработке
программы для
решения конкретной
прикладной
задачи желательна
возможно большая
концептуальная
близость текста
программы к
описанию задачи.
Например, если
решение задачи
требует выполнения
операций над
комплексными
числами или
квадратными
матрицами,
желательно,
чтобы в программе
явно присутствовали
операторы
сложения, вычитания,
умножения и
деления данных
типа комплексного
числа, сложения,
вычитания,
умножения и
обращения
данных типа
квадратной
матрицы. Решение
этой проблемы
возможно несколькими
путями:



- Построением
языка программирования,
содержащего
как можно больше
типов данных,
и выбором для
каждого класса
задач некоторого
подмножества
этого языка.
Такой язык
иногда называют
языком-оболочкой.
На роль языка-оболочки
претендовал
язык ПЛ/1, оказавшийся
настолько
сложным, что
так и не удалось
построить его
формализованное
описание. Отсутствие
формализованного
описания, однако,
не помешало
широкому применению
ПЛ/1 как в Западной
Европе, так и
в СССР.



- Построением
расширяемого
языка, содержащего
небольшое ядро
и допускающего
расширение,
дополняющее
язык типами
данных и операторами,
отражающими
концептуальную
сущность конкретного
класса задач.
Такой язык
называют
языком-ядром.
Как язык-ядро
были разработаны
языки Симула
и Алгол-68, не
получившие
широкого
распространения,
но оказавшие
большое влияние
на разработку
других языков
программирования.



Дальнейшим
развитием
второго пути
явился объектно-ориентированный
подход к программированию.

1.2.
СУЩНОСТЬ
ОБЪЕКТНО-ОРИЕНТИРОВАННОГО
ПОДХОДА К
ПРОГРАММИРОВАНИЮ


Основные
идеи объектно-ориентированного
подхода опираются
на следующие
положения:



- Программа
представляет
собой модель
некоторого
реального
процесса, части
реального мира.



- Модель реального
мира или его
части может
быть описана
как совокупность
взаимодействующих
между собой
объектов.



- Объект описывается
набором параметров,
значения которых
определяют
состояние
объекта, и набором
операций (действий),
которые может
выполнять
объект.



- Взаимодействие
между объектами
осуществляется
посылкой специальных
сообщений от
одного объекта
к другому. Сообщение,
полученное
объектом, может
потребовать
выполнения
определенных
действий, например,
изменения
состояния
объекта.



- Объекты,
описанные одним
и тем же набором
параметров
и способные
выполнять один
и тот же набор
действий представляют
собой класс
однотипных
объектов.



С точки зрения
языка программирования
класс объектов
можно рассматривать
как тип данного,
а отдельный
объект - как
данное этого
типа. Определение
программистом
собственных
классов объектов
для конкретного
набора задач
должно позволить
описывать
отдельные
задачи в терминах
самого класса
задач (при
соответствующем
выборе имен
типов и имен
объектов, их
параметров
и выполняемых
действий).



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



Классы объектов
часто удобно
строить так,
чтобы они
образовывали
иерархическую
структуру.
Например, класс
“Студент”,
описывающий
абстрактного
студента, может
служить основой
для построения
классов “Студент
1 курса”, “Студент
2 курса” и т.д.,
которые обладают
всеми свойствами
студента вообще
и некоторыми
дополнительными
свойствами,
характеризующими
студента конкретного
курса. При разработке
интерфейса
с пользователем
программы могут
использовать
объекты общего
класса “Окно”
и объекты классов
специальных
окон, например,
окон информационных
сообщений, окон
ввода данных
и т.п. В таких
иерархических
структурах
один класс
может рассматриваться
как базовый
для других,
производных
от него классов.
Объект производного
класса обладает
всеми свойствами
базового класса
и некоторыми
собственными
свойствами,
он может реагировать
на те же типы
сообщений от
других объектов,
что и объект
базового класса
и на сообщения,
имеющие смысл
только для
производного
класса. Обычно
говорят, что
объект производного
класса наследует
все свойства
своего базового
класса.



Некоторые
параметры
объекта могут
быть локализованы
внутри объекта
и недоступны
для прямого
воздействия
извне объекта.
Например, во
время движения
объекта-автомобиля
объект-водитель
может воздействовать
только на
ограниченный
набор органов
управления
(рулевое колесо,
педали газа,
сцепления и
тормоза, рычаг
переключения
передач) и ему
недоступен
целый ряд параметров,
характеризующих
состояние
двигателя и
автомобиля
в целом.



Очевидно,
для того, чтобы
продуктивно
применять
объектный
подход для
разработки
программ, необходимы
языки программирования,
поддерживающие
этот подход,
т.е. позволяющие
строить описание
классов объектов,
образовывать
данные объектных
типов, выполнять
операции над
объектами.
Одним из первых
таких языков
стал язык SmallTalk в
котором все
данные являются
объектами
некоторых
классов, а общая
система классов
строится как
иерархическая
структура на
основе предопределенных
базовых классов.



Опыт программирования
показывает,
что любой
методический
подход в технологии
программирования
не должен применяться
слепо с игнорированием
других подходов.
Это относится
и к объектно-ориентированному
подходу. Существует
ряд типовых
проблем, для
которых его
полезность
наиболее очевидна,
к таким проблемам
относятся, в
частности,
задачи имитационного
моделирования,
программирование
диалогов с
пользователем.
Существуют
и задачи, в которых
применение
объектного
подхода ни к
чему, кроме
излишних затрат
труда, не приведет.
В связи с этим
наибольшее
распространение
получили
объектно-ориентированные
языки программирования,
позволяющие
сочетать объектный
подход с другими
методологиями.
В некоторых
языках и системах
программирования
применение
объектного
подхода ограничивается
средствами
интерфейса
с пользователем
(например, Visual
FoxPro ранних версий).



Наиболее
используемыми
в настоящее
время объектно-ориентированными
языками являются
Паскаль с объектами
и Си++, причем
наиболее развитые
средства для
работы с объектами
содержатся
в Си++.


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


Все объектно-ориентированные
языки происходят
от языка Симула,
разработанного
в начале 60-х гг.
в Norwegian Computing Centre. Синтаксис
языка взят из
Алгола-60. Основными
новшествами
были понятия
объекта, класса
и наследования.
Симула не навязывает
строгую инкапсуляцию
данных и не
заботится о
деталях реализации.
Модули можно
перекомпилировать
по отдельности,
не меняя внешние
интерфейсы.
Проверка типов
осуществляется
во время компиляции.
Сборка мусора
осуществляется
системой поддержки
работающей
программы.



Объекты могут
действовать
независимо
друг от друга,
предоставляя
возможность
выполнения
квазипараллельных
вычислений.
Действие объекта
можно приостановить
и возобновить
позже. Встроенные
классы добавляют
в язык средства
работы со списками,
графику и
моделирование
дискретных
событий.


Среда


Переносимая
система Simula
(S-Port) содержит
независимый
пакет, состоящий
из компилятора,
генерирующего
промежуточный
язык S-code, систему
поддержки
работающей
программы и
символьного
отладчика.
Также есть
система, зависимая
от целевой
машины, содержащая
компилятор,
транслирующий
S-code в целевой код,
и набор программ
интерфейса.
Планируется
создать дополнительные
средства и
библиотеку
предопределенных
модулей.



Поставщики



Первая реализации
на Univac 1107 появилась
в начале 70-х гг.
С этих пор язык
был реализован
на большинстве
платформ, от
больших ЭВМ
до персоналок.
В настоящее
время Simula развивается
и выступает
на рынке под
названием
Simula a.s., установленным
норвежской
фирмой в 1984 г.



Переносимая
система Simula (S-Port) -
является основой
многочисленных
версий, включая
PC Simula. В табл. С2.1
приводятся
основные реализации
и поставщики.
Системы DEC, Univac и
IBM установлены
в более, чем
300 точках Европы
и Северной
Америки.


Таблица
С2.1а. Реализации
языка Simula




































Платформа



Поставщик


CDC 3300 Academy of Sciences,
Budapest
CDC Cyber Control Data a.s.,
Oslo, Norway
Cromemco
под
Cromix

Omnibus a.s., Sweden
Data General Eclipse Lund Software,
Sweden
DEC 10/20 Stockholm Computing
Centre QZ, Sweden
IBM 370 Simula a.s., Oslo,
Norway
ND 10/100 Norsk Data, Oslo,
Norway
Siemens
75xx под
BS2000/3000
Simula a.s., Oslo,
Norway

Таблица
С2.1b. Реализации
переносимых
систем Simula

























































Платформа

Поставщик

Apollo



Simprog
AB, Stockholm, Sweden

HP
900/300


Simprog
AB, Stockholm, Sweden

IBM
PC/XT (AT)

Simula
a.s., Oslo, Norway

ICL
2900

University
of Edinburgh, Scotland

Mach-S

Simulation
Technology, Oslo, Norway

Masscomp

Simprog
AB, Stockholm, Sweden

ND
500

Norsk
Data, Oslo, Norway

Prime

Prime
Scandinavia, Stockholm, Sweden

Sperry
1100

Unisys
Corp., USA

Sun

Simprog
AB, Stockholm, Sweden

Vax
под
Unix

Simprog
AB, Stockholm, Sweden

Vax
под
Ultrix

Simprog
AB, Stockholm, Sweden

Vax
под
VMS

Stockholm
Computing Centre QZ, Sweden


Сформированная
в 1972 г. организация
Simula Standards Group осуществляет
контроль за
развитием
языка: самая
последняя
версия была
выпущена в
1986г. Изменения
в язык вносит
Simula Developement Group. Кроме того,
есть ассоциация
пользователей
языка Simula.

2.2.
SMALLTALK


Smalltalk до последнего
времени был
наиболее
предпочтительным
языком при
экспериментировании
в технологии
объектно-ориентированного
программирования.
В последние
годы появился
дешевый компилятор
C++ для персоналок,
который нарушил
баланс в сторону
C++ среди первых
пользователей
объектно-ориентированных
систем. Smalltalk был
разработан
на фирме Xerox PARC в
результате
исследовательского
проекта, воплотив
в себе ряд идей
о том, как человек
может использовать
компьютер
наилучшим
образом. Сюда
относились
использование
персональных
рабочих станций,
интерактивных
сред, графических
интерфейсов,
мыши и объектно-ориентированного
программирования.
Каждая из этих
идей сама по
себе имела
большое значение,
как внутри
фирмы, так и во
всей компьютерной
индустрии. В
80-х гг. соединение
этих мощных
идей в языке
и системе
Smalltalk-80 было несоразмерно
с малым числом
фактических
пользователей.


Язык


Основной
чертой языка
Smalltalk является
его универсальность.
История языка
характеризуется
тремя признаками:



данные хранятся
как объекты,
которые освобождаются
автоматически;



выполнение
действий
осуществляется
через посылку
сообщений
объектам;



поведение
объектов описано
в классах.



В языке все
является объектом.
Все взаимодействия
объектов
осуществляются
через посылки
сообщений, даже
сложение целых
чисел: 1 +2. В этом
языке 1 - это
экземпляр
класса целых
чисел, + - имя
метода, 2- аргумент.
Объект 1 получает
сообщение + 2 и
возвращает
результат
3.Состоятельность
такого подхода
гарантирует
краткость языка
и простой синтаксис.
Но из-за этого
увеличивается
цена накладных
расходов на



посылку
сообщений:
связывание
производится
целиком во
время работы
программы.
Автоматическая
сборка мусора
тоже вызывает
проблемы
быстродействия.
Smalltalk не поддерживает
множественное
наследование.



С другой
стороны, Smalltalk-80
совсем не маленький
язык. Существует
большая библиотека
классов: более
250 классов и более
2000 методов. Работа
с такой библиотекой
составляет
важную задачу
при изучении
языка, несмотря
на то, что для
просмотра
методов и классов
существуют
специальные
средства.


Среда


Smalltalk-80 тесно связан
с развитой
средой программирования.
Пользовательский
интерфейс
состоит из
набора экранных
образов: это
прямоугольные
области, содержащие
текст или графику,
которые можно
перемещать
по экрану, изменять
в размере, заменять
меткой или
закрывать.
Образы могут
перекрываться
полностью или
частично.
Взаимодействие
с системой
осуществляется
с помощью
трехкнопочной
мыши или с
клавиатуры.
Визуальные
объекты для
пользователя
- это курсоры,
высвечивание,
меню, полоски
сдвига и рамки
с подсказкой.



Основные
компоненты
системы активизируются
внутри экранных
образов. Сюда



входят текстовый
редактор, редактор
формы и битовый
редактор для
создания рисунков,
инспектор для
проверки переменных
объекта, окно
просмотра
системы для
изучения классов
и сообщений,
метки окна для
описания прерванного
процесса и
отладчики.



Smalltalk был разработан
для индивидуальной
работы программиста
на персональной
рабочей станции.
Таким образом,
эта система
первоначально
была доступна
только как
однопользовательская.
Сейчас в ней
уже есть средства
поддержки
коллективов
программистов.


Поставщики


В 1981-82 гг. четырем
фирмам предлагалось
реализовать
Smalltalk на своей
аппаратуре.
После этого
эксперимента
Smalltalk поставлялся
университетам
и исследовательским
институтам
как продукт
без сопровождения.
Кроме того, был
выпущен ряд
книг по языку
и его реализации.
Однако, язык
не был запатентован
фирмой Xerox вплоть
до 1986 г. Эта фирма
до сих пор
контролирует
рынок Smalltalk-80 с помощью
отделения SIS и
фирмы ParcPlace Systems. Другие
продавцы имеют
лицензию на
продукт и его
различные
реализации.
Исключением
является фирма
Digitalk, выпустившая
свою собственную
версию для PC -
Smalltalk/V. В таблице
С2.2 приведены
доступные в
настоящее время
продукты Smalltalk.


Таблица C2.2
Продавцы и
продукты языка
Smalltalk










































































Продукт

Платформа

Продавец

Smalltalk-80




DEC
Station 3100 под
Ultrix


ParcPlace
systems



PC
80386 под
MS-DOS





Sun-3,
4, 386i





Apple
Macintosh II, Plus и
SE





HP
9000 series 300





Apollo
Series 3000, 4000





Apollo
DN570, 580, 590



Smalltalk-80



Tektronix
4315

Tektronix

Color
Smalltalk-80

Tektronix
4316, 17 и
19

Tektronix

Smalltalk-80



Xerox
8010/1108 и
6085/1186


Xerox
SIS

Smalltalk/V



IBM
PC/XT/AT под
MS-DOS


Digitalk

Smalltalk/V
286


286
и 386 PC
под MS-DOS

Digitalk

Smalltalk/V
Mac


Apple
Macintosh II, PLUS и
SE


Digitalk


Будущее языка
Smalltalk волнует как
пользователей,
так и поставщиков.
В августе 1987 г.
была организована
ассоциация
разработчиков
и прикладных
пользователей
Smalltalk - OOPSTAD. Она публикует
новости HOOPLA
(Hooray
for
Object-Oriented
Languages).
Работу по
стандартизации
взял на себя
IEEE
Microprocessor
Standards
Committee
(P1152).
Основное внимание
он уделяет
языку и базовым
классам типа
Number и Collection. Основные
поставщики
и ряд консультантов
сформировали
Консорциум
Smalltalk в целях развития
применения
языка и среды
и управления
их технической
эволюцией. Он
является открытым
для отдельных
пользователей
и корпораций.

2.3.
ПРОДУКТЫ, ОСНОВАННЫЕ
НА ЯЗЫКЕ СИ


В настоящее
время объектно-ориентированные
языки стремятся
приблизиться
к традиционным
языкам (в основном
к языку Си). Для
этого есть ряд
причин:



уже можно
воспользоваться
накопленным
опытом программирования;



интерфейсы
существующих
систем намного
проще;



язык более
приемлем в
области управления;



поставка
может быть
осуществлена
на стандартных
платформах;



гарантия
переносимости
между платформами.



Наибольшим
потенциалом
для больших
коммерческих
организаций
обладает язык
C++ фирмы AT&T. Хотя
он и не имеет
пока большого
количества
средств сопровождения,
некоторые
коммерческие
организации
уже работают
над созданием
сред развития
языка, а другие
разрабатывают
дополнительные
инструменты
и библиотеки
классов. Кроме
того, несколько
компаний разработали
языки и инструментальные
средства, основанные
на языке Си. В
таблице C2.3 подводятся
итоги доступных
продуктов,
основанных
на Си.


Таблица С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. Она поддерживает
целый ряд бычных
действий
программиста:
написание
программ, компиляцию,
связывание,
тестирование
и отладку. Она
включает команды
для вычисления
выражений,
вывода данных,
установки
контрольных
точек, поиска
каталогов
файла, редактирования
командного
файла, проверки
объектов, вывода
иерархии классов
и наследуемых
методов.


Также
предоставляется
две библиотеки
классов для
поддержки
основного и
графического
пользовательского
интерфейса.

2.3.3
ДРУГИЕ ПРОДУКТЫ,
ОСНОВАННЫЕ
НА СИ

C-talk


C-talk -
это запатентованный
язык для MS-DOS и
Apple Macintosh, созданный
отделом программных
продуктов фирмы
CNS Inc, специализирующейся
на продуктах
диагностики
для медицины.
Синтаксис языка
основан на Си
с дополнительными
конструкциями,
поддерживающими
классы и методы,
наследование
и посылку сообщений.
Предоставляется
набор основных
классов для
структур данных
типа Buffer, Stream и ByteArray. Он
поставляется
в виде пакета,
содержащего
препроцессор
для преобразования
файлов на C-talk в
исходные тексты
на Си, и среды
программирования,
называемой
C-talk Browser, основанной
на оконном
интерфейсе.
Существуют
средства
редактирования
файлов и просмотра
классов и методов.


Complete C


Complete
Computer Corporation, New York работает
над созданием
объектно -
ориентированной
среды разработки
программ, называемой
Complete C. Она состоит
из прекомпилятора,
генерирующего
стандартный
Ansi С из объектно-ориентированного
Си, набора
инструментов
(отладчика,
компоновщика,
генератора
документов)
и библиотеки
основных классов.
Complete C работает
под MS-DOS, OS/2 и Unix.


2.4.
ПРОДУКТЫ, ОСНОВАННЫЕ
НА ЛИСПЕ

Объектно-ориентированные
расширения
Лиспа предназначены
в основном для
сообщества
исследователей
искусственного
интеллекта.
Некоторые из
этих расширений
были первоначально
созданы в
университетах.
Лидерами являются
две самостоятельные
версии: New Flavors,
разработанный
в Symbolics, и CommonLoops, разработанный
в Xerox PARC. Они составили
базу для Common Lisp Object
System (CLOS).


Отличительной
особенностью
некоторых
систем, основанных
на Лиспе, является
способ управления
взаимодействием
объектов. В
отличие от
традиционных
вызовов функций,
здесь первый
аргумент
соответствует
объекту-приемнику.
Фактически
вызываемая
функция зависит
от вида объекта,
обозначенного
этим первым
аргументом,
в то время как
имя функции
эквивалентно
имени сообщения.


CommonLoops


Loops -
это многопарадигмовая
система для
обработки
знаний и программирования,
разработанная
в Xerox PARC. В представлении
знаний используется
объектно-ориентированный
подход. поддерживающий
классы и наследование.
Объектно -
ориентированная
часть Loops позднее
была оформлена
как пакет в
составе продукта
Common Lisp, более известного
как CommonLoops. Характеристики
языка:


частичная
интеграция
системы типа
Common Lisp с классами
CommonLoops;


использование
синтаксиса
обобщенных
функций вместо
посылки сообщений;


способность
определять
методы, различающиеся
не только по
первому аргументу
( так называемые
мультиметоды);


поддержка
реализации
других объектно-ориентированных
языков с помощью
ядра метаклассов,
набора предопределенных
классов, составляющих
оставшуюся
часть системы.


Опытная
реализация,
названная
Portable CommonLisp (PCL), распространена
для небольшого
сообщества
пользователей.
Она используется
в Hewlett-Packard Laboratories для реализации
другого объектно
- ориентированного
языка - CommonObjects [Kempf, Harris,
D'Souza and Snyder 1987].


New
Flavors


Flavors -
это расширение
MacLisp/ZetaLisp. Это система
посылки сообщений,
используемая
в коммерческих
целях фирмами
Symbolics и TI Explorers. New Flavors - это
производная
от Flavors, совместимая
с ней, но использующая
синтаксис
обобщенных
функций.


Common
Lisp Object System (CLOS)


В
1986 г. группы с фирм
Xerox PARC и Symbolics, а также
группа с фирмы
Lucid, начала работу
над проектом
спецификации
для CLOS, представленный
на рассмотрение
технической
рабочей группе
Ansi, X3J13. Эта спецификация
одобрена для
вероятного
принятия в
качестве части
развивающегося
стандарта
Common Lisp. Цели CLOS: использование
набора уровней
для независимых
друг от друга
действий языка
программирования;
сделать как
можно больше
в рамках первого
класса Object System (объект
первый класс
- это объект,
который можно
явно создать
и работать с
ним); желание
избавиться
от сложного
поведения для
упрощения
понятий и их
объяснений;
сделать спецификацию
языка как можно
более точной
[DeMichiel and Gabriel 1987]. Основные
средства CLOS:


три
слоя языка:
интерфейс для
объектно-ориентированного
программирования,
функциональный
интерфейс для
Object System, и инструменты,
позволяющие
программисту
создавать свои
собственные
объектно-ориентированные
языки;


использование
обобщенных
функций вместо
посылки сообщений;
при таком подходе
объекты и функции
являются анонимными
объектами: ни
один из них не
является
собственностью
другого;


поддержка
множественного
наследования:
список старшинства
классов используется
для решения
потенциальных
конфликтов
между наследуемой
структурой
и поведением;
средство комбинации
методов для
получения
значений обобщенной
функции - задание
способа комбинации
методов, применимых
к набору аргументов
(в результате
множественного
наследования);


гарантия,
что обобщенные
функции и классы
являются объектами
первого класса
(т.е. они могут
храниться в
любом месте,
где разрешено
хранение обобщенных
объектов).


Delphi
Common Lisp


Delphi -
это итальянская
фирма, считающая
себя первой
в реализации
стандарта для
CLOS. Последний
выступает как
часть продукта
Delphi Common Lisp (DCL), основанного
на расширенной
версии Kyoto Common Lisp.


Разработано
три расширения
CLOS:


поддержка
традиционных
систем;


поддержка
постоянной
памяти;


поддержка
параллельности.


Allegro
Common Lisp


Allegro CL
- это реализация
Common Lisp, разработанная
и выставленная
на рынок фирмой
Franz Inc на широком
наборе аппаратуры.
В настоящее
время он включает
объектно-ориентированные
расширения
для поддержки
Flavors и Portable CommonLoops. Поддержка
стандарта CLOS
буде реализована
как только он
станет доступным.


ExperCommon
Lisp


ExperTelligence
разрабатывает
и выставляет
на рынок объектно
- ориентированное
расширение
ExperLisp для Macintosh. Поддерживает
Macintosh Toolbox и MacApp.

2.5.
EIFFEL

Язык


Eiffel -
это запатентованный
язык, разработанный
и продаваемый
фирмой Interactive Software
Engineering. Его разработка
велась под
влиянием
объектно-ориентированных
понятий языка
Симула, объединенных
с синтаксисом
языка Ада и
современными
методами технологии
программирования.
Кроме поддержки
классов и
наследования,
Eiffel вводит ряд
новых средств:


утверждения
для выражения
формальных
свойств классов:
это могут быть
preconditions, postconditions или invariants;


обобщенные
параметры для
представления
типов в объявлениях
классов;


средство
rename для поддержки
множественного
наследования
разрешением
конфликтов
имен в случае,
когда у класса
более одного
родителя;


средство
переопределения
в нижестоящих
классах, позволяющее
осуществлять
динамическое
связывание
вопреки статической
проверки типов;


отложенные
программы,
реализация
которых находится
только в нижних
классах.


Размещение
и освобождение
памяти осуществляется
системой времени
выполнения,
включающей
пошаговый
сборщик мусора.
Есть интерфейс
с другими языками
с помощью понятия
external, выдающего
список каждой
внешней подпрограммы,
используемой
в программе.


Среда


Система
Eiffel состоит из
компилятора
и набора инструментальных
средств. Они
содержат средства
автоматической
конфигурации,
отладки, проверки
утверждения
во время работы
программы,
документирования,
оптимизирующий
постпроцессор
и библиотеку
базовых классов
для общих структур
данных (списков,
деревьев, стеков,
хэш-таблиц).
Постпроцессор
может генерировать
отдельный пакет
на Си, который
можно использовать
для поставки
на системы, не
поддерживающие
Eiffel.

2.6.
ЯЗЫКИ, ОСНОВАННЫЕ
НА ПАСКАЛЕ

2.6.1.
ACTOR

Actor -
это объектно-ориентированные
язык и среда,
основанные
на Паскале и
работающие
под Microsoft Windows. Он соединяет
систему управления
динамической
памятью и
автоматическую
сборку мусора.
Actor был создан
группой Whitewater Group.
Он используется
для создания
отдельных
прикладных
задач для Windows,
которые можно
скомпоновать
с существующими
программами
на Microsoft C.

2.6.2.
OBJECT PASCAL

Object
Pascal - это объектно-ориентированное
расширение
Паскаля, разработанное
Н. Виртом совместно
с командой с
фирмы Apple. Классы
(типы) реализованы
как расширение
паскалевской
структуры
RECORD. В Object Pascal они могут
содержать как
поля данных,
так и поля методов.
Методы определяются
как процедуры
или функции
Паскаля, определяемые
по имени класса.
Сообщения
посылаются
с помощью обычных
конструкций
Паскаля для
определения
поля.


Object
Pascal использовался
для внутренних
разработок
фирмы Apple. Библиотека
классов Object Pascal
составляет
основу интегрированной
системы разработки
прикладных
программ MacApp. Язык
свободно
распространяется
[Schmucker 1986].

2.7.
ЯЗЫКИ, ПОДДЕРЖИВАЮЩИЕ
АБСТРАКЦИЮ
ДАННЫХ

Раздаются
возгласы, что
ряд других
языков также
либо объектно
- ориентированные,
либо поддерживают
объектно-ориентированные
понятия. В этом
разделе рассматриваются
два языка, имеющие
существенную
поддержку
программистов
- Modula-2 и Ada, которые
сравниваются
с вышеприведенными
объектно-ориентированными
языками. В таблице
С2.4 подведены
итоги основных
средств этих
языков и основных
коммерческих
объектно-ориентированных
языков.

2.7.1. ADA

Ada был
создан в Министерстве
Обороны США
для использования
во встроенных
компьютерных
системах. Его
использование
обязательно
в государственных
контрактах
в некоторых
областях как
в США, так и в
Великобритании.
Благодаря этому
такие системы
являются
естественными
прикладными
задачами для
объектно -
риентированных
понятий: значительные
усилия были
затрачены на
доказательство
того, что Ада
поддерживает
ООС.


Новые
типы данных
(классы) можно
задать в языке
Ада как пакеты.
Пакет содержит
как общую, так
и частную информацию.
Пользовательский
интерфейс задан
как спецификация
пакета, в то
время как реализация
задается отдельно
в теле пакета,
предоставляя
эффективный
механизм
инкапсуляции.
Связывание
происходит
во время компиляции,
когда явно
проверяются
типы всех данных.
В пакете можно
переопределять
операторы,
давая новый
смысл традиционным
операторам
типа +. Ада не
позволяет типам
наследовать
информацию
или поведение
от других типов,
хотя есть возможность
использовать
разновидность
наследования
- обобщение
(genericity), позволяющее
экспортировать
ограниченное
число частных
типов и операций.


Ада
может использоваться
для разработки
программ, основанных
на объектах.
Для проектов
в военной и
аэрокосмической
областях другого
выбора и нет.
Пользователи,
не ограниченные
этими областями,
могут с удовлетворением
отметить, что
их требования
могут быть
выполнены
другим объектно-ориентированным
языком типа
Eiffel.

Таблица
С2.4 Сравнение
языков программирования

ЯзыкСкрытие


информацииКлассыНаследо-ваниеСвязы-ваниеСборка
мусораИнстру-
ментарийSimulaдадаедин.стат.нетестьSmalltalk-80
дадаедин.динам.автом.полныйС++дадаедин.*обанетнетObjective-Cдадаедин.*обанетестьEiffelдадаобаобанетестьAdaдаданетстат.нетнетModula-2
данетнетстат.нетнет


*
множественное
наследование
в стадии разработки

2.7.2.
MODULA-2

Modula-2,
разработанная
Н. Виртом, является
прямым потомком
языков Algol 60 и Pascal, и
привлекает
многих, обученных
на традиции
этих языков.
Ее ключевое
средство - принцип
скрытия информации,
заключающийся
в отделении
спецификации
модуля от его
реализации.
Абстрактные
типы данных
могут быть
определены
как закрытые
типы. Спецификация
типа содержится
в модуле с
определением,
который описывает
тип данных и
процедуры для
доступа к нему.
Программы,
выполняющие
эти процедуры,
содержатся
в модуле реализации.
Как и в Аде, такое
разделение
служит в качестве
механизма
инкапсуляции.
Однако Modula-2 более
ограничивает,
чем Ада, не разрешая
ни переопределение,
ни обобщение
операций.


Появилось
несколько
статей, показывающих,
как Modula-2 может
быть использована
для разработки
объектно-ориентированных
систем. Это
требует существенной
нагрузки на
программиста,
поскольку язык
не поддерживает
объектно-ориентированные
средства, описанные
в главе B1. Необходимость
пользователей
языков Algol-Pascal-Modula в
средствах ООП
могут быть
удовлетворены,
например, реализацией
языка Modula-3,
объектно-ориентированного
потомка Modula-2,
разработанного
группой исследовательского
центра фирм
DEC и Olivetti в Калифорнии
[Cardelli et al 1988].

ЗАКЛЮЧЕНИЕ

Ведущие
продавцы ПО
для персоналок
являются активными
пользователями
объектно-ориентированных
языков и средств.
Microsoft считается
создателем
объектно-ориентированных
иерархий классов
для Word и Excel.


Позиция
Microsoft стала ясна
после нескольких
публикаций
и интервью.
Компания поддержала
объектно-ориентированные
расширения
существующих
языков, включая
Basic. Bill Gates также поразил
всех заявлением
о том, что он
не видит будущего
за введением
новых объектно-ориентированных
языков после
1988 г., но ОС будущего
должны иметь
объектно-ориентированную
поддержку: "Вы
не поднимите
всю глубину
прикладных
задач, работая
только с ними,
до тех пор, пока
мы не сделаем
это внутри ОС"
[Byte, 1988]. Это будет
достигнуто
дополнительными
возможностями
OS/2.


Практически
все объектно-ориентированные
языки программирования
являются
развивающимися
языками, их
стандарты
регулярно
уточняются
и расширяются.
Следствием
этого развития
являются неизбежные
различия во
входных языках
компиляторов
различных
систем программирования.
Наиболее
распространенными
в настоящее
время являются
системы программирования
Microsoft C++ , Microsoft Visual C++ и системы
программирования
фирмы Borland International.


Список
литературы

А.
Г. Иванов
«Объектно-ориентированные
системы: Состояние
и перспективы»,
Москва 1992 г.


Подбельский
В.В. Язык С++. –
М.:Финансы и
статистика,
1996.


Объектно-ориентированные
языки программирования,
[µhttp://www.citforum.ru/win/programming/oop_rsis/glava1_2.shtml§]


Объектно-ориентированное
программирование,
(µhttp://www.object.newmail.ru/index.html§)

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

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

Слов:7077
Символов:72864
Размер:142.31 Кб.