Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
O C L Object Constraint Language
2
LINGUAGGIO DI SPECIFICAZIONE DI OGGETTI
OCL si può utilizzare in qualche contesto dove si usa il diagrama di classe che sta associato (per essempio, nel modello concettuale o disegno). È un linguaggio ibrido orientato a oggetti-funzionale, ed è tipificato, perché usa il concetto di tipi di dati. Gli utenti di UML e di altri linguaggi, possono usare l’OCL per specificare restrizioni e altri espressioni inserite nei suoi modelli. OCL ha caratteristiche di un linguaggio d’espressione, di linguaggio di modellazione e di linguaggio formale.
3
LINGUAGGIO D’ ESPRESSIONE
È un linguaggio d’espressione puro. Garantisce che la valutazione di una espressione OCL non avrà effetti collaterali; non può cambiare niente del modello, ovvero, lo stato del sistema non cambierà mai come conseguenza di una espressione OCL. Tutti i valori degli oggetti, inclusi tutti i collegamenti, non possono cambiare durante la valutazione di una espressione OCL. Una espressione OCL ritorna semplicemente un valore.
4
LINGUAGGIO DI MODELLAZIONE
OCL non è un linguaggio di programazione: non è possibile scrivere logica di programmazione o un flusso di controllo. Non è possibile invocare processi o attivare operazioni diverse da query in OCL. OCL è un linguaggio di modellazione in primo luogo. Dal momento che OCL è un linguaggio di modellazione, tutte le considerazioni implementative sono fuori dal suo dominio e non si possono esprimere con linguaggio OCL. Concettualmente, ogni espressione OCL è atomica.
5
LINGUAGGIO FORMALE OCL è un linguaggio formale dove tutti i construttori hanno un loro significato formalmente definido, OCL è formalizzato all’interno di UML. OCL non pretende di sostituire linguaggi formali come VDM o Z
6
PERCHÈ OCL E NON ALTRI? Lo svantaggio dei linguaggi formali tradizionali è che sono pensati per persone con una forte formazione matematica, ma sono difficili per il progettista di sistema. OCL è stato sviluppato per risolvere questo problema. È un linguaggio formale, facile da leggere e scrivere.
7
DOVE USARE OCL OCL si può usare con diversi scopo:
- Specificare caratterische statiche delle classi e dei tipi di un modello di classe - Specificare caratterische statiche di tipo per gli Stereotipi - Specificare pre e post-condizioni sulle Operazioni e i Metodi. - Come linguaggi di navigazione di alberi (tipo X-Path). - Specificare restrizioni sulle operazioni (pre e post condizioni). Può formare parte di una caratteristica statica ovvero una restrizione stereotipata tramite <<invariant>>. Può formare parte di pre-condizioni e post-condizioni che sono restrizioni stereotipate con <<pre-condition>> e <<post-condition>>.
8
OGGETTI E PROPRIETÀ Le espressioni OCL si possono riferire a tipi, classi, interfacce, associazioni (come tipi) e tipi di dati. Anche a tutti gli attributi, gli end-point di una associazione, metodi e operazioni che non hanno effetti collaterali.
9
TIPI PREDEFINITI TIPO VALORE OPERAZIONE Boolean True, False
Si definiscono all’interno di OCL i tipi di dati base, cosí come le operazioni che si possono realizare con la siguiente tabella: TIPO VALORE OPERAZIONE Boolean True, False And, Or, Not, Xor Integer 1, 2, 34,5242… +, /, abs Real 1.5, 3.14, 6.78… +, -, /, floor String To be, or, not toUpper, concat
10
TIPI DI DEFINIZIONI Invarianti Invarianti di metodo/responsabilità
Definizione di attributi derivati Definizione di metodi/responsabilità derivate
11
TIPI DI DATI 1. Predefiniti b) Strutturati a) Basici Collection(T)
Set(T) Bag(T) OrderedSet(T) Sequence Tuple 1. Predefiniti a) Basici Boolean Integer Real String OCLAny OCLType 2. Non Predefiniti Sono ogni classe e enumeratore del diagrama delle classi
12
ESEMPIO DI USO (1) Faremo un caso pratico.
Nel nostro esempio, andiamo a eseguire espressioni OCL su un classico diagramma che rappresenta una impresa.
13
Fase 1: Carga del Modello UML 2.0
Essempio d’empresa generado con eclipse per modelo UML2.0: <?xml version="1.0" encoding="UTF-8"?> <uml:Model xmi:version="2.0" xmlns:xmi=" xmlns:uml=" xmi:id="_JsDyAPMHEdmre8WY4HdRjQ" name="testCase1"> <ownedMember xmi:type="uml:Package" xmi:id="_J6MUoPMHEdmre8WY4HdRjQ" name="Package" packageableElement_visibility="public"> <ownedMember xmi:type="uml:Class" xmi:id="_J7J98PMHEdmre8WY4HdRjQ" name="Empleado" isLeaf="false" isAbstract="false" isActive="false"/> <ownedMember xmi:type="uml:Class" xmi:id="_J7QEkfMHEdmre8WY4HdRjQ" name="Jefe" isLeaf="false" isAbstract="false" isActive="false"/> <ownedMember xmi:type="uml:Class" xmi:id="_J7WLMvMHEdmre8WY4HdRjQ" name="Ayudante" isLeaf="false" isAbstract="false" isActive="false"/> </ownedMember> </uml:Model>
14
Fase 1: Caricamento del Modello UML 2.0
Nel modello UML 2.0 i collegamenti tra classi sono allo stesso livello delle classi e dei tipi primitivi. Riassumendo, le classi sono: dipartamento, compagnia, persona, impiegato, gruppo. I tipi base che useremo nel nostro package sono: intero, lista, boolean e un tipo enumerato (tipo persona)
15
Fase 2: Esempi di espressioni
Lavoramo in una impresa, la quale necessita di costraint per essere correttamente rappresentata ad esempio un package non deve contenere più di 3 elementi Context Package inv:ownedMember->size()<=3 Tutti I nomi di dipartamenti devono iniziare con una lettera maiuscola tra la A e la D comprese Context Department inv: Set{‘A’,’B’,’C’,’D’}>=includes(name.substring(1,1))
16
COLLEGAMENTI D’INTERESSE
Inglese: Spagnolo: Italiano: Francese:
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.