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

Автор: Пользователь скрыл имя, 25 Февраля 2011 в 11:30, курсовая работа

Описание работы

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

Содержание

I.ВВЕДЕНИЕ 3
II. ОБЪЕКТНО-ОРИЕНТИРОВАННАЯ МЕТОДОЛОГИЯ ПРОГРАММИРОВАНИЯ 6
III. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ ПРОГРАММИРОВАНИЯ 12
SMALLTALK 12
C++ 14
COMMON LISP OBJECT SYSTEM (CLOS) 15
ADA 16
EIFFEL 17
JAVA 18
OBJECT PASCAL 18
СИСТЕМА ВИЗУАЛЬНОГО ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОЕКТИРОВАНИЯ DELPHI. 19
IV.ЗАКЛЮЧЕНИЕ 24
ЛИТЕРАТУРА И ССЫЛКИ 26
ПРИЛОЖЕНИЕ 27

Работа содержит 1 файл

курсовая.doc

— 1.09 Мб (Скачать)

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

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

Абстрагирование.

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

Ограничение доступа.

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

Модульность.

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

Существование иерархий.

    Ранжирование, упорядочивание по некоторым правилам объектов системы.  

Объектно-ориентированная методология (ООМ) состоит из следующих частей:

  • объектно-ориентированный анализ (OOA),
  • объектно-ориентированное проектирование (OOD),
  • объектно-ориентированное программирование (OOР).

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

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

    Инкапсуляция.

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

             Инкапсуляция позволяет во многом изолировать класс от остальных частей программы, сделать его «самодостаточным» для решения конкретной задачи. В результате класс всегда несет в себе некоторую функциональность. Например, класс TForm в Delphi содержит (инкапсулирует в себе) все необходимое для создания Windows-окна, класс TTimer обеспечивает работу таймера и т.д.

              Единицей инкапсуляции в OOD является  объект. 

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

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

    TChildClass = class(TParentClass) (язык Object Pascal)

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

             Принцип наследования приводит  к созданию постоянно разрастающегося  ветвящегося дерева классов. Каждый  потомок дополняет возможности своего родителя новыми и передает их своим потомкам. 

    Полиморфизм – это свойство родственных классов решать схожие по смыслу проблемы разными способами. Для различных родственных классов можно задать единый образ действия (например, вывод на экран любой геометрической фигуры). Затем для каждого конкретного класса составляется своя подпрограмма, выполняющая это действие непосредственно для него (отображение точки отличается от отображения линии и т.д.), причем все эти подпрограммы должны иметь одно имя. Когда потребуется отобразить конкретную фигуру, будет выбрана из всего множества одноименных подпрограмм та, которая соответствует типу конкретного объекта. Если выводимый объект является точкой, то выбирается его подпрограмма, если линия – то ее.

             Таким образом, полиморфизм проводит  идею «один интерфейс – множество  методов». Выбор конкретного действия  зависит от ситуации.

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

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

Язык программирования называется объектно-ориентированным, если

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

Последний принцип  отличает чистые объектно-ориентированные  языки такие как Smalltalk, Actor, от гибридных языков программирования, выросших из ранее существовавших процедурных языков (Object Pascal, C++). Эти подходы - как бы крайности в семействе объектно-ориентированных языков. Ближе к середине лежит совершенно новый, полностью построенный на принципах объектно-ориентированной идеологии, но все же нарушающий последний принцип, язык Java.  
 

 

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

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

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

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

Обзор некоторых  современных объектно-ориентированных  языков приводится ниже.

Smalltalk

Язык Smalltalk был  разработан командой Xerox Palo Alto Research Center Learning Research Group как программная часть Dynabook - фантастического проекта Алана Кея. В основу были положены идеи Simula.. Smalltalk является одновременно и языком программирования, и средой разработки программ. Это чисто объектно-ориентированный язык, в котором абсолютно все рассматривается как объекты; даже целые числа - это классы. Вслед за Simula, Smalltalk является важнейшим объектно-ориентированным языком, поскольку он не только оказал влияние на последующие поколения языков программирования, но и заложил основы современного графического интерфейса пользователя, на которых непосредственно базируются интерфейсы Macintosh, Windows и Motif.  

Известны пять выпусков языка Smalltalk, обозначаемых по году их появления:

Smalltalk-72, -74. -76, -78, -80. Реализации 1972 и 1974 годов заложили  основу языка, в частности идею  передачи сообщений и полиморфизм, хотя механизм наследования еще не появился. В последующих версиях полноправное гражданство получили классы; этим достигла завершения точка зрения, что все состоит из объектов. Smalltalk-80 был перенесен на многие компьютерные платформы.  

В основу языка  положены две простые идеи:  

  • все является объектами;  
  • объекты взаимодействуют, обмениваясь сообщениями.
 

В табл.1 приведены характеристики языка Smalltalk с точки зрения семи основных элементов объектного подхода.   

Абстракции Переменные экземпляра  
Методы экземпляра  
Переменные класса  
Методы класса
Да  
Да  
Да  
Да
Инкапсуляция Переменных  
Методов
Закрытые  
Открытые
Модульность Разновидности модулей Нет
Иерархии Наследование  
Шаблоны  
Метаклассы
Одиночное  
Нет  
Да
Типизация Сильная типизация  
Полиморфизм
Нет  
Да (одиночный)
Параллельность Многозадачность Непрямая (посредством классов)
Сохраняемость Долгоживущие  объекты Нет

Таблица 1. Smalltalk. [1]

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

C++

Язык программирования C++ был разработан Бьерном Страуструпом, сотрудником AT&T Bell Laboratories. Непосредственным предшественником C++ является С with Classes, созданный тем же автором в 1980 году. Язык С with Classes, в свою очередь, был создан под сильным влиянием С и Simula. C++ - это в значительной степени надстройка над С. В определенном смысле можно назвать C++ улучшенным С, тем С, который обеспечивает контроль типов, перегрузку функций и ряд других удобств. Но главное в том, что C++ добавляет к С объектную ориентированность.

Известны несколько  версий C++. В версии 1.0 реализованы  основные механизмы объектно-ориентированного программирования, такие как одиночное наследование и полиморфизм, проверка типов и перегрузка функций. В созданной в 1989 году версии 2.0 нашли отражение многие дополнительные свойства, возникшие на базе широкого опыта применения языка многочисленным сообществом пользователей. В версии 3.0 (1990) появились шаблоны и обработка исключений. C++ продолжает совершенствоваться и в настоящее время, так в 1998 году вышла новая версия стандарта, содержащая в себе некоторые довольно существенные изменения. Язык стал основой для разработки современных больших и сложных проектов. 

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