
Inżynieria Oprogramowania W Ujęciu Obiektowym, znana również jako Programowanie Obiektowe (OOP), to sposób myślenia o tworzeniu programów komputerowych.
Zamiast traktować program jako długą listę instrukcji do wykonania, OOP widzi go jako zbiór obiektów. Obiekty te są jak małe, samodzielne jednostki, które współpracują ze sobą, aby wykonać zadanie.
Wyobraź sobie program, który steruje samochodem. W podejściu obiektowym, możemy mieć obiekt 'Samochód'. Ten obiekt ma swoje właściwości (np. kolor, prędkość, stan paliwa) i metody (czyli czynności, które może wykonać, np. przyspiesz, hamuj, włącz światła).
Must Read
Przejdźmy przez kluczowe pojęcia:
1. Klasa (Class)
Klasa to jak szablon lub plan dla obiektów. Definiuje, jakie właściwości i metody będą miały obiekty tego typu. Na przykład, klasa 'Samochód' opisuje, że każdy samochód będzie miał kolor i prędkość, oraz że będzie mógł przyspieszać.
Przykład: Klasa 'Pies' może mieć właściwości takie jak 'rasa' i 'wiek' oraz metody 'szczekaj()' i 'machajOgonem()'.

2. Obiekt (Object)
Obiekt to konkretna instancja klasy. To jest rzeczywisty element, który tworzymy na podstawie planu. Jeśli mamy klasę 'Samochód', możemy stworzyć dwa obiekty: 'mójCzerwonySamochod' i 'sasiadaNiebieskiSamochod'. Każdy z nich jest obiektem klasy 'Samochód', ale ma inne wartości właściwości (czerwony vs niebieski).
Przykład: 'mójPies' jest obiektem klasy 'Pies'. Ma konkretną rasę (np. 'Labrador') i wiek (np. 3 lata).
3. Hermetyzacja (Encapsulation)

Hermetyzacja to łączenie danych (właściwości) i metod (czynności) w jednym obiekcie. Ukrywa ona wewnętrzne szczegóły obiektu przed światem zewnętrznym. Programista używający obiektu widzi tylko to, co jest mu potrzebne, a jak obiekt działa w środku, jest jego sprawą. To sprawia, że kod jest bardziej uporządkowany i łatwiejszy do zarządzania.
Przykład: Kiedy używasz pilota do telewizora, nie musisz wiedzieć, jak dokładnie działa elektronika w środku. Po prostu naciskasz przycisk 'volume up', a telewizor głośniej gra. Obiekt 'Pilot' ukrywa skomplikowane mechanizmy.
4. Abstrakcja (Abstraction)
Abstrakcja polega na przedstawianiu tylko istotnych cech obiektu i ignorowaniu niepotrzebnych szczegółów. Koncentrujemy się na tym, co obiekt robi, a nie jak to robi. Pozwala to tworzyć bardziej ogólne i łatwiejsze do zrozumienia modele.

Przykład: Kiedy myślisz o 'pojeździe', myślisz o jego zdolności do poruszania się, a nie o szczegółach silnika czy skrzyni biegów.
5. Dziedziczenie (Inheritance)
Dziedziczenie pozwala tworzyć nowe klasy na podstawie istniejących. Nowa klasa (klasa pochodna) dziedziczy właściwości i metody klasy istniejącej (klasy bazowej). Dzięki temu unikamy powtarzania kodu.
Przykład: Klasa 'SamochodElektryczny' może dziedziczyć po klasie 'Samochod'. Będzie miała wszystko, co ma zwykły samochód, ale może też mieć dodatkowe właściwości, jak np. 'pojemnoscBaterii'.

6. Polimorfizm (Polymorphism)
Polimorfizm oznacza "wiele form". Pozwala obiektom różnych klas odpowiadać na to samo wywołanie metody w sposób specyficzny dla siebie. Ten sam komunikat może wywołać różne zachowania.
Przykład: Wyobraź sobie, że masz obiekty 'Pies' i 'Kot'. Oba mają metodę 'wydajDzwiek()'. Kiedy wywołasz tę metodę na obiekcie 'Pies', usłyszysz "hau hau". Kiedy wywołasz ją na obiekcie 'Kot', usłyszysz "miau". To polimorfizm.
Programowanie obiektowe pomaga tworzyć programy, które są bardziej modułowe, elastyczne i łatwiejsze do utrzymania. Jest to fundamentalna koncepcja w nowoczesnym tworzeniu oprogramowania.