Файл: Применение объектно-ориентированного подхода при проектировании информационной системы (Объектно-ориентированное проектирование).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 12.03.2024

Просмотров: 35

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

1.3 Объектная модель

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

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

Что же представляет собой объектно-ориентированное программирование?

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

В данном определении можно выделить три части:

- ООП использует в качестве базовых элементов объекты, а не алгоритмы.

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

- классы организованы иерархически. Программа будет объектно-ориентированной только при соблюдении всех трех указанных требований. В частности, программирование, не основанное на иерархических отношениях, не относится к ООП, а называется программированием на основе абстрактных типов данных[18].

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


Язык программирования является объектно-ориентированным тогда и только тогда, когда выполняются следующие условия:

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

- Объекты относятся к соответствующим классам.

- Классы могут наследовать атрибуты суперклассов.

Поддержка наследования в таких языках означает возможность установления отношения «is-a», например, красная роза - это цветок, а цветок - это растение[19]. Языки, не имеющие таких механизмов, нельзя отнести к объектно-ориентированным. В принципе, такие языки можно назвать объектными, но не объектно-ориентированными. Согласно этому определению объектно-ориентированными языками являются Smalltalk, Object Pascal, C++ и CLOS, a Ada - объектный язык. Но, поскольку объекты и классы являются элементами обеих групп языков, желательно использовать и в тех, и в других методы объектно-ориентированного проектирования.

2. Объектно-ориентированное проектирование

2.1 Классы и объекты

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

Если брать точку зрения восприятия, то у человека объектом может быть как осязаемый или видимый предмет, что-то, воспринимаемое мышлением или нечто, на что направлена мысль или действие.

Из этого следует, что можно расширить неформальное определение объекта какой-то новой идеей: существование в пространстве и времени определяется тем, что объект моделирует некоторую часть окружающей действительности. В языке программирования Simulа был впервые введен термин «объект» в программном обеспечении, так что он применялся для моделирования реальности[20].


Типы объектов, которые вызывают интерес при проектировании программных систем, не исчерпываются объектами реального мира. На этапе проектирования можно ввести другие безусловно важные типы объектов, взаимодействие их друг с другом должно служить механизмом отображения поведения более высокого уровня. Исходя из этого, мы можем дать более конкретное определение. Объект - это конкретный опознаваемый предмет, сущность или единица (абстрактная или реальная), который должен иметь четко определенное функциональное назначение в конкретной предметной области. Если брать в расчет более общий план, то объект может быть определен как нечто, что имеет четко очерченные границы[21].

В качестве примера, можно привести завод, который занят производством композитных материалов для различных изделий, таких как, например, автомобильные колеса или же корпуса. Заводы, как правило, разделяются на цеха: химический, электрический, механический и прочее. Цеха же должны подразделяться на участки, в каждом установлено некоторое число единиц нужного для производства оборудования: станки, прессы, штампы. На производственных линиях можно увидеть множество емкостей с исходными материалами, из которых с помощью химических процессов создаются блоки композитных материалов. После из них производится конечный продукт - колеса или корпуса. Мы можем рассматривать каждый осязаемый предмет как объект. Любой станок имеет весьма четко очерченные границы, которые должны отделять его от производимого на этом же станке композитного блока, автомобильное колесо в свою очередь так же имеет свою четкую границу по отношению к оборудованию на участке.

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

Рассмотрим систему пространственного проектирования CAD/CAM. Два тела, например, сфера и куб, имеют как правило нерегулярное пересечение. Хотя эта линия пересечения не существует отдельно от сферы и куба, она все же является самостоятельным объектом с четко определенными концептуальными границами[22].


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

Важно не забывать, что объект - это нечто, имеющее четко определенные границы, но этого недостаточно, чтобы отделить один объект от другого или дать оценку качества абстракции. На основе имеющегося опыта можно сказать, что объекты имеют определенные свойства. Объект обладает состоянием, поведением и идентичностью, структура и поведение схожих объектов определяет общий для них класс, термины «экземпляр класса» и «объект» взаимозаменяемы[23]. Состояние объекта характеризуется перечнем статистических всех свойств данного объекта и текущими динамическими значениями каждого из этих свойств.

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

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


Так же одной из важных характеристик объекта является поведение. Поведение это то, как объект действует и реагирует. Поведение выражается в терминах состояния объекта и передачи сообщений. Если выражаться иначе, поведение объекта это его наблюдаемая и проверяемая извне деятельность. Операцией называется определенное воздействие одного объекта на другой с целью вызвать соответствующую реакцию. Например, клиент может активизировать операции append и pop для того, чтобы управлять объектом-очередью, а именно добавить или изъять элемент. Существует также операция length, которая позволяет определить размер очереди, но не может изменить это значение. В чисто объектно-ориентированном языке, таком как Smalltalk, принято говорить о передаче сообщений между объектами. В языках типа C++, в которых четче ощущается процедурное прошлое, мы говорим, что один объект вызывает функцию-член другого. В основном понятие сообщение совпадает с понятием операции над объектами, хотя механизм передачи различен. Для наших целей эти два термина могут использоваться как синонимы.

В объектно-ориентированных языках операции, выполняемые над данным объектом, называются методами и входят в определение класса объекта. В C++ они называются функциями-членами. Можно использовать эти термины как синонимы[24].

Одной из частей уравнения, задающего поведение, является передача сообщений. Из данного определения следует, что состояние объекта также влияет на его поведение. Рассмотрим торговый автомат. Мы можем сделать выбор, но поведение автомата будет зависеть от его состояния. Если мы не опустили в него достаточную сумму, скорее всего ничего не произойдет. Если же денег достаточно, автомат выдаст нам желаемое , тем самым изменит свое текущее состояние. Итак, поведение объекта определяется выполняемыми над ним операциями и его состоянием, причем некоторые операции имеют побочное действие, а именно они изменяют его состояние. Концепция побочного действия позволяет уточнить наше определение состояния. Состояние объекта представляет суммарный результат его поведения.

Наиболее интересны те объекты, состояние которых не статично, их состояние изменяется и запрашивается операциями.

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