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

Slides:



Advertisements
Presentazioni simili
Il paradigma Object Oriented
Advertisements

Programmazione ad oggetti
Recupero debito quarto anno Secondo incontro
Progettazione concettuale
L’Informatica dal Problema alla Soluzione
Una Introduzione alle Basi di Dati
Java: programmazione concorrente con condivisione di memoria
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
Informatica Generale Marzia Buscemi
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Lezione 7 IL MERCATO DEL LAVORO
Il problema del minimo albero ricoprente in un grafo con archi privati.
O biettivo dell I mpresa E' un problema non banale a)diversi tipi d'impresa: dal piccolo artigiano alla multinazionale b)possibili conflitti d'interesse:
Il problema del minimo albero ricoprente in un grafo con archi privati
Il problema del dizionario
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
STATISTICA a.a METODO DEI MINIMI QUADRATI REGRESSIONE
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Modelli simulativi per le Scienze Cognitive Paolo Bouquet (Università di Trento) Marco Casarotti (Università di Padova)
CORSO DI ECONOMIA POLITICA MACROECONOMIA Docente: Prof.ssa M. Bevolo
memoria gestita staticamente:
1 LINUX: struttura generale The layers of a UNIX system. User Interface.
Progettazione di una base di dati
Lezione 17 maggio 2007 Parametri da linea di comando FILE Strutture (introduzione)
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
Lezione 13 Equazione di Klein-Gordon Equazione di Dirac (prima parte)
Introduzione alla modellazione di sistemi interattivi
Da Problema a Programmazione
Analisi (Analista) Progettazione (Progettista) Sviluppo o Traduzione (Sviluppatore) Documentazione.
LA PROGETTAZIONE DELLE BASI DI DATI
Introduzione alla programmazione Object Oriented
IPOTESI DI LAVORO GRUPPO n° 3: LEO, RIBATTEZZATO, ROSSI, SCIANGUETTA
Prof. Cerulli – Dott.ssa Gentili
Massimo Comun Divisore
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Commenti all’esempio del treno Nell’esempio del treno si è iniziato dalle attività generiche che tipicamente servono per portare a termine i compiti iniziali.
Esercitazioni di Ingegneria del Software con UML
Oggetti in C# Lezione 1 Classi ed istanze Oggetti in C# - Lezione 1.
La modellazione degli oggetti
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 1 Cicli ed asserzioni Corso di Informatica 2 a.a. 2003/04 Lezione 1.
Il Sistema Operativo Il Sistema Operativo è costituito dall’insieme dei programmi necessari per far funzionare tutto l’hardware del calcolatore e per nascondere.
Modellazione dei Dati Fabio Scanu a.s. 2012/2013.
Lezione 1 Panoramica sui paradigmi di programmazione
Incapsulamento e information hiding
Programmazione ad oggetti
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Diagramma delle Classi
Calcolo letterale.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Ordinamento in tempo lineare Il limite inferiore Ω(n log n) vale per tutti gli algoritmi di ordinamento generali, ossia per algoritmi che non fanno alcuna.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Ingegneria del software Modulo 2 -Il software come prodotto Unità didattica 2 -I costi del software Ernesto Damiani Università degli Studi di Milano Lezione.
Esercitazione del 9 marzo 2007 Ereditarieta’. Richiami Definire sottoclassi (ereditarieta’) Overriding Specificatori di accesso (private, protected) Principio.
Per un nuovo orientamento nella progettazione dei linguaggi di programmazione Tesi di Laurea di: RICCARDO SOLMI Università degli Studi di Bologna Facoltà.
Eprogram informatica V anno.
NORMALIZZAZIONE ESERCIZI. INTRODUZIONE La modellazione E-R ci ha consentito di descrivere schemi relazionali Lo strumento base per la modellizzazione.
CONTROLLO di GESTIONE Capitoli 2 & 3 A.A. 2013/2014 Prof. Izzo.
L’analisi di regressione e correlazione Prof. Luigi Piemontese.
Normalizzazione. Introduzione Nell’organizzazione tradizionale degli archivi, si verificano alcuni problemi, quali: Ridondanza dei dati (gli stessi dati.
MACROECONOMIA - Economia aperta e bilancia dei pagamenti La bilancia dei pagamenti registra tutte le transazioni economiche avvenute in determinato periodo.
Proprietà macromolecolari Il calcolo delle proprietà macromolecolari implica l’utilizzo della statistica della catena polimerica in termini di distanze.
 Ogni processo che deve essere eseguito da un sistema di elaborazione, deve essere caricato e risiedere almeno parzialmente nella memoria centrale 
Introduzione alle Classi e agli Oggetti in Java 1.
Algoritmi Avanzati a.a.2013/2014 Prof.ssa Rossella Petreschi Albero ricoprente di costo minimo Lezione n°12.
Transcript della presentazione:

Progettazione di software

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

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

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

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

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

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)

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

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

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…

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

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

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

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

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

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

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

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

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

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

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

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

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)

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 …

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

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

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

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!!!!!!

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

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

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