Автор работы: Пользователь скрыл имя, 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
Информационные технологии занимают все более значимую роль в человеческом обществе. Они проникли во все сферы деятельности. Для обслуживания общественных потребностей в автоматизации труда, хранения данных, связи и др. развиваются языки программирования. Если раньше языки программирования использовались лишь для создания программ для автоматизации вычислительных процессов, то на сегодняшний день они используются для решения более разнообразных задач.
Изучение истории языков программирования, их разнообразия и особенностей позволяет программисту сделать правильный выбор при выборе языка для решения определенной задачи.
Все многообразие языков программирования делят на различные классы в зависимости от решаемых ими задач. Было замечено, что в процессе развития языки программирования, входящие в один класс, сближаются между собой. Хотя само разнообразие классов увеличивается, т.к. увеличивается сфера задач, решаемых с помощью компьютерных технологий.
В настоящее время языки программирования применяются в самых различных областях человеческой деятельности, таких как:
С течением времени одни языки развивались, приобретали новые черты и остались востребованы, другие утратили свою актуальность и сегодня представляют в лучшем случае чисто теоретический интерес. В значительной степени это связано с такими факторами, как:
Объектно-ориентированное программирование представляет собой метод программирования, который весьма близко напоминает наше поведение. Оно является естественной эволюцией более ранних нововведений в разработке языков программирования. Объектно-ориентированное программирование является более структурным, чем все предыдущие разработки, касающиеся структурного программирования. Оно также является более модульным и более абстрактным, чем предыдущие попытки абстрагирования данных и переноса деталей программирования на внутренний уровень.
Использование объектно-ориентированного программирования является хорошим решением при разработке крупных программных проектов. Чем проект объемнее и сложнее, тем больше выгоды вы получите при использовании объектно-ориентированной технологии программирования.
Мы живем в мире объектов. Стол, автомобиль, ручка, классная доска – все это объекты. Наряду с физическими существуют так же абстрактные объекты, типичными представителями которых являются числа. Таким образом, объект – это любая физическая или абстрактная четко идентифицируемая сущность1. Объект – это общефилософское понятие, которое изучалось философами на протяжении длительного времени.
Объекты характеризуются атрибутами. Так атрибутами автомобиля являются максимальная скорость, мощность двигателя, цвет кузова и т. д. Атрибутами усилителя являются частотный диапазон, выходная мощность, коэффициент нелинейных искажений, уровень шума и т. д.
Помимо атрибутов объекты
обладают некоторыми функциональными
возможностями, которые в объектно-
Таким образом, объект инкапсулирует атрибуты и методы, скрывая от других объектов взаимодействующих с ним и использующих его функциональность, свою реализацию. Так для того чтобы переключить телевизионную программу нам достаточно на пульте дистанционного управления набрать ее номер, что запустит сложный механизм, который в итоге и приведет к желаемому результату. Нам совершенно не обязательно знать, что происходит в пульте дистанционного управления и телевизоре, нам лишь достаточно знать, что телевизор обладает такой возможностью (методом) и как ее можно активировать. Инкапсуляция или сокрытие реализации является базовым свойством ООП. Она позволяет создавать пользовательские объекты, обладающие требуемыми методами и далее оперировать ими, не вдаваясь в устройство этих объектов.
Объект – это экземпляр некоторого класса объектов или просто класса. Так автомобиль Audi 6 является экземпляром класса автомобилей данной модели, приемник Sony SW-7600G так же будет представителем класса одноименных приемников. Таким образом, класс – это абстрактное понятие. Отношение класса и объекта примерно такое же, как платоновские идеи и объекты реального мира. На UML – унифицированном языке моделирования – класс отображается в виде прямоугольника, разделенного на три части. В первой содержится имя класса, во второй – атрибуты, в третьей – методы (рис. 1, а).
Рис. 1. Изображения класса и отношений генерализации в UML: а – изображение класса; б – одиночное наследование; с – множественное наследование
Классы могут быть
связаны друг с другом различными
отношениями. Одним из основных таких
отношений является отношение класс
– подкласс, известный в объектно-ориентиро
При наследовании все атрибуты и методы родительского класса наследуются классом-потомком. Наследование может быть многоуровневым, и тогда классы, находящиеся на нижних уровнях иерархии, унаследуют все свойства (атрибуты и методы) всех классов, прямыми или косвенными потомками которых они являются. Класс B унаследует атрибуты и методы класса A и, следовательно, будет обладать атрибутами A, B, C и D и методами A, B, C и D, а класс C – атрибутами A, B, C, E, F и методами A, B и E.
Помимо единичного, существует
и множественное наследование, когда
класс наследует сразу
При наследовании одни методы класса могут замещаться другими. Так, класс транспортных средств будет обладать обобщенным методом движения. В классах-потомках этот метод будет конкретизирован: автомобиль будет ездить, самолет – летать, корабль – плавать. Такое изменение семантики метода называется полиморфизмом. Полиморфизм – это выполнение методом с одним и тем же именем различных действий в зависимости от контекста, в частности, от принадлежности тому или другому классу. В разных языках программирования полиморфизм реализуется различными способами. Например, в C++ он реализован с помощью механизма виртуальных функций.
Другим основным видом отношений между классами и объектами является агрегация. Она означает, что один класс содержит в себе в качестве агрегатов (составных частей, подсистем) другие классы. Так автомобиль состоит из кузова, двигателя, трансмиссии и т.п., а в состав приемопередающего устройства входят передатчик, приемник и антенно-фидерное устройство. В UML агрегации обозначаются в виде линии с закрашенным ромбом на конце. Агрегация имеет кратность. Так автомобиль обычно содержит один двигатель, который в свою очередь может принадлежать только одному автомобилю. Автомобиль может обычно содержать от двух до пяти дверей. В свою очередь каждая дверь может принадлежать лишь одному автомобилю.
Чтобы обратиться к атрибутам и методам агрегата, необходимо сначала получить указатель на его владельца, а затем уже выбрать требуемые атрибуты и методы.
Пусть объект D имеет методы f1() и f2() (рис. 2). Чтобы воспользоваться ими, надо сначала получить указатель на корневой объект А, затем на объект С, что в объектно-ориентированном программировании обычно записывается следующим образом:
A.C
Далее получаем указатель на D, так как он является агрегатом C, и, наконец, вызываем требуемые методы f1() и f2():
A.C.D.f1()
A.C.D.f2()
Рис. 2. Иерархическое
представление вложенных
Композиция является еще одним отношением, родственным агрегации. Но если в агрегации агрегаты принадлежат классу или объекту, то в композиции существует более слабая связь. Так, студенты с вузом находятся в отношении композиции, тогда как факультеты, которые входят в состав вуза (т. е. являются его неотъемлемой частью или агрегатами), связаны с ним отношением агрегации. На UML композиция обозначается с помощью незакрашенных ромбов. Как и в случае агрегации, отношение композиции имеет кратность. Агрегация и композиция являются подклассами класса отношений ассоциации. Ассоциация обозначается в виде линии без стрелок и ромбиков и может принимать вид как агрегации, так и композиции. На ранних этапах объектно-ориентированного анализа и проектирования часто задаются отношения ассоциаций, а свою конкретизацию в виде агрегаций и композиций они получают на более поздних этапах.
Существует заблуждение,
что объектно-ориентированное
После того, как были изучены основы ООП, следует дать классификацию языков программирования по степени поддержки данной технологии. Существует 3 класса языков, так или иначе связанных с объектами:
Объектно-ориентированные языки в полной мере поддерживают парадигму ООП, а именно, инкапсуляцию, наследование и полиморфизм. Типичными представителями таких языков являются C++, Java, C#.
К объектным языкам относят языки как минимум поддерживающие инкапсуляцию. Они позволяют создавать пользовательские объекты, но, обычно не поддерживают наследование или полиморфизм, или же поддерживают, но не в полной мере. Типичными представителем объектных языков являются Visual Basic до шестой версии включительно и Ada.
К объектно-базированным языкам программирования относятся языки, которые могут использовать имеющиеся объекты, но не имеющие механизма создания полноценных пользовательских объектов. JavaScript относится именно к объектно-базированным языкам программирования. Так, с помощью этого языка можно использовать многочисленные объекты объектной модели документа (DOM), с помощью которых, согласно последним стандартам, предписывается представлять содержимое веб-страницы.
Инкапсуляция, наследование
и полиморфизм —
Язык Smalltalk был разработан командой Xerox Palo Alto Research Center Learning Research Group (Xerox, Пало Альто, Исследовательский центр, группа исследования обучения), как программная часть Dynabook - фантастического проекта Алана Кея (Alan Kay). В основу были положены идеи Simula, хотя известное влияние оказали также язык FLEX и работы Сеймора Паперта (Seymore Papert) и Валласа Феурзейга (Wallace Feurzeig). Smalltalk является одновременно и языком программирования, и средой разработки программ. Это - чисто объектно-ориентированный язык, в котором абсолютно все рассматривается как объекты; даже целые числа - это классы. Вслед за Simula, Smalltalk является важнейшим объектно-ориентированным языком, поскольку он не только оказал влияние на последующие поколения языков программирования, но и заложил основы современного графического интерфейса пользователя, на которых непосредственно базируются интерфейсы Macintosh, Windows и Motif.
Информация о работе Объектно-ориентированные языки программирования