Znalost moderního programování otevírá dveře budoucností.

PVA_4.02.03.PRAKTIKUM: Simulace bankovního automatu

Simulace bankovního automatu

Výukový komentář

Co je OOP a proč jej učíme?

Objektově orientované programování (OOP) je moderní přístup k návrhu softwaru, který napodobuje svět kolem nás. V aplikaci „Simulátor bankomatu“ modelujeme:

Objekty (např. účet, uživatel),

jejich vlastnosti (zůstatek, PIN),

a chování (vklad, výběr, výpis historie).

Tento přístup podporuje modularitu, bezpečnost, znovupoužitelnost a škálovatelnost.

Klíčové OOP prvky použité v zadání

class – definice třídy

Každý objekt je instancí třídy:


    class BankovniUcet:
       def __init__(self, id_uctu: str):
           self.id = id_uctu
           self.zustatek = 0
    

Od Pythonu 3.16 je běžné používat typové anotace (např. id_uctu: str), které zvyšují čitelnost a pomáhají nástrojům jako mypy.

self a nový typ Self

V Pythonu 3.11+ (a plně v 3.16+) můžeme používat nový typ Self, který usnadňuje typování metod vracejících sebe sama:


    from typing import Self

    class BankovniUcet:
       def nastav_id(self, nove_id: str) -> Self:
           self.id = nove_id
           return self
    

Výhodné u „řetězení metod“ nebo builder vzorů.

Atributy objektu

Atributy uchovávají stav objektu. Např.:


    self.zustatek = 0
    self.transakce: list[str] = []
    

Díky anotaci list[str] víme, že transakce bude seznam textových zpráv.

Metody objektu

Metody jsou funkce uvnitř objektu. Využívají self pro práci s aktuálním objektem:


    def vloz(self, castka: float) -> None:
       if castka > 0:
           self.zustatek += castka
    

Metody mohou mít návratový typ -> None nebo -> float, což je dobrá praxe.

Konstrukce match-case (od 3.10)

Moderní náhrada if-elif-else, výhodná při větvení podle výběru uživatele:


    match volba:
       case "1":
           ucet.vloz(500)
       case "2":
           ucet.vyber(300)
       case _:
           print("Neplatná volba.")
    

Přehlednější, rozšiřitelnější a bezpečnější než klasické if-elif.

Kompozice a vztahy tříd

Třída Uzivatel obsahuje seznam objektů BankovniUcet:


    class Uzivatel:
       def __init__(self, jmeno: str, pin: str):
           self.ucty: list[BankovniUcet] = []
    

Toto je příklad kompozice – uživatel vlastní účty.

Výhody OOP v projektech

Shrnutí pro studenty

Třídy umožňují definovat strukturu programu jako „skutečný svět“

self je odkaz na aktuální objekt – nutné pro práci s atributy

match-case usnadňuje rozhodování

Self a typové anotace zvyšují čitelnost i bezpečnost

Komplexní úkol jako bankomat ukazuje smysl OOP v reálné praxi

PUBLIKOVÁNO
07.08.2025, 11:06
ODKAZ
https://python.weloveit.education/pva-4-02-03-PRAKTIKUM-Simulator-bankomatu/Vyukocy-komentar/
Algoritmizace
WebProgramming
Python
Csharp
Databáze
IoT

Začni hned teď
pracovat na zlepšení svých znalostí.

Vytvoř si vlastní síť zkušeností, přesně tak, jak potřebuješ.