+ All Categories
Home > Documents > UML Diagrammi delle classi Diagrammi degli oggettitullio/IS-1/Dispense_2003/E2.pdf ·...

UML Diagrammi delle classi Diagrammi degli oggettitullio/IS-1/Dispense_2003/E2.pdf ·...

Date post: 18-Mar-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
24
© Renato Conte - UML: CLASSI e OGGETTI - 1 - UML Diagrammi delle classi Class diagrams Diagrammi degli oggetti Object diagrams © Renato Conte - UML: CLASSI e OGGETTI - 2 - Diagramma delle classi E’ un diagramma che illustra una collezione di elementi dichiarativi ( statici ) di un modello come classi e tipi, assieme ai loro contenuti e alle loro relazioni. Serve per individuare gli elementi di un sistema Costruito, perfezionato ed utilizzato durante tutto il processo di sviluppo del sistema Scopo: individua e specifica i concetti del sistema specifica le collaborazioni specifica gli schemi logici dei D.B. Utilizzato dagli analisti, progettisti e dai programmatori © Renato Conte - UML: CLASSI e OGGETTI - 3 - Diagrammi delle classi e degli oggetti Un diagramma delle classi è un grafo composto da classi e relazioni. Un diagramma degli oggetti è un grafo composto da istanze di classi (oggetti) e relazioni; esso è una istanza del diagramma delle classi. © Renato Conte - UML: CLASSI e OGGETTI - 4 - Fasi, modelli e diagrammi Use Case Diagrams Collaboration Diagrams Component Diagrams Deployment Diagrams Object Diagrams Statechart Diagrams Sequence Diagrams Class Diagrams Activity Diagrams Incl. subsystems and packages Design Implementation Analysis Test Requirements Use Case Model Design Model Deployment Model Implem. Model Analysis Model Test Model
Transcript

© Renato Conte - UML: CLASSI e OGGETTI - 1 -

UMLDiagrammi delle classi

Class diagrams

Diagrammi degli oggetti Object diagrams

�������

&RUVR GL ,QJHJQHULD GHO 6RIWZDUH � �

© Renato Conte - UML: CLASSI e OGGETTI - 2 -

Diagramma delle classi

E’ un diagramma che illustra una collezione di elementi dichiarativi (statici) di un modello come classi e tipi, assieme ai lorocontenuti e alle loro relazioni.

Serve per individuare gli elementi di un sistema

Costruito, perfezionato ed utilizzato durante tutto il processo disviluppo del sistema

Scopo:• individua e specifica i concetti del sistema• specifica le collaborazioni• specifica gli schemi logici dei D.B.

Utilizzato dagli analisti, progettisti e dai programmatori

© Renato Conte - UML: CLASSI e OGGETTI - 3 -

Diagrammi delle classi e degli oggetti

Un diagramma delle classi è un grafocomposto da classi e relazioni.

Un diagramma degli oggetti è un grafocomposto da istanze di classi (oggetti) erelazioni; esso è una istanza del diagrammadelle classi.

© Renato Conte - UML: CLASSI e OGGETTI - 4 -

Fasi, modelli e diagrammi Use CaseDiagrams

CollaborationDiagrams

ComponentDiagrams

DeploymentDiagrams

ObjectDiagrams

StatechartDiagrams

SequenceDiagrams

ClassDiagrams

ActivityDiagrams

Incl. subsystemsand packages

Design

Implementation

Analysis

Test

Requirements Use CaseModel

DesignModel

DeploymentModel

Implem.Model

AnalysisModel

TestModel

© Renato Conte - UML: CLASSI e OGGETTI - 5 -

Classe

“A class is the descriptor

for a set of objects with

similar structure, behavior,

and relationships”.

dal manuale di riferimento di UML v.1.5

© Renato Conte - UML: CLASSI e OGGETTI - 6 -

Sintassi di una classe ( esempi 1)

Account

balance: MoneyaccountHolder: StringinterestRate: int

setInterest()setOverdraftLevel()

Attributi

Operazioni

Nome della classe

© Renato Conte - UML: CLASSI e OGGETTI - 7 -

( esempi 2)

# balance: Money# accountHolder: String- interestRate: int = 7- lastAccountID : String

- setInterest(d: Date)+ update()# setOverdraftLevel()+ getBalance():Money

ExceptionsaccessViolationException

Responsibilities-- Keep track of balance

{ abstract, author= Joe, status= tested }

Account «entity»

marcatori

di visibilità

opzionali

definite dall’utente

stereotype

© Renato Conte - UML: CLASSI e OGGETTI - 8 -

( esempi 3)

Boolean

stato: enum {false,true}

Customer

name: Stringtitle: Stringage: IntegerisMale: Boolean

{ title = if isMale then ‘Mr.’ else ‘Ms.’ endif}

{ age >= 18 and age < 66 }

{ name.size < 100 }

constraints

Account

Classe attiva

© Renato Conte - UML: CLASSI e OGGETTI - 9 -

Livello di dettaglio nei diagrammi

Astrazione tecnologica e/oimplementativa

Dettagli tecnologici e/oimplementativi

Diagrammi essenziali Diagrammi

reali

BrevitàGenericità

DettagliSpecificità

Diagrammiad altolivello

Diagrammi espansi

© Renato Conte - UML: CLASSI e OGGETTI - 10 -

Attributi

[visibility] name [multiplicity] [: type]

[= initial-value] [{property-string}]

Operazioni ( implementate da metodi, ... )

[visibility] name [(parameter-list)] [: return-type][{property-string}]

parameter-list [direction] name : type [= default-value]

direction in, out, inout.

Sintassi membri ( in diagrammi espansi o reali )

changeable, addOnly, frozen

default

leaf, query, sequential, guarded, concurrent

© Renato Conte - UML: CLASSI e OGGETTI - 11 -

+ public

- private

# protected

~ package

Marcatori di visibilità (visibility)

© Renato Conte - UML: CLASSI e OGGETTI - 12 -

class-scope - instance-scope

ATM card

cardID: integer

UltimaCardID: integer = 0 PIN: String

dataEmissione: date

scadenza: date

limitePrelievo: integer

stato: statoV {attiva, smarrita, ...}

class-scope(static)

© Renato Conte - UML: CLASSI e OGGETTI - 13 -

Relazioni ( principali ) tra le classi

• Associazioni (association) sono relazioni strutturali

• Generalizzazioni (generalization) sono relazioni diereditarietà.

• Composizione e Aggregazione (composition andaggregation) speciali relazioni strutturali

• Dipendenza (dependency)

• Realizzazioni (realization) una relazione tra unaspecificazione e la sua implementazione

© Renato Conte - UML: CLASSI e OGGETTI - 14 -

Associazioni

© Renato Conte - UML: CLASSI e OGGETTI - 15 -

Associazioni

Company Person1 *employee

employer

works for

Molteplicità

Direzione e nome

ruoli

Molteplicità

© Renato Conte - UML: CLASSI e OGGETTI - 16 -

Molteplicità nelle associazioni ( 1 )

ClasseA ClasseB1..4 *

lower-bound .. upper-bound

Illimitato:

da zero a “molti”

© Renato Conte - UML: CLASSI e OGGETTI - 17 -

Molteplicità nelle associazioni ( 2 )

*supervisor

*****1..*

* worksFor

allocatedTo 0..1

boardMember

0,3..8 *****

Employee

Secretary

Office

Person

Company

Employee Company

Manager

BoardOfDirectors

BoardOfDirectors

*

*

© Renato Conte - UML: CLASSI e OGGETTI - 18 -

Molti-a-uno ( Many-to-one )

• Una società ha molti dipendenti

• Un dipendente può lavorare solo per una società.

• Una società può avere zero dipendenti

• Non è possibile per un dipendente non “dipendere”da una società

* worksForEmployee Company

relazione parziale (zero sottinteso) Sottinteso 1: relazione totale

© Renato Conte - UML: CLASSI e OGGETTI - 19 -

Molti-a-uno ( significato con istanze )

* worksForEmployee Company

Topolino

Paperino

Pippo

Ladri&affini

GambaDiLegno

Investigazioni S.p.a

© Renato Conte - UML: CLASSI e OGGETTI - 20 -

Molti-a-molti ( Many-to-many )

• Una segretaria può lavorare per molti dirigenti

• Un dirigente può avere molte segretarie

• Alcuni dirigenti potrebbero avere nessuna segretaria.

• Una segretaria deve per forza avere almeno undirigente

supervisorSecretary Manager* 1.. *

relazione parzialerelazione totale

© Renato Conte - UML: CLASSI e OGGETTI - 21 -

Uno-a-uno ( One-to-one )

• For each company, there is exactly one board ofdirectors

• A board is the board of only one company

• A company must always have a board

• A board must always be of some company

Company BoardOfDirector

© Renato Conte - UML: CLASSI e OGGETTI - 22 -

Esempio: voli e prenotazioni

– A booking is always for exactly one passenger

• no booking with zero passengers

• a booking could never involve more than onepassenger.

– A Passenger can have ten Bookings

• a passenger could have no bookings at all

– A Flight can have 250 Bookings

– A booking have a cost and a date

© Renato Conte - UML: CLASSI e OGGETTI - 23 -

Voli e prenotazioni: soluzione ?

Passeggero

cognomenome

Volo

numero

Prenotazione

dataPrenotazionecosto

?

© Renato Conte - UML: CLASSI e OGGETTI - 24 -

Classe d ’associazione ( association class )

1..2500..10

Volo

numero

Passeggero

cognomenome

Prenotazione

dataPrenotazionecosto

1..250 0..10Passeggero

cognomenome

Volo

numero

Prenotazione

dataPrenotazionecosto

© Renato Conte - UML: CLASSI e OGGETTI - 25 -

Associazioni qualificate ( qualified associations )

Show0..1

TiketPerformance: datasaleSales

Qualificatore con attributi

© Renato Conte - UML: CLASSI e OGGETTI - 26 -

Associazione ternaria con classe d’associazione

LinguaggioDiProgrammazione

ModuloSW

Programmatore1..10

assegnatoA

utilizzasvilup

pa

toCo

n

conosce 1..*

*

Sviluppo

dataIniziodataFine

1..*

© Renato Conte - UML: CLASSI e OGGETTI - 27 -

Associazioni ricorsive (o riflessive)

Persona

0..1

0..1

1..* operaio

marito

sposata

dirige

capo

moglie

© Renato Conte - UML: CLASSI e OGGETTI - 28 -

Direzionalità nelle associazioni

– Le associazioni sono per default bi-direzionali, o con“ direzione non specificata” per i diagrammi ad altolivello o essenziali.

– E’ possibile limitare la direzione di una associazioneaggiungendo una freccia ad una estremità della linea.

NodoDiAlberoBinarioradice

figlio

0..1

0..2

© Renato Conte - UML: CLASSI e OGGETTI - 29 -

Dipendenze ( dependency )

© Renato Conte - UML: CLASSI e OGGETTI - 30 -

Dipendenze ( dependency )

Una dipendenza mostra che una classe usa un’altraclasse. Un cambiamento nella classe indipendenteinfluirà l’altra.

Money

Account

...accountHolder: StringinterestRate: int

addInterest()setOverdraftLevel()deposit(cash: Money)

© Renato Conte - UML: CLASSI e OGGETTI - 31 -

Generalizzazione

© Renato Conte - UML: CLASSI e OGGETTI - 32 -

Generalizzazione ( specializzazione, ereditarietà ) (1)

“Generalizzazioneimplica sostituibilità”

Parent

Child

superclasse

classe generica

classe derivata

classe specializzata

Una relazione tassonomica tra un elemento più generale ed uno più specifico

© Renato Conte - UML: CLASSI e OGGETTI - 33 -

Specializzazione (2)

– Il discriminatore (discriminator) è una etichetta chedescrive il criterio utilizzato per la specializzazione.

Animal Animal

habitat typeOfFood

HerbivoreCarnivoreLandAnimalAquaticAnimal

© Renato Conte - UML: CLASSI e OGGETTI - 34 -

Specializzazione: stili grafici

Shape

SplineEllipsePolygon

Shape

SplineEllipsePolygon

© Renato Conte - UML: CLASSI e OGGETTI - 35 -

Discriminatori multipli

Animal

habitat

LandAnimalAquaticAnimal

AquaticCarnivore AquaticHerbivore LandCarnivore LandHerbivore

typeOfFood typeOfFood

© Renato Conte - UML: CLASSI e OGGETTI - 36 -

Ereditarietà multipla (1)

Vehicle

WindPoweredVehicle

MotorPoweredVehicle

LandVehicle

WaterVehicle

venuevenuepower

power

SailboatTruck

{overlapping} {overlapping}

© Renato Conte - UML: CLASSI e OGGETTI - 37 -

Ereditarietà multipla (2)

Animal

habitat typeOfFood

HerbivoreCarnivoreLandAnimalAquaticAnimal

AquaticCarnivore AquaticHerbivore LandCarnivore LandHerbivore

© Renato Conte - UML: CLASSI e OGGETTI - 38 -

Classi astratte, tipi, interfacceAbstract classes, Types, Interfaces

«type»SomeType

«interface»SomeFace

{abstract}SomeClass

Le interfacce hanno solo operazioni(Le interface Java possono avere anche attributi)

I tipi non hanno implementazione

Usati per i “built in types” come int.

Le classi astratte non hanno istanze(Le classi astratte pure C++ sono simili alle intefacceJava)

Il nome della classe in corsivo qualifica laclasse astratta

© Renato Conte - UML: CLASSI e OGGETTI - 39 -

Interfacce

GestoreEvento

ActionListener

«interface»

ActionListenerGestoreEvento

actionPerformed()...

realizzazione

actionPerformed()

...

...

© Renato Conte - UML: CLASSI e OGGETTI - 40 -

Interfacce

+create()

+login(UserName, Passwd)

+find(StoreId)

+getPOStotals(POSid)

+updateStoreTotals(Id,Sales)

+get(Item)

-storeId: Integer

-POSlist: List

StoreX

+getPOStotals(POSid)

+updateStoreTotals(Id,Sales)

+get(Item)

<<interface>>

Store

• Una interfaccia (interface) descrive una porzione delcomportamento visibile di un insieme di oggetti

• Una interfaccia è simile aduna classe, solo che nonpossiede attributi d’istanza emetodi implementati

© Renato Conte - UML: CLASSI e OGGETTI - 41 -

Interfacce: notazioni equivalenti

Employee

Person

Cashier

Machine

ATM

Cashier

«interface»Cashier

Withdraw( )

Deposit( )

Machine

ATMEmployee

Person

© Renato Conte - UML: CLASSI e OGGETTI - 42 -

Interfacce: esempio

File

outputStream

inputStream

FileWriter{file must not be locked}

FileReader{file must exist}

dipendenza

© Renato Conte - UML: CLASSI e OGGETTI - 43 -

Classi astratte ( notazioni equivaenti )

Circle Square

{abstract}

Shape

Shape

d: Dimension

draw()

draw() draw()

font corsivo

© Renato Conte - UML: CLASSI e OGGETTI - 44 -

Classi generiche ( template )

TPriority Queue

insert(T)

remove(T)

Print Queue{Print Job}

a realization ( part dependency and part generalization )

© Renato Conte - UML: CLASSI e OGGETTI - 45 -

Classi generiche: diverse realizzazioni

T,k:integerFArray

TAddressList0..k

bind (Address, 24)

FArray<Point,22>

© Renato Conte - UML: CLASSI e OGGETTI - 46 -

Package

Package A

Package B

• Un package è unmeccanismo generale perorganizzare elementi ingruppi omogenei.

• Un packages puòcontenere altri package.

• Dipendenze tra packagesi indicano con unafreccia (vedi figura).

• Vi sono delle regole divisibilità per icomponenti dei package.

© Renato Conte - UML: CLASSI e OGGETTI - 47 -

Package: dipendenze

Banking::CheckingAccount

CheckingAccount

Customer

Banking

«access»

© Renato Conte - UML: CLASSI e OGGETTI - 48 -

Package: dipendenze

Controller

DiagramElements

DomainElements

GraphicsCore

«access»

«access»

«access»

«access»

«access»

© Renato Conte - UML: CLASSI e OGGETTI - 49 -

Package

JavaCompiler

Generalizzazione e dipendenze trapackage.Compiler

Java

© Renato Conte - UML: CLASSI e OGGETTI - 50 -

Visibilità tra package

A

B

C

F

E

D

© Renato Conte - UML: CLASSI e OGGETTI - 51 -

Associazione e generalizzazione: commenti

– Le associazioni descrivono relazioni che esistono traistanze a run time.

• Quando si disegna un diagramma degli oggetti,generato da un diagramma delle classi, ci deve essereun’istanza per entrambe le classi congiunte dallaassociazione.

– Le generalizzazioni descrivono relazioni tra classi neidiagrammi delle classi.

• Queste non appaiono affatto nei diagrammi deglioggetti.

© Renato Conte - UML: CLASSI e OGGETTI - 52 -

Aggregazione e Composizione

© Renato Conte - UML: CLASSI e OGGETTI - 53 -

Aggregazione e Composizione

Polygon

GraphicsBundle

colortexture

Point

aggregation

composition

Una speciale forma di associazione che specifica una relazione tra la parteintera (aggregato) ed i suoi componenti (parti)

© Renato Conte - UML: CLASSI e OGGETTI - 54 -

Aggregazione e Composizione (2)

Polygon PointContains

{ordered}

3..∗*

GraphicsBundle

colortexturedensity

1

-bundle

+vertex

© Renato Conte - UML: CLASSI e OGGETTI - 55 -

Aggregazione (Aggregation)

isPartOf

1..*CittàItinerario

*

ParoleTesto1..**

© Renato Conte - UML: CLASSI e OGGETTI - 56 -

– Una composizione è una forma forte di aggregazione

• Se l’aggregato viene distrutto, anche le sue partivengono distrutte

Composizione (Composition)

* RoomBuilding

EmployeeEmployeeaddress: Address

AddressstreetmunicipalityregioncountrypostalCodeDue alternative per ”Address”

© Renato Conte - UML: CLASSI e OGGETTI - 57 -

Composizione: alcune notazioni equivalenti

Window

scrollbar[2]:Slidertitle: Headerbody: Panel

Window

scrollbar: Slider

title: Header

body: Panel

2

1

1

Window

PanelHeaderSlider

1 12

© Renato Conte - UML: CLASSI e OGGETTI - 58 -

Una gerarchia di aggregazioni (... o composizioni?)

*

RuoteTransmissioneMotoreTelaio

CarrozzeriaChassis

Veicolo

© Renato Conte - UML: CLASSI e OGGETTI - 59 -

Quando usare una aggregazione od una composizione

• Come regola generale, usa associazione è unaaggregazione/composizione se è vero che:

– si può stabilire

• le parti sono “ pezzi” dell’aggregato

• oppure l’aggregato è “ composto” di parti

– quando qualcosa che possiede o controlla l’aggregato,allora controlla anche le sue parti

• Si tratta di una aggregazione se le parti possono esistereanche se l’aggregato viene a mancare

• Si tratta di una composizione se le parti cessano di esisterequando l’aggregato viene distrutto

© Renato Conte - UML: CLASSI e OGGETTI - 60 -

Propagazione

– Un meccanismo dove un’operazione su un aggregato èimplementata facendo eseguire quella operazione sulle sue parti

– Allo stesso tempo, le proprietà delle parti si propagano spessoindietro verso l’aggregato

– La propagazione sta all’aggregazione come l’ereditarietà staalla sua generalizzazione.

• La maggior differenza è:– l’ereditarietà è un meccanismo implicito

– la propagazione deve essere programmata quando richiesto

3..*LineSegmentPolygon

aggregato parti

© Renato Conte - UML: CLASSI e OGGETTI - 61 -

Composizione e classi annidate: differenze

DeclaringClass

NestedClass

CompositeClass

PartClass

© Renato Conte - UML: CLASSI e OGGETTI - 62 -

Diagramma degli oggetti

© Renato Conte - UML: CLASSI e OGGETTI - 63 -

Object Diagram or Instance Diagram

An object diagram is a graph of instances,including objects and data values.

A static object diagram is an instance of a classdiagram; it shows a snapshot of the detailedstate of a system at a point in time.

The use of object diagrams is fairly limited,mainly to show examples of data structures.

dal manuale di riferimento di UML v.1.5

© Renato Conte - UML: CLASSI e OGGETTI - 64 -

Istanze o oggetti (1)

triangle: Polygon

center : Point = (2,2)vertices : Point* = ((0,0), (4, 0), (2,4))borderColor : Color = blackfillColor : Color = white

triangle: Polygon

triangle

: Polygon

© Renato Conte - UML: CLASSI e OGGETTI - 65 -

Istanze o oggetti (2)

attendee: Person

Istanza con nome

: Card

multiObject

steve : Person

shoeSize = 42

Attributi con valore

: Frame

Istanza anonima attiva e passiva

: Frame

© Renato Conte - UML: CLASSI e OGGETTI - 66 -

Charlie / Parent Charlie / Parent : Person

Istanze e ruoli (notazione standard?)

instanceName / ClassifierRoleName [: ClassifierName ]

PersonParent

© Renato Conte - UML: CLASSI e OGGETTI - 67 -

Diagramma degli oggetti

Un link è una istanza di una associazione (nello stesso modo incui affermiamo che un oggetto è una istanza di una classe)

Carla : Employee

Ali : Employee

Wayne: EmployeeOOCorp : Company OOCorp's Board

UML inc's BoardUML inc : Company

Pat: Employee

Terry : Employee

© Renato Conte - UML: CLASSI e OGGETTI - 68 -

Diagramma degli oggetti ...

: Corso: Valutazione: Studente

: Valutazione

: Studente : Valutazione

: Valutazione

: Valutazione

pippo: Studente

nome = ”Pippo”

paperino : Studente

nome = ”Paperino”

primaV : Valutazione

voto = 30

programmazione: Corso

© Renato Conte - UML: CLASSI e OGGETTI - 69 -

... relativo diagramma delle classi

* *Studente

cognomenome

Corso

codice

Valutazione

datavoto

© Renato Conte - UML: CLASSI e OGGETTI - 70 -

Esempio diagramma degli oggetti con aggregazione

Joe : Person Jill : Person

: Family

husband wife

© Renato Conte - UML: CLASSI e OGGETTI - 71 -

Esempi riassuntivi

© Renato Conte - UML: CLASSI e OGGETTI - 72 -

Flight_X Person

pilot

FlightAttendant

crew

0..*

1..*

Persone e voli

© Renato Conte - UML: CLASSI e OGGETTI - 73 -

MatrimonioPerson

nameplaceOfBirthdateOfBirthplaceOfDeathdateOfDeath

Union

placeOfMarriagedateOfMarriagedateOfDivorce

parents0..1

child

*

child*** malePartner* 0..1child

*

femalePartner 0..1

Woman Man

*{ AND }

© Renato Conte - UML: CLASSI e OGGETTI - 74 -

Organismo

Organismo Apparato

{Sistema} Organo Tessuto Cellula

Muscolare

GhiandolareStomaco

Fegato

Polmoni

Digerente

Respiratorio

Animale

Vegetale

Circolatorio

Cuore

© Renato Conte - UML: CLASSI e OGGETTI - 75 -

Biblioteca

LettoreOccasionale

Autorenome : string

Librotitolo : string

HaScritto

AbbonatonTessera : int

HaPrenotatodal : Data

prenotazione()

HaPrenotato

1..*

HaInPrestitodal : Data

VolumeFisico copiaCorrisp

Lettorenome : string

0..1

HaInPrestito

HaLettodal : Dataal : Data

HaLetto

0..1

*

*

*

*

* *

1..*

© Renato Conte - UML: CLASSI e OGGETTI - 76 -

Sistema universitario: registrazioni

© Renato Conte - UML: CLASSI e OGGETTI - 77 -

Sistema universitario: use case

Student

Register for courses

Maintain curriculum

Registrar

Select courses to teach

Professor

© Renato Conte - UML: CLASSI e OGGETTI - 78 -

Sistema di registrazione universitario (vari package)

UniversityArtifacts People

Databasedipendenze

© Renato Conte - UML: CLASSI e OGGETTI - 79 -

Sist. di registrazione universitario: Data Base

TransactionManager

+ saveC ourse()

DBCourse

+ saveC ourse()1

DBS tudent

DBProfessordipendenze

© Renato Conte - UML: CLASSI e OGGETTI - 80 -

Sist. di registrazione universitario: People

Course

- name- program- location

+ addStudent()+ addProfessor()+ isFull() : return

People- name- phone- address- IDNumber

4

3..10

registersFor

4

1 teachesStudent

- major- gradYear

Professor- tenureStaus

<<UniversityArtifacts>>

© Renato Conte - UML: CLASSI e OGGETTI - 81 -

Sist. di registrazione universitario: UniversityArtifacts

RegistrationUser

- name- phone- address...

(from People)

CourseOffering- ddaysOffered- timeOfDay- location

+ addStudent()...

3..10

4

3..10

4registersFor

1

4

1

4

teaches

CourseMaintenanceForm

+ verifyID()+ untitled()+ setID()+ createCourse()+ setCourseInfo()...

(from Interfaces)Add/DropForm(from Interfaces)

CourseSelectionForm(from Interfaces)

RegistrationForm(from Interfaces)

NewCourseForm

+ Set name()+ Set description()+ Set time and day()...

(from Interfaces)

Curriculum

Course- name : CString- description : CString- creditHours : short- timeOfDay- location

+ create()+ getCourseInfo()+ save()+ getCourseNumber()+ getName()+ getDescription()+ getTimeOfDay()...

1..*

1

1

1

111

+primary 41..41..4 *

2

+alternate

2

1

1

1

1

1

1..n

1

1..n

*

© Renato Conte - UML: CLASSI e OGGETTI - 82 -

Sistema bancomat (ATM)

© Renato Conte - UML: CLASSI e OGGETTI - 83 -

Use case sistema bancomat (ATM) - alto livello -

ListaMovimentio Saldo

PrelievoContanti

Validazione PIN

Cliente ATM

TrasferimentoFondi

Aggiungi Contante

Shutdown

Startup

<<include>>

<<include>>

operatore ATM

ATM Banking system

<<include>>

© Renato Conte - UML: CLASSI e OGGETTI - 84 -

Banking System

«entity»ATM info

«entity»Bank

gestisce

«entity»Cliente

«entity»ATM card

ha

1..*

«entity»Conto corrente

possiede

1..*

gestisce

possiede

0..*1..*

1..*

«entity»Transazione

identifica

*

*

1,2modifica

Validaz.PIN

Prelievo

Estratto conto

Trasfer. conto

accede a

*

1..*

© Renato Conte - UML: CLASSI e OGGETTI - 85 -

Dettagli per la classe ATM card (soli attributi )

«entity»ATM card

cardID: StringPIN: StringdataEmissione: datescadenza: datelimitePrelievo: integerstato: statoV {attiva, smarrita, ...}

© Renato Conte - UML: CLASSI e OGGETTI - 86 -

Struttura dati “Grafo”

© Renato Conte - UML: CLASSI e OGGETTI - 87 -

Studio della struttura dati “Grafo” (1)

A

F

B

D E

C

Grafo: schema dal punto di vista logico

Grafo

Arco

Vertice

ArrivaA

ParteDa

*

*

*

*

© Renato Conte - UML: CLASSI e OGGETTI - 88 -

Studio della struttura dati “Grafo” (2)

Grafo: una soluzione fisica

Grafo ListaDiAdiacenza

A

B

C

E

D

F

&C

&D

&C &F

&A

&B

ListaDiAdiacenza

CellaVertice

CellaArco

*

*

0..1

0..1

© Renato Conte - UML: CLASSI e OGGETTI - 89 -

Design pattern iteratoretratto dal testo

“Design Patterns”: Gamma, Helm, johnson, Vlissides

da un reverse engineeringricavato dal codice associato al testo

© Renato Conte - UML: CLASSI e OGGETTI - 90 -

Design pattern iteratore (da un reverse engineering)

bool Coord

List

Iterator

ListIteratorReverseListIterator

SkipList

SkipListIterator

AbstractList IteratorPtrPrintNEmployees

(Iterator< Employee* >)

(ListTraverser< Employee* >)

(List< Employee* >)

ListTraverser

Item

(ListIterator< Item >)

1-_iterator

FilteringListTraverser

1 -_iterator

Item

ItemItem

Item

Item

ItemItem

Item

Item

Item

© Renato Conte - UML: CLASSI e OGGETTI - 91 -

Design pattern iteratore (particolare)

Iterator

Iterator() : IteratorFirst() : voidNext() : voidIsDone() : boolCurrentItem() : Item

ListIterator_current : long

ListIterator(aList : const List*) : ListIteratorFirst() : voidNext() : voidIsDone() : boolCurrentItem() : Item

Item

ReverseListIterator

ReverseListIterator(aList : const List*) : ReverseListIteratorFirst() : voidNext() : voidIsDone() : boolCurrentItem() : Item

SkipListIterator

SkipListIterator(aList : const List*) : SkipListIteratorFirst() : voidNext() : voidIsDone() : boolCurrentItem() : Item

(Iterator< Employee* >)Item

Item

Item

Item

© Renato Conte - UML: CLASSI e OGGETTI - 92 -

Design pattern iteratore (codici C++)

template <class Item>class ListIterator : public Iterator<Item>{public: ListIterator(const List<Item>* aList); virtual void First(); virtual void Next(); virtual bool IsDone() const; virtual Item CurrentItem() const;

private: const List<Item>* _list; int _current;};

template <class Item>class Iterator {public: virtual void First() = 0; virtual void Next() = 0; virtual bool IsDone() const = 0; virtual Item CurrentItem() const = 0;protected: Iterator();};

© Renato Conte - UML: CLASSI e OGGETTI - 93 -

Riassunto delle relazioni

© Renato Conte - UML: CLASSI e OGGETTI - 94 -

Construct

Composizione eAggregazione

Composition andAggregation

Generalizzazione

Generalization

Dipendenza

Dependency

Realizzazione

Realization

Associazione

Association

Annidamento

Nesting

descrizione

Una speciale forma di associazioneche specifica una relazione tra laparte intera (aggregato) ed i suoi

componenti (parti)

Una relazione tra una specificazione ela sua implementazione

Una relazione tassonomica tra un elementopiù generale ed uno più specifico

Una relazione tra due elementi, nei quali ilcambiamento nell’elemento indipendente

può influire nell’elemento dipendente

Una relazione tra due o più classificatori cheimplica una connessione tra le loro istanze

Una relazione tra due o più classi: all’interno diuna classe vengono dichiarate altre classi

sintassi

© Renato Conte - UML: CLASSI e OGGETTI - 95 -

Bibliografia

Grady Booch, James Rumbaugh, Ivar Jacobson.The Unified Modeling Language User Guide, AddisonWesley , (1999).

Grady Booch, James Rumbaugh, Ivar JacobsonThe Unified Modeling Language Reference Manual ,Addison Wesley, (1999).

Ivar Jacobson, Grady Booch, James RumbaughThe Unified Software Development Process,Addison Wesley, (1999).

© Renato Conte - UML: CLASSI e OGGETTI - 96 -

Riferimenti nel Web

OMG UML - OMG UML - Reference manual UML 1.5www.www.omgomg.org/.org/umluml//

UML: tool, demo,docwww.rational.comwww.rational.com

UML: Tutorial e link:www.kobryn.com


Recommended