Dobre pytanie, naprawdę dobre. Do obiektowościu spróbuj podejść z tej strony:
Normalnie w programie napisanym strukturalnie masz sobie zmienne. I te zmienne mają jakieś wartości , np . int dlugosc = 5. To wiesz, tu pewnie wszystko ogarniasz. Ale gdy np. chcesz stworzyć sobie w swoim programie jakiś kształt to wtedy zaczyna się zabawa. Normalnie musiałbyć zrobić takie coś: int DlugoscKsztaltu, int SzerokośćKsztaltu, string NazwaKsztaltu itd. żeby opisać ten kształt. Wtedy możesz sobie pomyśleć, hmmm a co jeśli chcę zrobić nowy kształt? No i tutaj możesz tworzyć nowe zmienne albo stworzyć tablicę zmiennych(np. DlugoscKsztaltu[100] na wypadek tworzenia nowych kształtów). Sam widzisz, przy takim czymś w programie zaczyna robić się "syf". W tym momencie, jak rycerz na koniu, przychodzą obiekty. Zamiast DlugoscKsztaltu, robisz klasę "Ksztalt" zawierającą właściwości(zmienne obiektowe) opisujące ten kształt takie jak: int szerokosc, int dlugosc itd. Zamiast porozrzucanych zmiennych, masz taki pojemnik. Traktuj obiekty jak takie pojemniki na zmienne i funkcje, a czasem inne obiekty.