• Non ci sono risultati.

Object Oriented Design

N/A
N/A
Protected

Academic year: 2021

Condividi "Object Oriented Design"

Copied!
25
0
0

Testo completo

(1)

A. Ferrari

Object Oriented Design

UML – class diagram

(2)

A. Ferrari

cos’è UML

o è un linguaggio di progettazione, da non confondere con i linguaggi di programmazione (Python, C, C++, Java,…)

o fornisce una serie di diagrammi per rappresentare ogni tipo di modellazione

o alcuni ambienti di programmazione sono in grado di convertire diagrammi UML in codice e viceversa

(3)

A. Ferrari

diagrammi UML

o diagramma dei casi d’uso (use case) o diagramma delle classi (class) o diagramma di sequenza (sequence)

o diagramma di collaborazione (collaboration) o diagramma di stato (statechart)

o diagramma delle attività (activity)

o diagramma dei componenti (component) o diagramma di distribuzione (deployment)

Alberto Ferrari – Informatica

(4)

A. Ferrari

diagramma delle classi

o rappresenta le classi che compongono il sistema, cioè le collezioni di oggetti, ciascuno con il proprio stato e comportamento (attributi ed operazioni)

o specifica, mediante associazioni, le relazioni fra le classi

(5)

A. Ferrari

un esempio

Nome

Attributi (proprietà)

Operazioni (metodi)

Alberto Ferrari – Informatica

(6)

A. Ferrari

classe metodi e attributi

SchedaAnagrafica -nome:String

-cognome:String +getNome():String

+setNome(nome:String):void +getCognome():String

+setCognome(cognome:String):void

public class SchedaAnagrafica { private String nome;

private String cognome;

public String getNome() { return nome;

}

public void setNome(String nome) { this.nome = nome;

}

public String getCognome() { return cognome;

}

public void setCognome(String cognome) { this.cognome = cognome;

}

(7)

A. Ferrari

modificatori

• + public: libero accesso

• # protected: accessibile dalle sottoclassi

• - private: accessibile solo all’interno della classe

• static: accessibili anche senza creare istanze

Alberto Ferrari – Informatica

(8)

A. Ferrari

ereditarietà

(9)

A. Ferrari

classi astratte e metodi astratti

o una classe astratta contiene metodi privi di implementazione

o per questa ragione non può essere istanziata

o il corsivo permette di distinguere le parti astratte da quelle concrete

Alberto Ferrari – Informatica

(10)

A. Ferrari

interfacce

o insieme di operazioni che la classe offre ad altre classi o rappresentata come una classe con specifica

<<interface>>

o non ha attributi ma solo la dichiarazione di metodi

(11)

A. Ferrari

interfaccia: esempio

public interface Pesabile { public int getPeso();

}

Alberto Ferrari – Informatica

(12)

A. Ferrari

ereditarietà multipla

interface MediaReco rder +record:void

VideoRegistrato re

Lett oreDV D interface

MediaPlayer

+play:void +stop:void +pause:void

+fastForward:void +rewind:void

Registrato reD VD

in Java non è ammessa l’ereditarietà multipla (possibile in C++)

le interfacce permettono di ovviare a questo problema:

una classe può ereditare da una sola classe ma

implementare varie interfacce

(13)

A. Ferrari

associazione

o un’associazione rappresenta la possibilità che un’istanza ha di inviare un messaggio ad un’altra istanza

o in UML viene rappresentata con una freccia, in Java viene implementata tipicamente con un reference

Alberto Ferrari – Informatica

(14)

A. Ferrari

associazione: esempio

public class Automobile { private Motore motore;

public void accendi() {

motore.inserisciMiscela();

motore.accendiCandele();

} }

public class Motore {

public void inserisciMiscela() {…};

public void accendiCandele() {…};

(15)

A. Ferrari

dipendenza

o la dipendenza indica che un oggetto di una classe può chiamare i metodi di un oggetto di un'altra

classe pur senza possederne un’istanza

o la classe dipendente presuppone l’esistenza della classe da cui dipende

o non vale il viceversa

o in UML la dipendenza viene rappresentata con una freccia tratteggiata

o in java tipicamente l’oggetto dipendente riceve un’istanza dell’oggetto da cui dipende come

argomento di una chiamata a metodo

Alberto Ferrari – Informatica

(16)

A. Ferrari

aggregazione

o l’aggregazione rappresenta un’associazione uno a molti

o esprime concetto “è parte di ” (part of), che si ha quando un insieme è relazionato con le sue parti

o in UML l’aggregazione viene rappresentato con una freccia con la punta a diamante

(17)

A. Ferrari

esempio di aggregazione

Alberto Ferrari – Informatica

(18)

A. Ferrari

composizione

o una composizione è una relazione uno a molti che implica una forma di esclusività

o è un caso particolare di aggregazione in cui:

o la parte (componente) non può esistere da sola, cioè senza la classe composto

o una componente appartiene ad un solo composto o la distruzione dell’oggetto che rappresenta il “tutto”

provoca la distruzione a catena delle “parti”

o il diamante si disegna pieno

(19)

A. Ferrari

esempio di composizione

Alberto Ferrari – Informatica

(20)

A. Ferrari

aggregazione / composizione

o per distinguere l’aggregazione dalla composizione possiamo chiederci che destino devono avere gli oggetti-parte al

momento che viene distrutto l’oggetto-tutto

o se non ha senso che gli oggetti-parte sopravvivano

all’oggetto-tutto, allora siamo di fronte a una relazione compositiva (la cancellazione del rombo pieno che la rappresenta graficamente richiede la cancellazione del bordo e dell’area interna)

o se ha invece senso che gli oggetti-parte sopravvivano

autonomamente all’oggetto-tutto, allora si ha una relazione aggregativa (la cancellazione del rombo vuoto che la

rappresenta graficamente avviene cancellando il bordo, ma non richiede la cancellazione dell’area interna)

(21)

A. Ferrari

composizione vs aggregazione

Alberto Ferrari – Informatica

(22)
(23)

A. Ferrari

esempio

Alberto Ferrari – Informatica

(24)

A. Ferrari

standard UML

o molteplicità

o 1 esattamente una istanza o N esattamente N istanze o 1..* una o più istanze

o 0..* zero o più istanze

o 1..N una o più istanze (massimo N) o 0..N zero o più istanze (massimo N)

(25)

A. Ferrari

esempio “completo”

Alberto Ferrari – Informatica

Riferimenti

Documenti correlati

“adattamento” rispetto alla fattispecie in esame. Nel senso della successione a titolo particolare cfr. Inve- ce, in senso contrario rispetto alla configurabilità di una

Ciò all’evidente fine di registrare i casi di mediazione valutativa e la statistica delle sovrapponibilità tra le proposte del mediatore e le decisioni finali dei giudizi

f) di morosità nel pagamento dei contributi previsti dal presente decreto. Come si evince chiaramente la lettera f) prevede la cancellazione in caso di morosi- tà nel pagamento

I presupposti per l’iscrizione nelle liste delle Sic oppure nella Centrale rischi della Banca d’Italia sono diversi, essendo differenti le funzioni delle due banche dati..

La presente polizza non copre nessun Sinistro che sia dovuto direttamente o indirettamente a una qualsiasi Condizione medica preesistente di cui l’Assicurato sia a conoscenza

La presente polizza non copre nessun Sinistro che sia dovuto direttamente o indirettamente a una qualsiasi Condizione medica preesistente di cui l’Assicurato sia a conoscenza

L’intero sistema di controllo (vedi Fig. 5-4) utilizzato in (Riviere et al., 1998) può essere, senza ombra di dubbio, una valida base di partenza per questa sezione della tesi,

n un convegno di Medici Veterinari, prima di rispondere alla domanda del titolo e per poter proporre una risposta coerente senza perdere di vista la giusta collocazione della legge