Logo dell'Università di Catania: Siciliae Studium Generale 1434 Logo del Centro IPPARI, Ingegneria del software
matite e gomma
Loghi istituzionali: Siciliae Studium Generale 1434, Centro ricerche IPPARI, Università di Catania, Facoltà di Scienze Matematiche, Fisiche, Naturali, Insegnamento di Ingegneria del software

Tipi e costrutti avanzati di OCL

Lezione 24 di Ingegneria del software

Docente: Giuseppe Scollo

Università di Catania, sede di Comiso (RG)
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Studi in Informatica applicata, AA 2007-8

Logo di Conformità WCAG-1 di Livello Tripla A, W3C-WAI Web Content Accessibility Guidelines 1.0 Validazione XHTML 1.0 Validazione CSS 2

Indice

  1. Tipi e costrutti avanzati di OCL
  2. tipi di base predefiniti, il tipo Boolean
  3. i tipi di base Integer e Real
  4. il tipo String
  5. sintassi delle espressioni di base
  6. caratteristiche dei tipi definiti dall'utente
  7. associazioni, tipi enumerativi
  8. struttura generale dei tipi di collezioni
  9. operazioni comuni sulle collezioni
  10. operazioni varianti su collezioni
  11. operazioni varianti su collezioni ordinate
  12. operazioni iterative sulle collezioni
  13. l'operazione iterate
  14. costrutti per postcondizioni
  15. conformità, casting, tipo universale

tipi di base predefiniti, il tipo Boolean

OCL ha 4 tipi di base predefiniti (i soliti), con relative operazioni:

operazioni su valori Boolean, con valore di ritorno Boolean :

i tipi di base Integer e Real

operazioni standard di Integer e Real :

il tipo String

sequenza finita di caratteri fra apici:

operazioni standard di String, dove s, t sono di tipo String, e m, n sono di tipo Integer:

sintassi delle espressioni di base

per ridurre il numero di parentesi:

in ordine decrescente:

operatori (binari) infissi:

N.B.: solo la forma infissa di questi operatori è ammessa

caratteristiche dei tipi definiti dall'utente

tipi definiti dall'utente: quelli presenti in elementi del modello

le loro caratteristiche:

attributi e operazioni sono utilizzabili in espressioni OCL

estremi di associazioni: v. appresso

associazioni, tipi enumerativi

uso di estremi di associazioni, (o di nomi di classi associate, in assenza di nomi di estremi):

tipi enumerativi:

struttura generale dei tipi di collezioni

un supertipo astratto Collection

4 (sotto)tipi concreti: Set, Bag, OrderedSet, Sequence

questi ereditano dal supertipo:

i tipi collezione sono polimorfi:

operazioni comuni sulle collezioni

definite dal supertipo astratto Collection, dove

operazioni varianti su collezioni

operazioni varianti su sottotipi di Collection, dove

operazioni varianti su collezioni ordinate

le seguenti operazioni sono definite solo su collezioni ordinate, dove

operazioni iterative sulle collezioni

hanno un body parameter : un'espressione OCL da valutare su ogni elemento della collezione

possono avere un altro parametro, la variabile d'iterazione, riferita all'elemento su cui si valuta il body, e che può occorrere nel body

nella forma sintattica più semplice, eccole di seguito, dove

l'operazione iterate

è la più generale delle operazioni iterative

sintassi:       c->iterate(element:Type1; result:Type2 = <expression>
                                    | <expression-with-element-and-result>)

esempi:

se c è di tipo Collection(Integer):

per ogni collezione c di tipo Collection(t) ed espressione booleana B(x), con x:t

per qualsiasi tipo concreto di collezione CT (uno dei 4 sottotipi di Collection),
per ogni collezione c di tipo CT(t) ed espressione booleana B(x), con x:t

costrutti per postcondizioni

conformità, casting, tipo universale

conversione di tipo: detta anche casting

conformità di tipo: cf. principio di sostituzione (di Liskov)