Wykład 3: Kontrola dostępu do danych
W poprzednich częściach nauczyliśmy się tworzyć klasy i zarządzać ich atrybutami. Jednak dotychczas każdy mógł dowolnie zmieniać dane w naszych obiektach. Czas to uporządkować.
Co to oznacza w praktyce? Wyobraź sobie, że tworzysz klasę reprezentującą konto bankowe. Jeśli ktoś może wpisać ujemny stan konta (np. -1000 zł), to jest błąd w logiczny działania programu. Hermetyzacja pomaga nam tego uniknąć.
- Hermetyzacja (Enkapsulacja): Ukrywanie wewnętrznego stanu obiektu. To znaczy, że pewne dane wewnątrz klasy są dostępne tylko dla samej klasy, a nie bezpośrednio z zewnątrz.
- Konwencje nazewnicze: Podkreślnik jako sygnał dla innych programistów. To nie jest zakaz, ale ostrzeżenie "nie dotykaj tego bez powodu".
- Pseudo-prywatność: Mechanizm name mangling. Specjalna zasada Pythona, która utrudnia (ale nie uniemożliwia) dostęp do niektórych zmiennych.
- Properties (Właściwości): Nowoczesne podejście do getterów i setterów. Pozwalają kontrolować dostęp do danych bez zmiany sposobu ich używania w kodzie.
- Walidacja: Jak upewnić się, że dane są poprawne przed ich zapisaniem. Np. czy wiek jest większy od zera, czy hasło ma odpowiednią długość.