Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

«Структура предоставляющих потребительские услуги сущностей. Вариант №3 Банкомат»

Содержание:

ВВЕДЕНИЕ

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

В работе использованы источники информации, заслуживающие самого высокого уровня доверия. Среди авторов Гради Буч – один из авторов языка UML. Использованы знания полученные в порядке изучения дисциплины «Объектно-ориентированный анализ и программирование». Также использована информация из федерального закона.

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

1. ОПИСАНИЕ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПОДХОДА

Для проведения анализа выбранной сущности, нам необходимо сначала описать следующие понятия:

  • Что собой представляет понятие класса, объекта, сущности в объектно-ориентированном программировании.
  • Каковы основные принципы объектно-ориентированного подхода к программированию
  • Что собой представляет объектно-ориентированный подход к анализу сущностей.

2. Понятия класс, объект, сущность

Согласно определению, данному одним из создателей языка UML, Гради Бучем, имеем следующую связь между понятиями объект, сущность и класс: “объект обозначает конкретную сущность, определенную во времени и в пространстве, класс определяет лишь абстракцию существенного в объекте”.[[1]]

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

3. Принципы объектно-ориентированного программирования

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

Наследование является одним из основных свойств класса, как абстрактного описания какой-либо сущности. Данный принцип позволяет значительно экономить количество времени на кодирование при программировании за счет того, что общие атрибуты классов - потомков описываются один раз в классе - родителе, за исключением тех случаев, когда необходимо переопределить некоторые методы класса наследника. Без механизма наследования работа с классами была бы крайне затруднена ввиду необходимости каждый раз описывать все элементы пусть даже немного отличающихся классов. Механизм наследования является основой для построения иерархии классов. Иерархия классов позволяет придать программе структурированный вид.

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

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

4. Объектно-ориентированный подход к анализу структуры сущности

Учитывая понятия класса, объекта и сущности. А также, исходя из принципов наследования, инкапсуляции и полиморфизма. Мы делаем вывод, что для анализа сущности, как объекта класса, имеющего достаточный уровень абстракции, и последующего перехода от сущности, к описанию класса, к которому эта сущность принадлежит, надо определить основные ее параметры и функции. Эти параметры, при переходе от сущности к классу, будут являться методами и атрибутами класса, которому принадлежит объект.

5. АНАЛИЗ СУЩНОСТИ «БАНКОМАТ»

Таким образом, мы переходим к разбору такой сущности, как “банкомат”. Выясним, каков его набор параметров и функций и из каких блоков он должен состоять. В процессе будем пользоваться определением банкомата в законах и личным опытом автора данного исследования.

6. Определение и основные функции

Согласно 54-ФЗ От 22.05.2003 г. в редакции от 7 мая 2013 года N 89-ФЗ:

“банкомат – устройство для осуществления в автоматическом режиме (без участия уполномоченного лица кредитной организации или банковского платежного агента, банковского платежного субагента, осуществляющих деятельность в соответствии с законодательством о национальной платежной системе) выдачи и (или) приема средств наличного платежа (банкнот) с использованием платежных карт, наличных денежных расчетов и (или) расчетов с использованием платежных карт, передачи распоряжений кредитной организации об осуществлении расчетов по поручению клиентов по их банковским счетам и для составления документов, подтверждающих передачу соответствующих распоряжений”[[2]]

Из определения следует, что основными функциями банкомата являются:

  • Выдача и прием наличных денежных средств с использованием платежных карт
  • Проведение расчетов наличными и безналичными средствами
  • Передача распоряжений в банк об операциях со счетом клиента
  • Выдача документов, подтверждающих передачу распоряжений

Выявление взаимодействующих сущностей

Сценарий использования

Для более полного выявления взаимодействующих сущностей опишем сценарий использования банкомата для выдачи денег.

Имя сценария: Использование банкомата

Цель: получить деньги из банкомата

Действующее лицо: Клиент

Условия: банкомат исправен, приглашает вставить платежную карту

Активатор: Клиент вставляет платежную карту

Порядок событий:

  1. Платежная карта вставлена
  2. Банкомат предлагает ввести PIN код платежной карты
  3. Клиент вводит PIN
  4. Банкомат демонстрирует окно выбора доступных функций
  5. Клиент выбирает функцию снятие наличных
  6. Банкомат предлагает выбрать сумму, исходя из остатка денег в хранилище банкомата.
  7. Клиент выбирает сумму к выдаче
  8. Банкомат проверяет остаток средств на счете клиента в банке
  9. Банк уменьшает остаток на счете клиента на сумму к выдаче
  10. Банкомат выдает деньги и чек
  11. Клиент забирает деньги и чек
  12. Банкомат предлагает забрать платежную карту
  13. Клиент забирает карту
  14. Банкомат переходит в режим приглашения вставить карту

Альтернативные пути:

  1. Платежная карта недействительна

1.1. Банкомат отображает информацию о том, что карта недействительна

1.2. Банкомат возвращает карту

1.3. Клиент забирает карту

2. PIN код введен неверно

2.1. Банкомат просит ввести PIN повторно

2.2. Клиент вводит PIN корректно

8. Средств на счете недостаточно для снятия

8.1. Банкомат сообщает Клиенту о недостаточности средств

8.2. Банкомат предлагает выбрать другую сумму

8.3. Клиент вводит другую сумму

7. Определение сущностей

Далее определим основные сущности, участвующие в осуществлении данной деятельности.

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

Платежная карта - пластиковая карта, выпущенная одним из банков, содержит в себе информацию о владельце, банке выпустившем карту, номере карты, используется банкоматом для идентификации владельца карты.

Банкомат – аппарат, с которым взаимодействует клиент. Имеет следующие свойства: адрес, банк собственник, серийный номер, ID в системе банка собственника.

Хранилище денежных средств - внутреннее защищенное устройство в банкомате, в котором хранятся денежные средства.

Деньги - купюры разного достоинства, которые попадают или извлекаются из хранилища.

Устройство вывода информации (экран, принтер) - составная часть банкомата, обеспечивающая выведение информации на экран или на бумагу.

Устройство ввода информации - обычно вандалоустойчивая клавиатура для ввода PIN кода и дополнительных реквизитов транзакций, также возможно наличие тачскрина или отдельных кнопок для выбора функций банкомата.

Транзакция - необходимая информация, передаваемый банкоматом в банк, для проведения запрашиваемой операции.

Банк - кредитное учреждение, которое является собственником банкомата и(или) эмитентом платежной карты (могут быть разные банки).

Счет - счет в банке-эмитенте платежной карты, с которым имеет право работать клиент.

Таким образом, мы имеем набор из 8 сущностей и 3 интерфейсов

Определение характера связей между сущностями

Приступим к выявлению характера связей между сущностями.

Типы связей

Связи между сущностями могут быть следующими[3]:

Зависимость - когда состояние одного объекта зависит от изменения другого.

Ассоциация - когда между объектами существует какое-либо отношение. Например, Клиент-Банк.

Агрегация - когда один класс является составной частью другого. Например, хранилище денег является частью банкомата.

Композиция - когда класс не может существовать вне другого класса. Например, банковский счет не имеет никакого смысла вне банка.

Обобщение - отображает иерархические отношения между классами. В нашем случае такое отношение было бы между классом “сейф” и “хранилище денег”. Сейф является более общим понятием и не имеет устройства автоматизированной выдачи и закладки денег, но также обеспечивает их сохранность.

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

8. Характер связей между сущностями

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

Платежная карта - принадлежит клиенту (ассоциация), вводится в банкомат(зависимость - банкомат меняет свой статус), принадлежит банку(ассоциация, отобразим через счет, как часть банка), содержит информацию о счете(ассоциация).

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

Хранилище денежных средств - является частью банкомата, содержит в себе деньги, выдает или принимает деньги. Отношение агрегации с банкоматом, отношение ассоциации с деньгами.

Деньги - хранятся в хранилище денежных средств (ассоциация).

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

Банк - является собственником банкомата (ассоциация), является собственником карты (может быть другой банк), содержит в себе счет Клиента (отношение композиции), через “связного” принимает транзакции (зависимость), отправляет подтверждение или отказ на запрос клиента (зависимость).

Счет - содержится в банке (отношение композиции), содержит в себе информацию о безналичных денежных средствах принадлежащих клиенту (ассоциация через платежную карту).

9. Описание основных атрибутов каждой сущности

Клиент - основной атрибут - платежная карта и PIN

Платежная карта - имеет следующие атрибуты:

  • Номер карты
  • Собственник
  • Банк-эмитент

Банкомат - имеет следующие атрибуты

  • Адрес
  • Номер
  • Банк собственник
  • ID в системе банка
  • Также содержит в себе хранилище денег

Хранилище денег - имеет следующие атрибуты

  • Количество купюр каждого номинала

Деньги - имеют основной атрибут - номинал купюры

Транзакция - главный атрибут - реквизиты

Банк - имеет следующие атрибуты

  • Адрес
  • Счета

Счет - имеет следующие важные атрибуты

  • Номер счета
  • Количество средств на счете
  • Владелец счета

Также опишем основные методы, реализуемые интерфейсами ввода и вывода

Интерфейс “Ввод” реализует следующие методы

  • getPin():int - записывает данные PIN кода карты в транзакцию для проверки в банке
  • getRecs():String- записывает в транзакцию реквизиты для платежа или перевода
  • getChoice() - Регистрирует выбор функции банкомата клиентом

Интерфейс “Вывод” реализует следующие методы:

  • printCheck() - печатает отчет о результатах выполнения транзакции на принтере банкомата
  • showBalance() - демонстрирует баланс карты на экране банкомата.

Также в системе присутствует еще один интерфейс, который обеспечивает обмен данными между банкоматом и информационной системой банка, назовем его “Связной” он должен реализовывать следующие методы:

  • sendTrans():Transaction - отправка транзакции в банк для принятия решения о выполнении
  • getTrans():Transaction - получение ответа от банка, может содержать в себе как просто одобрение запрошенного действия, так и например баланс счета клиента и другую информацию, которую может запросить клиент из банка посредством банкомата ( выписка по счету и т.д.)

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

10. Диаграммы классов и интерфейсов

Клиент

Клиент - это абстрактный человек, у которого есть платежная карта и который знает секретный код от этой карты. Конечно у человека гораздо больше атрибутов (пол, возраст, место работы…), но к использованию банкомата они все не относятся

Платежная карта

Любая платежная карта несет на себе свой номер, который обычно состоит из 16 цифр, поэтому выбран тип long, запись имени владельца - выбран тип строковых переменных string и информацию и банке, который выпустил карту, представим ее также в строковом формате.

Банкомат

Любой банкомат является установленным по определенному адресу address:string который выражается строкой, имеет серийный номер, который, в свою очередь, может содержать в себе как цифры, так и буквы, поэтому также тип string. Банкомат принадлежит определенному банку, название которого также строка string, должен содержать в себе идентификатор для однозначного отождествления в банковской информационной сети bid:int возьмем тип int, его емкости достаточно, для записи всех банкоматов любого банка.

Также банкомат содержит в себе объект класса Хранилище денег, назовем его repository.

Хранилище денег

Хранилище содержит информацию о количестве в нем денег каждого номинала, для хранения этой информации выбран ассоциативный массив, где ключом является номинал купюры, а значением является ее количество в хранилище. Также определены основные методы. getMoney - выдает купюру номинала объекта Money, putMoney - вносит в хранилище купюру номинала объекта Money,

checkBalance - проверяет возможность выдачи запрошенной суммы из хранилища.

Деньги

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

Транзакция

Транзакция представляет собой динамический массив строк, содержащий перечень реквизитов, необходимых для проведения операции, к которой относится транзакция. Например, при начале работы клиента с банкоматом будет передана транзакция содержащая в себе тип операции (идентификация клиента), необходимые данные карты (например ее номер), персональный идентификационный номер - PIN клиента. Банковская ИС по заданному алгоритму проверит соответствие данных и ответит, можно ли продолжать обслуживание.

Банк

Банк, также как и Клиент, имеет гораздо больше атрибутов, чем указано в диаграмме его класса (уставной капитал, форма собственности, имена учредителей…), однако нас в данной работе, применительно к банкомату, интересует то, что в банке существует счет, к которому привязана Платежная карта Клиента.

Счет

Каждый существующий счет имеет следующие важные для нас атрибуты: номер счета, который состоит из 20 цифр, поэтому тип long,

Количество денег на счете balance:double, тип double, по причине того, что запись может быть с плавающей точкой, например при начислении процентов на вклад. Также определим два метода этого класса, increaseBalance увеличивает баланс счета на заданную величину, decreaseBalance уменьшает баланс счета на заданную величину.

Ввод данных

Интерфейс ввода данных реализует 3 метода: ввод PIN Клиента, ввод реквизитов, необходимых для выполнения одной из функций банкомата (например, сумму денег к выдаче), метод getChoice определяет выбор Клиентом функции банкомата (таких как выдача/внесение наличных, проведение платежа или перевода, выдача информации о доступном остатке на платежной карте и других, представленных в каждом конкретном случае)

Вывод данных

Интерфейс вывода реализует методы printCheck - распечатывает на принтере банкомата информацию о результате транзакции (например, “баланс пополнен на 100 руб.”) и метод showBalance, который отображает на экране банкомата информацию об остатке доступных средств на балансе счета, к которому привязана Платежная карта.

Связной

Интерфейс Messenger реализует связь банкомата с ИС банка, для этого определены методы sendTrans, который отправляет транзакцию и getTrans, который получает ответ от кредитной организации.

В результате определения связей между сущностями и перехода от сущностей к классам и интерфейсам, получаем следующую диаграмму классов, описывающих структуру сущности “банкомат”. См. Диаграмма 1.

 11. ДИАГРАММА

Диаграмма 1: Диаграмма Классов

На диаграмме представлено, как клиент взаимодействует с банкоматом посредством интерфейсов ввода и вывода данных. Банкомат содержит в себе хранилище денег, в котором лежат денежные купюры. Банкомат взаимодействует с Банком посредством транзакций, через интерфейс Messenger. В банке есть счет, который связан с картой клиента.

ЗАКЛЮЧЕНИЕ

В данной работе мы продемонстрировали процесс моделирования диаграммы классов, которая отображает структуру сущности, предоставляющей потребительские услуги - банкомат. Последовательными шагами нашей работы были следующие этапы:

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ:

  1. Гради Буч Объектно-ориентированный анализ и проектирование
    с примерами приложений на С++ //ВТОРОЕ ИЗДАНИЕ Rational Санта-Клара, Калифорния перевод с английского под редакцией И. Романовского и Ф. Андреева URL: http://vmk.ugatu.ac.ru/book/buch/ch03.htm (дата обращения 14.02.2017)

Федеральный закон "О внесении изменений в Федеральный закон "О применении контрольно-кассовой техники при осуществлении наличных денежных расчетов и (или) расчетов с использованием платежных карт" в части уточнения обязанностей кредитных организаций" от 07.05.2013 N 89-ФЗ URL http://www.consultant.ru/document/cons_doc_LAW_146008/ (Дата обращения 14.02.2017)

  1. Гради Буч, Джеймс Рамбо, Ивар Якобсон, Язык UML . Руководство пользователя. 2-е изд.: Пер. с англ. Мухин Н. – М.:, ДМК Пресс, 2007. – 496 с.: ил., ISBN 5-94074-334- X , 0-321-26797-4 (англ.)
  2. Объектно-ориентированный анализ и программирование. URL http://e-biblio.ru/book/bib/geiti/obektno-orientirovannyj_analiz_i_programmirovanie_161021.pdf (дата обращения 10.02.2017)
  1. Гради Буч Объектно-ориентированный анализ и проектирование
    с примерами приложений на С++

  2. Федеральный закон "О внесении изменений в Федеральный закон "О применении контрольно-кассовой техники при осуществлении наличных денежных расчетов и (или) расчетов с использованием платежных карт" в части уточнения обязанностей кредитных организаций" от 07.05.2013 N 89-ФЗ

  3. Гради Буч, Джеймс Рамбо, Ивар Якобсон, Язык UML . Руководство пользователя. 2-е изд.: Пер. с англ. Мухин Н. – М.:, ДМК Пресс, 2007. – 496 с.: ил., ISBN 5-94074-334- X , 0-321-26797-4 (англ.)