Научная статья на тему 'Разработка объектно-ориентированной программной модели автосалона'

Разработка объектно-ориентированной программной модели автосалона Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
28
10
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
Объектно-ориентированное программирование / Python / язык UML / классы / объекты / Object-oriented programming / Python / UML language / classes / objects

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Панченко Наталья Борисовна, Бердова Юлия Сергеевна, Овчинникова Светлана Валерьевна

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Development of an object-oriented software model for a car dealership

Object-oriented programming is the most common and well-known paradigm for creating application software solutions. A number of programs require the use of similar objects that interact with each other. Therefore, this paradigm is used in many areas of programmers’ activities. The object-oriented approach is supported by many programming languages, including Python. In the article, using Python, as the simplest and most understandable programming language, an object-oriented approach to the formation of a car dealership model is considered

Текст научной работы на тему «Разработка объектно-ориентированной программной модели автосалона»

Разработка объектно-ориентированной программной модели автосалона

fO

сч о сч

о ш m

X

<

m О X X

Панченко Наталья Борисовна

кафедра математики и прикладных информационных технологий Высшая школа цифровых технологий Тюменский индустриальный университет

Бердова Юлия Сергеевна

кафедра математики и прикладных информационных технологий Высшая школа цифровых технологий Тюменский индустриальный университет

Овчинникова Светлана Валерьевна

кафедра математики и прикладных информационных технологий Высшая школа цифровых технологий Тюменский индустриальный университет

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

Ключевые слова. Объектно-ориентированное программирование, Python, язык UML, классы, объекты.

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

Программисты в ходе работы над продуктом сталкиваются с необходимостью видеть структуру будущей программы. Для этого существует такой этап разработки, как моделирование. Оно позволяет определить, какие данные необходимо использовать, какие объекты выделить и охарактеризовать тип взаимодействия между ними. Базовым языком для описания моделей является иМ1_.

Язык иМ1_ — это графический язык моделирования общего назначения, предназначенный для спецификации, визуализации, проектирования и документирования всех артефактов, создаваемых при разработке программных систем.

Основное назначение иМ1_ — предоставить, с одной стороны, достаточно формальное, с другой стороны, достаточно удобное, и, с третьей стороны, достаточно универсальное средство, позволяющее до некоторой степени снизить риск расхождений в толковании спецификаций программного средства.

Рассмотрим построение объектно-ориентированной программной модели автосалона.

Автосалон состоит из администрации, бухгалтерии, отделов кадров, маркетинга и менеджмента, магазина. Главным на предприятии является Генеральный директор. Ему подчиняются: Заместитель директора по маркетингу и сбыту и Заместитель директора по экономике и финансам. Деятельность автосалона поддерживают такие отделы, как:

• администрация, которая осуществляет оперативное управление предприятием, выступает в качестве юридического лица и официально представляет предприятие, сюда относятся: Генеральный директор, Заместитель директора по экономике и финансам, Заместитель директора по маркетингу и сбыту, Главный бухгалтер, а также начальники отделов маркетинга и менеджмента;

• бухгалтерия, где принимаются платежи клиентов, рассчитывается и выдается заработная плата, а также ведется налоговая отчетность, подчиняется Заместителю директора по экономике и финансам;

• отдел маркетинга, который определяет верную сбытовую политику в связи с положением на рынке и доступностью ресурсов, и координирует деятельность остальных отделов, подчиняется Заместителю директора по маркетингу и сбыту;

• отдел менеджмента, отвечающий за оформление заказов, составление отчетных документов о них и их оплате, подчиняется Заместителю директора по экономике и финансам;

• магазин, где осуществляется контроль за поступлением товаров, производится инвентаризация, происходит определение требований к товарам, а также соответствие их качества стандартам, подчиняется непосредственно Генеральному директору.

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

автосалона. Иными словами, программная модель должна имитировать торговую деятельность автосалона.

В качестве прикладного решения для моделирования программы на языке UML был выбран Visual Paradigm. Из множества доступных инструментов диаграмма классов наиболее соответствует целям авторов.

На рисунке 1 представлена диаграмма классов будущей программной модели на языке Python. Авторами было определено девять основных классов для описания предметной области «автосалона».

Работник

■ФИО •Поя ■Возраст 'Посмотреть инфоО

Наследует

Посетитель

■ФИО -Пол -Возраст

-характер посещения ♦Посмотреть инфоО

♦Принять заявкуО

'Нииэчмм

■Отчетность -Оформление заказа О

♦ОтчетО

Наследит

ФИО '•Поп -Возраст

-Отдел

-Отчетность

♦Посмотреть инфоО

Автосалон

♦ Кредитование (}

♦ Платежи О

♦Зарплата О

♦ Отчеты О

_ - Названиесалона

■ Реитинг

■ Количество отделов - Менеджмент ■Работник

♦Посмотреть тфо()

Маркетинг

Администрация

. Руководитель

■Начальники отделов

отделов

♦ПосвтитъО

♦ Обратиться 0

Назначение

.Инвенгарнццпи О ♦Продажа О ♦Возврат!)

А Работник.ру — File Edit Format Run Options Window Help □ X

# Класс Работник

from Человек import •

: Работник (Человек) :

_init_(self, ФИО, Пол, Возраст, Отдел): self.ФИО - ФИО self.Пол = Пол self.Возраст ■ Возраст self .Отдел = Отдел

def _repr_(self) i _ПолРаботн1лка= "женский " self.Пол == 'н' self.Пол = *М'г _ПояРэ6о1нн«з = "мужской" return "Hd'juiHwr., фио - {0}, пол - (1), <1озраст - (2), отдел- {3}"\ . format (self. ФИО, _ПолРэботника, self .Возраст, self, отдел)

Ln: 21 Col: 0

Рисунок 3 - Класс «Работник»

Конструктор класса «Посетитель» наследует только параметр ФИО от родительского класса «Человек» (рис. 4). В данном классе к параметрам добавляется цель посещения квартиры. Метод_герг_возвращает ФИО посетителя и принятие

заявки.

Рисунок 1 -Диаграмма классов предметной области «Автосалон»

Спроектированная модель автосалона отражает характеристику сущностей и типы взаимодействий между ними. Диаграмма классов показывает основное содержание и элементы модели.

Начать реализацию программной модели следует согласно диаграмме иМ^ с создания класса Человек - Чело-век.ру (рис.2). Конструктор данного класса содержит параметры фио, пол и возраст. В качестве метода выступает функция, которая позволяет получать информацию об имени, поле и возрасте человека.

f1 Посетит ель.ру □ X

File Edit Format Run Options Window Help

i Класс Посетитель

from Человек import *

. Посетитель(Человек):

def _init_(self, ФИО,Заявка): self.ФИО - ФИО self. Заявка = 3ая8ка

def _repr_(self): return "Посетитель, ФИО - {0}, принятьзз .format (self .ФИО, self .Заявка) явку - {1}"\

Ln: 15 Col: 0

Рисунок 4 - Класс «Посетитель»

Класс «Маркетинг» содержит один параметр - назначение (рис. 5). Метод «Политика» выводит информацию о положении на рынке и доступности ресурсов. Метод «Координация» передает информацию в отделы.

Рисунок 2 - Класс «Человек»

Класс «Работник» (Работник.ру) наследуется от родительского класса «Человек» (рис. 3). К параметрам конструктора добавляется отдел, к которому относится сотрудник. Метод данного класса_герг_позволяет получить личную информацию о работнике.

i* Маркетинг.ру □ X

File Edit Format Run Options Window Help

i Класс Маркетинг л

c:as; Маркетинг ():

init (self,Назначение): self .Назначение

def _repr_(self): - "{0;",formac<»elf.Назначение)

def Политика (self): print ("Изучить информацию")

def Координация (self): print ("Передать информацию

Ln: 15 Col: 30

Рисунок 5 - Класс «Маркетинг»

Класс «Магазин» состоит из одного параметра - назначение. Метод_repr_возвращает это назначение в формате

строки. Метод «Инвентаризация» выводит информацию о проведении инвентаризации. Метод «Продажа» показывает, что

товар продан. Метод_del_указывает на возврат товара

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

(рис. 6).

X X

о

го А с.

X

го m

о

м о м

CJ

■ МэгазиН.ру File Edit Formet Run Options Window Help

t Класс Магазин

i МаГазин( ) :

_герг_(self) 1

....... f ozroat i se IE .Назначение!

Инвентаризация (aelf) :

print [self. Назначение, "I : l m i _i'H " >

Продажа (self) :

punt [-~овар продан", self Лимц

_del_[self):

print ("'овар всэерэнн '. self .назначение!

Рисунок 6 - Класс «Магазин»

Конструктор класса «Бухгалтерия» создает объекты назначение и отчетность (рис. 7). Метод_repr_возвращает назначение объекта в виде строки. Метод «Кредитование» выводит текст о том, что поступила заявка на приобретение товара в кредит/рассрочку. Рассмотрим метод «Платежи». Суть метода в том, что объекты класса «Платежи» имеют ограниченный срок действия и, по истечении некоторого времени, заявки на оплату закрываются. Для реализации данного метода используется атрибут класса counter, который считает количество вызовов функции «Платежи». После пяти вызовов состояние объекта меняется на: «Оплата не прошла», и метод выводит информацию о том, что необходимо создать заявку заново. Последний метод класса «Отчеты» выводит отчетную информацию для налоговой службы.

fO CS

о

CS

■■ Бухгалтерия.ру

File Edit Format Run Options Window Heir

f Класс Бухгалтерия

з Бухгалтерия <) :

_inlt_<self.Назначение) :

self.Назначение = Назначение self .Отчетность -

format(self,назначение, «^.Отчетность)

L Кэедитование(эе1£) : print<" Заявка »elf.незмачение, "рассмотрена.") seif .Отчетность - ■■ Одобрено ■

: Платежи(self): Бухгалтерия, с f Бухгалтерия, counter < 6:

print [self. Назначение, self .Отчетность, "С in inpou ")

self .Отчетность - " сзар не с i эчен "

print (self. Назначение, self .Отчетность, " I и ■ п >:

lef Отчеты (self) :

print ("Отчет соормирг self .Назначение)

Рисунок 7 - Класс «Бухгалтерия»

Конструктор класса «Менеджмент» создает объекты, отвечающие за оформление заказов, составление отчетных документов о них и их оплате. Метод_герг_выводит назначение

и статус заказа. Метод «Отчет» выводит отчетные документы по заказу (рис. 8).

О ш m х

<

m о х

X

• Менед?кмет\ру File Edit Format Ron Options Window Help

|t Класс Менеджмент

Менеджмент n :

_inn_[sell. Назначение,Отчетность) :

self .Назначение ~ Назначение a elf .Отчетность = Отчетность

_repr_(self) :

" . сoimac (self , Назначение, self .Отчетность)

Отчет (self .Отчетное). ) : self. Отчетность = Отчетность

printl" Mir. Назначение, " с'-опнироваи "р self.Отчетность )

Рисунок 8 - Класс «Менеджмент»

Переходим к конструктору класса «Администрация». Он создает следующие объекты: руководитель салона, начальники отделов, назначение отделов (рис. 9). Метод «Посетить» выводит на экран обобщающую информацию о назначении отделов, руководителе автосалона и начальниках отделов. Метод «Обратиться» позволяет выйти на контакт с любым человеком из руководства.

f AflMMHMCTpaijMfl.py -File Edit Format Run Options Window Help □ X

: 1: ss AflMHHHCTpauwflO : Л

f _init_(3elf,PyKOB0iiwTenb,Ha4anbHiiKiiOrA€JioBrHe3HaMeHM6OTAen0B):

self. PyKOBOflweiib = PyKOBOflurenti

se 1 f. H dMaflbHUKnOue/iQ s=Hawaii bHvuwOrflwoB

self .Ha3ha4eHneOTflen0B = Ha3HS4eHne0ii,eji0B

def iloceTHTb(self}:

princC""3elf.Ha3HayeHMeOTflenoe, ««»»»»■)

print((self, i ' - ui-'i self .HaBHaieHne.OiAenoH})

def 06paTMTbCA (self):

print (OSpauc • • • (self.PyKOBOAMtenb] npwHaro)

Рисунок 9 - Класс «Администрация»

Наконец, класс «Автосалон» собирает в себе все другие классы в единое пространство (рис. 10). Для создания объекта класса достаточно обозначить название салона. Остальные параметры добавляются при создании объектов одноименных классов. Метод «ДобавитьРаботника» использует принцип агрегации для добавления объектов класса «Работник» к объектам класса «Автосалон». Метод «ДанныеРаботника» показывает информацию о работнике.

г» Автосэлон.ру — File Edit Format Run Options Window Help □ X

t Класс Автосалон А

Работник . -. « Посетитель - * Администрация - . ' f г Менеджмент t »

class Автосалон (>:

init [self,Название) : self .Название*Название self .Администрация ■ [] self .Руководитель -self .Менеджмент = [] self .Работник = ;:г.е aelf.Посетители - []

def _repz_(self): return "Название салона- {Автоград}".format (self .нвзмиие)

: ДобавитьРаботника{зе1£.Работник); self .Работник"Работник

Г ДанныеРаботмика (self ,Работник) : print (self .Работник) V

Liu 2 Col: 0

Рисунок 10 - Класс «Автосалон»

Переходим к тестированию классов. В первом тесте проверяем работоспособность живых объектов: работников и посетителей (рис. 11). Для начала импортируем файлы Работ-ник.ру и Посетитель.ру. Создаем объект работник1 и указываем обязательные параметры: ФИО, пол, возраст, и отдел. Затем применяем функцию print, которая выводит на экран всю информацию о работнике. Аналогично создаем объект ра-

ботник2. На следующем этапе создаем объект класса «Посетитель». Указываем два параметра - ФИО и цель посещения. Выводим на экран информацию об объекте.

t Tecrl

File Edit Format Run Options Window Help

I: PaSoiHLIK in г___Г ■

Посетитель с '

работник!'Работник("Риу'Яив Сергей Анатольевич", "к", 33,магазин) print [работник!)

работник2"РаСотник(нРеутова Юлия Михайловна", "ж", 36, бухгалтерия) peine (работник?)

клиент ш Посетитель ["Котов Илья Андреевич", "Диски R16 на автомобиль") print[клиент)

> IDLE Shell 3.9.S

Fife Edit Shell Debug Options Window Help

Python 3.9.5 (Ci<js/v3.9.5:0a7dcbd, May 3 2021, 17:27:32) [HSC v.1928 64 bit [AMD64]] on Win32

Type "help", "copyright", "credits" or "license!}" for more information.

- RESTART :

Габстник, ФИО - Реутов Сергей Анатольевич, пол - мужской, возраст - 33, Отдел-магазин

Работник, ФИО - Реутова Илия Михайловна, пол - женский, возраст - 36, отдел -бухгалтерия

Посетитель, ФИО - Котов Илья Андреевич, пришел с целые - Диски Rlé на автомобиль

А Т«т2 — File Edit Format Run Options Window Help а х

| бухгалтерия * л

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

оплата -Бухгалтерия ("Олтг.-") оплата, кредитование

оплата .Платежи О оппата.Ппатсжи О оппата.Платеши 0

Ln: 1 Cot О

1*. IDLE Shell 3.9,5 File Edit Shell Debug Options Window Help О X

Python 3.9.5 (tega/v3.9.S:0«7<acbd, May 3 2021, 1"J:27:S2> [MSC v.1926 6 D64)] on Win32 Type "help", "eopyrifllic", "credits" or "lieeaselj" fox more information MX (AM

— RESTART: Заявка на кредит рассмотрена. Одобрено Оплата, оплата прошла Оплата, Оплата прошла Оплата. Оплата прошла Оплата, Оплата прошла Оплата. Оплата прошла Товар не оплачен Повторите попытку Отчет сформирован

Lrv ' i Cot А

Рисунок 11 - Тестирование классов «Работник», «Посетитель»

Второе тестирование показывает работу класса «Бухгалтерия» (рис. 12). Вначале импортируем все элементы из файла Бухгалтерия.ру и создаем объект оплата. В качестве параметра указываем только название объекта. Применяем метод «Кредитование», который позволит оплатить товар не сразу. Затем несколько раз прибегаем к методу «Платежи» до тех пор, пока сумма кредита не заканчивается и на экране не появляется информация об отсутствии средств. Наконец, применяем метод «Отчеты», который покажет расход средств.

и ТестЗ

Filt Edit Format Run Option; Window Help

Администраций *

Бухгалтера Администрация [Главный бухгалтер,''начальникстдега Бухгалтерия") БухгаптертПосетить О

Ln: 16 Col:0

A IDLÉ Shell 3.9.5 □ X

File Edit Shell Debug Options Window Help

Python 3.5.5 (tais/v3.9.5:0a7dcbd, Hay 3 2021, 17:27:52} [MSC v.1923 64 bit (AH D64)J OU Win32

Type "help", "copyright", "credits" or "licensed" for more information.

— RESTART:

***** Бухгалтерия.....

Главный Бухгалтер, начальник отдела Бухгалтерия.

Рисунок 13 - Тестирование класса «Администрация»

Для финального тестирования импортируем класс «Автосалон» (рис. 14). Во-первых, создаем объект класса «Администрация» и присваиваем ему назначение отдела. Затем задаем начальника отдела. Через функцию append добавляем отделы в администрацию. После этого выводим список отделов и применяем метод для вывода начальников для каждого отдела. Затем добавляем работника и просматриваем его данные. Переходим к созданию отдела менеджмента. Затем выводим отчет. Несколько раз применяем метод «Платежи» к объекту класса «Бухгалтерия» - оплата и, когда средства на счету заканчиваются, создаем посетителя, который пришел с целью получить отчет о покупках.

Рисунок 12 - Тестирование класса «Бухгалтерия»

Для третьего тестирования проверим работоспособность класса «Администрация» (рис. 13). Импортируем модуль «Администрация». Создадим объект класса - руководство в составе которого - Генеральный директор, Заместитель директора по экономике и финансам, Заместитель директора по маркетингу и сбыту, начальники отделов - Главный бухгалтер, а также начальники отделов маркетинга и менеджмента. Используем метод «Посетить» обобщающий информацию о созданном объекте.

си ■ Аиоеалот- (Аатагмы by/ViÇrr - АДМИ1ИСГрЗЦИЯ, "Г]ШИЬ'Й Бу; Мардашг» Лдминжт»лцт(СмршийМ4 MoHiawein = Адиинлстмиия I Ciapuiw Г

и«Л1и" - Лдмннлстраиия | Адьшп.-CTjMTC

сп.Администрвцн я.врреп<3(Бухга,*тер1 сл. АдминистрЕщия. append (Мэр^ен* нг

сл.Админиетрвцияв-----""----- "

сп.Администрвцил.в

(спАдмичистрацив) PaÉOTHUU -Работник!"г - г:; Сер; СП. До«мх:ь ("«боттц^Робогнн <1 ) сг. Дажше Мошка (Работ«*] )

сч Mowft»K(i"i .ар9р11в(Ф0р«н501»|'иеЗз>эм)

слМевмлме« 1.45И «(Ферм »tsiHieO i чеи)

Wins гелыемшкшг! •orwa-»^Wi/iMt»"*!'

№ Edit Shell Debug Optioni Window Kelp Python 3,?.S l44S/v3.5.5i0aTdcM, Kay 3 2021, I7ii7;52l 4,1 m Si bit (8КМ4)1 вя wtnM туре "help".

» КЕЭТйЯГ:

Гпом^4 Ву>гв1гсо. начаям-ж отила Ьухгагчерия Скрший Мзрсегслсг. HSHJretw отдеи U.JptiSTVwa CiSp uni У«ивджв0,Oiptni Лдмии-ецмюр.иавды'ик отдела Магаки

Райотии<,«ио - Реутов Сергей Дяатольеам, игл - кухсхой, t'-îfic:

- з s, отцеп Магам* Заказ успешно оформлен Oiwг сформирован

3WSK9M федит рассмотрев. Одобрено Оппата.Огют) праигч Оплата.Оигата npouna Onna»B.O»wiia прошгч Зппа-э. Оплата пршла Отпала. Оплата прешла товар иейпла*н ГЬпторшеногытку Оме-сФормиоомч

Hùceinwik, ФИО - Ко«» Ил.» Ападенич.

прдкл с цепью - диски

Рисунок 14 - Тестирование класса «Автосалон»

Таким образом, приведенные выше тесты разработанных классов подтвердили работоспособность программной модели автосалона. Разработка модели стала возможной благодаря применению методов объектно-ориентированного программирования на языке Python.

X X

о

го А с.

X

го m

о

м о

M

со

С помощью технологии объектно-ориентированного анализа и программирования на Python было создано программное решение для создания типовых объектов в виде автосалонов.

Таким образом, была создана программная модель автосалона с использованием объектно-ориентированного языка Python. Тестирование доказало устойчивость работы программной модели. Данный программный код позволяет создавать типовые объекты для программ развития автосалонов.

Литература

1. Панченко Н.Б., Бёрдова Ю.С. Информационные технологии, Тюмень, ТИУ, 2021.

2. Панченко Н.Б., Бёрдова Ю.С., Линг В.В. Математическое и компьютерное моделирование, Тюмень, ТИУ, 2022.

3. Овчинникова С.В. Аханова М.А., Пашкевич А.С. Оценка стоимости ИТ - проекта для государственных учреждений. Экономические исследования и разработки, 2022, №11 - 1, с.42 - 57

Development of an object-oriented software model for a car dealership Panchenko N.B., Berdova Yu.S., Ovchinnikova S.V.

Tyumen Industrial University

JEL classification: C01, C02, C1, C4, C5, C6, C8

Object-oriented programming is the most common and well-known paradigm for creating application software solutions. A number of programs require the use of similar objects that interact with each other. Therefore, this paradigm is used in many areas of programmers' activities. The object-oriented approach is supported by many programming languages, including Python. In the article, using Python, as the simplest and most understandable programming language, an object-oriented approach to the formation of a car dealership model is considered.

Keywords: Object-oriented programming, Python, UML language, classes, objects. References

1. Panchenko N.B., Berdova Yu.S. Information technologies, Tyumen, TIU, 2021.

2. Panchenko N.B., Berdova Yu.S., Ling V.V. Mathematical and computer modeling,

Tyumen, TIU, 2022.

3. Ovchinnikova S.V. Akhanova M.A., Pashkevich A.S. Estimation of the cost of an IT

project for government agencies. Economic Research and Development, 2022, No. 11 - 1, pp. 42 - 57

fO СЧ

о

сч

о ш m

X

<

m О X X

i Надоели баннеры? Вы всегда можете отключить рекламу.