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/