cercando di consolidare la comprensione dei principi OOP

-2

Volevo solo un feedback sulle mie definizioni di questi termini.

Astrazione: mostra solo informazioni pertinenti e nasconde i dettagli di implementazione. Interfacce e classi astratte sono esempi di astrazione. Permette a un utente di utilizzare una qualche forma di funzionalità senza conoscere il funzionamento interno. Ad esempio, la classe HashSet fornisce i metodi put () e get () ... Come utente non ho bisogno di sapere come la classe HashSet implementa questi metodi, ho solo bisogno di conoscere i dettagli rilevanti come i nomi dei metodi e i parametri . L'astrazione riduce la complessità complessiva di un sistema software.

Incapsulamento - il processo di associazione dei dati e delle operazioni eseguite su tali dati in una singola unità. Le classi OOP ne sono un buon esempio: tutti i dati e i metodi eseguiti su tali dati sono contenuti all'interno della classe. Inoltre, l'incapsulamento ci consente di nascondere lo stato di un oggetto rendendo privati gli attributi di un oggetto e consentendo all'oggetto stesso di eseguire azioni sugli attributi tramite metodi pubblici. L'incapsulamento aiuta sia con la sicurezza che con la modulazione.

Polymorphism: la capacità di un'entità di assumere più forme diverse, in base al contesto. Esempi di polimorfismo sono il polimorfismo di runtime e tempo di compilazione. Il polimorfismo del runtime viene ottenuto sostituendo il metodo, mentre il polimorfismo del tempo di compilazione viene ottenuto mediante l'overloading del metodo.

Ereditarietà: consente di condividere attributi e funzionalità comuni tra diverse entità. Questo supporta il riutilizzo del codice e riduce la complessità.

    
posta BIGJOHN 18.11.2018 - 13:48
fonte

1 risposta

1

Ti stai perdendo che l'ereditarietà è una forma di polimorfismo. Altri includono composizione e delega, prototipo, digitazione anatra e conformità all'interfaccia. Ti stai concentrando sull'ereditarietà delle sottoclassi nella possibilità di condividere il codice padre ignorando l'eredità ereditaria più potente: permetti di modificare il comportamento del codice senza riscrivere.

Il polimorfismo semplifica il cambiamento del comportamento del codice senza dover cambiare codice funzionante.

L'incapsulamento facilita la lettura del codice. È molto meglio definito come nascondere i dati. Non si tratta di unità o sicurezza. Quando l'unico codice che può manipolare i dati si trova nello stesso posto, è più facile prevedere quali dati saranno e quando. L'incapsulamento ideale garantisce che i dati vengano utilizzati solo per modificare il comportamento. Non come deposito temporaneo prima di inviare gli stessi dati altrove, invariato.

L'astrazione rende le interfacce facili da usare. In realtà non riduce la complessità complessiva del sistema. Riduce la complessità che devi affrontare da qualsiasi punto di vista all'interno del sistema. Il sistema è ancora libero di essere estremamente complesso. Non hai mai dovuto affrontare tutto in una volta in un sistema correttamente astratto.

    
risposta data 18.11.2018 - 14:06
fonte