𝗔𝗯𝘀𝘁𝗿𝗮𝗰𝘁𝗶𝗼𝗻 𝗶𝗻 𝗢𝗢𝗣: 𝗛𝗶𝗱𝗶𝗻𝗴 𝗖𝗼𝗺𝗽𝗹𝗲𝘅𝗶𝘁𝘆

Guidi un'auto usando alcune semplici azioni. Premi l'acceleratore. Giri il volante. Freni.

Non hai bisogno di sapere come il carburante entri nel motore. Non devi capire come si muovono i pistoni o come cambiano le marce. L'auto ti nasconde questi dettagli. Usi un'interfaccia semplice per controllare una macchina complessa.

Il software funziona allo stesso modo.

Pensa all'invio di un'e-mail. Chiami un unico comando: emailService.send().

Dietro le quinte, accadono molte cose:

Non hai bisogno di vedere questi passaggi. Ti interessa solo che l'e-mail venga inviata.

Se non usassi l'astrazione, il tuo codice apparirebbe così:

Fare questo ogni volta crea problemi. Ogni parte del tuo codice sa troppo. Se cambi il tuo provider di posta elettronica, devi aggiornare ogni singola riga di codice che invia e-mail. Il tuo sistema diventa difficile da modificare.

L'astrazione risolve questo problema. Mostra cosa fa un oggetto, ma nasconde come funziona.

Esponi un'interfaccia semplice. Il chiamante rimane concentrato sul compito. L'implementazione rimane nascosta. Questo mantiene il tuo codice disaccoppiato e facile da mantenere.

Spesso le persone confondono l'Astrazione con l'Incapsulamento.

L'Incapsulamento chiede: Chi può modificare questi dati? Protegge lo stato interno. L'Astrazione chiede: Quali dettagli deve vedere l'utente? Nasconde la complessità.

Lavorano insieme per costruire sistemi migliori.

Successivamente, vedremo l'Ereditarietà. Risponderemo a una domanda: se gli oggetti condividono un comportamento, è necessario scrivere lo stesso codice due volte?

Fonte: https://dev.to/ashay_tiwari_3658168ad5db/abstraction-in-oop-hiding-complexity-without-hiding-capability-1111