Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoMarilena Crippa Modificato 9 anni fa
1
1 Principio di sostituzione Se un oggetto di tipo S può essere sostituito ovunque ci si aspetti un oggetto di tipo T, allora S è una sottoclasse corretta di T Barbara Liskov (1988)
2
Matteo Sacco - Università degli Studi di Brescia2 Asserzioni ed ereditarietà Alle sottoclassi è concesso Aggiungere variabili e/o metodi, rispettando il vincolo semantico: inv sottoclasse → inv classe Ridefinire metodi ereditati, soddisfando i vincoli semantici: post sottoclasse → post classe pre classe → pre sottoclasse
3
Matteo Sacco - Università degli Studi di Brescia3 Il subtyping da Linguaggi di Programmazione (prof. G. Lamperti)
4
Matteo Sacco - Università degli Studi di Brescia4 Caratteristiche della sottoclasse che garantiscono il subtyping Aggiunta di variabili e/o metodi Ridefinizione “compatibile” di metodi ereditati stesso protocollo = numero, ordine e tipo dei parametri formali + tipo del valore di ritorno Controvarianza dei parametri di input Covarianza del parametro di output Assieme al nome del metodo costituisce la signature da Linguaggi di Programmazione (prof. G. Lamperti)
5
Matteo Sacco - Università degli Studi di Brescia5 Controvarianza dei parametri di input I parametri di input del metodo ridefinito nella sottoclasse sono supertipi dei rispettivi parametri del metodo della superclasse Si allarga il tipo
6
Matteo Sacco - Università degli Studi di Brescia6 Covarianza del parametro di output Il parametro di output del metodo ridefinito nella sottoclasse è sottotipo del parametro di uscita del metodo della superclasse Si restringe il tipo
7
Matteo Sacco - Università degli Studi di Brescia7 LP e Ing. del Software B I parametri di input del metodo ridefinito nella sottoclasse sono supertipi dei rispettivi parametri del metodo della superclasse pre classe → pre sottoclasse Il parametro di output del metodo ridefinito nella sottoclasse è sottotipo del parametro di uscita del metodo della superclasse post sottoclasse → post classe
8
Matteo Sacco - Università degli Studi di Brescia8 Esempio da Linguaggi di Programmazione (prof. G. Lamperti) covarianza del parametro di output stesso verso rispetto al subclassing controvarianza del parametro di input: va controcorrente rispetto al subclassing Funziona sia che p referenzi C1 che C2: vale il principio di sostituibilità
9
Matteo Sacco - Università degli Studi di Brescia9 Esempio (2) Caso canonico: p referenzia oggetto di C1 y = p -> m(x) Caso critico: p referenzia oggetto di C2 y = p -> m(x) CC’C si assegna uno studente (val ritornato) ad una persona: ok si ha uno studente come parametro… è prevista una persona: ok (ne è sottotipo) tipi definiti nel metodo m da Linguaggi di Programmazione (prof. G. Lamperti)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.