Читайте также:
|
|
Объектно-ориентированная технология основывается на так называемой объектной модели. Основными ее принципами являются: абстрагирование, инкапсуляция, модульность, иерархичность. Указанные четыре принципа являются главными в том смысле, что без любого из них модель не будет объектно-ориентированной.
Абстрагирование связано с выделением существенных характеристик некоторого объекта, отличающих его от всех других видов объектов. Оно позволяет четко определять концептуальные границы объекта с точки зрения наблюдателя. Абстрагирование фокусирует внимание на внешних особенностях объекта и позволяет отделить самые существенные особенности от несущественных.
Инкапсуляция представляет собой процесс отделения друг от друга элементов объекта, определяющих его устройство и поведение. Она служит для того, чтобы скрыть механизм реализации абстракций. Абстракция и инкапсуляция являются взаимодополняющими в том смысле, что абстрагирование направлено на наблюдаемое поведение объекта, а инкапсуляция занимается его внутренним устройством.
Модульность подразумевает разделение программы на фрагменты, которые компилируются по отдельности, но могут устанавливать связи с другими модулями. Модульность позволяет хранить абстракции раздельно. В программировании модули играют роль физических контейнеров, в которые помещаются определения классов и объектов при логическом проектировании системы. В большинстве языков, поддерживающих принцип модульности как самостоятельную концепцию, интерфейс модуля отделен от его реализации. Так в языке C++ модулями являются раздельно компилируемые файлы, когда интерфейсная часть размещается в отдельных файлах с расширением .h (файлы-заголовки), а реализация модуля хранится в файлах с расширением .c. В языке Object Pascal принцип модульности формализован несколько строже, в частности, в нем определен особый синтаксис для интерфейсной части и реализации модуля.
Говоря о взаимоотношениях принципов абстрагирования, инкапсуляции и модульности следует указать на то, что они являются взаимодополняющими. Объект логически задает границы определенной абстракции, а инкапсуляция и модульность делают их физически незыблемыми.
Принцип иерархичности связан с тем, что значительное упрощение в понимании сложных систем может быть достигнуто за счет образования из абстракций иерархии.
Теперь остановимся на понятиях объектно-ориентированного программирования, проектирования и анализа.
Объектно-ориентированное программирование (object-oriented programming, OOP) – это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
В этом определении следует обратить внимание на следующие три момента:
1) OOP использует в качестве базовых элементов объекты, а не алгоритмы;
2) каждый объект является экземпляром какого-либо определенного класса;
3) классы организованы иерархически.
Программа будет объектно-ориентированной только при соблюдении всех трех указанных требований.
Если программирование, прежде всего, подразумевает правильное и эффективное использование механизмов конкретных языков программирования, то проектирование основное внимание уделяет правильному и эффективному структурированию сложных систем.
Для объектно-ориентированного проектирования (object-oriented design, OOD) можно дать следующее определение: OOD – это методология проектирования, соединяющая в себе процесс объектной декомпозиции и приемы представления логической и физической, а также статической и динамической моделей проектируемой системы.
В этом определении следует обратить внимание на следующие два момента:
1) OOD основывается на объектно-ориентированной декомпозиции;
2) OOD использует многообразие приемов представления моделей, отражающих логическую (классы и объекты) и физическую (модули и процессы) структуру системы, а также ее статические и динамические аспекты.
Именно объектно-ориентированная декомпозиция отличает объектно-ориентированное проектирование от структурного, поскольку в первом случае логическая структура системы отражается абстракциями в виде классов и объектов, а во втором отражается алгоритмами.
Объектно-ориентированный анализ (object-oriented analysis, OOA) направлен на создание моделей реальной действительности на основе объектно-ориентированного подхода.
ООА – это методология, при которой требования к системе воспринимаются с точки зрения классов и объектов, выявленных в предметной области.
Соотношения между ООА, OOD и ООР выглядят следующим образом: на результатах ООА формируются модели, на которых основывается OOD. A OOD в свою очередь создает фундамент для окончательной реализации системы с использованием методологии ООР.
Б. Страуструп писал в своих размышлениях о программировании следующим образом: “В идеале вы разрабатываете программу в три этапа. Сначала вы добиваетесь ясного понимания задачи (анализ), затем определяете ключевые концепции, в терминах которых выражается решение задачи (проектирование), и, наконец, воплощаете решение в программе (программирование). Однако детали проблемы и некоторые аспекты решения часто становятся понятными только в процессе написания программы и при попытках заставить ее работать”.
Классы в С++.
Класс представляет собой определяемый пользователем тип данных, который обычно содержит переменные-члены и функции-члены с определенными разделенными правами доступа. Объект является экземпляром класса. Определение класса производиться с использованием ключевого слова class и по своей структуре совпадает с определением агрегатного типа struct. Однако по умолчанию члены класса определяются с закрытыми (private) правами доступа, а потому обращаться к ним разрешается только внутри класса. Например: (ранее мы использовали struct avto {…}, теперь определим соответствующий класс)
class avto { char name [15];
int cend;
double rashod;};
…
int main()
{…
Дата добавления: 2015-11-14; просмотров: 70 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Роль декомпозиции, абстракции и иерархии при построении сложных систем | | | Член_класса_2 |