UML

Principis del model OO:
  1. Abstracció. Permet treure un conjunt de classes que permeten modelar la realitat o problema a resoldre
  2. Encapsulació. Permet amagar els detalls d'un objecte que no son esencials. Separar lo que un objecte ofereix cap a afora de la seva implementació interna.
  3. Modularitat. El sistema es disenya amb mòduls coherents e independents. Es poden compilar per separat però es poden montar en un únic sistema informàtic.
  4. Herència.
  5. Polimorfisme. L'herència permet que es faci una crida a un mètode sense sebre exactament quina classe l'executarà. Es pot inclús decidir en temps d'execució segons de quina classe sigui l'objecte que fa la crida. Pensar en dos objectes que son fills de la mateixa classe però que implementen  un mètode diferentment. Exemple: rectangle i cercle son fills de Forma geomètrica però implementen "pintar" de maneres diferents.
  6. Tipificació. Cada objecte té un tipus i el llenguatge es estricte en que un objecte té el tipus declarat.
  7. Persistència. Si un objecte ha de persistir en el temps una vegada aturat el programa, aquest s'ha de gravar a una Base de Dades Orientada a Objectes o a una Base de Dades Relacional (posiblement amb un ORM). 

Material: descarregar amb ajuda del professor
Todo UML Diagrames UML: 
info Wikipedia


Plugin to Chrome and edit with GoogleDrive: draw.io
Online editor: yEd Live (30 days trial)
Producte per crear diagrames UML, versió Community gratis: Astah  (30 days trial)

video 1 per veure una introducció i com crear Diagrames de Classes, exportar-ho en una imatge, generar Java desde el Diagrama de Classes o fer Enginyeria inversa:


video 2 per crear diagrames de classes més ràpid:


Web per crear diagrames UML online: Creately
Té una opció gratuïta si fas els diagrames públics.

Aquest llenguatge disposa de diversos tipus de diagrames, els quals mostren diferents aspectes de les entitats representades. A classe veurem els principals. Tenim 2 tipus de Diagrams: Estàtics i Dinàmics:


A) Diagrames Estàtics: 


1.- Diagrama de Classes
Mostren relacions rellevants entre classes amb una associació. Es diu associació ja que s'està indicant que certes instàncies de certes classes es comuniquen entre sí i fan feina juntes. 

Tipus de relacions entre classes: 
a) Herència

b) Associació
associació "té - tiene", "pot ser". Es representa amb una  línea entre classes (veure llibre IOC pag.41)
Aquest tipus de relació, si es pot, es refina entre un dels dos tipus següents:

b.1) composició "es part de" (romb negre)
    les parts depenen del tot i no tenen sentit sense ell. (exemple al llibre  Dummies pag 88 fig 5.1)

            ex: Uns dits no tenen sentit sense la ma sensera

si es destrueix l'objecte gros els components desapareixen. Els components no poden pertanyer a altres objectes (nomès a un).

b.2) agregació "es propietària de" (romb buid)
les parts poden sobreviure si el “tot” es destruït. 

Exemple: jugadors d'un equip de futbol. L'equip pot ser "propietari" dels jugadors, però tenen sentit sense ell i no desapareixen si l'equip deixa de competir.
- oculta complexitat al dissenyador
- Es transitiu entre diferents classes 
A les associacions se lis dona un nom per ajudar a entendre la natura de la interrelació entre dues classes.  Tipus d'associacions entre classes



OJO: Romb negre es Composició, diagrama està malament


material diag. de classes (elimina les "k" de la URL per veure)


Fotoc llibre Ra-Ma intro Diagrames de Classs
Exemple Diag. de Classes
Intro llibre Garceta


Exer Diagrames de Classes: 
enunciat exercici sobre Botiga online
Llegir, entendre i fer el diagrama, adaptant lo que faci falta.
En parelles, comentar les vostres sol.lucions.
sol.lució (profe only)

Disseny Orientat a Objectes:
veure més info a llibre HF
presentació problema del Rock @ Roll
sol.lució (nomès profe)


2.-Diagrama d'objectes
Diagrama d'Objectes: Representa els objectes i les seves relacions. Mostra una série d'objectes i les serves relacions a un moment particular de l'execució del sistema. Es un diagrama d'instàncies de les classes mostrades al Diagrama de Classes.  Son útils per a la comprensió dels diagrames de classes desde un punt de vista un poc diferent.  Els enllaços relacionen objectes, les associacions Classes.

Així com el diagrama de classes pot tenir representats tant classificadors com instàncies d’ells, el diagrama d’objectes només pot contenir instàncies i relacions entre elles: enllaços i dependències que tinguin lloc entre instàncies. Els classificadors i les associacions respectives han d’haver estat definits prèviament a un diagrama de classes. Sovint té la funció de simple exemple d’un diagrama de classes o d’una part d’ell.
A vegades lo que mostra es un exemple d'objectes i els seus enllaços. També pot mostrar les condicions d'un esdeveniment.


Un avió durant la seva ruta pot passar per moltes celdes (posicions espacials). Una d'elles es l'actual (currentCell) i les altres son part de la ruta (routeElement). Al diagrama de classes havíem vist que un avió està enllaçat amb N celdes. Aquí es veuen en detall les que té assignades. Dos objectes estan enllaçats si es comuniquen.

+ info:
Pag 44 llibre ioc
UML for dummies pag 74,111
Wikipedia: object diagram


3.-Diagrama de components

B) Diagrames Dinàmics:


1.-Diagrama d'estats
2.-Diagrama de Casos d'us 
Segons la Vikipèdia, El diagrama de casos d'ús és la representació gràfica més simple de les interaccions entre un usuari i un sistema, aquestes relacions es representen amb les normes bàsiques del Llenguatge unificat de modelat (UML).En un diagrama de casos d'ús no es mostren els casos d'ús detalladament, només es mostra el nombre d'usuaris, el seu tipus i la manera com interactua amb el sistema. En concret, en el diagrama no ens mostra l'ordre en el qual es duen a terme els passos per aconseguir els objectius de cada cas d'ús. Aquests detalls poden descriure's en altres diagrames i documents, que es vinculen a cada cas d'ús.

Exer Casos d'us - a fer a classe- inclou sol.lució - teachers only - to be improved 

3.- Diagrames d'activitat (similar Diagrama de Fluxe)
 Segons la Vikipèdia, un diagrama d'activitats és la representació gràfica d'un algoritme o procés. S'utilitza en diferents disciplines com la programació, l'economia, els processos industrials i la psicologia cognitiva.
A UML, un diagrama d'activitats es centra en el flux d'activitats involucrades en un procés, generalment dins del marc d'un o diversos casos d'ús. Aquests mostren en quin ordre s'executen les diferents parts d'un procés i com depenen les unes de les altres. En cap cas proporcionen informació del comportament d'un objecte o de les col·laboracions entre objectes.
4.- Diagrames de Desplegament (o de distribució)
Un diagrama de desplegament (de l'anglès deployment diagram) en el Llenguatge unificat de modelat és un diagrama estructurat que modela l'arquitectura en temps d'execució d'un sistema. Mostra la configuració dels elements hardware (nodes) i com es tracen els elements i artefactes del software en aquests nodes.
+ info a la Vikipèdia

5.- Diagrames de Sequència
El diagrama de seqüència (de l'anglès sequence diagram) és un diagrama d'interacció UML que mostra la interacció dels objectes d'un sistema disposats en una seqüència de temps. La seva funció principal és mostrar com els objectes d'un sistema (o escenari) s'intercanvien missatges amb la intenció de complir un objectiu concret. Els diagrames de seqüència a vegades reben el nom de diagrama d'esdeveniments o diagrama d'escenaris.

Exemple 

+ info a la Vikipèdia

video explicatiu (Anglès):


Exercici per classe:
Fes un diagrama de sequència per el procés de prematrícula i matrícula al Institut. Les entitats que participen son l'alumne, el banc i l'institut.

veure sol.lució (Aleix)

exemple especificació de projecte de botiga online antic - no UML

Exercici pre-examen:
enunciat exercici sobre Botiga online
SOL (Teacher only)

Material avançat:
Més sobre UML: articles, especificacions, etc.
Article sobre com traduïr UML-Java-1
Article sobre com traduïr UML-Java-2

Pràctica UML per al segon trimestre
enunciat 
enunciat en Anglès
+ 1 punt si pràctica feta en Anglès

exemple d'especificació antiga del projecte (no UML)

practical documentation sample done at the 2on course:
Example of Library Aplication (user manual)
Example2 of Library Aplication (user manual)

Example of technical manual Library

Diagrama de classes Biblioteca (profe only)
+ info
diagrama classes Kico


Comments