17.11. OOP UML

17.11.1. UML Class Diagram

  • Unified Modeling Language

../../_images/uml-diagram-class.png
>>> class Account:
...     def __init__(self):
...         self.authenticated = False
...
...     def login(self):
...         self.authenticated = True
...
...     def logout(self):
...         self.authenticated = False
>>>
>>>
>>> class User(Account):
...     def __init__(self, firstname, lastname, birthdate):
...         self.firstname = firstname
...         self.lastname = lastname
...         self.birthdate = birthdate
...
...     def get_name(self):
...         return f'{self.firstname} {self.lastname}'
...
...     def get_age(self):
...         return ...
>>>
>>>
>>> class Admin(Account):
...     def __init__(self):
...         self.is_active = True
...         self.is_staff = True
...         self.is_admin = True
...
...     def add_user(self):
...         ...
...
...     def edit_user(self):
...         ...
...
...     def delete_user(self):
...         ...

17.11.2. UML Sequence Diagram

  • Unified Modeling Language

../../_images/uml-diagram-sequence.png

17.11.3. Use Case - 1

../../_images/uml-usecase-bank.png
from decimal import Decimal
from datetime import date, datetime


class Address:
    street: str
    city: str
    postcode: str
    country: str


class Bank:
    name: str
    bic: str
    swift: str
    address: Address
    def manages(self): ...
    def maintains(self): ...


class Customer:
    firstname: str
    lastname: str
    birthdate: date
    address: Address
    def login(self): ...
    def logout(self): ...


class Card:
    customer: Customer
    number: int
    cvv: int
    expiration: date
    pin: int
    def change_pin(self): ...
    def create_transaction(self): ...


class CreditCard(Card):
    limit: Decimal
    interest_rate: float


class DebitCard(Card):
    pass


class ATM:
    bank: Bank
    address: Address
    def check_balance(self): ...
    def withdraw(self): ...
    def create_transaction(self): ...


class Transaction:
    id: str
    date: datetime
    type: str
    amount: Decimal
    def create(self): ...
    def commit(self): ...
    def rollback(self): ...


class Account:
    number: int
    iban: str
    balance: Decimal
    def deposit(self): ...
    def create_transaction(self): ...


class CurrentAccount:
    def withdraw(self): ...
    def transfer(self): ...


class SavingAccount:
    interest_rate: float
    def yield_interest(self): ...