Добавлен: 26.05.2023
Просмотров: 190
Скачиваний: 2
Глава 2. Анализ и описание структуры сущности
Целью данной работы была выбрана Бензозаправка.
Для начала произведём анализ структуры данного объекта и выделим наиболее значимые его части.
Бензозаправку можно поделить на 2 обобщенных части, это саму «заправку» и «магазин». [10]
Поскольку мы не собираемся слишком сильно дробить объекты входящие в нее будем описывать лишь обощенные объекты.
На «заправке» находятся колонки с помощью которых производится заправка, работник осуществляющий её. Также к «заправке» можно отнести хранилище горючего из которого топливо поступает в бензоколонку. Поэтому мы разделим «заправку» на 3 объекта: бензоколонка, заправщик и бензохранилище.
«Магазин» также является совокупностью нескольких объектов. В «магазине» можно выделить «кассу» она выполняет функцию триггера в оказании услуг, работника который выполняет различные обязанности внутри помещения, торговое помещение область отведённая под магазин и склад от наличия товаров в котором зависит работа торгового помещения.
Также можно выделить клиента в качестве отдельного объекта хоть он и не является частью объекта поскольку он является ключевой фигурой в работе бензозаправке. Клиент взаимодействует с «заправкой» и «магазином».
Попробуем представить её с помощью объектно-ориентированного программирования(ООП).
В ООП главным элементом является класс, включающий множество объектов с одинаковыми свойствами, операциями и отношениями. Поэтому представим заправку как совокупность некоторых классов связанных между собой.[11]
На заправке можно выделить такие основные классы как:
- Класс « Заправка» в нем содержится несколько вложенных классов:
-
-
- Класс «Заправщик» человек производящий работу на заправке.
- Класс «Бензоколонка» аппарат с помощью которого класс «Заправщик» заправляет автомобиль по сигналу от класса «Касса».
- Класс «Бензохранилище» цисцерна в которой хранится бензин и из которой он поступает в бензоколонку.
-
-
- Класс «Магазин» в нем содержатся несколько вложенных классов таких как :
-
-
- Класс «Касса» через него проходят все денежные операции касающиеся предоставляемых услуг.
- Класс «Работник» это человек работающий в магазине.
- Класс «Торговое помещение» небольшое помещение продающее небольшой ассортимент товаров.
- Класс «Склад» помещение использующееся для хранения товаров и предметов.
-
-
- Класс «Клиент» это человек который пришел на бензозаправку для приобретения определённых услуг
Глава 3. Построение диаграммы классов
После определения классов составим из них диаграмму классов.
Нам нужно рассмотреть каждый класс по отдельности и выяснить его возможные связи с другими классами.
Но для начала дадим определение различным видам связей классов.
Зависимость
Зависимость обозначает такое отношение между классами, что изменение спецификации класса-поставщика может повлиять на работу зависимого класса, но не наоборот.
Ассоциация
Ассоциация показывает, что объекты одной сущности (класса) связаны с объектами другой сущности таким образом, что можно перемещаться от объектов одного класса к другому. Является общим случаем композиции и агрегации.[12]
Например, класс Человек и класс Школа имеют ассоциацию, так как человек может учиться в школе. Ассоциации можно присвоить имя «учится в».
Двойные ассоциации представляются линией без стрелочек на концах, соединяющей два классовых блока. Ассоциации более высокой степени имеют более двух концов и представляются линиями, один конец которых идёт к классовому блоку, а другой к общему ромбику. В представлении однонаправленной ассоциации добавляется стрелка, указывающая на направление ассоциации.
Ассоциация может быть именованной, и тогда на концах представляющей её линии будут подписаны роли, принадлежности, индикаторы, мультипликаторы, видимости или другие свойства.
Агрегация
Диаграмма классов, показывающая Агрегацию между двумя классами
Агрегация — это разновидность ассоциации при отношении между целым и его частями. Как тип ассоциации агрегация может быть именованной. Одно отношение агрегации не может включать более двух классов (контейнер и содержимое).[13]
Агрегация встречается, когда один класс является коллекцией или контейнером других. Причём по умолчанию, агрегацией называют агрегацию по ссылке, то есть когда время существования содержащихся классов не зависит от времени существования содержащего их класса. Если контейнер будет уничтожен, то его содержимое — нет.
Графически агрегация представляется пустым ромбом на блоке класса, и линией, идущей от этого ромба к содержащемуся классу.
Композиция
Композиция — более строгий вариант агрегации. Известна также как агрегация по значению.
Композиция имеет жёсткую зависимость времени существования экземпляров класса контейнера и экземпляров содержащихся классов. Если контейнер будет уничтожен, то всё его содержимое будет также уничтожено.
Графически представляется как и агрегация, но с закрашенным ромбиком.
Различия между композицией и агрегацией
Приведём наглядный пример. Комната является частью квартиры, следовательно здесь подходит композиция, потому что комната без квартиры существовать не может. А, например, мебель не является неотъемлемой частью квартиры, но в то же время, квартира содержит мебель, поэтому следует использовать агрегацию.[14]
Рис 1. Обозначение связей на диаграмме классов.[15]
Приступим к описанию возможных связей классов друг с другом.
Класс «Магазин» имеет несколько классов являющихся его частью это: «Касса», «Склад», «Работник», «Торговое помещение». Соответственно все эти классы имеют связи Композиция по отношению к классу «Магазин».
Тот же тип связи имеют и классы «Заправщик», «Бензоколнка», «Бензохранилище» к классу «Заправка» поскольку они также являются частью класса «Заправка».
Класс «Клиент» имеет связь Ассоциация с классами «Магазин» и «Заправка» поскольку он будет передвигаться и взаимодействовать с различными классами входящими в них.
Класс «Работник» имеет связь Ассоциация с классами «Касса», «Склад», «Торговое помещение», поскольку работник будет перемещаться и взаимодействовать с любым из них в процессе работы. Например принять оплату за услугу или учет товара на складе и т.д.
Класс «Торговое помещение» имеет связь Зависимость с классом «Склад» поскольку если товары на складе закончатся, то класс не сможет функционировать, поскольку торговать будет нечем.
Класс «Заправщик» имеет связь Зависимость с классом «Касса» поскольку только после оплаты денег на кассе заправщик приступит к работе с классом «Бензоколонка». Также у него имеется связь Ассоциация с классами «Бензоколонка» и «Бензохранилище» поскольку он будет передвигаться и работать с этими двумя классами. Например заправка автомобиля или закачка бензина в хранилище.
Класс «Бензоколонка» имеет связь Зависимость с классом «Бензохранилище» поскольку если в хранилище закончится горючее то он не сможет функционировать.
Рис 2. Диаграмма классов Бензозаправки
Заключение
В ходе работы мы использовали полученные навыки и знания в сфере объектно-ориентированного программирования. Выделили в бензозаправке совокупности объектов и представили их в виде классов. Далее установили связи между ними и исходя из этого составили диаграмму классов.
Построение диаграммы классов позволяет наглядно изобразить программу, организацию или процесс в виде схемы классов и их взаимосвязей. Благодаря этому можно быстро разобраться в алгоритме, функциях и назначении тех или иных объектов сущности, что способствует экономии времени и ресурсов. Этот способ широко используется в программировании, бизнесе и организации процессов.
Список литературы
1. Бадд, Т. Объектно-ориентированное программирование в действии / Т. Бадд. - СПб.: Питер, 2011.
2. Фридман, А.Л. Основы объектно-ориентированной разработки программных систем / А.Л. Фридман. - М.: Финансы и статистика, 2010
3. Буч, Г. Объектно-ориентированный анализ и проектирование с примерами приложений / Г. Буч; пер. с англ. И. Романовский, Ф. Андреев. - М.: Бином, 2012.
4. Себеста, Р.У. Основные концепции объектно-ориентированного программирования / Р.У. Себеста. - 5-е изд. - М.: Издательский дом «Вильямс», 2011.
5. Вайсфельд М. Объектно-ориентированное мышление. — СПб.: Питер, 2014. — (Серия «Библиотека программиста»).
6. Почувствуй класс / Мейер Б.; пер. с англ. под ред. В.А. Биллига.—М.: Национальный Открытый Университет «ИНТУИТ»: БИНОМ. Лаборатория знаний, 2011.
7. Дж. Кьоу Объектно-ориентированное программирование / Дж. Кьоу, М. Джеанини. - М.: Питер, 2015.
-
Бадд, Т. Объектно-ориентированное программирование в действии / Т. Бадд. - СПб.: Питер, 2011. ↑
-
Фридман, А.Л. Основы объектно-ориентированной разработки программных систем / А.Л. Фридман. - М.: Финансы и статистика, 2010 ↑
-
Фридман, А.Л. Основы объектно-ориентированной разработки программных систем / А.Л. Фридман. - М.: Финансы и статистика, 2010 ↑
-
Фридман, А.Л. Основы объектно-ориентированной разработки программных систем / А.Л. Фридман. - М.: Финансы и статистика, 2010 ↑
-
Почувствуй класс / Мейер Б.; пер. с англ. под ред. В.А. Биллига.—М.: Национальный Открытый Университет «ИНТУИТ»: БИНОМ. Лаборатория знаний, 2011. ↑
-
Дж. Кьоу Объектно-ориентированное программирование / Дж. Кьоу, М. Джеанини. - М.: Питер, 2015. ↑
-
Себеста, Р.У. Основные концепции объектно-ориентированного программирования / Р.У. Себеста. - 5-е изд. - М.: Издательский дом «Вильямс», 2011. ↑
-
Вайсфельд М. Объектно-ориентированное мышление. — СПб.: Питер, 2014. — (Серия «Библиотека программиста»). ↑
-
Буч, Г. Объектно-ориентированный анализ и проектирование с примерами приложений / Г. Буч; пер. с англ. И. Романовский, Ф. Андреев. - М.: Бином, 2012. ↑
-
Вайсфельд М. Объектно-ориентированное мышление. — СПб.: Питер, 2014. — (Серия «Библиотека программиста»). ↑
-
Буч, Г. Объектно-ориентированный анализ и проектирование с примерами приложений / Г. Буч; пер. с англ. И. Романовский, Ф. Андреев. - М.: Бином, 2012. ↑
-
Фридман, А.Л. Основы объектно-ориентированной разработки программных систем / А.Л. Фридман. - М.: Финансы и статистика, 2010 ↑
-
Фридман, А.Л. Основы объектно-ориентированной разработки программных систем / А.Л. Фридман. - М.: Финансы и статистика, 2010 ↑
-
Фридман, А.Л. Основы объектно-ориентированной разработки программных систем / А.Л. Фридман. - М.: Финансы и статистика, 2010 ↑
-
Буч, Г. Объектно-ориентированный анализ и проектирование с примерами приложений / Г. Буч; пер. с англ. И. Романовский, Ф. Андреев. - М.: Бином, 2012. ↑