SlideShare una empresa de Scribd logo
1 de 44
Aula 6 Introdução ao UML:  ,[object Object]
 Áreas, vistas e tipos de diagrama
 Níveis de pormenor
 Notações para classes, objectos e relações,[object Object]
UML (Unified Modeling Language) Linguagem visual de modelação Diagramas representam modelo do sistema Ferramenta importante de comunicação Autores originais Grady Booch Ivar Jacobson James Rumbaugh Normalização OMG (Object Management Group) http://www.uml.org/ Versão 2.2 2009/2010 Programação Orientada por Objectos 3
Diagramas Estruturais Estáticos (de classes, de objectos) De desenho (estrutura interna, colaboração, componentes) Casos de uso Dinâmicos Máquinas de estados De actividades De interacção (de sequência, de comunicação) Físicos (de implantação) Gestão de modelos (de pacotes) 2009/2010 Programação Orientada por Objectos 4
Diagramas 2009/2010 Programação Orientada por Objectos 5 Modelo Área dinâmica Área física Área de gestão do modelo Área estrutural … … … Vista de casos de uso Vista estática Vista de desenho … … Diagrama de classes Diagrama de objectos
Diagrama de classes Representa Classes Relações entre classes Diagrama estrutural e estático Domínio do problema Conceitos  Modelo de análise Domínio da solução Classes Modelo de desenho 2009/2010 Programação Orientada por Objectos 6 Classes e suas relações não mudam durante execução do programa. Modela a estrutura lógica do sistema. A perspectiva é não dinâmica: a evolução temporal do sistema em execução não é explícita. Compreensão do problema, análise, recolha de requisitos, elaboração de glossário do domínio. Desenho, síntese, implementação. Possível geração automática de código.
Diagrama de objectos Representa Objectos Ligações entre objectos Diagrama estrutural e estático 2009/2010 Programação Orientada por Objectos 7 Fotografia estática do estado do sistema em execução num dado instante de tempo. Ajuda a compreender a estrutura dos dados do sistema. A perspectiva continua a não ser dinâmica: o sistema está parado no tempo.
Classes package mypackage; … public abstract  class MyAbstractClass {     private Set<Type> set;     private List<Type> list;     private TreeSet<Type>  sortedSet;     public static final Type constant = value;     public MyAbstractClass() {…}     private Type privateFunction(final Type parameter) {…}     void packagePrivateProcedure() {…}     protected abstract Type abstractProtectedFunction();     public static void classPublicProcedure() {…} } 2009/2010 Programação Orientada por Objectos 8 Classe representada por caixa com compartimentos. mypackage::MyAbstractClass Nome - set: Type [*] - list: Type [*] {ordered, nonunique} - sortedSet: Type [*] {sorted} + constant: Type = value {frozen} Atributos Operações «constructor»+ MyAbstractClass() - privateFunction(in parameter: Type): Type ~ packagePrivateProcedure() # abstractProtectedFunction(): Type + classPublicProcedure()
Classes package mypackage; … public class MyClass {     private Set<Type> set;     private List<Type> list;     private TreeSet<Type>  sortedSet;     public static final Type constant = value;     public MyClass() {…}     private Type privateFunction(final Type parameter) {…}     void packagePrivateProcedure() {…}     protected Type protectedFunction() {…}     public static void classPublicProcedure() {…} } 2009/2010 Programação Orientada por Objectos 9 mypackage::MyClass - set: Type [*] - list: Type [*] {ordered, nonunique} - sortedSet: Type [*] {sorted} + constant: Type = value {frozen} «constructor»+ MyClass() - privateFunction(in parameter: Type): Type ~ packagePrivateProcedure() # protectedFunction(): Type + classPublicProcedure()
Objectos import mypackage; … public class MyClassTester {     public static void main(final String[] arguments) { MyClasslocalVariable = new MyClass();         …     } } 2009/2010 Programação Orientada por Objectos 10 localVariable : mypackage::MyClass set = (value3, value1, value2) list = (value1, value2, value1) sortedSet = (value1, value2, value3) constant = value
Objectos import mypackage; … public class MyClassTester {     public static void main(final String[] arguments) { MyClasslocalVariable = new MyClass();         …     } } 2009/2010 Programação Orientada por Objectos 11 : mypackage::MyClass localVariable : «ref»mypackage::MyClass set = (value3, value1, value2) list = (value1, value2, value1) sortedSet = (value1, value2, value3) constant = value
Classes: especialização package mypackage; … public class MyDerivedClassextends MyClass {     … } 2009/2010 Programação Orientada por Objectos 12 mypackage::MyClass mypackage::MyDerivedClass Generalização Generalização
Objectos: especialização import mypackage; … public class MyClassTester {     public static void main(final String[] arguments) { MyClasslocalVariable = new MyDerivedClass();         …     } } 2009/2010 Programação Orientada por Objectos 13 : mypackage::MyDerivedClass localVariable : «ref» mypackage::MyClass set = (value3, value1, value2) list = (value1, value2, value1) sortedSet = (value1, value2, value3) constant = value
Classes genéricas package mypackage; … public class MyClass<T> {     private Set<T> set;     private List<T> list;     private TreeSet<T>  sortedSet;     public static final T constant = value;     public MyClass() {…}     private TprivateFunction(final T parameter) {…}     void packagePrivateProcedure() {…}     protected TprotectedFunction() {…}     public static void classPublicProcedure() {…} } 2009/2010 Programação Orientada por Objectos 14 T mypackage::MyClass - set: T [*] - list: T [*] {ordered, nonunique} - sortedSet: T [*] {sorted} + constant: T = value {frozen} «constructor»+ MyClass() - privateFunction(in parameter: T): T ~ packagePrivateProcedure() # protectedFunction(): T + classPublicProcedure()
Classes genéricas: ligação (binding) import mypackage; … public class MyClassTester {     public static void main(final String[] arguments) { MyClass<String>localVariable = …;         …     } } 2009/2010 Programação Orientada por Objectos 15 T mypackage::MyClass mypackage::MyClass<T -> String> - set: String [*] - list: String [*] {ordered, nonunique} - sortedSet: String [*] {sorted} + constant: String = value {frozen} «bind» <T -> String> «constructor»+ MyClass() - privateFunction(in parameter: String): String ~ packagePrivateProcedure() # protectedFunction(): String + classPublicProcedure() Ligação (binding)
Objectos import mypackage; … public class MyClassTester {     public static void main(final String[] arguments) { MyClass<String> localVariable = new MyClass<String>();         …     } } 2009/2010 Programação Orientada por Objectos 16 : mypackage::MyClass<T -> String> set = (“string3”, “string1”, “string2”) list = (“string1”, “string2”, “string1”) sortedSet = (“string1”, “string2”, “string3”) constant = “string”
Pacotes package mypackage; … public class MyClass {     … } 2009/2010 Programação Orientada por Objectos 17 mypackage::MyClass
Pacotes package mypackage; … public class MyClass {     … } 2009/2010 Programação Orientada por Objectos 18 mypackage MyClass
Pacotes package mypackage; … public class MyClass {     … } 2009/2010 Programação Orientada por Objectos 19 mypackage MyClass Conteúdo
Interfaces package mypackage; … public interface MyInterface {     Type operation();     … } 2009/2010 Programação Orientada por Objectos 20 mypackage «interface» MyInterface operation(): Type …
Realização Interfaces package mypackage; … public interface MyInterface {     Type operation();     … } public  class MyClassimplements MyInterface { @Override     public Type operation() { … }     … } 2009/2010 Programação Orientada por Objectos 21 mypackage «interface» MyInterface operation(): Type … MyClass + operation(): Type …
Realização Interfaces package mypackage; … public interface MyInterface {     … } public  class MyClassimplements MyInterface {     … } 2009/2010 Programação Orientada por Objectos 22 mypackage MyInterface MyClass
Utilização Realização Interfaces package mypackage; … public interface MyInterface {     … } public  class MyClass implements MyInterface {     … } public class MyOtherClass {     …     public      void method(final MyInterface object) {         final Type variable = object.operation();         …     }     … } 2009/2010 Programação Orientada por Objectos 23 mypackage MyOtherClass MyInterface MyInterface MyClass
Utilização Realização Interfaces package mypackage; … public interface MyInterface {     … } public  class MyClass implements MyInterface {     … } public class MyOtherClass {     …     public      void method(final MyInterface object) {         final Type variable = object.operation();         …     }     … } 2009/2010 Programação Orientada por Objectos 24 mypackage MyOtherClass «interface» MyInterface MyClass
Restrições 2009/2010 Programação Orientada por Objectos 25 Rational Rational {mdc(numerator, denominator} = 1  Ʌ 0 < denominator} - numerator: int - denominator: int - numerator: int - denominator: int … … {mdc(numerator, denominator} = 1  Ʌ 0 < denominator}
Principais relações entre classes Generalização  Associação Agregação Composição Abstracção Realização Ligação (binding) Utilização Invocação Criação 2009/2010 Programação Orientada por Objectos 26 «bind» <…> «call» «create»
Utilização: criação package vehicles; public class Car {     … } package vehicles; public class Factory {     …     public Car newCar(…) {         …         return new Car(…);     }     … } 2009/2010 Programação Orientada por Objectos 27 vehicles Factory «create» Criação (utilização) Car
Associação 2009/2010 Programação Orientada por Objectos 28 business Company Associação Person
Associação: nome 2009/2010 Programação Orientada por Objectos 29 business Company WorksFor Associação Person
Associação: papeis 2009/2010 Programação Orientada por Objectos 30 business Company employer WorksFor Associação employee Person
Associação: multiplicidade 2009/2010 Programação Orientada por Objectos 31 business Company employer 0..1 WorksFor Associação employee(s) * Person
Multiplicidade 2009/2010 Programação Orientada por Objectos 32
Associação: representação package business; public class Company {     private     Set<Person> employees;     … } public class Person {     private Company employer;     … } 2009/2010 Programação Orientada por Objectos 33 business Company employer 0..1 WorksFor Associação employee(s) * Person
Representação e multiplicidade 2009/2010 Programação Orientada por Objectos 34
Associação: visibilidade package business; public class Company { private     Set<Person> employees;     … } public class Person { private Company employer;     … } 2009/2010 Programação Orientada por Objectos 35 business Company - employer 0..1 WorksFor Associação - employee(s) * Person
Associação: navegabilidade package business; public class Company {     private     Set<Person> employees;     … } public class Person {     private Company employer;     … } 2009/2010 Programação OrientadaporObjectos 36 business Company employer 0..1 WorksFor Associação - employee(s) * Person
Associação package vehicles; public class Car {     private Set<Wheel> wheels;     … } public class Wheel {     private Car car;     … } 2009/2010 Programação Orientada por Objectos 37 vehicles Car - car 0..1 IsPartOf - wheel(s) 3..6 Wheel
Associação: agregação package vehicles; public class Car {     @Parts     private Set<Wheel> wheels;     … } public class Wheel {     @Whole     private Car car;     … } 2009/2010 Programação Orientada por Objectos 38 vehicles Car - car 0..1 IsPartOf Agregação - wheel(s) 3..6 Wheel
Associação package business; public class Company {     private Set<Department>         departments;     … } public class Department {     private Company company;     … } 2009/2010 Programação Orientada por Objectos 39 business Company - company 1 IsPartOf - department(s) * Departament
Associação: composição package business; public class Company {     @Components     private Set<Department>         departments;     … } public class Department {     @Composite     private Company company;     … } 2009/2010 Programação Orientada por Objectos 40 business Company - company 1 IsPartOf Composição - department(s) * Departament
A reter 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 Programação Orientada por Objectos 41
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 42

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Python: a primeira mordida
Python: a primeira mordidaPython: a primeira mordida
Python: a primeira mordida
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)Iteráveis e geradores (versão RuPy)
Iteráveis e geradores (versão RuPy)
 
Introdução ao C#
Introdução ao C#Introdução ao C#
Introdução ao C#
 
Java6
Java6Java6
Java6
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
Java7
Java7Java7
Java7
 
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
 
Java8
Java8Java8
Java8
 
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
9. Operação toString(); Classes, instâncias e objectos; Scanner – Fundamentos...
 
Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java Revisão Sobre Programação Orientada a Objetos com Java
Revisão Sobre Programação Orientada a Objetos com Java
 
Javascript
JavascriptJavascript
Javascript
 
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 
NHibernate
NHibernateNHibernate
NHibernate
 
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
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Aula05
Aula05Aula05
Aula05
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 

Destacado

Destacado (20)

7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
7. Arrays multidimensionais; Estratégias de resolução de problemas – Fundamen...
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
 
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 7
Programação Orientada por Objectos - Aula 7Programação Orientada por Objectos - Aula 7
Programação Orientada por Objectos - Aula 7
 
Introdução à programação orientada para aspectos
Introdução à programação orientada para aspectosIntrodução à programação orientada para aspectos
Introdução à programação orientada para aspectos
 
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...
 

Similar a Programação Orientada por Objectos - Aula 6

Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
Infogenius
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
Felipe Pimentel
 

Similar a Programação Orientada por Objectos - Aula 6 (20)

Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2Data mapping com Groovy - Part 2
Data mapping com Groovy - Part 2
 
Palestra2009
Palestra2009Palestra2009
Palestra2009
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 
[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
 
Palestra cbq
Palestra cbqPalestra cbq
Palestra cbq
 
Jquery a technical overview
Jquery a technical overviewJquery a technical overview
Jquery a technical overview
 
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
 
Git, GitHub e OO
Git, GitHub e OOGit, GitHub e OO
Git, GitHub e OO
 
Turbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com KotlinTurbinando o desenvolvimento Android com Kotlin
Turbinando o desenvolvimento Android com Kotlin
 
Aula5
Aula5Aula5
Aula5
 
PHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e ObjetosPHP 5.3 - Classes e Objetos
PHP 5.3 - Classes e Objetos
 
Doctrine2 Seminário PHP
Doctrine2 Seminário PHPDoctrine2 Seminário PHP
Doctrine2 Seminário PHP
 
Evento CODERS
Evento CODERSEvento CODERS
Evento CODERS
 
Java annotation
Java annotationJava annotation
Java annotation
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
v
vv
v
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
Kotlin first
Kotlin firstKotlin first
Kotlin first
 
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
Plataforma de compiladores .NET, C# 6 e Visual Studio 2015
 

Más de Manuel Menezes de Sequeira

Más de Manuel Menezes de Sequeira (12)

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

Último

8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
tatianehilda
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
RogrioGonalves41
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
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
 

Último (20)

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
 
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
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito8 Aula de predicado verbal e nominal - Predicativo do sujeito
8 Aula de predicado verbal e nominal - Predicativo do sujeito
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Conflitos entre: ISRAEL E PALESTINA.pdf
Conflitos entre:  ISRAEL E PALESTINA.pdfConflitos entre:  ISRAEL E PALESTINA.pdf
Conflitos entre: ISRAEL E PALESTINA.pdf
 
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptxPlano de aula Nova Escola períodos simples e composto parte 1.pptx
Plano de aula Nova Escola períodos simples e composto parte 1.pptx
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdfAula prática JOGO-Regencia-Verbal-e-Nominal.pdf
Aula prática JOGO-Regencia-Verbal-e-Nominal.pdf
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
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
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
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...
 
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
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 

Programação Orientada por Objectos - Aula 6

  • 1.
  • 2. Áreas, vistas e tipos de diagrama
  • 3. Níveis de pormenor
  • 4.
  • 5. UML (Unified Modeling Language) Linguagem visual de modelação Diagramas representam modelo do sistema Ferramenta importante de comunicação Autores originais Grady Booch Ivar Jacobson James Rumbaugh Normalização OMG (Object Management Group) http://www.uml.org/ Versão 2.2 2009/2010 Programação Orientada por Objectos 3
  • 6. Diagramas Estruturais Estáticos (de classes, de objectos) De desenho (estrutura interna, colaboração, componentes) Casos de uso Dinâmicos Máquinas de estados De actividades De interacção (de sequência, de comunicação) Físicos (de implantação) Gestão de modelos (de pacotes) 2009/2010 Programação Orientada por Objectos 4
  • 7. Diagramas 2009/2010 Programação Orientada por Objectos 5 Modelo Área dinâmica Área física Área de gestão do modelo Área estrutural … … … Vista de casos de uso Vista estática Vista de desenho … … Diagrama de classes Diagrama de objectos
  • 8. Diagrama de classes Representa Classes Relações entre classes Diagrama estrutural e estático Domínio do problema Conceitos Modelo de análise Domínio da solução Classes Modelo de desenho 2009/2010 Programação Orientada por Objectos 6 Classes e suas relações não mudam durante execução do programa. Modela a estrutura lógica do sistema. A perspectiva é não dinâmica: a evolução temporal do sistema em execução não é explícita. Compreensão do problema, análise, recolha de requisitos, elaboração de glossário do domínio. Desenho, síntese, implementação. Possível geração automática de código.
  • 9. Diagrama de objectos Representa Objectos Ligações entre objectos Diagrama estrutural e estático 2009/2010 Programação Orientada por Objectos 7 Fotografia estática do estado do sistema em execução num dado instante de tempo. Ajuda a compreender a estrutura dos dados do sistema. A perspectiva continua a não ser dinâmica: o sistema está parado no tempo.
  • 10. Classes package mypackage; … public abstract class MyAbstractClass { private Set<Type> set; private List<Type> list; private TreeSet<Type> sortedSet; public static final Type constant = value; public MyAbstractClass() {…} private Type privateFunction(final Type parameter) {…} void packagePrivateProcedure() {…} protected abstract Type abstractProtectedFunction(); public static void classPublicProcedure() {…} } 2009/2010 Programação Orientada por Objectos 8 Classe representada por caixa com compartimentos. mypackage::MyAbstractClass Nome - set: Type [*] - list: Type [*] {ordered, nonunique} - sortedSet: Type [*] {sorted} + constant: Type = value {frozen} Atributos Operações «constructor»+ MyAbstractClass() - privateFunction(in parameter: Type): Type ~ packagePrivateProcedure() # abstractProtectedFunction(): Type + classPublicProcedure()
  • 11. Classes package mypackage; … public class MyClass { private Set<Type> set; private List<Type> list; private TreeSet<Type> sortedSet; public static final Type constant = value; public MyClass() {…} private Type privateFunction(final Type parameter) {…} void packagePrivateProcedure() {…} protected Type protectedFunction() {…} public static void classPublicProcedure() {…} } 2009/2010 Programação Orientada por Objectos 9 mypackage::MyClass - set: Type [*] - list: Type [*] {ordered, nonunique} - sortedSet: Type [*] {sorted} + constant: Type = value {frozen} «constructor»+ MyClass() - privateFunction(in parameter: Type): Type ~ packagePrivateProcedure() # protectedFunction(): Type + classPublicProcedure()
  • 12. Objectos import mypackage; … public class MyClassTester { public static void main(final String[] arguments) { MyClasslocalVariable = new MyClass(); … } } 2009/2010 Programação Orientada por Objectos 10 localVariable : mypackage::MyClass set = (value3, value1, value2) list = (value1, value2, value1) sortedSet = (value1, value2, value3) constant = value
  • 13. Objectos import mypackage; … public class MyClassTester { public static void main(final String[] arguments) { MyClasslocalVariable = new MyClass(); … } } 2009/2010 Programação Orientada por Objectos 11 : mypackage::MyClass localVariable : «ref»mypackage::MyClass set = (value3, value1, value2) list = (value1, value2, value1) sortedSet = (value1, value2, value3) constant = value
  • 14. Classes: especialização package mypackage; … public class MyDerivedClassextends MyClass { … } 2009/2010 Programação Orientada por Objectos 12 mypackage::MyClass mypackage::MyDerivedClass Generalização Generalização
  • 15. Objectos: especialização import mypackage; … public class MyClassTester { public static void main(final String[] arguments) { MyClasslocalVariable = new MyDerivedClass(); … } } 2009/2010 Programação Orientada por Objectos 13 : mypackage::MyDerivedClass localVariable : «ref» mypackage::MyClass set = (value3, value1, value2) list = (value1, value2, value1) sortedSet = (value1, value2, value3) constant = value
  • 16. Classes genéricas package mypackage; … public class MyClass<T> { private Set<T> set; private List<T> list; private TreeSet<T> sortedSet; public static final T constant = value; public MyClass() {…} private TprivateFunction(final T parameter) {…} void packagePrivateProcedure() {…} protected TprotectedFunction() {…} public static void classPublicProcedure() {…} } 2009/2010 Programação Orientada por Objectos 14 T mypackage::MyClass - set: T [*] - list: T [*] {ordered, nonunique} - sortedSet: T [*] {sorted} + constant: T = value {frozen} «constructor»+ MyClass() - privateFunction(in parameter: T): T ~ packagePrivateProcedure() # protectedFunction(): T + classPublicProcedure()
  • 17. Classes genéricas: ligação (binding) import mypackage; … public class MyClassTester { public static void main(final String[] arguments) { MyClass<String>localVariable = …; … } } 2009/2010 Programação Orientada por Objectos 15 T mypackage::MyClass mypackage::MyClass<T -> String> - set: String [*] - list: String [*] {ordered, nonunique} - sortedSet: String [*] {sorted} + constant: String = value {frozen} «bind» <T -> String> «constructor»+ MyClass() - privateFunction(in parameter: String): String ~ packagePrivateProcedure() # protectedFunction(): String + classPublicProcedure() Ligação (binding)
  • 18. Objectos import mypackage; … public class MyClassTester { public static void main(final String[] arguments) { MyClass<String> localVariable = new MyClass<String>(); … } } 2009/2010 Programação Orientada por Objectos 16 : mypackage::MyClass<T -> String> set = (“string3”, “string1”, “string2”) list = (“string1”, “string2”, “string1”) sortedSet = (“string1”, “string2”, “string3”) constant = “string”
  • 19. Pacotes package mypackage; … public class MyClass { … } 2009/2010 Programação Orientada por Objectos 17 mypackage::MyClass
  • 20. Pacotes package mypackage; … public class MyClass { … } 2009/2010 Programação Orientada por Objectos 18 mypackage MyClass
  • 21. Pacotes package mypackage; … public class MyClass { … } 2009/2010 Programação Orientada por Objectos 19 mypackage MyClass Conteúdo
  • 22. Interfaces package mypackage; … public interface MyInterface { Type operation(); … } 2009/2010 Programação Orientada por Objectos 20 mypackage «interface» MyInterface operation(): Type …
  • 23. Realização Interfaces package mypackage; … public interface MyInterface { Type operation(); … } public class MyClassimplements MyInterface { @Override public Type operation() { … } … } 2009/2010 Programação Orientada por Objectos 21 mypackage «interface» MyInterface operation(): Type … MyClass + operation(): Type …
  • 24. Realização Interfaces package mypackage; … public interface MyInterface { … } public class MyClassimplements MyInterface { … } 2009/2010 Programação Orientada por Objectos 22 mypackage MyInterface MyClass
  • 25. Utilização Realização Interfaces package mypackage; … public interface MyInterface { … } public class MyClass implements MyInterface { … } public class MyOtherClass { … public void method(final MyInterface object) { final Type variable = object.operation(); … } … } 2009/2010 Programação Orientada por Objectos 23 mypackage MyOtherClass MyInterface MyInterface MyClass
  • 26. Utilização Realização Interfaces package mypackage; … public interface MyInterface { … } public class MyClass implements MyInterface { … } public class MyOtherClass { … public void method(final MyInterface object) { final Type variable = object.operation(); … } … } 2009/2010 Programação Orientada por Objectos 24 mypackage MyOtherClass «interface» MyInterface MyClass
  • 27. Restrições 2009/2010 Programação Orientada por Objectos 25 Rational Rational {mdc(numerator, denominator} = 1 Ʌ 0 < denominator} - numerator: int - denominator: int - numerator: int - denominator: int … … {mdc(numerator, denominator} = 1 Ʌ 0 < denominator}
  • 28. Principais relações entre classes Generalização Associação Agregação Composição Abstracção Realização Ligação (binding) Utilização Invocação Criação 2009/2010 Programação Orientada por Objectos 26 «bind» <…> «call» «create»
  • 29. Utilização: criação package vehicles; public class Car { … } package vehicles; public class Factory { … public Car newCar(…) { … return new Car(…); } … } 2009/2010 Programação Orientada por Objectos 27 vehicles Factory «create» Criação (utilização) Car
  • 30. Associação 2009/2010 Programação Orientada por Objectos 28 business Company Associação Person
  • 31. Associação: nome 2009/2010 Programação Orientada por Objectos 29 business Company WorksFor Associação Person
  • 32. Associação: papeis 2009/2010 Programação Orientada por Objectos 30 business Company employer WorksFor Associação employee Person
  • 33. Associação: multiplicidade 2009/2010 Programação Orientada por Objectos 31 business Company employer 0..1 WorksFor Associação employee(s) * Person
  • 34. Multiplicidade 2009/2010 Programação Orientada por Objectos 32
  • 35. Associação: representação package business; public class Company { private Set<Person> employees; … } public class Person { private Company employer; … } 2009/2010 Programação Orientada por Objectos 33 business Company employer 0..1 WorksFor Associação employee(s) * Person
  • 36. Representação e multiplicidade 2009/2010 Programação Orientada por Objectos 34
  • 37. Associação: visibilidade package business; public class Company { private Set<Person> employees; … } public class Person { private Company employer; … } 2009/2010 Programação Orientada por Objectos 35 business Company - employer 0..1 WorksFor Associação - employee(s) * Person
  • 38. Associação: navegabilidade package business; public class Company { private Set<Person> employees; … } public class Person { private Company employer; … } 2009/2010 Programação OrientadaporObjectos 36 business Company employer 0..1 WorksFor Associação - employee(s) * Person
  • 39. Associação package vehicles; public class Car { private Set<Wheel> wheels; … } public class Wheel { private Car car; … } 2009/2010 Programação Orientada por Objectos 37 vehicles Car - car 0..1 IsPartOf - wheel(s) 3..6 Wheel
  • 40. Associação: agregação package vehicles; public class Car { @Parts private Set<Wheel> wheels; … } public class Wheel { @Whole private Car car; … } 2009/2010 Programação Orientada por Objectos 38 vehicles Car - car 0..1 IsPartOf Agregação - wheel(s) 3..6 Wheel
  • 41. Associação package business; public class Company { private Set<Department> departments; … } public class Department { private Company company; … } 2009/2010 Programação Orientada por Objectos 39 business Company - company 1 IsPartOf - department(s) * Departament
  • 42. Associação: composição package business; public class Company { @Components private Set<Department> departments; … } public class Department { @Composite private Company company; … } 2009/2010 Programação Orientada por Objectos 40 business Company - company 1 IsPartOf Composição - department(s) * Departament
  • 43. A reter 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 Programação Orientada por Objectos 41
  • 44. 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 42
  • 45. 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 43
  • 46. Sumário Introdução ao UML Noções Áreas, vistas e tipos de diagrama Níveis de pormenor Notações para classes, objectos e relações Notações para as relações mais importantes, incluindo a generalização, a associação, a agregação e a composição 2009/2010 Programação Orientada por Objectos 44

Notas del editor

  1. Cada tipo de diagrama dá-nos uma visão ou perspectiva do sistema. É crucialque os diferentes diagramas sejam coerentes entre si. Cada diagrama pode ser construído ou visto com diferentes níveis de granularidade (pormenor). O mesmo tipo de diagramas pode ser usado para expressar aspectos diferentes do sistema: Diagrama de classes para análise/desenho Diagrama de actividades para actores/operações/instruções individuaisCom ferramentas de modelação adequadas, os modelos representados pelos diagramas podem ser usados para gerar código automaticamente. As mesmas ferramentas podem também simplificar a tarefa de obter o modelo correspondente a código já existente.
  2. Nível de pormenor é variável. O nome, atributos, operações ficam em compartimentos separados.Usa-se o sublinhado nos métodos ou atributos de classe (em Java, static). O sublinhado no nome da classe tem um significado muito diferente, que se verá à frente. O itálico no nome da classe significa que a classe é abstracta. O mesmo acontece na linha de uma operação: se estiver em itálico, a operação é abstracta. Entre aspas «» escrevem-se os chamados estereótipos. O estereótipo «constructor» assinala uma operação que na realidade é um construtor. Entre parênteses rectos assinala-se a multiplicidade dos atributos. * significa “qualquer número”. Entre chavetas escrevem-se propriedades dos atributos. Ordered indica, num atributo com multiplicidade não unitária, que os elementos têm uma ordem extrínseca relevante. Nonunique indica que os elementos podem repetir-se. Sorted indica que os elementos têm uma ordem intrínseca (que é a sua ordem natural). In indica que o parâmetro é apenas de entrada. Não se espera, por isso, que seja modificado (ou melhor, no caso de ser uma referência, espera-se que o objecto referenciado não mude de valor, pelo menos através do parâmetro). Frozen indica que o atributo, depois de inicializado, não mudará de valor.Note-se a tradução para Java da notação. Chama-se a atenção para os atributos com multiplicidade não unitária, que são traduzidos em colecções de tipos apropriados.Categorias de acesso: privado+ público# protegido~ pacote
  3. Vamos alterar a classe para não ser abstracta, i.e., para ser concreta.
  4. Os objectos representam-se em caixas, como as classes, mas agora o nome é o do objecto, seguido de : e finalmente do nome da classe. Todo o título é sublinhado. É usual representarem-se os valores das propriedades (atributos) no compartimento apropriado.O nome de um objecto na realidade não é o nome do objecto. Tipicamente é o nome de uma referência através da qual acedemos ao objecto. Assim, pode haver múltiplos “nomes” para um objecto, quer em simultâneo, quer em sequência.
  5. Atenção! Isto não é UML, em rigor. Mas ajuda-nos a perceber a diferença entre referências e objectos referenciados.
  6. O UML permite-nos omitir os pormenores. Devemos fazê-lo sempre que isso tornar mais claro o diagrama, i.e., sempre que isso facilitar a apreensão do aspecto do desenho que o diagrama pretende representar.A relação de generalização é uma das mais importantes no UML. Repare-se na notação usada para as anotações, que funcionam como comentários
  7. Qual a relação entre classe genérica MyClasse&lt;T&gt; e a classe MyClasse&lt;T -&gt; String&gt;? É uma relação de “ligação” (binding)
  8. Pode, por isso, falar-se numa relação de conteúdo. Quando a relação é entre classes, chama-se-lhe embutimento (nesting).
  9. Note-se que as operações nas interfaces são sempre públicas e abstractas. Normalmente assume-se que assim é também no UML, pelo que se omitem as respectivas notações.
  10. Atenção! Assume-se que os vários tipos estão definidos em ficheiros diferentes, como é evidente! Só para poupar espaço é que se colocam as definições como se estivessem dentro do mesmo ficheiro. Daí que, neste e nos restantes diapositivos, haja apenas uma declaração de pacote mesmo quando há vários tipos.
  11. Existe dependência (uma classe usa outra), mas nenhuma é um atributo de outra.