OOP non è importante a causa di se stesso, ma per quello che serve con esso.
Qualcosa che riguarda la capacità di astrarre e isolare, raggruppare le cose
insieme terminano di esporre solo le parti che sono necessarie per interagire insieme.
Questa è una tecnica di ingegneria comune chiamata "modularizzazione", che consente di
creare sistemi complessi come l'aggregazione di quelli più semplici, senza prendersene cura
ogni singolo dettaglio ad alto livello e che richiede componenti sostituibili,
anche senza di loro essere esattamente uguali.
Questi "concetti ingegneristici" sono stati tentati di essere mantenuti nel software
sviluppo dal momento in cui il prodotto software stesso era diventato più grande del
"capacità di sviluppatore singolo", che richiede quindi un modo per far funzionare gli sviluppatori
su pezzi indipendenti, e lascia che questi pezzi interagiscano insieme.
Detto questo, questi principi non si trovano necessariamente solo in OOP (è il
la teoria del calcolo è valida, ci sono infiniti metodi possibili
per venire a quei risultati).
OOP è semplicemente un tentativo riuscito di mettere insieme queste cose,
dando a quei termini generali (come moduli, incapsulamento, sostituzione) di più
definizioni precise e concettualizzazione elaborata su quelle definizioni
(modelli) che possono adattarsi ai linguaggi di programmazione.
Pensa prima a OOP non come " lingua " ma come " lessico comune " che
rende gli ingegneri del software avvicinarsi alla progettazione del software.
Il fatto che una determinata lingua abbia o no delle primitive che la applicano direttamente
lessico che garantisce, ad esempio, che una "capsula" non viene aperta inavvertitamente da chi non lo è
dovrebbe farlo è un aspetto secondario del design OOP.
Ecco perché anche un grande progetto C viene spesso "gestito come" OOP, anche se la lingua
in sé non offre alcun supporto diretto.
Il vantaggio di tutto ciò non è riconoscibile fino a quando non rimarrà una dimensione del progetto
la capacità di un singolo sviluppatore di comprendere e tracciare tutto ciò che fa
(in effetti, in quelle situazioni può anche essere visto come "overhead") o in un piccolo
gruppo che sviluppa qualcosa in un breve periodo.
E questo è il motivo principale per cui i juniores hanno studiato l'OOP in termini di "funzionalità linguistica"
spesso lo interpretano male producendo codice progettato male.
Il modo in cui OOP si adatta alle lingue dipende da come interpretano i linguisti
il principio OOP nel proprio costrutto.
Quindi "incapsulamento" in C ++ diventa "membri privati" (e una "capsula" diventa una classe),
la "sostituzione" diventa sovrascrittura delle funzioni virtuali o parametrizzazione / specializzazione del modello ecc.
mentre in D una capsula è un "modulo" (e la sostituzione passa attraverso le classi ecc.), quindi
rendendo certi paradigmi o schemi direttamente disponibili in una determinata lingua e
non in un altro e così via.
Ciò che i reclutatori cercano nel porre la domanda OOP è solo verificare la tua capacità di
progettazione software astratta e intuitiva per grandi progetti e sviluppi futuri.
OOP, per loro è solo un "dizionario", hanno supposto che sia tu che loro conoscete questo
puoi parlare di altre cose più generali o concretizzare in un'implementazione specifica.