OOP nie jest ważne ze względu na siebie, ale ze względu na to, co zabiera ze sobą. Coś, co dotyczy zdolności do abstrakcyjnego i izolowania, grupowania rzeczy razem, odsłania tylko te części, które są wymagane do interakcji.
Jest to powszechna technika inżynierii zwana „modularyzacją”, która pozwala tworzyć złożone systemy jako agregację prostszych, bez konieczności dbania o każdy szczegół na wysokim poziomie, i które wymagają wymiany komponentów, nawet bez ich dokładnego podobnie.
Te „koncepcje inżynieryjne” próbowano utrzymać w rozwoju oprogramowania od czasu, gdy sam produkt stał się większy niż „zdolność pojedynczego programisty”, wymagając w ten sposób sposobu zmuszenia programistów do pracy nad niezależnymi elementami i umożliwienia tym elementom współdziałać ze sobą.
To powiedziawszy, zasady te niekoniecznie znajdują się tylko w OOP (jeśli teoria obliczeń jest prawidłowa, istnieją nieskończone możliwości uzyskania takich wyników).
OOP jest po prostu udana próba umieścić te rzeczy razem, dając do tych ogólnych (takich jak moduły, enkapsulacji, podstawienie) bardziej precyzyjne definicje i wyszukanym konceptualizacji o tych definicji (wzorów), które można zmieścić w językach programowania.
Pomyśl o OOP najpierw nie jako „ funkcję językową ”, ale jako „ wspólny leksykon ”, który zmusza inżynierów oprogramowania do projektowania oprogramowania.
Fakt, że dany język ma lub nie ma prymitywów, które bezpośrednio egzekwują ten leksykon, zapewniając - na przykład - że „kapsułka” nie zostanie przypadkowo otwarta przez tego, kto nie powinien tego robić, jest drugorzędnym aspektem projektowania OOP. Dlatego nawet duże projekty C są często „zarządzane jako” OOP, nawet jeśli sam język nie oferuje bezpośredniego wsparcia dla tego.
Zaletą wszystkiego, czego nie można rozpoznać, dopóki rozmiar projektu nie pozostanie w zasięgu pojedynczego dewelopera w zrozumieniu i śledzeniu wszystkiego, co robi (w rzeczywistości w takich sytuacjach może to być nawet postrzegane jako „narzut”) lub w małej grupie rozwijającej coś w krótki okres. I to jest główny powód, dla którego juniorzy, którzy studiowali OOP pod kątem „funkcji językowej”, często źle interpretują go, tworząc źle zaprojektowany kod.
To, w jaki sposób OOP pasuje do języków, zależy od tego, jak projektanci języków interpretują zasadę OOP we własnej konstrukcji.
Tak więc „enkapsulacja” w C ++ staje się „prywatnymi członkami” (a „kapsuła” staje się klasą), „podstawienie” staje się nadpisaniem funkcji wirtualnych lub parametryzacją / specjalizacją szablonu itp., Natomiast w D kapsułka jest „modułem” (i podstawienie idzie poprzez zajęcia itp.), dzięki czemu pewien paradygmat lub wzorzec jest dostępny bezpośrednio w danym języku, a nie w innym itd.
To, czego rekruterzy szukają, zadając pytanie OOP, to po prostu sprawdzić swoją zdolność do abstrakcyjnego i świadomego projektowania oprogramowania dla przyszłych dużych projektów i rozwoju. OOP, dla nich to po prostu „słownik”, który, jak przypuszczali, ty i oni znacie, abyście mogli porozmawiać o innych bardziej ogólnych sprawach lub skonkretyzować je w konkretnej implementacji.