Confuso sulla definizione di ' astrazione ' in OOP
Su Febbraio 10, 2021 da adminSto cercando di capire la definizione di “astrazione” in OOP.
Mi sono imbattuto in alcune definizioni principali. Sono tutti validi? Uno di loro ha torto? Sono “confuso. (Ho riscritto la definizione con parole mie).
Definizione 1:
Lastrazione è il concetto di prendere un oggetto dal mondo reale e convertirlo in termini di programmazione. Come creare una classe Human
e assegnarla int health
, int age
, String name
, ecc. proprietà e eat()
ecc.
Definizione 2:
Una definizione più generale. Lastrazione è un concetto che ha luogo ovunque in un sistema software in cui “rendere le cose più generali / semplici / astratte” è coinvolto. Alcuni esempi:
-
Una gerarchia di ereditarietà, in cui le classi superiori sono più semplici o più generali e definiscono unimplementazione più generale e astratta. Wh ile le classi inferiori nella gerarchia sono più concrete e definiscono implementazioni più dettagliate.
-
Usare lincapsulamento per nascondere i dettagli di implementazione di una classe da altre classi, rendendo così la classe più “abstract” (più semplice) al mondo del software esterno.
Definizione 3
Unaltra definizione generale: lastrazione è il concetto di spostare lattenzione dai dettagli e dallimplementazione concreta delle cose, ai tipi di cose (es. classi), le operazioni disponibili (cioè i metodi), ecc., rendendo così la programmazione più semplice, più generale e più astratta. (Questo può avvenire ovunque e in qualsiasi contesto nel sistema software). Avviene ad esempio durante lincapsulamento, perché lincapsulamento significa nascondere i dettagli dellimplementazione e mostrare solo i tipi di cose e le loro definizioni più generali e astratte. Un altro esempio potrebbe essere lutilizzo di un oggetto List
in Java. questo oggetto utilizza effettivamente i dettagli di implementazione di un ArrayList
o un LinkedList
, ma queste informazioni vengono astratte utilizzando il nome più generale List
.
Qualcuna di queste definizioni è corretta? (Mi riferisco alla definizione più convenzionale e accettata).
Commenti
- Lastrazione sta definendo un " cosa " come un certo TIPO di cosa (Animale = > Dog) per restringerlo ulteriormente (Dog = > Poodle).
Risposta
Lastrazione è uno dei 3 pilastri della programmazione orientata agli oggetti (OOP). Significa letteralmente percepire unentità in un sistema o contesto da una prospettiva particolare. Eliminiamo i dettagli non necessari e ci concentriamo solo sugli aspetti che sono necessari per quel contesto o sistema in esame.
Ecco qualche buona spiegazione:
Tu come persona hai relazioni diverse in ruoli. Quando sei a scuola, sei uno “Studente” . Quando sei al lavoro, sei un “dipendente” . Quando lavori in un istituto governativo, puoi essere considerato un “Citizen” . Quindi si riduce a cosa in quale contesto stiamo guardando unentità / oggetto. Quindi, se sto modellando un Sistema di gestione delle retribuzioni , ti considererò un Dipendente (PRN, Full Time / Part Time, Designation) . Se sto modellando un Sistema di iscrizione al corso , considererò i tuoi aspetti e le tue caratteristiche come Studente (numero di lista, età, sesso, corso iscritto) . E se sto modellando un Sistema informativo di sicurezza sociale , esaminerò i tuoi dati come un Cittadino (come DOB, sesso, Paese di nascita, ecc.)
Ricorda che lastrazione (concentrarsi sui dettagli necessari) è diversa dallincapsulamento (nascondere i dettagli dal mondo esterno). Incapsulamento significa nascondere i dettagli delloggetto e fornire uninterfaccia decente per le entità nel mondo esterno per interagire con quelloggetto o entità.Ad esempio, se qualcuno vuole conoscere il mio nome, non può accedere direttamente alle mie cellule cerebrali per sapere qual è il mio nome. Invece quella persona chiederà il mio nome. Se un guidatore vuole accelerare un veicolo, allora cè uninterfaccia (pedale dellacceleratore, cambio, ecc.) A tale scopo.
La prima definizione non è molto chiara. Def 2 è buono ma tende a confondere il principiante mentre cerca di collegare lastrazione con lincapsulamento e lereditarietà. Def 3 è la migliore di 3 definizioni in quanto definisce chiaramente cosa sia esattamente Abstraction.
Commenti
- Quindi diresti che ' è come una generalizzazione invece che una specifica?
- @samyismyhero Esatto! Cerchiamo attributi generici e comportamento degli oggetti per lastrazione.
- [Animal = > Dog] è unastrazione. Tu definisci quali possibili parti un " Animale " può avere per creare un " Cane. " (coda, zampe, pelliccia e così via). Quindi, puoi utilizzare la classe " Dog " per definire un barboncino, un pitbull, ecc. Quindi, ' re dichiara le razze canine in base alla classe " Cane " invece di una " Animale. "
Risposta
La definizione 1 non è sicuramente unastrazione. Ciò descrive più da vicino la modellazione .
Le definizioni 2 e 3 descrivono la stessa cosa. Ed entrambe sono descrizioni piuttosto buone di unastrazione.
Commenti
- Questo ' è quello che pensavo !
abstract class Shape
lol!
Risposta
Ciascuna di queste definizioni è bene.
Lastrazione è dove ti concentri solo su quei dettagli che sono importanti per il tuo scopo.
Nel primo caso, tu (al momento) non puoi includere persone reali nel tuo codice; ti concentri su particolari dettagli di una persona che servono al tuo scopo. In un altro programma potrebbe essere necessario concentrarsi su diversi dettagli. Queste sarebbero astrazioni diverse di una persona e ciascuna può essere ugualmente valida nel proprio contesto .
La seconda e la terza definizione continuano questa idea, applicandola alle entità software.
Lascia un commento