La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Progettazione di software. Pericoli dell’ereditarietà Spesso si usa l’ereditarietà dove non si dovrebbe.

Presentazioni simili


Presentazione sul tema: "Progettazione di software. Pericoli dell’ereditarietà Spesso si usa l’ereditarietà dove non si dovrebbe."— Transcript della presentazione:

1 Progettazione di software

2 Pericoli dell’ereditarietà Spesso si usa l’ereditarietà dove non si dovrebbe

3 Aggregati errati Usare l’ereditarietà dove serve aggregazione –Aereo usa le operazioni di ala, coda, motore… –Aereo è composto da…

4 Gerarchie invertite Dipendente eredita da Dirigente che eredita da MembroConsiglioAmministrazione È il contrario!!!!!!!!!!

5 Confusione tra classe e istanza Panda eredita da Orso e da SpecieProtetta Errato: –un’istanza di Orso è Yoghi –Un’istanza di Panda è Ling-Ling –Un’istanza di SpecieProtetta è Panda Soluzione corretta: un animale ha un attributo specie che nel caso della classe Panda è istanza di SpecieProtetta

6 Applicazione errata di è-un (is-a) Stanza eredita da Parallelepipedo E se ho una stanza cilindrica? Errato: Stanza ha una Forma uguale a Parallelepipedo

7 Conascenza Letteralmente: “essere nati insieme” o “avere destini intrecciati nella propria vita” Due elementi software conascenti derivano da esigenze software correlate A e B sono conascenti se è possibile postulare dei cambiamenti di A che richiederebbero cambiamenti di B (o viceversa)

8 Conascenza – esempio banale int i; … i=7; Le due linee sono conascenti

9 Conascenza di nome Due variabili devono avere lo stesso nome per fare riferimento alla stessa cosa Nell’esempio entrambe le righe usano i Se una sottoclasse usa un attributo di una sovraclasse deve identificarlo col nome dato nella sovraclasse

10 Conascenza di convenzione Più parti sono costruite in base a una convenzione fissata –Esempio: i conti delle persone hanno un id positivo, quelli delle società negativo Nascono ad esempio da costanti nel codice –0:nord 1:sud…

11 Conascenza di algoritmo Una classe usa un certo algoritmo per eseguire una certa operazione basato su certe ipotesi sui dati (input o output)

12 Conascenza temporale Esiste nei sistemi real-time Esempio: il cancello va chiuso 20 secondi dopo essere stato aperto

13 Conascenza di valore Vincoli aritmetici sui valori –Gli angoli di un quadrilatero hanno somma 360 Nasce dalla ridondanza

14 Contronascenza Due cose devono essere diverse int i; int j; È una conascenza dove invece dell’uguale c’è il diverso

15 Conascenza e incapsulamento L’incapsulamento riduce la conascenza Meno conascenza c’è meglio è Quella residua deve essere documentata

16 Manutenibilità Il software può essere mantenuto se: –Si riduce al minimo la conascenza –Tutta la conascenza residua è confinata nell’incapsulamento

17 Domini delle classi di oggetti Le classi non sono tutte uguali 4 domini –Dominio applicativo –Dominio aziendale –Dominio architetturale –Dominio fondazionale

18 Dominio applicativo Classi per riconoscere eventi –BottoneCliccato –TemperaturaTroppoAlta Classi per gestire eventi –RiscaldamentoPazienteIpotermico

19 Dominio aziendale Classi di attributo: catturano le proprietà tipiche di un certo dominio aziendale –Saldo, TemperaturaCorporea Classi di ruolo: derivano dai diversi ruoli che un’entità può avere –Paziente, Cliente Classi di relazione: derivano da associazioni tipiche dei diversi contesti –IntestazioneConto, SupervisionePaziente

20 Dominio architetturale Classi per l’interfaccia utente Classi per la gestione delle basi di dati Classi per la comunicazione di rete

21 Dominio fondazionale Classi fondamentali –Boolean, Char, … Classi strutturali –Vector, Stack, … Classi semantiche –Angolo, Ora, Massa, Linea, Cerchio, …

22 In ordine di riutilizzabilità Nessuno scrive più le ultime, tutti devono farsi le prime In mezzo dipende…

23 Ingombro Misura l’equipaggiamento ausiliario di una classe Conta le classi a cui una classe si deve affidare per funzionare (contando anche quelle a cui fanno riferimento quelle a cui fa riferimento, e così via)

24 Ingombro C eredita da D C contiene un attributo di tipo D C ha un’operazione con un parametro di tipo D C ha una variabile di tipo D C ha un metodo con tipo restituito di tipo D …

25 Ingombro L’ingombro è più basso nelle classi fondamentali e cresce nelle altre Da ridurre il più possibile…

26 Coesione di classe È la misura della corrispondenza reciproca fra le caratteristiche (attributi e metodi) situati nell’interfaccia esterna di una classe Bassa coesione: insieme di caratteristiche slegate Alta coesione: insieme di caratteristiche che insieme contribuiscono a costruire l’astrazione rappresentata dalla classe

27 Violazioni della coesione Coesione a istanza mista Coesione a dominio misto Coesione a ruolo misto –In ordine decrescente di gravità

28 Coesione a istanza mista Ha caratteristiche indefinite per alcuni oggeti della classe –Dipendenti: solo alcuni possono prendere provvigioni –Il metodo emettiPagamentoProvvigioni –Potrebbe emettere un pagamento pari a 0 Orrendo!!!!!!

29 Coesione a dominio misto Contiene un elemento che la ingombra direttamente con una classe estrinseca appartenente a un dominio diverso –Mettere nella classe Real il metodo equivalenteInGradiCelsius

30 Coesione a ruolo misto Contiene un elemento che ingombra la classe con una classe estrinseca appartenente allo stesso dominio –Mettere in persona l’attributo numeroDiCaniPosseduti

31 Conformità di tipo Se S è un sottotipo di T, allora S può essere fornito dovunque ci si aspetti T e la correttezza viene mantenuta –Cerchio sottotipo di Ellisse


Scaricare ppt "Progettazione di software. Pericoli dell’ereditarietà Spesso si usa l’ereditarietà dove non si dovrebbe."

Presentazioni simili


Annunci Google