Programowanie obiektowe (OOP) grupuje dane (pola) i operacje na nich (metody) w jedną spójną jednostkę — obiekt. Obiekty tworzone są na podstawie klasy, która działa jak "przepis" lub "szablon" określający, jakie pola i metody będzie miał każdy obiekt tego typu.
__init__ to konstruktor — metoda wywoływana automatycznie przy tworzeniu obiektu. self to referencja do konkretnego obiektu, na którym wywoływana jest metoda — dzięki niej każdy obiekt "wie", jakie są jego własne wartości pól.
Hermetyzacja to ukrywanie wewnętrznych szczegółów implementacji i udostępnianie kontrolowanego dostępu do danych. W Pythonie konwencja: pojedynczy podkreślnik _pole oznacza "chronione" (nie używaj z zewnątrz), a podwójny __pole włącza tzw. name mangling utrudniający przypadkowy dostęp.
Dzięki temu nikt "z zewnątrz" nie może bezpośrednio ustawić konto.__saldo = -1000 — zmiana salda możliwa jest tylko przez metody klasy, które mogą pilnować poprawności danych.
Zdefiniuj klasę Prostokat z polami bok_a i bok_b oraz metodami pole() i obwod(). Stwórz dwa obiekty i wypisz ich pola powierzchni.
Stwórz listę pięciu obiektów klasy Uczen i wypisz imię ucznia z najwyższą średnią, używając funkcji max() z parametrem key.
1. Czym jest klasa w programowaniu obiektowym?
2. Do czego służy metoda __init__?
3. Po co stosuje się hermetyzację?