La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle."— Transcript della presentazione:

1 Class Design In COMET Elena Balladore

2 Indice Che cos’ è il Class DesignChe 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

3 Che cos’è il Class Design Fase di Class Design: si progettano le information hiding classes e le operazioniinformation hiding classes 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 passivioggetti passivi indice

4 Oggetto passivo Oggetto che non ha un thread di controllo. Contiene delle operazioni che possono essere invocate da altri oggetti, sia attivi che passivi.

5 Information Hiding Class Strutturata in accordo con il concetto di information hiding Può essere acceduta attraverso delle operazioni

6 Design delle Information Hiding Classes Information hiding classes : Divise in categorie secondo stereotipi Documentate attraverso Class Interface Specification

7 Design delle Information Hiding Classes Nel Design le classi sono determinate dal : Problem domain entity classes, interface classes, control classes, application logic classesentity classesinterface classescontrol classesapplication logic classes introdotte nell’analysis model da rivedere nel Design Solution domain software decision classes

8 Design delle Information Hiding Classes  Software decision classes : Determinate nella fase di design Nascondono le decisioni prese dai software designers indice

9 Design delle Information Hiding Classes  Entity classes : Contengono dei dati Nel Design si dividono in: 1. DATA ABSTRACTION CLASSES: contengono strutture dati 2. WRAPPER CLASSES: nascondono i dettagli sulla comunicazione con sistemi esterni (dove sono contenuti i dati)

10 Design delle Information Hiding Classes  Interface classes : interfaccia verso l’ambiente esterno Sono divise in: 1.SYSTEM INTERFACE CLASSES (sistema esterno) 2.USER INTERFACE CLASSES (utente umano) 3.DEVICE INTERFACE CLASSES (I/O)

11 Design delle Information Hiding Classes  Control classes : coordinano un insieme di oggetti che fanno parte di uno use case Sono divise in: 1.STATE-DEPENDENT CLASSES 2.COORDINATOR CLASSES 3.TIMER CLASSES

12 Design delle Information Hiding Classes  Application logic classes : contengono algoritmi e business logic rules relative ad una applicazione specifica Si dividono in: 1.BUSINESS LOGIC CLASSES 2.ALGORITHM CLASSES

13 Design delle operazioni Operazioni determinate mediante Interaction Model Finite State Machine Model Static Model Meglio usare il dynamic model

14 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

15 Design delle operazioni: usando Interaction Model Da interaction diagram A Class diagram messaggio chiamata operazione nome messaggio nome operazione parametri messaggio parametri operazione

16 Design delle operazioni: usando Interaction Model Analysis Model versus Design Model: Analysis model: Enfasi sulle informazioni passate tra gli oggetti Messaggi senza indicazione dei parametri Design model: Specifico le operazioni usando messaggi sincroni Specifico i parametri

17 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

18 Usando Interaction Model: esempio Data Abstraction Class > :CashDispenser Interface > :OperatorInterface > :ATMCash Analysis model: collaboration diagram Cash Added Cash Withdrawl Amount Cash Response

19 Usando Interaction Model: esempio Data Abstraction Class > :CashDispenser Interface > :OperatorInterface > :ATMCash Design model: collaboration diagram addCash (fivesAdded, tensAdded, twentiesAdded) withdrawCash (in CashAmount, out fivesToDispense, out tensToDispense, out twentiesToDispense)

20 Usando Interaction Model: esempio Data Abstraction Class > 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 ulteriori esempi

21 Usando Interaction Model: esempio Data Abstraction Class(2) > :CardReader Interface > :ATMCard > :CustomerInterface Analysis model: collaboration diagram Card Data Card Request Card Input Data

22 Usando Interaction Model: esempio Data Abstraction Class(2) > :CardReader Interface > :ATMCard > :CustomerInterface Design model: collaboration diagram read(out cardData) write(cardData)

23 Usando Interaction Model: esempio Data Abstraction Class(2) > ATMCard - cardNumber:Integer - startDate:Date - expirationDate:Date + write(in cardData) + read(out cardData) Design Model: class diagram

24 Usando Interaction Model: esempio Device Interface Class Interfaccia virtuale che nasconde l’interfaccia reale usata verso il dispositivo di I/O nel mondo esterno Isola dai cambiamenti del mondo reale Nasconde le decisioni prese a livello design di come interagire con uno specifico dispositivo di I/O

25 Usando Interaction Model: esempio Device Interface Class Design delle operazioni: Operazioni per leggere e/o scrivere sul dispositivo Operazioni caratteristiche del device Operazione initialize: per inizializzare il dispositivo e le variabili interne usate dalla classe

26 Usando Interaction Model: esempio Input Device Interface Class > :TripFuel Consumption > :GasTank > :GasTankInterface Analysis model: collaboration diagram Fuel Input Read Fuel Amount Fuel Amount Read Hw/Sw boundary

27 Usando Interaction Model: esempio Input Device Interface Class > :TripFuel Consumption > :GasTank > :GasTankInterface Design model: collaboration diagram read (out fuelInput) Hw/Sw boundary read (out fuelAmount)

28 Usando Interaction Model: esempio Input Device Interface Class > GasTankInterface - fuelLevel: Real + initialize () +read (out fuelAmount) Design Model: class diagram

29 Usando Interaction Model: esempio Output Device Interface Class > :TripSpeed > :TripDisplay Interface > :TripDisplay Analysis model: collaboration diagram Mileage Display Data Hw/Sw boundary > :TripFuel Consumption Average Speed Average Fuel Consumption

30 Usando Interaction Model: esempio Output Device Interface Class > :TripSpeed > :TripDisplay Interface > :TripDisplay Design model: collaboration diagram mileage Display Data Hw/Sw boundary > :TripFuel Consumption displayAvSpeed(speed) displayAvFuelCons (fuelCons)

31 Usando Interaction Model: esempio Output Device Interface Class > TripDisplayInterface -averageSpeed: Real - averageFuelConsumption: Real + initialize () + displayAvSpeed(speed) + displayAvFuelCons(fuelCons) Design Model: class diagram Oltre alle interfacce verso i dispositivi esterni, esistono le interfacce verso l’utente del sistemainterfacce verso l’utente

32 User Interface Class Nasconde i dettagli dell’interfaccia usata verso l’utente Una interfaccia utente è: Una linea di comando gestita da una User Interface Class Una GUI (Graphical User Interface) gestita da più User Interface Classes

33 User Interface Class:esempio > Customer GUI + displayPINWindow(out PIN) + displayWithdrawalWindow(out AccountNum, out amount) + displayTransferWindow(out fromAccountNum, out to Account Num, out amount) + displayQueryWindow(out AccountNum) + displayMenu(out selection) + displayPrompt(out promptText) User Interface Class con le operazioni

34 User Interface Class:esempio Struttura di una Composite User Interface Class > Customer GUI > PIN Window > Menu Window > Withdrawal Window > Query Window > Transfer Window > Prompt Window

35 Usando Interaction Model: esempio Algorithm Class Contiene un algoritmo usato nel dominio applicativo e i dati locali necessari a quest’ultimo Usate nei sistemi real-time e nelle applicazioni scientifiche

36 Usando Interaction Model: esempio Algorithm Class > :TripSpeedTimer > :TripSpeed > :TripDisplay Interface Analysis model: collaboration diagram Average Speed > :MileageReset Button Calculate Reset

37 Usando Interaction Model: esempio Algorithm Class > :TripSpeedTimer > :TripSpeed > :TripDisplay Interface Design model: collaboration diagram display (avSpeed) > :MileageReset Button calculate() reset()

38 Usando Interaction Model: esempio Algorithm Class > TripSpeed -initialDistance: Real - initialTime: Real + reset() + calculate() Design Model: class diagram

39 Usando Interaction Model: esempio Business Logic Class Contiene le business logic rules, cioè delle procedure specifiche legate alla particolare applicazione sviluppata e alle richieste del cliente

40 Usando Interaction Model: esempio Business Logic Class Analysis model: collaboration diagram > :BankTransaction Server > :Withdrawal TransactionManager Withdraw, Confirm, Abort Withdraw Response

41 Usando Interaction Model: esempio Business Logic Class Design model: collaboration diagram > :BankTransaction Server > :Withdrawal TransactionManager withdraw(in accountNum, in amount, out response), confirm(accountNum, amount), abort(accountNum, amount),

42 Interaction Model: esempio Business Logic Class > WithdrawalTransactionManager + initialize( ) + withdraw(in accountNum, in amount, out response) +confirm(accountNum, amount) +abort(accountNum, amount) Design Model: class diagram

43 Design delle operazioni: Usando Finite State Machine Model Uso 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

44 Usando Finite State Machine Model: esempio State-Dependent Class Statechart, eseguito da un oggetto state-dependent, è trasformato in una STATE TRANSITION TABLEoggetto state-dependent STATE TRANSITION TABLE State-Dependent Class : nasconde il contenuto di una state transition table mantiene lo stato corrente di un oggetto

45 State-Dependent object Oggetto che nasconde i dettagli di una Finite State Machine, cioè un oggetto che contiene uno statechart È un’istanza di una state-dependent class

46 State Transition Table È una rappresentazione tabulare di una Finite State Machine Per ogni combinazione (stato, evento, condizioni (opzionali) ) indica il nuovo stato raggiunto e le eventuali azioni da eseguire

47 Usando Finite State Machine Model: esempio State-Dependent Class Operazioni per: accedere alla state transition table processare gli eventi Una operazione per ogni evento oppure Uso di due operazioni prestabilite: processEvent currentState

48 Usando Finite State Machine M.: es. State-Dependent Class > :startCalibration ButtonInterface > :CalibrationControl > :Calibration Constant Analysis model: collaboration diagram Ca1.2: Start, Ca2.2: Stop > :stopCalibration ButtonInterface Ca1.1:Calibration Start Ca2.1:Calibration Stop

49 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

50 Usando Finite State Machine M.: es. State-Dependent Class > :startCalibration ButtonInterface > :CalibrationControl > :Calibration Constant Design model: collaboration diagram start(),stop() > :stopCalibration ButtonInterface processEvent (calibrationStart) processEvent (calibrationStop)

51 Usando Finite State Machine M.: es. State-Dependent Class > CalibrationControl + processEvent(event) + currentState(): State Design Model: class diagram > CalibrationConstant + start() + stop()

52 Design delle operazioni: usando Static Model Utilizzato soprattutto per le entity classes, che contengono delle operazioni standard

53 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

54 Usando Static Model: esempio Database Wrapper Class Da Entity Class A Database AttributiRelazione Operazioni DB Wrapper Class (per accedere agli attributi) Associazioni chiavi esterne (del class diagram) Nel database si devono determinare le chiavi primarie

55 Usando Static Model: esempio Database Wrapper Class Analysis model > DebitCard cardID:String PIN: String startDate: Date expirationDate:Date Status: Integer Limit:Real Total: Real

56 Usando Static Model: esempio Database Wrapper Class Design model > 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

57 Inheritance nel Design Inheritance: 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

58 Inheritance nel Design: Gerarchie di Classi Chiamate anche gerarchie di generalizzazione/specializzazione e gerarchie di inheritance Due approcci per determinare una gerarchia: Top-down Bottom-up

59 Inheritance nel Design: gerarchie di classi Difetti: Inheritance viola il concetto di information hiding Le gerarchie di classi non devono avere troppi livelli

60 Inheritance nel Design: classi astratte Classe astratta: una classe senza istanze Usata 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

61 Inheritance nel Design: aspetti aggiuntivi Polimorfismo: due classi diverse possono avere una operazione con la stessa segnatura, ma una implementazione diversa Binding Dinamico: associazione a run- time di una richiesta di una operazione fornita da un oggetto Binding a compile-time  Binding Dinamico

62 Superclasses and Subclasses:esempio Account #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

63 Abstract Superclasses:esempio Maintenance {abstract} #initialMileage: Real + reset () #check () {abstract} OilChangeMaint -oilMaintMileage: Real=5,000 + check () MajorServiceMaint -majorServiceMaint Mileage: Real=15,000 + check () AirFilterMaint -airMaintMileage: Real=10,000 + check ()

64 Class Interface Specification Definisce: l’interfaccia della Information Hiding Class la specifica delle operazioni fornite dalla classe In particolare: Le informazioni nascoste dalla classe Il tipo della classe Le assunzioni fatte nello specificare la classe I cambiamenti possibili La superclasse Le operazioni ereditate e fornite dalla classe

65 Class Interface Specification:esempio > SensorActuatorRepository + readSensor (in sensorID, out sensorValue) + updateActuator (in actuatorID, in actuatorValue) + updateSensor(in sensorID, in sensorValue) + readActuator (in actuatorID, out actuatorValue) Classe:

66 Class Interface Specification:esempio Classe: 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

67 Class Interface Specification:esempio Operazioni 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 cambiato Postcondizione: il valore del sensore è stato letto Parametri in input: sensorID Parametri in output: sensorValue Operazioni di altre classi usate: nessuna Analogamente per la altre operazioni indice


Scaricare ppt "Class Design In COMET Elena Balladore. Indice Che cos’ è il Class DesignChe cos’ è il Class Design Design delle information hiding classes Design delle."

Presentazioni simili


Annunci Google