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

  • банк
  • Банкомат
  • Покупатель
  • Счет
  • Сделка
  • Проверка аккаунта
  • Сберегательный счет

Давайте определим возможных членов класса для каждого из вышеперечисленных.

Класс банка представляет собой физический банк. У него есть местоположение и уникальный идентификатор. Этот банк также управляет несколькими счетами. ** Есть ассоциация! ** Что это за тип ассоциации? Полностью ли банк состоит из счетов (состав)? Или счета являются «частью» банка (агрегирование)? Похоже на агрегацию. Это не может быть композицией, потому что это означало бы, что оба класса живут и умирают вместе. Это не совсем верно, потому что у вас может быть банк без счетов, и вы можете иметь счета без банка. Мы добавим метод getAccounts ().

Класс ATM представляет собой физический банкомат. Сразу же мы можем придумать три метода для банкомата: takew (), deposit (), checkBalance (). Каждый из этих методов принимает в качестве входных данных номер карты. Что касается атрибутов, банкомат имеет местонахождение и управляется конкретным банком.

Класс клиента представляет реального клиента. У этого клиента есть имя, адрес, дата рождения (dob), номер карты и пин-код. Чтобы этот человек считался клиентом, у него должна быть учетная запись. ** Есть еще одна ассоциация! ** Это не агрегация или композиция, это просто двунаправленная ассоциация (нарисованная с использованием пустой строки без стрелок).

Класс account представляет банковский счет. Общие атрибуты банковских счетов включают номер счета, баланс и т. Д. Вы можете внести () снять () деньги со счета. Кроме того, банки могут предлагать два типа счетов: текущий счет и сберегательный счет. Таким образом, эти два могут считаться дочерними классами класса учетной записи и также могут наследовать от него. Мы обозначим это сплошной черной линией с незаполненной стрелкой, ведущей к классу учетной записи.