Файл: Применение объектно-ориентированного подхода при проектировании информационной системы (Понятие объектно-ориентированного подхода ).pdf
Добавлен: 21.05.2023
Просмотров: 199
Скачиваний: 2
СОДЕРЖАНИЕ
2. Понятие объектно-ориентированного подхода
3. Понятие информационной системы
4. Применение объектно-ориентированного подхода при проектировании информационной системы
4.1. Проектирование пользовательского интерфейса
4.2. Проектирование базы данных
4.3. Общее представление проекта информационной системы
5. Примеры программных продуктов для реализации объектно-ориентированного подхода
ВВЕДЕНИЕ
На ранних этапах развития программирования, когда еще программы представляли собой последовательности машинных команд, технологии программирования, известные на данный момент, отсутствовали. По мере увеличения сложности программных продуктов, возникла необходимость в программной инженерии.
До конца 70-х годов прошлого века программирование было уделом отдельных талантливых людей. Из-за несовершенства первых методик программирования даже достаточно короткие программы создавались в течение нескольких месяцев и более.
В начале 80-х годов началось повсеместное внедрение в практику программирования методов проектирования. Например, был введен ГОСТ 19.102—77, обозначающий стадии и этапы разработки программных продуктов. Этот стандарт входит в группу стандартов единой системы программной документации (ЕСПД). Система ЕСПД сыграла значимую положительную роль в практике отечественного программирования и продолжает существовать, пережив без значительных изменений уже несколько новых технологий программирования.
В настоящее время понятие процесса программирования значительно изменились. Производство программ приобрело массовый характер, существенно увеличился их объем и сложность. Разработка программных продуктов теперь требует значительных усилий больших команд специалистов. Программы перестали быть только вычислительными и начали выполнять важнейшие функции по обработке информации в различных отраслях: в науке, экономике, политике и пр.
С увеличением сложности программных продуктов, необходимо было разработать новые подходы к программированию, так как средний человек может одновременно воспринимать в пределах десятка единиц информации. Таким образом, при разработке программного обеспечения требуется минимизировать количество видимых человеку компонент.
В связи с этим, было разработано несколько достаточно эффективных подходов декомпозиции, т.е. разбиения большой задачи на меньшие подзадачи. Сначала начал применяться модульный подход, в котором большие программы разделяются на самостоятельные модули. Далее программы начали писать "сверху вниз", описывая сначала крупные модули и постепенно спускаясь к детализации. Методы, основанные на этих подходах, имеют общую черту: в них данные и код, их обрабатывающий, существуют отдельно друг от друга.
В результате многолетних исследований был разработан и опробован так называемый объектно-ориентированный подход (1967г. - язык Simula67, 1983 г. - язык C++). Одно из основных преимуществ ООП по сравнению с более ранними методами построения программных систем - тесная связь данных и кода работающего с ними.
Вместе с развитием объектно-ориентированного программирования стали развиваться и общие объектно-ориентированные методы разработки ПО и, в частности, информационных систем. ООП является наиболее актуальным и популярным на сегодняшний день.
Данная работа посвящена изучению объектно-ориентированного подхода в области разработки информационных систем.
1. Постановка задачи
Данная работа является теоретическим исследованием на тему применения объектно-ориентированного подхода при проектировании информационной системы.
В ходе данной работы будет показана суть объектно-ориентированного подхода, его достоинства и недостатки, а также приведены примеры программных продуктов, которые могут быть использованы для реализации подхода.
Важно отметить, что объектно-ориентированный подход будет рассмотрен в контексте разработки информационных систем. Поэтому будет изучено и подробно описано также понятие информационной системы.
Задачу изучения объектно-ориентированного подхода при проектировании информационной системы можно разделить на следующие подзадачи:
- Понятие объектно-ориентированного подхода;
- Понятие информационной системы;
- Применение объектно-ориентированного подхода при проектировании информационной системы;
- Примеры программных продуктов для реализации объектно-ориентированного подхода;
Все эти подзадачи будут решены в ходе выполнения работы.
2. Понятие объектно-ориентированного подхода
2.1. Описание
Концепция объектно-ориентированного программирования подразумевает, что вся логика построения программы опирается на работу с объектами. Поэтому объекты определяются изначально совместно с сообщениями, на которые они должны реагировать при выполнении программы. В этом состоит главное отличие ООП от процедурного программирования, где отдельно определённые структуры данных передаются в процедуры или функции в качестве параметров.
Таким образом, программа, написанная согласно объектно-ориентированному подходу, состоит из объектов – отдельных фрагментов кода, обрабатывающего данные, которые взаимодействуют друг с другом через определённые интерфейсы.
Фундаментальной концепцией ООП является понятие классов. Все объекты являются их экземплярами. Именно в классах описывается структура и поведение объектов с помощью полей и методов. Классы могут быть организованы в иерархическую структуру с наследованием свойств. При этом дочерний класс наследует атрибуты родительского класса. Абстрактный родительский класс — это класс, который не имеет экземпляров класса (объектов). Он используется только для порождения дочерних классов.
Базовым в объектно-ориентированном программировании также является понятие объекта. Объект имеет определённые свойства. Состояние объекта задаётся значениями его признаков. Объект также имеет свои действия, то есть располагает методами решения определенных задач. Программа, написанная с использованием ООП, состоит из объектов, которые могут взаимодействовать между собой.
Основная информация об объектах, классах и принципах ООП хорошо описана в учебнике Камаева [1].
Переменные объектного типа называются экземплярами объекта. Следует уточнить, что экземпляр можно лишь формально назвать переменной, но в действительности экземпляр – нечто большее, чем обычная переменная.
В отличие от типа «запись» в процедурном языке программирования, объектный тип содержит не только поля, описывающие данные, но также процедуры и функции, описания которых содержится в описании объекта. Эти процедуры и функции называются методами. Методам объекта доступны его поля.
Во время выполнения программы объекты взаимодействуют друг с другом с помощью вызова методов другого объекта. Для того чтобы объект вызвал метод другого объекта, в большинстве языков программирования необходимо после указания имени этого объекта записать вызов метода по его имени, передав необходимые параметры. Получив вызов, объект-исполнитель начинает выполнять код вызванного метода с полученными значениями аргументов. Таким образом, функционирование программы (выполнение всего алгоритма программы) осуществляется последовательным вызовом методов от одного объекта к другому.
Главные принципы объектно-ориентированного подхода:
- Абстракция;
- Инкапсуляция;
- Наследование;
- Полиморфизм.
2.2. Абстракция
Одним из главных принципов объектно-ориентированного программирования является абстракция. Смысл абстракции заключается в том, что разработчик может рассматривать объект, без необходимости вдаваться в детали и сложную структуру. Через абстракцию человек может управлять сложностью. Перемещаясь по уровням абстракции, можно увеличивать и уменьшать детальность каждого объекта.
Таким образом, абстракция - это процесс сокрытия всего, кроме необходимой на данный момент информации об объекте. Например, нам не нужно знать, как работают часы, чтобы использовать их для определения времени. Абстракция позволяет сосредоточиться на том, что делает объект, а не на том, как он это делает.
Пример уровней абстракции показан на Рисунке 1.
Рисунок 1. Уровни абстракции.
2.3. Инкапсуляция
Еще одним важным принципом ООП является инкапсуляция. Инкапсуляция реализует принципы абстракции, позволяя скрывать детали, которые несущественны для правильного использования объекта. Ранее, в традиционном подходе к программированию, использовали глобальные переменные. При этом не было никакой страховки от ошибок, связанных с использованием процедур, которые не должны менять данные таких переменных.
Внутри объекта поля и метода могут быть закрытыми. Закрытые поля и методы доступны только для других элементов объекта. Таким образом, закрытые данные объекта недоступны для других частей программы, расположенных вне объекта.
Если же поля и методы являются открытыми, то, несмотря на то, что они заданы внутри объекта, они будут доступны для использования из любой части программы. Открытые поля и методы используются для создания контролируемого интерфейса работы с объектом.
Перечислим несколько преимуществ инкапсуляции:
- Сокрытие информации. Когда доступ к данным осуществляется только через методы, можно скрыть детали реализации объекта. Позднее, если реализация изменится, нужно будет изменить только реализацию методов доступа к полям. Те же части программы, которые использовали этот класс, не будут затронуты.
- Надежность данных. С помощью инкапсуляции можно предотвратить изменение элемента данных, выполнив в методе дополнительную проверку значения на корректность. Таким образом можно обеспечить надежное состояние объекта.
- Предусмотренные побочные эффекты. Можно гарантировать, что каждый раз, когда выполняется обращение к полю объекта, синхронно с ним выполняется какое-либо специальное действие.
- Целостность ссылок. Перед доступом к объекту, связанному с данным объектом, можно убедиться, что косвенное поле содержит корректное значение (ссылку на экземпляр).
На Рисунке 2 наглядно показан класс с закрытыми и открытыми данными. Открытые данные представляют собой интерфейс для работы с объектом, а закрытые обеспечивают функционирование открытых методов и предназначены только для внутреннего использования.
Рисунок 2. Инкапсуляция
2.4. Наследование
Наследование – это еще один из основных принципов объектно-ориентированного программирования. С помощью наследования можно определять новые классы, используя свойства старых, дополняя или изменяя их. Дочерний класс получает все поля и методы родительского. К этим полям и методам наследник может добавлять новые, или полностью изменять их. Наследник по-прежнему совместим с объектами родительского класса. Если родительский класс один, то наследование называется простым, а если их несколько – то множественным.
Наследование является механизмом повторного использования кода и способствует расширению программного обеспечения через открытые классы и интерфейсы. Установка отношения наследования между классами порождает иерархию классов.
Таким образом, наследование выполняет в объектно-ориентированном подходе ряд важных функций:
- моделирует концептуальную структуру предметной области;
- позволяет повторно использовать код;
- обеспечивает пошаговое программирование больших систем путем многократной конкретизации классов.
На Рисунке 3 приведен пример наследования.
Рисунок 3. Наследование
2.5. Полиморфизм
Последним основным принципом объектно-ориентированного подхода является полиморфизм. Идея состоит в том, что одно и то же имя может соответствовать разным действиям в зависимости от типа объекта. Решение о том, какая операция должна быть выполнена в конкретной ситуации, принимается во время выполнения программы.
Кратко смысл полиморфизма можно выразить фразой: «один интерфейс, множество реализаций». Возможность определять разную реализацию одному методу называется перегрузкой метода.
Полиморфизм позволяет писать более абстрактные программы и повысить коэффициент повторного использования кода. Общность имеет внешнее и внутреннее выражение: внешняя общность проявляется как одинаковый набор методов с одинаковыми именами и сигнатурами (именем методов и типами аргументов и их количеством); внутренняя общность — одинаковая функциональность методов.
Практический смысл полиморфизма заключается в том, что он позволяет посылать общее сообщение о выполнении какого-либо действия любому родительскому классу, ожидая, что и он, и его дочерние классы ответят на запрос нужным образом, так как все варианты действий определены перегруженными методами.