1 / 16

O C L Object Constraint Language

O C L Object Constraint Language. 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).

dyani
Download Presentation

O C L Object Constraint Language

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. O C LObject 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 • Si definiscono all’interno di OCL i tipi di dati base, cosí come le operazioni che si possono realizare con la siguiente tabella:

  10. TIPI DI DEFINIZIONI • Invarianti • Invarianti di metodo/responsabilità • Definizione di attributi derivati • Definizione di metodi/responsabilità derivate

  11. TIPI DI DATI b) Strutturati • 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="http://www.omg.org/XMI" xmlns:uml="http://www.eclipse.org/uml2/1.0.0/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 elementiContext Package inv:ownedMember->size()<=3 • Tutti I nomi di dipartamenti devono iniziare con una lettera maiuscola tra la A e la D compreseContext Department inv: Set{‘A’,’B’,’C’,’D’}>=includes(name.substring(1,1))

  16. COLLEGAMENTI D’INTERESSE • Inglese: http://www.omg.org/docs/ptc/03-10-14.pdf • Spagnolo: http://www-2.dc.uba.ar/materias/isoft1/is1-2005_2/apuntes/OCL.pdf • Italiano: http://www.tecnoteca.it/upgrade/aprile_2004 • Francese: http://uml.free.fr/cours/p16.html

More Related