Musisz zrozumieć to na praktycznych przykładach. Przepisywać stare programy na bardziej Obiektowe. Kilka przykładów, które uważam za dobre:
- Baza pracowników, w których każdy pracownik to obiekt klasy Employee lub klasy dziedziczącej po tej klasie, Inna klasa dla szefa, inna dla programisty itp. Operuj na tych danych w kolekcjach. Obsługuj komendy dodawania, odczytu edycji itp.
- Zwierzęta: Tworzysz abstrakcyjną klasę bazową Animal. Tworzysz klasy dla rzeczywistych zwierząt np. Bird. Pamiętaj, by każde zwierzę miało swoje dane (pola z informacjami). Wykorzystaj polimorfizm tworząc referencję (zmienną typu Animal).
- Wykorzystaj rzecz, którą znasz np. komputer. Zrób dla niego obiekt. Jak wiesz każdy komputer ma różne podzespoły. Jakie klasy możesz zmieścić w programie: Computer (klasa przechowująca dane o podzespołach), CPU (nazwa procesora, taktowanie, cache l1,l2,l3, zastosowane technologie, producent, architektura, socket...) i klasy dla innych podzespołów. Podobnie możesz zrobić z Rowerem (koła, pedały, przerzutki), samochodem (silnik, przeznaczenie, kolor, marka, model...). Może być to również cokolwiek innego.
Programowanie obiektowe to taki pierwszy moment trudności. Później będzie trudniej, ale się przyzwyczaisz, w taki sposób, że to co kiedyś było trudne dziś będzie łatwiejsze. Jak OOP zrozumiesz solidnie, to będzie twój fundament do pisania programów opartych o wzorce projektowe, najlepsze techniki, oraz kod wysokiej jakości.
Pamiętaj, że zrozumienie programowania obiektowego jest niezależne od języka programowania.
Jak nie rozumiesz części przykładu jaką podałem możesz ją tymczasowo pominąć i wrócić gdy zrozumiesz dane zagadnienie.
Nie siedź nad problemem cały czas, często mądre pomysły przyjdą ci wtedy gdy nie myślisz o problemie :)
Specjalnie nazwałem klasy po angielsku, ponieważ tak powinno się robić podczas programowania.