Programação Orientada por Objectos - Aula 7

28
Aula 7 Introdução ao UML: Ligações como instâncias de associações Multiplicidade de classes (solitões e classes- pacote) Diagramas de sequência

description

Aula teórica 7 da unidade (disciplina) de Programação Orientada por Objectivos para os cursos de LIGE, LEI e LETI no ISCTE-IUL no 2.º semestre do ano lectivo de 2009/2010.

Transcript of Programação Orientada por Objectos - Aula 7

Page 1: Programação Orientada por Objectos - Aula 7

Aula 7

Introdução ao UML:• Ligações como instâncias de associações• Multiplicidade de classes (solitões e classes-pacote)• Diagramas de sequência

Page 2: Programação Orientada por Objectos - Aula 7

Programação Orientada por Objectos 2

Na aula anterior…

Tipos de diagrama UML

Notações para classes, objectos e relações

UML como forma de comunicação entre pessoas que precisam de se entender em relação A um problema (análise) A uma solução (desenho)

UML como modelo formal e possível fonte para geração automática de código (e.g., Java)

2009/2010

Page 3: Programação Orientada por Objectos - Aula 7

Associação

package airtravel;

public class Person { …}

public class Flight {

private Set<Person> passengers;

…}

2009/2010 Programação Orientada por Objectos 3

airtravel

Person

Flight

Carries

- passenger(s)*

*

Associação

Page 4: Programação Orientada por Objectos - Aula 7

Ligação

2009/2010 Programação Orientada por Objectos 4

airtravel

Person

Flight

Carries

- passenger(s)*

*

Associação

tp344: Flight

john: Person

jim: Person

janet: Person

Carries

Carries

Carries

- passenger

- passenger

- passengerLigações

Page 5: Programação Orientada por Objectos - Aula 7

Associação: agregação

package vehicles;

public class Car {

private Set<Wheel> wheels;

…}

public class Wheel {

private Car car;

…}

2009/2010 Programação Orientada por Objectos 5

vehicles

Car

Wheel

Agregação

IsPartOf

- car

- wheel(s)

0..1

3..6

Page 6: Programação Orientada por Objectos - Aula 7

Associação: composição

package business;

public class Company {

private Set<Department> departments; …}

public class Department {

private Company company; …}

2009/2010 Programação Orientada por Objectos 6

business

Company

Departament

Composição

IsPartOf

- company

- department(s)

1

*

Page 7: Programação Orientada por Objectos - Aula 7

Associação

E os lugares?

2009/2010 Programação Orientada por Objectos 7

airtravel

Person

Flight

Carries

- passenger(s)*

*

Associação

Page 8: Programação Orientada por Objectos - Aula 7

Associação qualificada

package airtravel;

public class Person { …}

public class Flight {

private Map<Seat, Person> passengers;

…}

2009/2010 Programação Orientada por Objectos 8

airtravel

Person

Flight

Carries

- passenger(s)0..1

*

Associação qualificada

seat: Seat

Page 9: Programação Orientada por Objectos - Aula 7

Associação

E características especiais, como a dieta pretendida?

2009/2010 Programação Orientada por Objectos 9

airtravel

Person

Flight

Carries

- passenger(s)*

*

Associação

Page 10: Programação Orientada por Objectos - Aula 7

Classe associativa

package airtravel;

public class Person { …}

public class Carries { private Person passenger; private Diet diet; …}

public class Flight { private Set<Carries> passengers; …}

2009/2010 Programação Orientada por Objectos 10

airtravel

Person

Flight

Carries

- passenger(s)*

*

Classeassociativa

diet: Diet

Page 11: Programação Orientada por Objectos - Aula 7

Classe associativa

package airtravel;

public class Person { …}

public class Carries { private Person passenger; private Diet diet; …}

public class Flight { private Set<Carries> passengers; …}

2009/2010 Programação Orientada por Objectos 11

airtravel

Person

Flight

Carries

- passenger(s)*

*

Classeassociativa

diet: DietCarries

Page 12: Programação Orientada por Objectos - Aula 7

Classe associativa

package airtravel;

public class Person { …}

public class Carries { private Person passenger; private Diet diet; …}

public class Flight { private Set<Carries> passengers; …}

2009/2010 Programação Orientada por Objectos 12

airtravel

Person

Flight

- passenger(s)*

*

Classeassociativa

diet: DietCarries

Page 13: Programação Orientada por Objectos - Aula 7

Multiplicidade de classes

Pode restringir-se número de instâncias simultâneas de classe no sistema

Implementação em Java recorre a truques

2009/2010 Programação Orientada por Objectos 13

MyClass n..m

Page 14: Programação Orientada por Objectos - Aula 7

Solitão (singleton)

package mypackage;

public final class MySingleton {

private static final MySingleton INSTANCE = new MySingleton();

private MySingleton() { assert INSTANCE == null : …; }

public static MySingleton getInstance() { return INSTANCE; }

…}

2009/2010 Programação Orientada por Objectos 14

MySingleton 1

Page 15: Programação Orientada por Objectos - Aula 7

Classe-pacote

2009/2010 Programação Orientada por Objectos 15

package java.lang;

public final class Math {

private Math() { assert false : …; }

public static final double PI = 3.14…;

public static double sin(final double angle) {…} public static double cos(final double angle) {…} …

}

Math 0

Page 16: Programação Orientada por Objectos - Aula 7

Diagramas

2009/2010 Programação Orientada por Objectos 16

Modelo

Área dinâmic

a

Área físic

a

Área de gestão do modelo

…… …

Vista de interacç

ão

Diagrama de

sequência

Área estrutur

al

Page 17: Programação Orientada por Objectos - Aula 7

Diagramas de sequência

Mostram interacções entre entidades numa sequência temporal

Mostram entidades envolvidas numa interacção sequências de mensagens trocadas entre entidades

Entidades podem ser actores e sistema trocando mensagens (análise;

domínio do problema) objectos invocando operações (desenho; domínio da

solução)2009/2010 Programação Orientada por Objectos 17

Page 18: Programação Orientada por Objectos - Aula 7

Exemplo 1

2009/2010 Programação Orientada por Objectos 18

: AtmInterface

valid = valid(card, pin)

: Bank : Account

sd withdrawal

Que falta aqui?

withdraw(card, amount)withdraw(amount)

Que falta aqui?

A vida dos objectos, neste caso, prolonga-se para além dos limites do diagrama.

No topo do diagrama surgem os objectos pré-existentes envolvidos na interacção.

Linha de vida.

Linha de vida activa.

Invocação.

Retorno.

sd = sequence diagramWithdrawal é o nome da interacção.

Page 19: Programação Orientada por Objectos - Aula 7

Exemplo 2

2009/2010 Programação Orientada por Objectos 19

: AtmInterface

valid = valid(card, pin)

: Bank : Account

sd withdrawal

withdraw(card, amount)withdraw(amount)

valid(card)

Reactivação do objecto.

Invocação recursiva.

Page 20: Programação Orientada por Objectos - Aula 7

Exemplo 3

2009/2010 Programação Orientada por Objectos 20

: AtmInterface

valid = valid(card, pin)

: Bank : Account

sd withdrawal

[valid]withdraw(card, amount)

withdraw(amount)

valid(card)

Invocação dependente de guarda.

Page 21: Programação Orientada por Objectos - Aula 7

Exemplo 4

2009/2010 Programação Orientada por Objectos 21

: AtmInterface

valid = valid(card, pin)

: Bank : Account

sd withdrawal

withdraw(card, amount)withdraw(amount)

valid(card)

alt

[valid]

[¬vali

d]

Fragmentos alternativos.

Guarda de fragmento.

Page 22: Programação Orientada por Objectos - Aula 7

Exemplo 5

2009/2010 Programação Orientada por Objectos 22

: AtmInterface

valid = valid(card, pin)

: Bank : Account

sd withdrawal

withdraw(card, amount)withdraw(amount)

valid(card)

alt

[valid]

[else]

Nenhuma das guardas anteriores.

Page 23: Programação Orientada por Objectos - Aula 7

Exemplo 6

2009/2010 Programação Orientada por Objectos 23

: AtmInterface

valid = valid(card, pin)

: Bank : Account

sd withdrawal

withdraw(card, amount)withdraw(amount)

valid(card)

opt

[valid]

Quando há apenas um fragmento.

Page 24: Programação Orientada por Objectos - Aula 7

Exemplo 7

2009/2010 Programação Orientada por Objectos 24

: AtmInterface

valid = valid(card, pin)

: Bank : Account

sd withdrawal

withdraw(card, amount)withdraw(amount)

valid(card)

opt

[valid]

loop(1, 3)[¬valid

]Ciclo com pelo menos uma e no máximo três iterações.

Guarda do ciclo.

Page 25: Programação Orientada por Objectos - Aula 7

Programação Orientada por Objectos 25

A reter

Ligações enquanto instâncias de associações

Casos típicos de multiplicidade de classes Solitão Classe-pacote

Diagramas de sequência Objectos Linhas de vida Invocações Retornos Alternativas, opções e ciclos

2009/2010

Page 26: Programação Orientada por Objectos - Aula 7

Programação Orientada por Objectos 26

Referências

UML® Resource Page (http://www.uml.org/)

Martin Fowler, UML Distilled: A Brief Guide to the Standard Object Modeling Language, 3.ª edição, Addison-Wesley, 2003.ISBN: 0-321-19368-7(1.ª e 2.ª edições na biblioteca)

James Rumbaugh et al., The Unified Modeling Language Reference Manual, 2.ª edição, Addison-Wesley, 2005.ISBN: 0-321-24562-8(1.ª edição do guia do utilizador na biblioteca)

2009/2010

Page 27: Programação Orientada por Objectos - Aula 7

Programação Orientada por Objectos 27

A ler para as próximas aulas ...

Capítulos 1 a 10 e 16 do livro:

Y. Daniel Liang, Introduction to Java Programming, 7.ª edição, Prentice Hall, 2008.ISBN: 978-0-13-605966-0

2009/2010

Page 28: Programação Orientada por Objectos - Aula 7

Programação Orientada por Objectos 28

Sumário

Introdução ao UML Ligações como instâncias de associações Multiplicidade de classes (solitões e

classes-pacote) Diagramas de sequência

2009/2010