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

Автор: Пользователь скрыл имя, 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 Мб (Скачать)

МИНИСТЕРСТВО  ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ 

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

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

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

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

на  тему:  

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

Выполнила:  
   
Принял:  
   

 

СОДЕРЖАНИЕ 
 

 

I.Введение

 

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

    • процедурный,
    • функциональный,
    • логический,
    • объектно-ориентированный.

   1. Процедурное программирование

   Процедурное (императивное) программирование является отражением архитектуры традиционных ЭВМ, которая была предложена фон Нейманом в 40-х годах.

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

Процедурные языки  характеризуются следующими особенностями:

  • необходимостью явного управления памятью, в частности, описанием переменных;
  • малой пригодностью для символьных вычислений;
  • отсутствием строгой математической основы;
  • высокой эффективностью реализации па традиционных ЭВМ.

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

К процедурным языкам относятся: язык Ассемблера, С, Basic, Pascal.

2. Функциональное программирование

Первым таким  языком был LISP.

Роль основной конструкции в функциональных (аппликативных) языках играет выражение. К выражениям относятся скалярные константы, структурированные объекты, функции, тела функций и вызовы функций.

Аппликативный язык программирования включает следующие  элементы:

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

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

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

3. Логическое программирование

Новую область  — логическое, или реляционное  программирование, — открыло появление  языка PROLOG. Этот язык был создан французским ученым А. Кольмероэ в 1973 году. В настоящее время известны и другие языки, однако наиболее развитым и распространенным языком логического программирования является именно Пролог. Языки логического программирования, в особенности Пролог, широко используются в системах искусственного интеллекта.

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

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

4. Объектно-ориентированное  программирование

Прототипом объектно-ориентированного программирования послужил ряд средств, входящих в состав языка SIMULA-67. Но в самостоятельный стиль оно оформилось с появлением языка SMALLTALK, разработанного А. Кеем в 1972 году и первоначально предназначенного для реализации функций машинной графики.

Основная цель ООП, как и большинства других подходов к программированию – повышение  эффективности разработки программ. Идеи ООП оказались плодотворными  и нашли применение не только в  языках программирования, но и в  других областях Computer Science, например, в области разработки операционных систем.

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

 

II. Объектно-ориентированная методология программирования

В последнее  время развитие аппаратных средств  существенно опережало развитие систем и средств программирования. Чтобы выправить положение, в 70-80-х годах были предложены различные подходы к увеличению производительности труда программиста. Среди этих попыток выделяется такое направление, как объектно-ориентированный подход к конструированию и кодированию программ. Особую роль в популярности этого подхода сыграло как его тесная связь с интерфейсами пользователя (особенно графическими), так и включение элементов этого подхода в популярные (на персональных компьютерах фирмы IBM) реализации гибридных языков программирования C++ и Pascal with Objects фирмы Borland.

До сих пор  большинство используемых программных  систем построены на принципах структурного подхода, суть которого состоит в  декомпозиции системы на ряд модулей, процедур, функций и структур данных, связанных общим алгоритмом функционирования. Но распространение мощных персональных компьютеров (сравнимых с рабочими станциями 70-80-х годов) создало в 90-х годах основу для широкого применения объектно-ориентированного подхода на практике. В последнее время более широко начинают использоваться языки программирования, созданные в рамках объектно-ориентированной методологии, такие как Smalltalk и Java.

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

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

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

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

Но как управлять  таким миром объектов, когда их становиться достаточно много? Ведь многие из них будут очень сильно отличаться друг от друга, а другие объекты будут очень похожи друг на друга. Здесь на сцену выходит одна из ключевых концепций объектно-ориентированного программирования - идея группировки объектов в классы, в соответствии с тем как они устроены и действуют. Такая идея впервые была реализована еще в 60-ые годы в языке Simula. Под классом понимается множество объектов, связанных общностью структуры и поведения. Класс можно сравнить с шаблоном, по которому создаются объекты. Именно класс вначале описывает переменные и методы объекта, то есть структуру и поведение объекта, и определяет механизмы создания реально существующего в системе объекта, который, когда создается, представляет собой экземпляр класса.

Наведение с  помощью классов порядка в  мире объектов - большое достижение, но можно пойти дальше, определяя некоторый порядок и среди классов. Достигается это с помощью введения механизма наследования - пожалуй, самого мощного средства в любой объектно-ориентированной системе, поскольку оно позволяет многократно использовать однажды созданный код. Механизм наследования очень прост: один класс, называемый в рамках этих отношений суперклассом, полностью передает другому классу, который называется подклассом, свою структуру и поведение, то есть все свои переменные и все методы. Что далее делать с этим богатством определяет только подкласс: он может добавить в структуру что-то свое, что-то из наследуемого интерфейса он может использовать без изменений, что-то изменить, и, разумеется, может добавить свои собственные методы. То есть класс с помощью подклассов расширяется, и как результат, создаваемые объекты становятся все более и более специализированными. Классы, расположенные по принципу наследования, начиная с самого общего, базового класса, образуют иерархию классов.

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