Автор работы: Пользователь скрыл имя, 05 Октября 2013 в 22:18, курсовая работа
Информационные технологии занимают все более значимую роль в человеческом обществе. Они проникли во все сферы деятельности. Для обслуживания общественных потребностей в автоматизации труда, хранения данных, связи и др. развиваются языки программирования. Если раньше языки программирования использовались лишь для создания программ для автоматизации вычислительных процессов, то на сегодняшний день они используются для решения более разнообразных задач.
Изучение истории языков программирования, их разнообразия и особенностей позволяет программисту сделать правильный выбор при выборе языка для решения определенной задачи.
Введение 3
1. Объектно-ориентированное программирование: основные понятия 5
2. Объектно-ориентированные, объектные и объектно-базированные языки программирования 11
3. Классификация объектно-ориентированных языков программирования 12
3.1. Smalltalk 12
3.2. Object Pascal 14
3.3. C++ 15
3.4. Common Lisp Object System (CLOS) 16
3.5. Eiffel 17
Заключение 19
Список литературы 21
Известны пять выпусков языка Smalltalk, обозначаемых по году их появления:
Smalltalk-72, -74. -76, -78, и Smalltalk-80. Реализации 1972 и 1974 годов заложили основу языка, в частности идею передачи сообщений и полиморфизм, хотя механизм наследования еще не появился. В последующих версиях полноправное гражданство получили классы; этим достигла завершения точка зрения, что все состоит из объектов. Smalltalk-80 был перенесен на многие компьютерные платформы.
Есть также один важный диалект (схожий со Smalltalk-80), получивший название Smalltalk/V. Он создан фирмой Digitalk для IBM PC (Windows и OS/2) и Macintosh. За исключением классов пользовательского интерфейса, библиотеки классов Smalltalk/V в обеих версиях практически идентичны. Среда и инструменты разработки также напоминают Smalltalk-80.
В основу языка положены две простые идеи:
В таблице 1 приведены характеристики языка Smalltalk с точки зрения семи основных элементов объектного подхода. Множественное наследование в принципе может быть реализовано за счет переопределения некоторых методов-примитивов.
Таблица 1.
Характеристики языка Smalltalk
Абстракции |
Переменные экземпляра Методы экземпляра Переменные класса Методы класса |
Да Да Да Да |
Инкапсуляция |
Переменных Методов |
Закрытые Открытые |
Модульность |
Разновидности модулей |
Нет |
Иерархии |
Наследование Шаблоны Метаклассы |
Одиночное Нет Да |
Типизация |
Сильная типизация Полиморфизм |
Нет Да (одиночный) |
Параллельность |
Многозадачность |
Непрямая (посредством классов) |
Сохраняемость |
Долгоживущие объекты |
Нет |
Object Pascal создавался сотрудниками компании Apple Computer (некоторые из которых были участниками проекта Smalltalk) совместно с Никлаусом Виртом (Niklaus Wirth), создателем языка Pascal. Object Pascal известен с 1986 года и является первым объектно-ориентированным языком программирования, который был включен в Macintosh Programmer′s Workshop (MPW), среду разработки для компьютеров Macintosh фирмы Apple. Для MPW создана библиотека классов, называемая МасАрр, являющаяся основой для создания прикладных приложений, отвечающих требованиям к интерфейсу пользователя Macintosh.
Этот язык стал очень популярен благодаря системе Delphi фирмы Borland. В нем нет методов класса, переменных класса, множественного наследования и метаклассов. Эти механизмы исключены специально, чтобы сделать язык простым для изучения начинающими "объектными" программистами.
Таблица 2.
Общие характеристики Object Pascal.
Абстракции |
Переменные экземпляра Методы экземпляра Переменные класса Методы класса |
Да Да Нет Нет |
Инкапсуляция |
Переменных Методов |
Открытые Открытые |
Модульность |
Разновидности модулей |
Модуль (unit) |
Иерархии |
Наследование Шаблоны Метаклассы |
Одиночное Нет Нет |
Типизация |
Сильная типизация Полиморфизм |
Да Да (одиночный) |
Параллельность |
Многозадачность |
Нет |
Сохраняемость |
Долгоживущие объекты |
Нет |
Язык программирования C++ был разработан Бьерном Страуструпом, сотрудником AT&T Bell Laboratories. Непосредственным предшественником C++ является С with Classes, созданный тем же автором в 1980 году. Язык С with Classes, в свою очередь, был создан под сильным влиянием С и Simula. C++ - это в значительной степени надстройка над С. В определенном смысле можно назвать C++ улучшенным С, тем С, который обеспечивает контроль типов, перегрузку функций и ряд других удобств. Но главное в том, что C++ добавляет к С объектную ориентированность.
C++ исправил многие
недостатки С и ввел описания
классов, контроль типов,
Таблица 3.
Характеристики C++
Абстракции |
Переменные экземпляра Методы экземпляра Переменные класса Методы класса |
Да Да Да Да |
Инкапсуляция |
Переменных
Методов |
Открытые, защищенные, закрытые Открытые, защищенные, закрытые |
Модульность |
Разновидности модулей |
файл |
Иерархии |
Наследование Шаблоны Метаклассы |
Множественное Да Нет |
Типизация |
Сильная типизация Полиморфизм |
Да Да (одиночный) |
Параллельность |
Многозадачность |
Непрямая (посредством классов) |
Сохраняемость |
Долгоживущие объекты |
Нет |
Существуют буквально десятки диалектов языка Lisp, включая MacLisp, Standard Lisp, SpiceLisp, S-1 Lisp, ZetaLisp, Nil, InterLisp и Scheme. В начале 80-х годов под воздействием идей объектно-ориентированного программирования возникла серия новых диалектов Lisp, многие из которых были ориентированы на представление знаний. Успех в стандартизации Common Lisp стимулировал попытки стандартизировать объектно-ориентированные диалекты в 1986 году.
Серьезное влияние на проект CLOS оказали языки NewFlavors и CommonLoops. После двухлетней работы, в 1988 году была опубликована полная спецификация CLOS.
В проекте CLOS ставились три основные цели. CLOS должен:
Не поддерживая
Таблица 4.
Характеристики языка CLOS
Абстракции |
Переменные экземпляра Методы экземпляра Переменные класса Методы класса |
Да Да Да Да |
Инкапсуляция |
Переменных Методов |
Чтение, запись, доступ Открытые |
Модульность |
Разновидности модулей |
Пакет |
Иерархии |
Наследование Шаблоны Метаклассы |
Множественное Нет Да |
Типизация |
Сильная типизация Полиморфизм |
Возможна Да (множественный) |
Параллельность |
Многозадачность |
Да |
Сохраняемость |
Долгоживущие объекты |
Нет |
Автор Eiffel Бертран Мейер (Bertrand Meyer) создавал не только язык объектно-ориентированного программирование, но и инструмент проектирования программ.
Несмотря на сильное влияние Simula, Eiffel - вполне самостоятельный объектно-ориентированный язык со своей собственной средой разработки.
Eiffel поддерживает динамическое связывание и статическую типизацию, тем самым обеспечивая гибкость интерфейсов классов в сочетании с безопасным использованием типов. В Eiffel есть несколько важных черт, поддерживающих более жесткий стиль программирования, в том числе параметризованные классы, утверждения и исключения. Мейер считает, что обобщенные классы хорошо дополняют наследование, учитывая горизонтальный уровень общности; новые классы на одном уровне иерархии можно создавать, используя тип в качестве параметра, а не плодя практически одинаковые подклассы.
Неотъемлемой частью языка являются пред- и постусловия, то есть утверждения, которые должны выполняться при входе в метод и выходе из него. Нарушение утверждения вызывает исключительную ситуацию. Ее можно перехватить, обработать и попробовать вызвать тот же метод еще раз.
Eiffel поощряет хорошее программирование, добротную спецификацию классов, сильную типизацию и повторное использование, как через наследование, так и через параметризацию. Формальная трактовка исключительных ситуаций позволяет жестко специфицировать интерфейсы классов при реализации.
Eiffel предоставляет законченную
среду разработки программ, включая
специальный редактор с
Таблица 5.
Характеристики языка Eiffel
Абстракции |
Переменные экземпляра Методы экземпляра Переменные класса Методы класса |
Да Да Нет Нет |
Инкапсуляция |
Переменных Методов |
Закрытые Открытые, закрытые |
Модульность |
Разновидности модулей |
Блок (unit) |
Иерархии |
Наследование Шаблоны Метаклассы |
Множественное Да Нет |
Типизация |
Сильная типизация Полиморфизм |
Да Да |
Параллельность |
Многозадачность |
Нет |
Сохраняемость |
Долгоживущие объекты |
Нет |
Размещено
Использование объектно-ориентированной
методологии не ограничено каким-либо
одним языком программирования - она
применима к широкому спектру
объектных и объектно-
В настоящее время насчитывается более двух тысяч языков программирования высокого уровня. Большинство этих языков возникло исходя из конкретных требований некоторой предметной области. Каждый новый язык позволял переходить ко все более и более сложным задачам. На каждом новом приложении разработчики языков что-то открывали для себя и изменяли свои представления о существенном и несущественном в языке. На развитие языков программирования значительное влияние оказали достижения теории вычислении, которые привели к формальному пониманию семантики операторов, модулей, абстрактных типов данных и процедур.
Самые последние достижения в области развития языков программирования связаны с объектной моделью. К настоящему времени насчитывается более сотни различных объектных и объектно-ориентированных языков. Объектными принято называть языки, которые поддерживают абстракции данных и классы; объектно-ориентированными являются те объектные языки, которые поддерживают наследование и полиморфизм.
Объектно-ориентированное программирование является в настоящее время основой всей индустрии прикладного программирования благодаря выигрышу в конкурентной борьбе с альтернативными технологиями программирования. В промышленном программировании только в системном программировании позиции объектно-ориентированного программирования еще не очень сильны. Поэтому, с одной стороны, теоретические рассуждения о непригодности объектно-ориентированного программирования не соответствуют наблюдаемой на практике ситуации. С другой стороны, нельзя считать, что объектно-ориентированное программирование во всех случаях является наилучшей из методик программирования.
Процедурное программирование лучше подходит для случаев, когда важны быстродействие и потребляемые ресурсы, объектное - когда важна управляемость проекта и его модифицируемость, а также безопасность программ. Процедурное программирование обычно лучше подходит для небольших проектов, объектное - для больших.
Информация о работе Объектно-ориентированные языки программирования