SlideShare une entreprise Scribd logo
1  sur  28
Aula 7 Introdução ao UML: ,[object Object]
 Multiplicidade de classes (solitões e classes-pacote)
 Diagramas de sequência,[object Object]
Associação package airtravel; public class Person {     … } public class Flight {     private Set<Person>         passengers;     … } 2009/2010 Programação Orientada por Objectos 3 airtravel Person - passenger(s) * Carries Associação * Flight
Ligação 2009/2010 Programação Orientada por Objectos 4 airtravel john: Person Person - passenger(s) * - passenger Carries Carries tp344: Flight jim: Person Carries Ligações Associação - passenger Carries - passenger * janet: Person Flight
Associação: agregação package vehicles; public class Car {     private Set<Wheel> wheels;     … } public class Wheel {     private Car car;     … } 2009/2010 Programação OrientadaporObjectos 5 vehicles Car - car 0..1 IsPartOf Agregação - wheel(s) 3..6 Wheel
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 - company 1 IsPartOf Composição - department(s) * Departament
Associação E os lugares? 2009/2010 Programação Orientada por Objectos 7 airtravel Person - passenger(s) * Carries Associação * Flight
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 - passenger(s) 0..1 Carries Associação qualificada * seat: Seat Flight
Associação E características especiais, como a dieta pretendida? 2009/2010 Programação Orientada por Objectos 9 airtravel Person - passenger(s) * Carries Associação * Flight
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 - passenger(s) * Carries diet: Diet Classe associativa * Flight
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 - passenger(s) * Carries Carries diet: Diet Classe associativa * Flight
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 - passenger(s) * Carries diet: Diet Classe associativa * Flight
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 n..m MyClass
Solitão (singleton) package mypackage; public final class MySingleton { private static final MySingleton INSTANCE =         new MySingleton(); privateMySingleton() { assert INSTANCE == null : …;     } public static MySingletongetInstance() {         return INSTANCE;     }     … } 2009/2010 Programação Orientada por Objectos 14 1 MySingleton
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) {…}     … } 0 Math
Diagramas Modelo Área dinâmica Área física Área estrutural Área de gestão do modelo … … … Vista de interacção … Diagrama de sequência 2009/2010 Programação Orientada por Objectos 16
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
Exemplo 1 2009/2010 Programação Orientada por Objectos 18 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. sd = sequencediagram Withdrawal é o nome da interacção. sd withdrawal : AtmInterface : Bank : Account valid = valid(card, pin) Linha de vida. Que falta aqui? Que falta aqui? withdraw(card, amount) withdraw(amount) Invocação. Linha de vida activa. Retorno.
Exemplo 2 2009/2010 Programação Orientada por Objectos 19 sd withdrawal : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) Invocação recursiva. Reactivação do objecto. withdraw(card, amount) withdraw(amount)
Exemplo 3 2009/2010 Programação Orientada por Objectos 20 sd withdrawal : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) Invocação dependente de guarda. [valid] withdraw(card, amount) withdraw(amount)
Exemplo 4 2009/2010 Programação Orientada por Objectos 21 sd withdrawal alt : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) Fragmentos alternativos. withdraw(card, amount) withdraw(amount) [valid] Guarda de fragmento. [¬valid]
Exemplo 5 2009/2010 Programação Orientada por Objectos 22 sd withdrawal alt : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) withdraw(card, amount) withdraw(amount) [valid] Nenhuma das guardas anteriores. [else]
Exemplo 6 2009/2010 Programação Orientada por Objectos 23 sd withdrawal opt : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) Quando há apenas um fragmento. withdraw(card, amount) withdraw(amount) [valid]
Exemplo 7 2009/2010 Programação Orientada por Objectos 24 sd withdrawal opt loop(1, 3) : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) [¬valid] Ciclo com pelo menos uma e no máximo três iterações. Guarda do ciclo. withdraw(card, amount) withdraw(amount) [valid]
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 Programação Orientada por Objectos 25
Referências UML® ResourcePage (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çõesnabiblioteca) 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 Programação Orientada por Objectos 26
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 Programação Orientada por Objectos 27

Contenu connexe

En vedette

En vedette (14)

Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1Programação Orientada por Objectos - Aula 1
Programação Orientada por Objectos - Aula 1
 
Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3Programação Orientada por Objectos - Aula 3
Programação Orientada por Objectos - Aula 3
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
11. Enumerações; Instrução switch; Limitações dos inteiros – Fundamentos de P...
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
2. Programação e resolução de problemas; Algoritmos; Snap! – Fundamentos de P...
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
1. Computador; Línguas naturais; Linguagens de Programação; Algoritmo e progr...
 
Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2
 
Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5Programação Orientada por Objectos - Aula 5
Programação Orientada por Objectos - Aula 5
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
Eng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitosEng.ª do Software - 3. Processos da engenharia de requisitos
Eng.ª do Software - 3. Processos da engenharia de requisitos
 
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
6. Caracteres; Tipos char e int; Tipos de valor e de referência – Fundamentos...
 

Similaire à Programação Orientada por Objectos - Aula 7

[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
Felipe Pimentel
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portugues
Laura
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
 

Similaire à Programação Orientada por Objectos - Aula 7 (20)

Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4
 
Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4Programação Orientada por Objectos - Aula 4
Programação Orientada por Objectos - Aula 4
 
Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2
 
Semana 9: toString, classes, instâncias e objectos, Scanner
Semana  9: toString, classes, instâncias e objectos, ScannerSemana  9: toString, classes, instâncias e objectos, Scanner
Semana 9: toString, classes, instâncias e objectos, Scanner
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
 
Evento CODERS
Evento CODERSEvento CODERS
Evento CODERS
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
 
Curso avançado de c++ em portugues
Curso avançado de c++ em portuguesCurso avançado de c++ em portugues
Curso avançado de c++ em portugues
 
Clean code
Clean codeClean code
Clean code
 
Projeto locadora
Projeto locadoraProjeto locadora
Projeto locadora
 
Semana 8: Classes e instâncias, cadeias de caracteres
Semana  8: Classes e instâncias, cadeias de caracteresSemana  8: Classes e instâncias, cadeias de caracteres
Semana 8: Classes e instâncias, cadeias de caracteres
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Desenvolvimento iOS
Desenvolvimento iOSDesenvolvimento iOS
Desenvolvimento iOS
 
Minicurso kotlin UTFPR
Minicurso kotlin UTFPR Minicurso kotlin UTFPR
Minicurso kotlin UTFPR
 
Minicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPRMinicurso kotlin no desenvolvimento mobile - UTFPR
Minicurso kotlin no desenvolvimento mobile - UTFPR
 
Access vba
Access vbaAccess vba
Access vba
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02Programação Estruturada 2 - Aula 02
Programação Estruturada 2 - Aula 02
 
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
Os 10 maus habitos dos desenvolvedores jsf (JustJava e CCT)
 

Plus de Manuel Menezes de Sequeira

Plus de Manuel Menezes de Sequeira (12)

Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana  6: Matrizes multidimensionais, estratégias de resolução de problemasSemana  6: Matrizes multidimensionais, estratégias de resolução de problemas
Semana 6: Matrizes multidimensionais, estratégias de resolução de problemas
 
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaSemana  5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referência
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java
 
Semana 2: Funções e listas, variáveis
Semana  2: Funções e listas, variáveisSemana  2: Funções e listas, variáveis
Semana 2: Funções e listas, variáveis
 
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
Semana  1: Programação como arte de resolver problemas, algoritmos e problema...Semana  1: Programação como arte de resolver problemas, algoritmos e problema...
Semana 1: Programação como arte de resolver problemas, algoritmos e problema...
 
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...Semana  0: Computadores, linguagens e linguagens de programação, Noções de al...
Semana 0: Computadores, linguagens e linguagens de programação, Noções de al...
 
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
Semana 11: Enumerações, limites de tipos numéricos (gama e precisão)
 
Eng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de softwareEng.ª do Software - 10. Testes de software
Eng.ª do Software - 10. Testes de software
 
Eng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validaçãoEng.ª do Software - 9. Verificação e validação
Eng.ª do Software - 9. Verificação e validação
 
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizadorEng.ª do Software - 8. Desenho de interfaces com o utilizador
Eng.ª do Software - 8. Desenho de interfaces com o utilizador
 
Eng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónicoEng.ª do Software - 7. Desenho arquitectónico
Eng.ª do Software - 7. Desenho arquitectónico
 

Dernier

A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
TailsonSantos1
 

Dernier (20)

Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 

Programação Orientada por Objectos - Aula 7

  • 1.
  • 2. Multiplicidade de classes (solitões e classes-pacote)
  • 3.
  • 4. Associação package airtravel; public class Person { … } public class Flight { private Set<Person> passengers; … } 2009/2010 Programação Orientada por Objectos 3 airtravel Person - passenger(s) * Carries Associação * Flight
  • 5. Ligação 2009/2010 Programação Orientada por Objectos 4 airtravel john: Person Person - passenger(s) * - passenger Carries Carries tp344: Flight jim: Person Carries Ligações Associação - passenger Carries - passenger * janet: Person Flight
  • 6. Associação: agregação package vehicles; public class Car { private Set<Wheel> wheels; … } public class Wheel { private Car car; … } 2009/2010 Programação OrientadaporObjectos 5 vehicles Car - car 0..1 IsPartOf Agregação - wheel(s) 3..6 Wheel
  • 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 - company 1 IsPartOf Composição - department(s) * Departament
  • 8. Associação E os lugares? 2009/2010 Programação Orientada por Objectos 7 airtravel Person - passenger(s) * Carries Associação * Flight
  • 9. 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 - passenger(s) 0..1 Carries Associação qualificada * seat: Seat Flight
  • 10. Associação E características especiais, como a dieta pretendida? 2009/2010 Programação Orientada por Objectos 9 airtravel Person - passenger(s) * Carries Associação * Flight
  • 11. 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 - passenger(s) * Carries diet: Diet Classe associativa * Flight
  • 12. 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 - passenger(s) * Carries Carries diet: Diet Classe associativa * Flight
  • 13. 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 - passenger(s) * Carries diet: Diet Classe associativa * Flight
  • 14. 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 n..m MyClass
  • 15. Solitão (singleton) package mypackage; public final class MySingleton { private static final MySingleton INSTANCE = new MySingleton(); privateMySingleton() { assert INSTANCE == null : …; } public static MySingletongetInstance() { return INSTANCE; } … } 2009/2010 Programação Orientada por Objectos 14 1 MySingleton
  • 16. 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) {…} … } 0 Math
  • 17. Diagramas Modelo Área dinâmica Área física Área estrutural Área de gestão do modelo … … … Vista de interacção … Diagrama de sequência 2009/2010 Programação Orientada por Objectos 16
  • 18. 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
  • 19. Exemplo 1 2009/2010 Programação Orientada por Objectos 18 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. sd = sequencediagram Withdrawal é o nome da interacção. sd withdrawal : AtmInterface : Bank : Account valid = valid(card, pin) Linha de vida. Que falta aqui? Que falta aqui? withdraw(card, amount) withdraw(amount) Invocação. Linha de vida activa. Retorno.
  • 20. Exemplo 2 2009/2010 Programação Orientada por Objectos 19 sd withdrawal : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) Invocação recursiva. Reactivação do objecto. withdraw(card, amount) withdraw(amount)
  • 21. Exemplo 3 2009/2010 Programação Orientada por Objectos 20 sd withdrawal : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) Invocação dependente de guarda. [valid] withdraw(card, amount) withdraw(amount)
  • 22. Exemplo 4 2009/2010 Programação Orientada por Objectos 21 sd withdrawal alt : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) Fragmentos alternativos. withdraw(card, amount) withdraw(amount) [valid] Guarda de fragmento. [¬valid]
  • 23. Exemplo 5 2009/2010 Programação Orientada por Objectos 22 sd withdrawal alt : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) withdraw(card, amount) withdraw(amount) [valid] Nenhuma das guardas anteriores. [else]
  • 24. Exemplo 6 2009/2010 Programação Orientada por Objectos 23 sd withdrawal opt : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) Quando há apenas um fragmento. withdraw(card, amount) withdraw(amount) [valid]
  • 25. Exemplo 7 2009/2010 Programação Orientada por Objectos 24 sd withdrawal opt loop(1, 3) : AtmInterface : Bank : Account valid = valid(card, pin) valid(card) [¬valid] Ciclo com pelo menos uma e no máximo três iterações. Guarda do ciclo. withdraw(card, amount) withdraw(amount) [valid]
  • 26. 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 Programação Orientada por Objectos 25
  • 27. Referências UML® ResourcePage (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çõesnabiblioteca) 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 Programação Orientada por Objectos 26
  • 28. 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 Programação Orientada por Objectos 27
  • 29. 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 Programação Orientada por Objectos 28

Notes de l'éditeur

  1. O solitão é um padrão de desenho (design pattern). Corresponde a uma classe que possui apenas uma instância. Falar-se-á sobre padrões de desenho noutras disciplinas.Nota: A palavra solitão (singleton) aplica-se ao padrão de desenho, a uma classe que o aplique e ao objecto (único) que é instância dessa classe.(Nota avançada: Há soluções alternativas a esta, até porque este padrão tem variadíssimos problemas. Em algumas das soluções a multiplicidade passa a ser 0..1, uma vez que elas garantem que o solitão é construído apenas quando a ele se tenta aceder.)