Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class...

35
Class Design In COMET Elena Balladore

Transcript of Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class...

Page 1: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Class Design

In COMET

Elena Balladore

Page 2: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Indice

Che cos’ è il Class Design

Design delle information hiding classes

Design delle operazioni di una classe Inheritance nel Design

• Gerarchia delle classi• Classi astratte

Class Interface Specification

Page 3: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Che cos’è il Class DesignFase di Class Design:

si progettano le information hiding classes e le operazioni

Information hiding: Un oggetto incapsula le decisioni a livello

software design L’interfaccia dell’oggetto rivela solo le

informazioni necessarie a chi usa la classe

Si considerano oggetti passiviindice

Page 4: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Design delle Information Hiding Classes

Information hiding classes:Divise in categorie secondo stereotipiDocumentate attraverso Class Interface

Specification

Page 5: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Design delle Information Hiding Classes

Nel Design le classi sono determinate dal: Problem domain entity classes, interface classes,

control classes, application logic classes

introdotte nell’analysis modelda rivedere nel Design

Solution domainsoftware decision classes

Page 6: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Design delle Information Hiding Classes

Software decision classes:

•Determinate nella fase di design

•Nascondono le decisioni prese dai software designers

indice

Page 7: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Design delle operazioni

Operazioni determinate medianteInteraction ModelFinite State Machine ModelStatic Model

Meglio usare il dynamic model

Page 8: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Design delle operazioni: usando Interaction Model

Quali oggetti invocano le operazioni e quali devono fornirle

Dynamic Interaction Model: Fornisce la DIREZIONE in cui un

oggetto spedisce un messaggio ad un altro oggetto

Page 9: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Design delle operazioni: usando Interaction Model

Da interaction diagram A Class diagram messaggio chiamata operazione

nome messaggio nome operazione

parametri messaggio parametri operazione

Page 10: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Design delle operazioni: usando Interaction Model

Analysis Model versus Design Model:Analysis model:

Enfasi sulle informazioni passate tra gli oggettiMessaggi senza indicazione dei parametri

Design model: Specifico le operazioni usando messaggi sincroniSpecifico i parametri

Page 11: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Interaction Model: esempio Data Abstraction Class

Analysis model: entity class

Design model: data abstraction class

Attributi: decisi nello static model

Operazioni: si considera come accedere ai dati memorizzati nella classe

Page 12: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Interaction Model: esempio Data Abstraction Class

<<device interface>>

:CashDispenser

Interface

<<user interface>>

:OperatorInterface

<<entity>>

:ATMCash

Analysis model: collaboration diagram

Cash

Added

Cash Withdrawl Amount

Cash Response

Page 13: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Interaction Model: esempio Data Abstraction Class

<<device interface>>

:CashDispenser

Interface

<<user interface>>

:OperatorInterface

<<data abstraction>>

:ATMCash

Design model: collaboration diagram

addCash (fivesAdded, tensAdded, twentiesAdded)

withdrawCash (in CashAmount, out fivesToDispense, out tensToDispense, out twentiesToDispense)

Page 14: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Interaction Model: esempio Data Abstraction Class

<<data abstraction>> ATMCash

- cashAvailable: Integer = 0

- fives: Integer = 0

- tens: Integer = 0

- twenties: Integer = 0

+ WithdrawCash (in CashAmount, out fivesToDispense, out tensToDispense, out twentiesToDispense)

+ AddCash (in fivesAdded, in tensAdded, in twentiesAdded)

Design Model: class diagram

Esempio2

Interaction model: ulteriori esempi

Page 15: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Design delle operazioni: Usando Finite State Machine

ModelUso di statechart diagram (oltre a collaboration diagram)Statechart contiene attività e azioni che

diventano operazioni

Per individuare le operazioni si può usare soltanto un collaboration diagram

Page 16: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Finite State Machine Model: esempio

State-Dependent Class

Statechart, eseguito da un oggetto state-dependent, è trasformato in una STATE TRANSITION TABLE

State-Dependent Class: nasconde il contenuto di una state

transition tablemantiene lo stato corrente di un oggetto

Page 17: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Finite State Machine Model: esempio

State-Dependent Class

Operazioni per: accedere alla state transition tableprocessare gli eventi

Una operazione per ogni evento oppureUso di due operazioni prestabilite:

processEvent

currentState

Page 18: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Finite State Machine M.: es. State-Dependent Class

<<device interface>>

:startCalibration ButtonInterface

<<state dependent control>>

:CalibrationControl

<<entity>>

:Calibration Constant

Analysis model: collaboration diagram

Ca1.2: Start, Ca2.2: Stop<<device

interface>>

:stopCalibration ButtonInterface

Ca1.1:Calibration Start

Ca2.1:Calibration Stop

Page 19: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Finite State Machine M.: es. State-Dependent Class

Not Measuring

Measuring Mile

Ca1.1:Calibration Start/Ca1.2:Start

Ca2.1:Calibration Stop/Ca2.2:Stop

Calibration Start/Stop

Analysis model: Statechart dell’oggetto CalibrationControl

Page 20: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Finite State Machine M.: es. State-Dependent Class

<<device interface>>

:startCalibration ButtonInterface

<<state dependent control>>

:CalibrationControl

<<data abstraction>>

:Calibration Constant

Design model: collaboration diagram

start(),stop()<<device interface>>

:stopCalibration ButtonInterface

processEvent (calibrationStart)

processEvent (calibrationStop)

Page 21: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Finite State Machine M.: es. State-Dependent Class

<<state dependent control>> CalibrationControl

+ processEvent(event)

+ currentState(): State

Design Model: class diagram

<<data abstraction>>

CalibrationConstant

+ start()+ stop()

Page 22: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Design delle operazioni: usando Static Model

Utilizzato soprattutto per le entity classes, che contengono delle operazioni standard

Page 23: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Static Model: esempio Database Wrapper Class

Analysis model: entity class

Design:Dati manipolati direttamente dalla classe

Data Abstraction Class

Dati inseriti in un database Database Wrapper Class

Page 24: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Static Model: esempio Database Wrapper Class

Da Entity Class A DatabaseAttributi RelazioneOperazioni DB Wrapper Class(per accedere agli attributi) Associazioni chiavi esterne(del class diagram)

Nel database si devono determinare le chiavi primarie

Page 25: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Static Model: esempio Database Wrapper Class

Analysis model

<<entity>>DebitCard

cardID:StringPIN: StringstartDate: DateexpirationDate:DateStatus: IntegerLimit:RealTotal: Real

Page 26: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Usando Static Model: esempio Database Wrapper Class

Design model

<<database wrapper>>DebitCard

+ create(cardID)+ validate(cardID)+ updatePIN(cardID, PIN)+ checkDailyLimit(cardID, amount)+ updateDailyTotal(cardID, amount)+ updateExpirationDate(cardID, exDate)+ updateCardStatus(cardID, status)+ updateDailyLimit(cardID, newLimit)+ clearTotal(cardID)+ delete(cardID)+ read(in cardID, out PIN, out exDate, out status, out limit, out total)

In the relational database:

DebitCard (cardID, PIN, startDate, exDate,status, limit, total, customerSSN )

indice

Page 27: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Inheritance nel DesignInheritance: meccanismo per condividere e riusare il

codice tra le classi usata quando si progettano due o più

classi simili

Vantaggio: facilita la generazione e la maintenance del

codice

Page 28: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Inheritance nel Design:Gerarchie di Classi

Chiamate anche gerarchie di generalizzazione/specializzazione e gerarchie di inheritance

Due approcci per determinare una gerarchia:Top-downBottom-up

Page 29: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Inheritance nel Design:gerarchie di classi

Difetti:Inheritance viola il concetto di

information hidingLe gerarchie di classi non devono

avere troppi livelli

Page 30: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Inheritance nel Design: classi astratte

Classe astratta:una classe senza istanzeUsata come modello per creare

sottoclassi

Operazione astratta: operazione dichiarata in una classe

astratta, ma non implementata

Una classe astratta deve avere almeno una operazione astratta

Page 31: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Superclasses and Subclasses:esempioAccount

#accountNum: Integer#balance: Real=0+ open(accountNum: Integer)+ credit(amount: Real)+ debit(amount: Real)+ readBalance(): Real+ close()

CheckingAccount- lastDepositAmount = 0

+ readLastDepositAmount() : Real

SavingsAccount-cumulativeInterest: Real = 0-debitCount: Integer = 0+debit(amount: Real)+clearDebitCount()+addInterest(interestRate: Real)+readCumulativeInterest():Real

indice

Page 32: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Class Interface SpecificationDefinisce:l’interfaccia della Information Hiding Class la specifica delle operazioni fornite dalla

classeIn particolare:

Le informazioni nascoste dalla classe Il tipo della classeLe assunzioni fatte nello specificare la classeI cambiamenti possibiliLa superclasseLe operazioni ereditate e fornite dalla classe

Page 33: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Class Interface Specification:esempio

<<data abstraction>>SensorActuatorRepository

+ readSensor (in sensorID, out sensorValue) + updateActuator (in actuatorID, in actuatorValue)+ updateSensor(in sensorID, in sensorValue) + readActuator (in actuatorID, out actuatorValue)

Classe:

Page 34: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Class Interface Specification:esempioClasse: SensorActuatorRepository

Informazioni nascoste: strutture dati per sensori e attuatori

Tipo di classe: Data Abstraction Class

Assunzioni: le operazioni devono essere accedute in modo concorrente

Cambiamenti possibili: attualmente sono considerati solo sensori e attuatori a valori booleani. Sono possibili delle estensioni

Superclassi: nessuna

Page 35: Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle.

Class Interface Specification:esempioOperazioni ereditate: nessuna

Operazioni fornite: readSensor (in sensorID, out sensorValue)

Funzione: dato l’ID di un sensore, ritorna il valore corrente

Precondizione: il valore del sensore è stato aggiornato

Invariante: il valore del sensore non viene cambiatoPostcondizione: il valore del sensore è stato lettoParametri in input: sensorIDParametri in output: sensorValueOperazioni di altre classi usate: nessuna

Analogamente per la altre operazioniindice