Объектно – ориентированные языки программирования
Рефераты >> Программирование и компьютеры >> Объектно – ориентированные языки программирования

Модели 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.


Страница: