class design in comet elena balladore. indice che cos’ è il class designche cos’ è il class...
TRANSCRIPT
![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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/3.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/22.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.us/reader036/viewer/2022062702/5542eb75497959361e8dde4c/html5/thumbnails/35.jpg)
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