Esiste un modo per comunicare o misurare i livelli di astrazione?

0

Sarò il primo a dire che questa domanda è un po '... là fuori. Ma ecco un paio di domande che tengo a mente:

L'astrazione è continua o discreta?

Esiste una singola unità di astrazione?

Ma non sono sicuro che quelle domande siano veramente rispondenti o addirittura rendano davvero senso. La mia risposta ingenua sarebbe qualcosa sulla falsariga di arbitrariamente discreto ma non necessariamente avendo una singola misura unitaria. Ecco cosa intendo ...

prendi un Labrador nero; un'astrazione che potrebbe essere fatta è che un Black Lab è un tipo di animale.

[Animal]<--[Black Lab]

Un Black Lab è anche un tipo di Cane.

[Dog]<--[Black Lab]

Un modo per stabilire un grado di astrazione è confrontando le due astrazioni. Potremmo dire che [Animal] è più astratto di [Dog] rispetto a un Black Lab. In questo modo, anche [Animal] può essere utilizzato come un'astrazione di [Dog] Quindi, potremmo finire con qualcosa di simile

[Animal]<--[Dog]<--[Black Lab]

Con il modello sopra, si potrebbe essere inclini a dire che ci sono due hop di astrazione per passare da [Black Lab] a [Animal] . Ma non puoi dire esattamente a qualcuno che hanno bisogno di un'astrazione di livello e il motivo è che si aspettino che ottengano [Dog] dato che non sono esplicitamente date le opzioni sopra.

Se avessi bisogno di dire a qualcuno in una singola email che avevano bisogno di una classe astratta senza sapere che cos'è questa classe astratta, c'è un modo per comunicare un grado di astrazione tale che potrebbe em> finisci su Cane invece che su Animale? Come nota a margine, in quale area di studio potrebbe rientrare questo tipo di analisi?

    
posta Chad Harrison 21.11.2012 - 20:49
fonte

1 risposta

1

Is abstraction continuous or discrete? Is there a single unit of abstraction?

Considero l'astrazione come una cosa discreta, misurata in "livelli" che possono essere contati solo in base al punto di vista attuale.

Ad esempio, supponiamo che un Animal si trovi all'inizio di una gerarchia di classi.

Se chiamo un metodo che si aspetta un Animal , stai guardando in alto e non hai assolutamente alcun indizio se quello che ti è stato consegnato è in realtà un Dog o un Aardvark . Non dovresti preoccupartene, perché quei dettagli sono nascosti dietro l'astrazione. Quella barriera ti impedisce di misurare più in profondità di Animal . L'astrazione ti consente di sapere che ogni Animal ha un metodo sleep() ma non che è implementato come layDown(); closeEyes() ( Aardvark ) o turnAround(3); layDown(); closeEyes() ( Dog ). Finché il risultato finale è un sonno Animal , questo non dovrebbe essere un impedimento.

Se chiamo un metodo che prevede un BlackLab , sei in una posizione diversa. In virtù del fatto che sai che questa classe eredita Dog e Animal , puoi misurare che ci sono due livelli di astrazione sopra di te, ma sei ancora cieco a qualcosa sotto come sottoclassi MaleBlackLab e FemaleBlackLab .

If I needed to tell someobody in a single email that they needed an abstract class with out knowing what that abstract class is, is there a way to communaticate a degree of abstraction such that they might end up on Dog instead of Animal?

No, perché il tuo scenario sta lasciando cadere suggerimenti non così sottili che l'implementazione è iniziata senza aver completato un progetto che ti spiegasse come apparirà la gerarchia delle classi

Senza quel contesto, le direzioni che daresti ("scrivi una classe BlackLab con due livelli di astrazione sopra di esso") sarebbero ambigue. Le prime diverse possibilità di implementazione che vengono in mente sono queste:

  • Animal / Dog / BlackLab
  • Dog / HuntingDog / BlackLab
  • HuntingDog / Retriever / BlackLab
  • Canine / Dog / BlackLab
  • Dog / BlackDog / BlackLab

Senza una comprensione del tipo di software che stai scrivendo, ognuno di questi potrebbe essere appropriato. Una volta che hai iniziato a risolvere un problema specifico, solo uno diventa la cosa giusta:

  • Se il tuo progetto è per il ricovero per animali locale, che riguarda molti tipi di animali (cani, gatti, ecc.), la prima gerarchia ha molto senso.
  • Per l'American Kennel Club (solo cani), il secondo potrebbe funzionare meglio.
  • Per la North American Gun Dog Association (solo cani da caccia), il terzo funziona.

Ottieni l'immagine. Il contesto è il re.

As a side note, what area of study might this type of analysis fall under?

Questa è un'ingegneria software di base, in particolare il capitolo sulla piena comprensione del problema prima di iniziare a lavorarci. : -)

    
risposta data 21.11.2012 - 23:43
fonte

Leggi altre domande sui tag