Il principio di sostituzione di Liskov si applica anche alle classi che implementano un'interfaccia?

17

LSP afferma che le classi dovrebbero essere sostituibili per le loro classi di base, il che significa che le classi derivate e di base dovrebbero essere equivalenti semanticamente.

Ma LSP si applica anche alle classi che implementano un'interfaccia? In altre parole, se un metodo di interfaccia implementato da una classe è semanticamente diverso da quello che l'utente si aspetta che sia, sarebbe considerato una violazione di LSP?

    
posta user1483278 22.10.2012 - 20:49
fonte

1 risposta

17

if an interface method implemented by a class is semantically different from what user expects it to be, would this be considered as a violation of LSP?

Se l'implementazione è semanticamente diversa dal comportamento documentato attraverso gli invarianti dell'interfaccia e le condizioni pre e post dei suoi metodi, la risposta è "sì", sarebbe una violazione dell'LSP. Il principio stabilisce le regole per l'astrazione e le sue implementazioni, senza richiedere che il lato dell'astrazione sia presente sotto forma di classe.

Tuttavia, se parliamo di cosa gli utenti si aspettano , la risposta sarebbe "non necessariamente": gli utenti hanno diritto ad avere aspettative sbagliate.

    
risposta data 22.10.2012 - 20:57
fonte