Uno degli eventi che mi hanno più aperto gli occhi è stato l'apprendimento di Modellazione basata sul colore . Ha totalmente trasformato il mio approccio alla progettazione di sistemi.
L'idea chiave è che ci sono quattro archetipi nella progettazione orientata agli oggetti:
-
Intervallo di Momento rappresenta un evento o un intervallo di tempo. Ad esempio, la richiesta di un prestito è un momento in cui l'intero processo dall'applicazione alla chiusura del prestito sarebbe un intervallo
-
Il ruolo rappresenta i partecipanti in un intervallo di momenti. Attaccando con il prestito, un candidato sarebbe un ruolo, il funzionario di prestito sarebbe un altro, i sottoscrittori sarebbero un terzo.
-
Descrittore rappresenta un'etichetta o una "classe" di oggetti. Ad esempio, potresti avere un descrittore per prestiti immobiliari rispetto a prestiti auto, ma i prestiti stessi sono fondamentalmente gli stessi. Il descrittore può anche fungere da fabbrica. Di solito uso descrittori in cui le persone normalmente usano Enum.
- Persona / Luogo / Cosa rappresenta un oggetto fisico, tangibile. Michael Brown è una persona, Global Corp. Headquarters è un luogo, Dell Precision Laptop con numero di serie 12345 è una cosa. (Nota: il mio computer portatile Dell Precision specifico potrebbe avere un descrittore collegato ad esso nel sistema E-commerce di Dell).
Questi sono i 4 elementi di base di un modello O-O. Ed ecco come si riferisce alla tua domanda.
Il primissimo archetipo è il Moment-Interval. Se si richiama una delle linee guida per la programmazione di base orientata agli oggetti "Gli oggetti sono nomi, i metodi sono verbi" si potrebbe essere tentati di rappresentare l'applicazione di prestito come metodo "ApplyForLoan" sull'oggetto Richiedente e memorizzare tutte le informazioni sull'applicazione su un singolo oggetto di prestito. Quindi potresti essere tentato di avere un'enumerazione "LoanStatus" sul prestito che elenca in sostanza tutte le fasi in cui il prestito passa mentre viene elaborato.
Il modo migliore è avere un oggetto momento dell'applicazione. E un oggetto ruolo del richiedente. I ruoli sono associati a Persona / Luogo / Cosa e partecipano ai momenti (in pratica, di solito conferisco la responsabilità di creare un momento oggetto a un ruolo che identifico come "attore". Nel caso della domanda di prestito, il candidato è "l'attore".
All'interno del libro, Coad parla del concetto di Predecessori e Successori. Cioè prima che un RiskAssessment possa essere eseguito, ci deve essere una Applicazione . I momenti formano una catena di eventi pertinenti al sistema che si sta creando. Ad esempio, il sistema di approvazione del prestito non si preoccuperebbe dei pagamenti sul prestito, quindi non sarebbero mappati come parte del sistema. Anche se potrebbe esserci un altro sistema che si occupa di questi dettagli.
La parte bella di questo approccio è che il sistema diventa molto flessibile ed estensibile, piuttosto che attaccare nuovi campi e metodi su un oggetto "LoanCustomer" gonfiato (o peggio derivante dal cliente in prestito per rappresentare diversi ruoli che il cliente potrebbe giocare nel sistema), creiamo nuovi ruoli man mano che crescono le esigenze del sistema.
Consiglio vivamente di prendere in mano il libro e di esaminarlo. È una tecnica molto potente nonostante il fatto che UML non sia più a favore, i concetti sono senza tempo.