Esprimere l'ereditarietà dell'interfaccia in linguaggio naturale [duplicato]

1

Nella programmazione orientata agli oggetti, quando estendi una classe stabilisci una relazione is-a tra un nuovo sottotipo e i suoi genitori, ovvero B è un A (alias ereditarietà del codice ). Quando componi una classe con l'aiuto di tipi esistenti, stabilisci una relazione ha-a tra il nuovo tipo composto e i tipi che comprende, cioè B ha una A (alias composizione dell'oggetto ).

In molte lingue (ad es. Java), hai ancora un altro modo di definire i tipi, ovvero tramite ereditarietà dell'interfaccia . Come si esprime questa nozione nel linguaggio naturale quotidiano?

Ad esempio, quando una classe B implementa l'interfaccia A in Java, dici anche che B è un A ? O esprimi questo concetto in modo diverso? Per esempio. B implementa Serizalizable, quindi B è serializzabile (o in altre parole: B ha l'attributo di essere serializzabile ).

Nel fare questa domanda, non sono tanto interessato alle differenze teoriche tra questi concetti OO (per cui argomento ci sono già abbastanza domande) ma piuttosto le differenze tra loro quando li esprimono in linguaggio naturale (per quale argomento c'è non sembra essere ancora disponibile alcuna domanda).

    
posta zepp.lee 24.05.2015 - 17:48
fonte

2 risposte

5

How does one express this notion in natural everyday language?

Per farla breve:

  • l'ereditarietà della classe descrive una famiglia di oggetti. In termini linguistici, pensa a nouns .

Pensa a: veicoli, auto e biciclette.

  • l'ereditarietà dell'interfaccia descrive un insieme di oggetti non correlati, condividendo un comportamento comune. In termini di lingua, pensa a adjectives .

Pensa a: in grado di volare , in grado di eseguire ecc.

    
risposta data 24.05.2015 - 21:47
fonte
3

L'estensione di una classe non è necessariamente "ereditarietà del codice". Se A è una classe base astratta o un'interfaccia, quindi farne una sottoclasse B significa che eredita solo l'interfaccia di A. Se A è concreto, allora B erediterà l'interfaccia e forse un codice, a seconda di ciò che B sceglie di sovrascrivere.

Quindi credo che la risposta corretta alla tua domanda sia che ereditando da un'interfaccia, una classe base concreta o una classe base astratta, tutti generano una relazione "è-a".

Può essere utile cercare il Principio di sostituzione di Liskov, poiché questa è essenzialmente la definizione completa e formale di cosa si suppone che sia una "relazione-è-una".

    
risposta data 24.05.2015 - 18:28
fonte

Leggi altre domande sui tag