O C L Object Constraint Language

Slides:



Advertisements
Presentazioni simili
PARI/GP Introduzione.
Advertisements

Programmazione ad oggetti
Recupero debito quarto anno Primo incontro
Linguaggi di Programmazione e compilatori
Linguaggi di programmazione
1 Astrazioni sui dati : Specifica ed Implementazione di Tipi di Dato Astratti in Java.
Liste di Interi Esercitazione. Liste Concatenate Tipo di dato utile per memorizzare sequenze di elementi di dimensioni variabile Definizione tipicamente.
Generalità Linguaggio e Macchina Astratta
Query OQL e XQUERY a confronto
DOCUMENTAZIONE DI SCHEMI E/R
Università degli Studi di Modena e Reggio Emilia
Programmazione Procedurale in Linguaggio C++
Semantiche dei linguaggi di programmazione
Maria Teresa PAZIENZA a.a
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Analisi dettagliata e design B. Pernici M.G. Fugini AA
Analisi dettagliata e design B. Pernici. Sommario Analisi dettagliata –Separazione interfaccia, controllo, entita Design –Logical view –Progettazione.
1 Le competenze di base dell'asse matematico Utilizzare le tecniche e le procedure del calcolo aritmetico ed algebrico, rappresentandole anche sotto forma.
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Corso di Informatica (Basi di Dati)
LISP.
CVM un modello concettuale per la gestione di versioni di schema in un contesto di integrazione Fabio Grandi DEIS - Università di Bologna.
Algoritmi e Strutture Dati
Modello E-R Generalizzazioni
Progettazione di una base di dati
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.
Modello E-R Generalizzazioni
Introduzione alla modellazione di sistemi interattivi
Elementi di Informatica
Verso lo spazio profondo
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
MODELLO LOGICO DEI DATI
Introduzione a Oracle 9i
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
Il linguaggio UML Luca Lista.
Sistemi di Elaborazione delle Informazioni Mod.I.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Corso JAVA Lezione n° 11 Istituto Statale di Istruzione Superiore “F. Enriques”
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
1 Nuovo Obbligo Scolastico: Gli Assi Culturali. 2 Asse dei Linguaggi Asse Matematico Asse Scientifico-Tecnologico Asse Storico Sociale.
Esercitazioni di Ingegneria del Software con UML
Fondamenti di Programmazione
Programmazione ad Oggetti
Sistemi basati su conoscenza Gestione della conoscenza Prof. M.T. PAZIENZA a.a
1 Ontology languages. Strato dei modelli LA SCELTA DEL LINGUAGGIO Una volta selezionati i componenti dell’ontologia occorre esprimerli in maniera esplicita,
Programmazione imperativa
Il linguaggio Fortran 90: 3. Procedure e Funzioni
1 Università della Tuscia - Facoltà di Scienze Politiche.Informatica 2 - a.a Prof. Francesco Donini Accesso a basi di dati con ASP.
JavaScript Generalità Cos'è JavaScript?
DAL WEB AL SEMANTIC WEB Aspetti teorici e tecnologici Carmagnola Francesca Dipartimento Informatica C.so Svizzera 185, Torino
1.1 Progettazione di Basi di Dati PROGETTAZIONE: SCOPO Requisiti: cosa realizzare; progetto: come realizzarlo Livelli di dettaglio: concettuale/logico/fisico;
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Impostare i caratteri. Le prime versioni del linguaggio HTML così come le prime versioni dei browser consentivano unicamente la scelta tra due tipi di.
Diagramma delle Classi
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Analisi dettagliata e design
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 7 Tipi di dato e strutture dati Specifica e realizzazione di strutture informative come classi.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Cenni Su SGML, HTML, XML SGML (Standard Generalized Markup Language) è il padre di tutti i linguaggi "Markup" – Lo svantaggio è la "pesantezza" dei suoi.
UML: Constraints-OCL Corso IS I /03
UML: Introduzione Corso IS I /03 Gianna Reggio Versione 0.0.
LIP: 15 Marzo 2005 Vettori di interi. Esercizio proposto Definire una classe VectorInt i cui oggetti sono vettori omogenei di interi ordinati in modo.
Informatica e Informatica di Base
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Corso di Algoritmi e Strutture Dati con Laboratorio Tipi di dato pila e coda.
Transcript della presentazione:

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). È 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.

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.

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.

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

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.

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>>.

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.

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

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

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

ESEMPIO DI USO (1) Faremo un caso pratico. Nel nostro esempio, andiamo a eseguire espressioni OCL su un classico diagramma che rappresenta una impresa.

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>

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)

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))

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