O C L Object Constraint Language

16
O C L O C L Object Constraint Object Constraint Language Language

description

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). - PowerPoint PPT Presentation

Transcript of O C L Object Constraint Language

Page 1: O C L Object Constraint Language

O C LO C L

Object Constraint Object Constraint LanguageLanguage

Page 2: O C L Object Constraint Language

LINGUAGGIO DI LINGUAGGIO DI SPECIFICAZIONE DI OGGETTISPECIFICAZIONE DI OGGETTI

OCL si può utilizzare in qualche contesto dove si usa il OCL si può utilizzare in qualche contesto dove si usa il diagrama di classe che sta associato (per essempio, nel diagrama di classe che sta associato (per essempio, nel modello concettuale o disegno). modello concettuale o disegno).

È un linguaggio ibrido orientato a oggetti-funzionale, ed è È un linguaggio ibrido orientato a oggetti-funzionale, ed è tipificato, perché usa il concetto di tipi di dati.tipificato, perché usa il concetto di tipi di dati.

Gli utenti di UML e di altri linguaggi, possono usare l’OCL per Gli utenti di UML e di altri linguaggi, possono usare l’OCL per specificare restrizioni e altri espressioni inserite nei suoi specificare restrizioni e altri espressioni inserite nei suoi

modellimodelli..

OCL ha caratteristiche di un linguaggio d’espressione, di OCL ha caratteristiche di un linguaggio d’espressione, di linguaggio di modellazione e di linguaggio formale.linguaggio di modellazione e di linguaggio formale.

Page 3: O C L Object Constraint Language

LINGUAGGIO D’ LINGUAGGIO D’ ESPRESSIONEESPRESSIONE

È un linguaggio d’espressione puro. Garantisce che la È un linguaggio d’espressione puro. Garantisce che la valutazione di una espressione OCL non avrà effetti valutazione di una espressione OCL non avrà effetti collaterali; non può cambiare niente del modello, ovvero, lo collaterali; non può cambiare niente del modello, ovvero, lo stato del sistema non cambierà mai come conseguenza di stato del sistema non cambierà mai come conseguenza di una espressione OCL.una espressione OCL.

Tutti i valori degli oggetti, inclusi tutti i collegamenti, non Tutti i valori degli oggetti, inclusi tutti i collegamenti, non possono cambiare durante la valutazione di una possono cambiare durante la valutazione di una espressione OCL.espressione OCL.

Una espressione OCL ritorna semplicemente un valore.Una espressione OCL ritorna semplicemente un valore.

Page 4: O C L Object Constraint Language

LINGUAGGIO DI LINGUAGGIO DI MODELLAZIONEMODELLAZIONE

OCL non è un linguaggio di programazione: non è OCL non è un linguaggio di programazione: non è possibile scrivere logica di programmazione o un possibile scrivere logica di programmazione o un flusso di controllo. Non è possibile invocare processi flusso di controllo. Non è possibile invocare processi o attivare operazioni diverse da query in OCL. o attivare operazioni diverse da query in OCL.

OCL è un linguaggio di modellazione in primo luogo.OCL è un linguaggio di modellazione in primo luogo.

Dal momento che OCL è un linguaggio di Dal momento che OCL è un linguaggio di modellazione, tutte le considerazioni implementative modellazione, tutte le considerazioni implementative sono fuori dal suo dominio e non si possono sono fuori dal suo dominio e non si possono esprimere con linguaggio OCL. Concettualmente, esprimere con linguaggio OCL. Concettualmente, ogni espressione OCL è atomica.ogni espressione OCL è atomica.

Page 5: O C L Object Constraint Language

LINGUAGGIO FORMALELINGUAGGIO FORMALE

OCL è un linguaggio formale dove tutti i construttori hanno OCL è un linguaggio formale dove tutti i construttori hanno un loro significato formalmente definido, OCL è formalizzato un loro significato formalmente definido, OCL è formalizzato all’interno di UML.all’interno di UML.

OCL non pretende di sostituire linguaggi formali come VDM OCL non pretende di sostituire linguaggi formali come VDM o Z o Z

Page 6: O C L Object Constraint Language

PERCHÈ OCL E NON ALTRI?PERCHÈ OCL E NON ALTRI?

Lo svantaggio dei linguaggi formali tradizionali è che sono Lo svantaggio dei linguaggi formali tradizionali è che sono pensati per persone con una forte formazione matematica, pensati per persone con una forte formazione matematica, ma sono difficili per il progettista di sistema.ma sono difficili per il progettista di sistema.

OCL è stato sviluppato per risolvere questo problema. OCL è stato sviluppato per risolvere questo problema.

È un linguaggio formale, facile da leggere e scrivere.È un linguaggio formale, facile da leggere e scrivere.

Page 7: O C L Object Constraint Language

DOVE USARE OCLDOVE USARE OCL

OCL si può usare con diversi scopo:OCL si può usare con diversi scopo:- Specificare caratterische statiche delle classi e dei tipi di un - Specificare caratterische statiche delle classi e dei tipi di un modello di classemodello di classe- Specificare caratterische statiche di tipo per gli Stereotipi- Specificare caratterische statiche di tipo per gli Stereotipi- Specificare pre e post-condizioni sulle Operazioni e i Metodi.- Specificare pre e post-condizioni sulle Operazioni e i Metodi.- Come linguaggi di navigazione di alberi (tipo X-Path).- Come linguaggi di navigazione di alberi (tipo X-Path).- Specificare restrizioni sulle operazioni (pre e post condizioni).- Specificare restrizioni sulle operazioni (pre e post condizioni).

Può formare parte di una caratteristica statica ovvero una Può formare parte di una caratteristica statica ovvero una restrizione stereotipata tramite <<invariant>>.restrizione stereotipata tramite <<invariant>>.

Può formare parte di pre-condizioni e post-condizioni che sono Può formare parte di pre-condizioni e post-condizioni che sono restrizioni stereotipate con <<pre-condition>> e <<post-restrizioni stereotipate con <<pre-condition>> e <<post-condition>>.condition>>.

Page 8: O C L Object Constraint Language

OGGETTI E PROPRIETÀOGGETTI E PROPRIETÀ

Le espressioni OCL si possono riferire a tipi, classi, Le espressioni OCL si possono riferire a tipi, classi, interfacce, associazioni (come tipi) e tipi di dati.interfacce, associazioni (come tipi) e tipi di dati.

Anche a tutti gli attributi, gli end-point di una associazione, Anche a tutti gli attributi, gli end-point di una associazione, metodi e operazioni che non hanno effetti collaterali.metodi e operazioni che non hanno effetti collaterali.

Page 9: O C L Object Constraint Language

TIPI PREDEFINITITIPI PREDEFINITI

Si definiscono all’interno di OCL i tipi di dati base, cosí come le Si definiscono all’interno di OCL i tipi di dati base, cosí come le operazioni che si possono realizare con la siguiente tabella:operazioni che si possono realizare con la siguiente tabella:

TIPOTIPO VALOREVALORE OPERAZIONEOPERAZIONE

Boolean Boolean True, False True, False And, Or, Not, XorAnd, Or, Not, Xor

Integer Integer 1, 2, 34,5242…1, 2, 34,5242… +, /, abs+, /, abs

Real Real 1.5, 3.14, 6.78…1.5, 3.14, 6.78… +, -, /, floor+, -, /, floor

String String To be, or, not To be, or, not toUpper, concattoUpper, concat

Page 10: O C L Object Constraint Language

TIPI DI DEFINIZIONITIPI DI DEFINIZIONI

InvariantiInvarianti

Invarianti di metodo/responsabilitàInvarianti di metodo/responsabilità

Definizione di attributi derivatiDefinizione di attributi derivati

Definizione di metodi/responsabilità derivateDefinizione di metodi/responsabilità derivate

Page 11: O C L Object Constraint Language

TIPI DI DATITIPI DI DATI1. Predefiniti1. Predefiniti

a) Basicia) Basici BooleanBoolean IntegerInteger RealReal StringString OCLAnyOCLAny OCLTypeOCLType

2. Non Predefiniti2. Non Predefiniti

Sono ogni classe e enumeratore del diagrama delle classiSono ogni classe e enumeratore del diagrama delle classi

b) Strutturatib) Strutturati Collection(T)Collection(T) Set(T)Set(T) Bag(T)Bag(T) OrderedSet(T)OrderedSet(T) SequenceSequence TupleTuple

Page 12: O C L Object Constraint Language

ESEMPIO DI USO (1)ESEMPIO DI USO (1) Faremo un caso pratico. Faremo un caso pratico. Nel nostro esempio, andiamo a eseguire espressioni OCL su un Nel nostro esempio, andiamo a eseguire espressioni OCL su un

classico diagramma che rappresenta una impresa.classico diagramma che rappresenta una impresa.

Page 13: O C L Object Constraint Language

Fase 1: Carga del Modello UML 2.0 Fase 1: Carga del Modello UML 2.0

Essempio d’empresa generado con eclipse per modelo UML2.0:Essempio d’empresa generado con eclipse per modelo UML2.0:

<?xml version="1.0" encoding="UTF-8"?><?xml version="1.0" encoding="UTF-8"?><uml:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"<uml:Model xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"xmlns:uml="http://www.eclipse.org/uml2/1.0.0/UML"xmlns:uml="http://www.eclipse.org/uml2/1.0.0/UML"xmi:id="_JsDyAPMHEdmre8WY4HdRjQ" name="testCase1">xmi:id="_JsDyAPMHEdmre8WY4HdRjQ" name="testCase1"><ownedMember xmi:type="uml:Package"<ownedMember xmi:type="uml:Package"xmi:id="_J6MUoPMHEdmre8WY4HdRjQ" name="Package"xmi:id="_J6MUoPMHEdmre8WY4HdRjQ" name="Package"packageableElement_visibility="public">packageableElement_visibility="public"><ownedMember xmi:type="uml:Class" <ownedMember xmi:type="uml:Class"

xmi:id="_J7J98PMHEdmre8WY4HdRjQ"xmi:id="_J7J98PMHEdmre8WY4HdRjQ"name="Empleado" isLeaf="false" isAbstract="false" isActive="false"/>name="Empleado" isLeaf="false" isAbstract="false" isActive="false"/><ownedMember xmi:type="uml:Class" <ownedMember xmi:type="uml:Class"

xmi:id="_J7QEkfMHEdmre8WY4HdRjQ"xmi:id="_J7QEkfMHEdmre8WY4HdRjQ"name="Jefe" isLeaf="false" isAbstract="false" isActive="false"/>name="Jefe" isLeaf="false" isAbstract="false" isActive="false"/><ownedMember xmi:type="uml:Class" <ownedMember xmi:type="uml:Class"

xmi:id="_J7WLMvMHEdmre8WY4HdRjQ"xmi:id="_J7WLMvMHEdmre8WY4HdRjQ"name="Ayudante" isLeaf="false" isAbstract="false" isActive="false"/>name="Ayudante" isLeaf="false" isAbstract="false" isActive="false"/></ownedMember></ownedMember></uml:Model> </uml:Model>

Page 14: O C L Object Constraint Language

Fase 1: Caricamento del Modello UML Fase 1: Caricamento del Modello UML 2.02.0

Nel modello UML 2.0 i collegamenti tra classi sono Nel modello UML 2.0 i collegamenti tra classi sono allo stesso livello delle classi e dei tipi primitivi.allo stesso livello delle classi e dei tipi primitivi.

Riassumendo, le classi sono: dipartamento, Riassumendo, le classi sono: dipartamento, compagnia, persona, impiegato, gruppo.compagnia, persona, impiegato, gruppo.

I tipi base che useremo nel nostro package sono: I tipi base che useremo nel nostro package sono: intero, lista, boolean e un tipo enumerato (tipo intero, lista, boolean e un tipo enumerato (tipo persona)persona)

Page 15: O C L Object Constraint Language

Fase 2: Esempi di espressioniFase 2: Esempi di espressioni

a)a) Lavoramo in una impresa, la quale necessita di costraint Lavoramo in una impresa, la quale necessita di costraint per essere correttamente rappresentata ad esempio un per essere correttamente rappresentata ad esempio un package non deve contenere più di 3 elementipackage non deve contenere più di 3 elementi

Context Package inv:ownedMember->size()<=3Context Package inv:ownedMember->size()<=3

b)b) Tutti I nomi di dipartamenti devono iniziare con una Tutti I nomi di dipartamenti devono iniziare con una lettera maiuscola tra la A e la D compreselettera maiuscola tra la A e la D comprese

Context Department inv: Context Department inv: Set{‘A’,’B’,’C’,’D’}>=includes(name.substring(1,1))Set{‘A’,’B’,’C’,’D’}>=includes(name.substring(1,1))

Page 16: O C L Object Constraint Language

COLLEGAMENTI COLLEGAMENTI D’INTERESSED’INTERESSE

Inglese: Inglese: httphttp://://www.omg.orgwww.omg.org//docsdocs//ptcptc/03-10-14./03-10-14.pdfpdf

Spagnolo: Spagnolo: http://www-2.dc.uba.ar/materias/isoft1/is1-2005_2http://www-2.dc.uba.ar/materias/isoft1/is1-2005_2/apuntes/OCL.pdf/apuntes/OCL.pdf

Italiano: Italiano: http://www.tecnoteca.it/upgrade/aprile_2004http://www.tecnoteca.it/upgrade/aprile_2004

Francese: Francese: http://uml.free.fr/cours/p16.htmlhttp://uml.free.fr/cours/p16.html