BLOK 13 · 2 godz. OOP Klasy Hermetyzacja

Programowanie obiektowe cz. 1: klasy, pola, metody, konstruktory

Informatyka Rozszerzona · Klasa 4 · Semestr I · Blok 13/30

1. Czym jest programowanie obiektowe?

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.

2. Definicja klasy i tworzenie obiektów

class Uczen: def __init__(self, imie, nazwisko, srednia): self.imie = imie self.nazwisko = nazwisko self.srednia = srednia def przedstaw_sie(self): return f"{self.imie} {self.nazwisko}, śr. {self.srednia}" # tworzenie obiektów (instancji klasy) u1 = Uczen("Anna", "Kowalska", 5.2) u2 = Uczen("Piotr", "Nowak", 4.1) print(u1.przedstaw_sie())

Metoda __init__ i słowo self

__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.

3. Hermetyzacja (enkapsulacja)

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.

class KontoBankowe: def __init__(self, saldo_poczatkowe): self.__saldo = saldo_poczatkowe # pole prywatne def wplac(self, kwota): if kwota > 0: self.__saldo += kwota def pobierz_saldo(self): return self.__saldo # kontrolowany 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.

4. Ćwiczenia praktyczne

Ćwiczenie 1 — klasa Prostokat

Zdefiniuj klasę Prostokat z polami bok_a i bok_b oraz metodami pole() i obwod(). Stwórz dwa obiekty i wypisz ich pola powierzchni.

class Prostokat: def __init__(self, bok_a, bok_b): self.bok_a = bok_a self.bok_b = bok_b def pole(self): return self.bok_a * self.bok_b def obwod(self): return 2 * (self.bok_a + self.bok_b)

Ćwiczenie 2 — lista obiektów

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.

Sprawdź wiedzę

1. Czym jest klasa w programowaniu obiektowym?

2. Do czego służy metoda __init__?

3. Po co stosuje się hermetyzację?

Podsumowanie bloku