Buscar

2ª Análise Orientada a Objetos 20180424T033946Z 001


Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

2ª - Análise Orientada a Objetos/Trabalho_AP2 - 05 5ANOO-NT1.pdf
Trabalho Acadêmico 
Justificativa: Proporcionar ao aluno contato com a pesquisa sobre alguns dos principais 
conceitos tecnológicos utilizados no mercado. 
Objetivo geral: Fazer com que o aluno pesquise alguns dos principais conceitos 
tecnológicos usados no mercado. 
Objetivos específicos: Proporcionar ao aluno a pesquisa de alguns dos principais 
conceitos tecnológicos muito utilizados no mercado de forma abrangente e sistêmica. 
Metodologia: Pesquisa bibliográfica e internet. 
Conteúdo: 
Conceitos de: 
- Diagrama de classes; 
- Diagrama de objetos; 
- Diagrama de sequência; 
- Diagrama de máquina de estado; 
- Diagrama de atividade; 
- Diagramas de componentes. 
Divisão: Introdução, desenvolvimento, conclusão e referências bibliográficas. 
Pontos: 3 
Data de entrega: até 22/05/2018 
Equipe de até 4 alunos. 
2ª - Análise Orientada a Objetos/01 - Analise Orientada a Objetos - Conceitos.pdf
1
Análise Orientada a Objetos - Conceitos
Análise Orientada a Objetos - Conceitos
2
Análise Orientada a Objetos - Conceitos
BIBLIOGRAFIAS
BÁSÍCA
1. SANTOS, RUI ROSSI DOS. Programação de Computadores em 
Java. Ed. Novaterra, 2014
2. DEITEL, H. M. & DEITEL, P. J. Java: Como Programar. 10ª Ed. 
Pearson, 2016.
3. SANTOS, RAFAEL. Introdução à Programação Orientada a 
Objetos. 2ª Ed. Campus, 2013.
Análise Orientada a Objetos - Conceitos
Linguagem Java
- Foi lançada em 1995 baseada na idéia de que um
software deveria ser capaz de rodar em diferentes dispositivos.
3
Análise Orientada a Objetos - Conceitos
- Os programas feitos em Java rodam em diferentes ambientes
graças a um componente da plataforma chamado JVM (Java
Virtual Machine) – que é um tipo de tradutor de código Java para
instruções específicas de cada sistema e dispositivo.
Análise Orientada a Objetos - Conceitos
Vantagens da Linguagem Java
- Custo
- Arquitetura
- Portabilidade
- Padronização
- Reusabilidade
- Escalabilidade
- Liberdade de Escolha
- Suporte
4
Análise Orientada a Objetos - Conceitos
Ambiente Java é basicamente, dividida em:
- Java Standard Edition (JSE)
Core – base do desenvolvimento Java (desktop)
- Java Enterprise Edition (JEE)
Aplicações corporativas, distribuídas
- Java Micro Edition (JME)
Aplicações para dispositivos móveis
Análise Orientada a Objetos - Conceitos
- Estrutura de um Programa em Java
class <nome> {
public static void main (String[ ] args){
<declarações>
<comandos>
}
}
- Cada programa é uma classe
- Programa fonte tem extensão .java e o compilado (bytecode) tem extensão .class
- A linguagem é case sensitive
- Nome da classe no programa deve ser igual ao nome do arquivo físico .java
- Convenção de Código Java (Code Conventions)
5
Análise Orientada a Objetos - Conceitos
Primeiro Programa em Java
- public é um especificador, por enquanto guarde public class como o início da
declaração de uma classe.
- class é a palavra reservada que marca o inicio da declaração de uma classe.
- PrimeiroPrograma é o nome dado a esta classe.
- O “abre chaves” marca o início das declarações da classe que são os atributos e
métodos. Esta classe só possui uma declaração, a do método main. Desta forma,
todo pedaço de código em Java deve pertencer ao abre chaves, fecha chaves da
definição de uma classe.
Análise Orientada a Objetos - Conceitos
Primeiro Programa em Java
- public é um qualificador do método que indica que este é acessível 
externamente a esta classe (por outras classes)
- static é um outro qualificador, que indica que o método deve ser compartilhado 
por todos os objetos que são criados a partir desta classe
- void indica que o método não retorna nenhum valor
6
Análise Orientada a Objetos - Conceitos
Primeiro Programa em Java
- main é um nome particular de método que indica para o compilador o início do
programa, é dentro deste método e através das iterações entre os atributos,
variáveis e argumentos visíveis nele que o programa se desenvolve.
- (String args[]) é o argumento de main e por consequência do programa todo,
ele é um vetor de Strings que é formado quando são passados ou não argumentos
através da invocação do nome do programa na linha de comando do sistema
operacional, exemplo: java PrimeiroPrograma argumentotexto1 argumentotexto2
Análise Orientada a Objetos - Conceitos
Primeiro Programa em Java
- System.out.println(“Meu primeiro programa em Java");
Chamada do método println para o atributo out da classe ou objeto
System, o argumento é uma constante do tipo String. println imprime a String e
posiciona o cursor na linha abaixo. Por hora você pode guardar esta linha de
código como o comando para imprimir mensagens na tela, onde o argumento que
vem entre aspas é a String a ser impressa. O ; “ponto e vírgula” separa operações.
7
Análise Orientada a Objetos - Conceitos
- Exercício: Abra o Editor e escreva o programa o Primeiro Programa:
- Atere o programa para que escreva:
Nome : Seu nome
Data Nascimento: Sua data de Nascimento
Idade: Sua idade
Análise Orientada a Objetos - Conceitos
Revisão de java (cont.)
- Identificadores
- Comandos
- Comentários
- Expressões e Operadores
- Variáveis
- Estruturas de Controle (Decisão e Repetição)
8
Análise Orientada a Objetos - Conceitos
Identificadores
As regras para nomeação de identificadores (variáveis, nomes de função, classes ou
label) seguem a seguinte regra:
• nomes devem começar com letra ou os caracteres _ ou $
• os caracteres seguintes podem conter números, letras, _ ou $
Ex:
Valor
$preco
20itens
_teste
S1mb010
JAVA
Observação: O Java considera diferença entre maiúsculas e minúscula.
Análise Orientada a Objetos - Conceitos
Identificadores
- Convenções (boas práticas)
- Primeira letra minúscula (ex: conta)
- Palavras compostas a segunda começa com letra maiúscula (ex: numeroConta)
- Constantes todas as letras maiúsculas: MAX_VALOR
- Os comandos são terminados por “;”
9
Análise Orientada a Objetos - Conceitos
Comentários
Java possui três tipos de comentário, tudo o que for comentário é ignorado pelo compilador 
servindo como documentação do programa.
- Comentário de uma linha: utiliza-se // antes do início do mesmo, pode ser usado em 
qualquer parte da linha.
Ex:
// Declaração de Variáveis
System.out.println(“Primeiro Programa”); //Imprime na tela
- Comentário de mais de uma linha: utiliza-se /* no início do mesmo e */ no final.
Ex:
/* Este comentário ficará visível somente no código, pois o compilador ignorará 
completamente este trecho entre os delimitadores */
Análise Orientada a Objetos - Conceitos
Comentários
- Comentário de documentação: utilizado para a geração de informações automáticas e 
padronizadas sobre a classe e seus atributos, através do javadoc. Inicia com /** e finaliza 
com */.
Ex:
/** Descrição: Descrição do funcionamento da classe 
Autor: nome do Autor
Data: data da última atualização */
10
Análise Orientada a Objetos - Conceitos
Caracteres Especiais
Caractere Significado
\n Nova Linha (Enter)
\t Tab (10 espaços)
\b Backspace (retorna 1 caractere)
\r Retorno (início da linha)
\f Formfeed (avança 1 página na impressora)
\\ Barra Invertida
\’ Apóstrofe
\” Aspas
Análise Orientada a Objetos - Conceitos
Operadores Aritméticos
Operador Significado
+ Soma
- Subtração
* Multiplicação
/ Divisão
% Módulo
11
Análise Orientada a Objetos - Conceitos
Atribuição
Expressão Significado
x += y x = x + y
x -= y x = x - y
x *= y x = x * y
x /= y x
= x / y
Análise Orientada a Objetos - Conceitos
Incremento e decremento
Expressão Significado
y = x++ Recebe o valor de x ANTES do incremento
y = --x Recebe o valor de x DEPOIS do decremento
12
Análise Orientada a Objetos - Conceitos
Operadores de Comparação
Operador Significado Exemplo
== Igual x == 3
!= Diferente (não igual) x != 3
< Menor que x < 3
> Maior que x > 3
<= Menor ou igual a x <= 3
>= Maior ou igual a x >= 3
Análise Orientada a Objetos - Conceitos
Operadores Lógicos
Operador Significado
&& Operador E (AND)
|| Operador OU (OR)
! Operador NÃO (NOT)
& Comparação bit a bit E (AND)
| Comparação bit a bit E (OU)
^ Comparação bit a bit OU-Exclusivo
13
Análise Orientada a Objetos - Conceitos
Variáveis
- Devem ser declaradas antes de serem usadas
- Devem ter um tipo definido (o tipo não muda)
- Devem ter seu valor iniciado antes de usá-la
- Deve ser usada dentro do escopo (método ou bloco)
Tipo Tamanho Valor Valor 
(bits) Mínimo Máximo
boolean 1 false true
char 16 0 215-1
byte 8 -27 27-1
short 16 -215 215-1
int 32 -231 231-1
long 64 -263 263-1
float 32
double 64
Análise Orientada a Objetos - Conceitos
Variáveis
- Devem ser declaradas antes de serem usadas
- Devem ter um tipo definido (o tipo não muda)
- Devem ter seu valor iniciado antes de usá-la
- Deve ser usada dentro do escopo (método ou bloco)
- Declaração: <tipo da variável> <nome da variável>;
- Declaração e atribuição: <tipo> <nome> = <valor>;
Exemplo:
int saldo;
double PI = 3.1416;
14
Análise Orientada a Objetos - Conceitos
String
String é uma classe que manipula cadeias de caracteres. A classe String
possui métodos para essas manipulações.
Exemplo:
String str = “Isto é uma String do Java”;
String nomeCliente=“Luis”, endereço, localTrabalho;
str.equals( str2 ) - Comparação entre Strings
str.length() – Tamanho da String
str.substring(0, 10) - string começando em 0 e terminando em 9
str.charAt(5) – Caractere na posição 5
str.indexOf(“uma”); - retorna a posição da palavra na String
str.replace(‘a’,’@’); - substitui “a” por “@”
str.replaceAll(“String”,”Cadeia de caracteres”); - Substitui uma palavra
Análise Orientada a Objetos - Conceitos
Exercício:
1. Sabendo que a área do círculo é dada pela fórmula: A=PI*r2 Onde PI=3.1416 e
r é o raio da circunferência
2. Crie um novo projeto chamado areaCirculo seguindo a convenção para nomear
os identificadores
3. Crie um comentário multilinha identificando a função da classe, seu nome e a
data atual.
4. Declare três variáveis dentro do método main, duas com valor (pi e raio) e uma
para a area. Faça um comentário explicando a finalidade de cada variável.
5. Calcule e escreva na tela o valor da área para as circunferências de raio 3, 5, e
9.
R3 = 28,2744
R5 = 78,54
R9 = 254.4696
15
Análise Orientada a Objetos - Conceitos
Estrutura de Controle – Decisão - IF
- Sintaxe:
If (condição)
<instrução>;
else --->opcional
<instrução>;
- Exemplo:
if ( x < y)
System.out.println(“ x e menor do que y”);
else
System.out.println(“ y e maior);
Análise Orientada a Objetos - Conceitos
Exercício:
O valor do ingresso em um cinema é definido de acordo com a idade do público. A
tabela é a seguinte:
- Menores de até 14 anos : R$ 5,00;
- De 15 a 21 anos: R$ 10,00;
- De 22 a 50 anos: R$ 15,00;
- Maiores de 50 anos são isentos.
Faça um programa que receba uma idade em uma variável e escreva o valor do
ingresso (comentando e seguindo as convenções)
16
Análise Orientada a Objetos - Conceitos
Solução:
public class cinema {
public static void main( String[] args ) {
int idade = 20;
if( idade <= 14 ) {
System.out.println( “R$ 5,00" );
}
if( idade > 14 && idade <= 21 ) {
System.out.println( “R$ 10,00" );
}
if( idade > 21 && idade <= 50 ) {
System.out.println( “R$ 15,00" );
}
if( idade >50 ){
System.out.println( "Isento" );
}
}
}
Análise Orientada a Objetos - Conceitos
Estrutura de Controle – Decisão - SWITCH
- Sintaxe:
switch(variável)
case (valor): ...
- Exemplo:
...
switch(i) {
case 0: System.out.println(“zero”);
break;
case 1: System.out.println(“um”);
break;
default:System.out.println(“n”);
}
17
Análise Orientada a Objetos - Conceitos
Estruturas de Repetição
- Sintaxe:
while (condição) do
<instrução>; <instrução>;
while (condição)
- Exemplo:
...
int i=0, s=0;
while (i<10) {
System.out.println(i); Instrução Composta ou em Bloco
s = s + i; //ou s+=i;
i = i + 1; //ou i++;
}
System.out.println(i + s);
Análise Orientada a Objetos - Conceitos
Estruturas de Repetição (cont.)
- Sintaxe:
for(inicialização; condição; incremento)
<instrução>;
- Exemplo:
...
for(int i=0; i<3; i++)
System.out.println(i);
18
Análise Orientada a Objetos - Conceitos
Estruturas de Repetição (cont.) - Break e Continue
- A instrução break ocasiona a saída imediata das estruturas while, for,
do/while ou switch
- A instrução continue desconsidera as instruções restantes de um laço e
prossegue com a próxima iteração
- Exemplo:
... ...
int i = 0; int i = 0;
while( i < 10 ){ while( i < 10 ){
if( i == 5 ) if( i==5 ) {
break; i++;
System.out.println(i); continue;
i++; }
} System.out.println(i);
System.out.println(i); i++;
}// end while
Análise Orientada a Objetos - Conceitos
Exercício:
Crie um programa que exiba na tela os números ímpares de 1 a 200. Separando-os
por vírgulas. (Use print no lugar de println)
Ex: 1, 3, 5,7,9,11,13...
19
Análise Orientada a Objetos - Conceitos
Solução:
public class numerosImpares {
public static void main( String[] args ) {
int i = 1;
do {
System.out.print( i + ”,”);
i=i+2;
} while( i <= 200 );
}
}
Análise Orientada a Objetos - Conceitos
Exercício:
Um sistema de pesquisa deve levantar os seguintes dados de 5 candidatos: Nome,
idade e sexo.
Com esses dados deve ser apresentado:
- Nome e idade de cada um
- Percentual de indivíduos do sexo masculino
- Percentual de indivíduos com idade superior a 28 anos
- A idade média do grupo
OBS: Usar estrutura de repetição
20
Análise Orientada a Objetos - Conceitos
Para usar recursos de GUI, os seguintes comandos podem ser adotados.
- javax.swing.JOptionPane.showInputDialog (<Msg>);
- javax.swing.JOptionPane.showMessageDialog(null,<Msg>,"Informação",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
Exemplo:
...
nome = javax.swing.JOptionPane.showInputDialog("Nome da pessoa:");
sexo = javax.swing.JOptionPane.showInputDialog("Sexo da pessoa:");
javax.swing.JOptionPane.showMessageDialog
(null, nome, "Nome da Pessoa", javax.swing.JOptionPane.INFORMATION_MESSAGE);
javax.swing.JOptionPane.showMessageDialog
(null, sexo, "Sexo de "+nome, javax.swing.JOptionPane.INFORMATION_MESSAGE);
Análise Orientada a Objetos - Conceitos
Solução:
import com.sun.org.apache.xpath.internal.operations.Div;
import java.text.DecimalFormat;;
public class calcularPercentual {
/**
* Listar Nome e Sexo de 5 (cinco) pessoas
*
* Aluno: João Roberto
* Data: 31/03/2009
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String nome, sexo;
int idade;
int cont = 0, somaIdade = 0, contM = 0, contI = 0;
double percentM = 0.0, percentI = 0.0, idadeM = 0.0;
do
{ cont = cont + 1;
nome = javax.swing.JOptionPane.showInputDialog("Nome da "+cont+" pessoa:");
idade = Integer.parseInt(javax.swing.JOptionPane.showInputDialog("Idade da "+cont+" pessoa:"));
sexo = javax.swing.JOptionPane.showInputDialog("Sexo da "+cont+" pessoa:");
javax.swing.JOptionPane.showMessageDialog(null, nome, "Nome da Pessoa",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
javax.swing.JOptionPane.showMessageDialog(null, idade, "Idade da Pessoa",
javax.swing.JOptionPane.INFORMATION_MESSAGE);
javax.swing.JOptionPane.showMessageDialog(null, sexo, "Sexo de "+nome,
javax.swing.JOptionPane.INFORMATION_MESSAGE);
if (sexo.equals("M") || sexo.equals("m")){
contM = contM + 1;
}
if (idade > 28){
contI = contI + 1;
}
21
Análise Orientada a Objetos - Conceitos
Solução (cont.):
somaIdade = somaIdade + idade;
}
while (cont < 5);
DecimalFormat df = new DecimalFormat("0.##");
percentM = (contM / 5.0) * 100;
javax.swing.JOptionPane.showMessageDialog(null, df.format(percentM)+"%","Percentual Sexo masculino", 
javax.swing.JOptionPane.INFORMATION_MESSAGE);
percentI = (contI / 5.0) * 100;
javax.swing.JOptionPane.showMessageDialog(null, df.format(percentI)+"%","Percentual de indivíduos com idade > 28 
anos", javax.swing.JOptionPane.INFORMATION_MESSAGE);
idadeM = somaIdade / 5.0;
javax.swing.JOptionPane.showMessageDialog(null, df.format(idadeM),"A idade média do grupo", 
javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
Análise Orientada a Objetos - Conceitos
Orientação a Objetos
22
Análise Orientada a Objetos - Conceitos
Orientação a Objetos
Análise Orientada a Objetos - Conceitos
Orientação a Objetos
23
Análise Orientada a Objetos - Conceitos
Orientação a Objetos
Análise Orientada a Objetos - Conceitos
Objetos
24
Análise Orientada a Objetos - Conceitos
Objetos
Análise Orientada a Objetos - Conceitos
Objetos
25
Análise Orientada a Objetos - Conceitos
Objetos
Análise Orientada a Objetos - Conceitos
Objetos
26
Análise Orientada a Objetos - Conceitos
Classes
Análise Orientada a Objetos - Conceitos
Classes
27
Análise Orientada a Objetos - Conceitos
Classes
Análise Orientada a Objetos - Conceitos
Classes
28
Análise Orientada a Objetos - Conceitos
Classes em Java
Análise Orientada a Objetos - Conceitos
Classes em Java
29
Análise Orientada a Objetos - Conceitos
Utilizando o Tipo Abstrato de Dados
Análise Orientada a Objetos - Conceitos
Lab. 01
- Crie um TAD contaCorrente, sem nenhum conteúdo;
- Crie uma classe aplicativo umaContaCorrente, nesta classe crie um
objeto do tipo contaCorrente.
30
Análise Orientada a Objetos - Conceitos
Atributos
Análise Orientada a Objetos - Conceitos
Acessando Membros de Objetos
31
Análise Orientada a Objetos - Conceitos
Atributos
Análise Orientada a Objetos - Conceitos
Lab. 02
32
Análise Orientada a Objetos - Conceitos
Métodos
Análise Orientada a Objetos - Conceitos
Métodos
33
Análise Orientada a Objetos - Conceitos
Métodos
Análise Orientada a Objetos - Conceitos
Métodos
34
Análise Orientada a Objetos - Conceitos
Métodos
Análise Orientada a Objetos - Conceitos
Métodos
35
Análise Orientada a Objetos - Conceitos
Exercício
Análise Orientada a Objetos - Conceitos
Exercício
36
Análise Orientada a Objetos - Conceitos
Encapsulamento
- Acessando atributos e Métodos
- Encapsulamento
- Modificadores de Acesso
- Métodos get() e set() Exercício
Análise Orientada a Objetos - Conceitos
Acessando Membros de Objetos
37
Análise Orientada a Objetos - Conceitos
Encapsulamento
Análise Orientada a Objetos - Conceitos
Encapsulamento
38
Análise Orientada a Objetos - Conceitos
Encapsulamento
Análise Orientada a Objetos - Conceitos
Modificadores de Acesso
39
Análise Orientada a Objetos - Conceitos
Modificadores de Acesso
Análise Orientada a Objetos - Conceitos
Lab1 - Encapsulando Atributos
40
Análise Orientada a Objetos - Conceitos
Modificadores de Acesso
Análise Orientada a Objetos - Conceitos
Métodos get() e set()
41
Análise Orientada a Objetos - Conceitos
Métodos get() e set()
Análise Orientada a Objetos - Conceitos
Métodos get() e set()
42
Análise Orientada a Objetos - Conceitos
Encapsulamento
Análise Orientada a Objetos - Conceitos
Lab1 - Métodos (get/set)
43
Análise Orientada a Objetos - Conceitos
Resumo
Análise Orientada a Objetos - Conceitos
Exercício 3
44
Análise Orientada a Objetos - Conceitos
Exercício 3
Análise Orientada a Objetos - Conceitos
Exercício 3
45
Análise Orientada a Objetos - Conceitos
Sobrecarga
Análise Orientada a Objetos - Conceitos
Sobrecarga de Métodos (overloading)
46
Análise Orientada a Objetos - Conceitos
Sobrecarga de Métodos
Análise Orientada a Objetos - Conceitos
Sobrecarga de Métodos (overloading)
47
Análise Orientada a Objetos - Conceitos
Sobrecarga (Overload) de Métodos
Análise Orientada a Objetos - Conceitos
Lab1 - Overload de Métodos
48
Análise Orientada a Objetos - Conceitos
Lab1 - Overload de Métodos
Análise Orientada a Objetos - Conceitos
Construtores
49
Análise Orientada a Objetos - Conceitos
Construtores
Análise Orientada a Objetos - Conceitos
Construtor
50
Análise Orientada a Objetos - Conceitos
Sobrecarga (Overload) de Construtores
Análise Orientada a Objetos - Conceitos
Resumo
51
Análise Orientada a Objetos - Conceitos
Sobrecarga (Overload) de Construtores
Análise Orientada a Objetos - Conceitos
Lab2 - Overload de Construtor
52
Análise Orientada a Objetos - Conceitos
Herança
Análise Orientada a Objetos - Conceitos
Herança
53
Análise Orientada a Objetos - Conceitos
Atributos e Métodos
Análise Orientada a Objetos - Conceitos
Implementação
54
Análise Orientada a Objetos - Conceitos
Lab1 - Herança
Análise Orientada a Objetos - Conceitos
Restrições
55
Análise Orientada a Objetos - Conceitos
Adicionando Atributos e Métodos
Análise Orientada a Objetos - Conceitos
Override
56
Análise Orientada a Objetos - Conceitos
Override
Análise Orientada a Objetos - Conceitos
Override
57
Análise Orientada a Objetos - Conceitos
Final
Análise Orientada a Objetos - Conceitos
Exercício
58
Análise Orientada a Objetos - Conceitos
Polimorfismo - Ligação Dinâmica
Análise Orientada a Objetos - Conceitos
Polimorfismo - Ligação Dinâmica
59
Análise Orientada a Objetos - Conceitos
Polimorfismo - Ligação Dinâmica
Cálculo Total
Análise Orientada a Objetos - Conceitos
Polimorfismo - Ligação Dinâmica
60
Análise Orientada a Objetos - Conceitos
Polimorfismo - Ligação Dinâmica
Análise Orientada a Objetos - Conceitos
Polimorfismo - Ligação Dinâmica
61
Análise Orientada a Objetos - Conceitos
Polimorfismo
Análise Orientada a Objetos - Conceitos
Polimorfismo
62
Análise Orientada a Objetos - Conceitos
Polimorfismo
Análise Orientada a Objetos - Conceitos
Polimorfismo
63
Análise Orientada a Objetos - Conceitos
Polimorfismo
Análise Orientada a Objetos - Conceitos
Lab 01 – Ligação Dinâmica/Polimorfismo
64
Análise Orientada a Objetos - Conceitos
Polimorfismo
Análise Orientada a Objetos - Conceitos
Verificação Dinâmica de Tipos
Erro1: Compilação.
O método render pertence somente 
ao subtipo(ContaPoupanca).
Solução: Type Cast
((ContaPoupanca)repContas[i]).render()
65
Análise Orientada a Objetos - Conceitos
Verificação Dinâmica de Tipos
Análise Orientada a Objetos - Conceitos
Exercicio 06 – Verificação Dinâmica de Tipos
66
Análise Orientada a Objetos - Conceitos
Recapitulação - Herança
Análise Orientada a Objetos - Conceitos
Recapitulação - Polimorfismo
67
Análise Orientada a Objetos - Conceitos
Pacotes em Java
Análise Orientada a Objetos - Conceitos
Pacotes em Java
68
Análise Orientada a Objetos - Conceitos
Pacotes em Java
Análise Orientada a Objetos - Conceitos
Pacotes em Java
69
Análise Orientada a Objetos - Conceitos
Pacotes em Java
Análise Orientada a Objetos - Conceitos
Modificadores de Acesso
70
Análise Orientada a Objetos - Conceitos
Modificadores de Acesso
Análise Orientada a Objetos - Conceitos
Modificadores de Acesso
71
Análise Orientada a Objetos - Conceitos
Modificador default
Análise Orientada a Objetos - Conceitos
Modificador default
72
Análise Orientada a Objetos - Conceitos
Lab 01 - Pacotes
Análise Orientada a Objetos - Conceitos
Lab 01 - Continuação
73
Análise Orientada a Objetos - Conceitos
Modificador de Acesso public
Análise Orientada a Objetos - Conceitos
Modificador de Acesso
74
Análise Orientada a Objetos - Conceitos
Modificador de Acesso
Análise Orientada a Objetos - Conceitos
Principais pacotes Java
2ª - Análise Orientada a Objetos/Analise Orientada a Objetos - UML.pdf
1
05 5ANOO-NT1
ANÁLISE ORIENTADA A OBJETOS
Prof. João Roberto
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Objetivos
• Mapear os conceitos de OO em UML
• Ser capaz de modelar um sistema 
usando UML
2
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
O que é a Unified Modeling 
Language (UML)?
• A UML é a linguagem padrão para 
visualizar, especificar, construir e 
documentar artefatos de um sistema de 
software
• A UML combina o melhor de
– Modelagem de Dados
– Modelagem de Negócios
– Modelagem de Objetos
– Modelagem de Componentes
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
O que é a Unified Modeling 
Language (UML)?
• A UML não é uma metodologia de 
desenvolvimento!
• Basicamente, a UML permite que 
desenvolvedores visualizem os produtos de 
seus trabalhos em diagramas 
padronizados.
3
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
• Visualização
• Especificação
• Construção
• Documentação
• Comunicação
A UML é uma linguagem de modelagem 
para:
O que é a Unified Modeling 
Language (UML)?
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
História da UML
• Décadas de 1950/60 – Sistemas de 
Softwares bastantes simples.
• Década de 1970 – Grande expansão do 
mercado computacional, computadores 
mais avançados e acessíveis.
• Década de 1980 – Surge a necessidade de 
interfaces mais sofisticadas, o que originou 
a produção de sistemas de softwares mais 
complexos. Surge a análise estruturada.
4
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
História da UML
• Início da Década de 1990 – Este é o 
período que surge um novo paradigma de 
modelagem, a Análise orientada à objetos.
• Fim da Década de 1990 – O paradigma da 
Análise orientada à objetos atinge sua 
maturidade. Surge a Linguagem de 
Modelagem Unificada (UML).
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Criadores da UML
• James Rumbaugh -
Object Modeling 
Technique (OMT)
• Grady Booch - Booch 
Method
• Ivar Jacobson -
Objectory (OOSE) 
Process
5
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Criadores da UML
• Cada autor adotava 
ideias dos métodos 
dos outros, então, 
evoluindo juntos 
produziriam 
melhorias
• A unificação dos 3 
métodos trariam 
estabilidade para o 
mercado 
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Elementos Essenciais
Elementos
Estruturais
Elementos
Comportamentais
Elementos de
Agrupamento
Elementos de
Anotação 
6
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
São as partes estáticas de um modelo,
representando elementos que são ou
conceituais ou físicos.
Exemplos:
Elementos Estruturais
• Classe
• Interface
• Use Cases
• Componente
• Nó
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Elementos Comportamentais
• Interação - especifica um conjunto de
mensagens trocadas entre objetos
• Máquina de Estado - especifica seqüências
de estados de um objeto
São as partes dinâmicas dos modelos da
UML.
Exemplos:
7
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Elementos de Agrupamento
• Pacotes - mecanismo para organização de
elementos dentro de grupos
São partes organizacionais dos modelos da 
UML.
Exemplo:
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Elementos de Anotação
• Nota - símbolo contendo restrições ou
comentários que são melhor expressadas em
textos
São partes explicativas dos modelos da UML.
São comentários que você aplica para
descrever, iluminar e remarcar elementos no
modelo.
Exemplo:
8
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagramas
• Use Case
• Classe
• Objeto
• Seqüência 
• Colaboração
• Estados
• Atividades
• Componentes
• Implantação
São representações gráficas de um conjunto
de elementos. São desenhados para
visualizar um sistema de diferentes
perspectivas.
A UML possui 9 diagramas:
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama Use Cases
• São especialmente importantes na
organização e modelagem das principais
funcionalidades de um sistema
• Use Case é a especificação de sequências de
ações para atender a uma funcionalidade do
sistema, interagindo com seus agentes
9
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de
Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Use cases
Estudante
Secretária
<<estende>> Solicitar histórico do
semestre atual
Solicitar histórico de
todos os semestres
Solicitar
histórico
<<estende>>
Verificar
dependências
Matricular
aluno
<<inclui>>
Sistema de controle
de pré-requisitos
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Classe
• Os diagramas de classes são os principais
diagramas estruturais da UML
• Diagramas de classe mostram classes,
interfaces e seus relacionamentos
• As classes especificam a estrutura e o
comportamento dos objetos, que são
instâncias de classes
10
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Classe
+confirmar()
+cancelar()
-calcularTotal():Currency
gerarNovoCodigo: String
-codigo: Integer
-dataRecebido
-total: Currency
Pedido
#creditoPermitido: Currency
#nivelCredibilidade()
-nome: String
-endereco: String
-dataPrimeiraCompra: Date
-dataUltimaCompra: Date
-totalComprado: Currency
Cliente
-quantidade: Integer
-preco: Currency
-emEstoque: Boolean
Item de Pedido
nomeContato: String
telefones[1..10]: String
CGC: String
FAX[1..3]: String
Cliente pessoa-jurídica
colocarListaNegra()
nome: String
CPF: String
numCartaoCredito
Cliente pessoa-física
Empregado
Produto
* representante
de vendas *
IPessoa
itens
0..*
1 faz
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Objetos
• Mostram objetos e seus relacionamentos
• Representam instâncias estáticas de
elementos dos diagramas de classes
• Os diagramas de objetos são úteis para a
modelagem de estruturas de dados
complexas
11
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Objetos
p2: Professor
matricula: "205-6712-09"
nome: "Jaelson Castro"
p1: Professor
codCurso: "IF291"
descrição: "MPS"
codTurma: I7
: Curso
codCurso: "IF185"
descrição: "AER"
codTurma: I6
: Curso
matricula: "219846534"
nome: "Nelson Mandella"
:aluno
matricula: "562746134"
nome: "John Major"
:aluno
: Aluno
: Aluno
: Aluno
: Aluno
c1: Curso
c2: Curso
c3: Curso
Bill
: Aluno
: Aluno
Lewinsky
-matrícula: String
-nome: String
Professor
-codDisciplina: String
-descrição: String
-codTurma: String
Curso
-matrícula: String
-nome: String
-período: Integer
Aluno
[0..10]
ministra
[1..5]
*
[1..3]
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Seqüência 
• Mostra um conjunto de objetos, seus
relacionamentos e as mensagens que
podem ser enviadas entre eles
12
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Seqüência
Janela de entrada
de pedido p: Pedido : ItemPedido :ItemEstoque
preparar()
* [para cada item do pedido]
preparar()
emEstoque := verificar()
[emEstoque]
remover() estoqueBaixo :=
verificEstoqueBaixo()
:ItemRenovEstoque
:ItemEntrega
[estoqueBaixo]
<<criar>>
[emEstoque]
<<criar>>
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Colaboração
• Mostra um conjunto de objetos, seus
relacionamentos e as mensagens que
enfatizam a organização dos objetos que
trocam mensagens
13
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Colaboração
Janela de entrada
de pedido
p: Pedido
: ItemPedido :ItemEstoque
:ItemRenovEstoque
:ItemEntrega
1: preparar()
1.1: *[para cada item do pedido]
 preparar()
1.1.1 : emEstoque := verif icar()
1.1.2 : [emEstoque] remover()
1.1.2.1: estoqueBaixo :=
 verificEstoqueBaixo()
1.1.2.2 [estoqueBaixo]
 <<criar>>
1.1.3 : [emEstoque]
 <<criar>>
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Estados
• Mostra uma máquina contendo estados,
transições, eventos e atividades
• Estes diagramas são usados para modelar
o comportamento de objetos (com
comportamento complexo)
• Nestes diagramas são modelados os
estados em que um objeto pode estar e os
eventos que fazem o objeto passar de um
estado para outro
14
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Ocioso
Manutenção
fazerManutenção
Validando
Selecionando Processando
Imprimindo
[continuar]
[não continuar]
H
entry / lerCartão
 exit / ejetarCartão
cartãoInserido
cancelar
Ativo
Diagrama de Estados
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Atividades
• Destaca a lógica de realização de uma tarefa
• Mostra o fluxo entre atividades (ações não-
atômicas)
• É semelhante aos antigos fluxogramas
• É usado também para modelar alternativas
de execução e atividades concorrentes
15
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Atividades
Procurar bebida
[achou café]
H
Pessoa
H
[sem café] [sem Coca]
[achou Coca]
Pegar lata
de Coca
Beber
Adicionar água à
máquina
Colocar café
no filtro
Colocar filtro
na máquina
Ligar máquina
Filtrar café
Pegar
xícara
Colocar café na
xícara
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Componentes
• Mostra os componentes de hardware e
software de uma aplicação e os
relacionamentos entre eles
• É usado para modelar o aspecto físico de um
sistema
• Exemplos de componentes são documentos,
executáveis e tabelas de bancos de dados
16
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Componentes
FormCadastro.html
Cadastro.exe
Principal.html
FormEntrada.html
Autenticacao.exe
<<link>>
<<link>>
Banco
Usuários
Senhas
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Implantação
• É usado para modelar a arquitetura de
distribuição em que o sistema será
executado
• É composto por nós e relacionamentos de
comunicação
• Um nó pode ser um computador, uma
rede, um disco rígido, um sensor, etc.
17
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
»
Nível de Corpo Cinco
Diagramas de Implantação
servidorWeb
Autenticação.exe
Cadastro.exe
servidorDeArquivos
FormCadastro.html
Principal.html
FormEntrada.html
servidorBancoDeDados
SGBD
O SGBD a ser
utilizado ainda
não foi escolhido.
PC - G309
Nestscape
Communicator
5.0
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagramas de Classes
18
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Sobre Classes
• Classes são o elemento mais importante de
qualquer sistema orientado a objetos
• Uma classe é uma descrição de um conjunto
de objetos com os mesmos atributos,
relacionamentos, operações e semântica
• Classes são usadas para capturar o
vocabulário de um sistema
• Classes são abstrações de elementos do
domínio do problema, como “Cliente”,
“Banco”, “Conta”
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Nomes
• Toda classe deve ter um nome que a
distinga das outras classes
• Um nome pode ser simples (apenas o
nome), ou pode ser precedido pelo nome
do pacote em que a classe está contida
Conta Banco
Exceções::ClienteNãoCadastrado
Cliente
19
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Notação básica
Nome (obrigatório)Atributos (opcional)
Operações (opcional)
Forma
origem
mover()
redimensionar()
exibir ()
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Atributos
• Um atributo representa alguma
propriedade do que está sendo modelado,
que é compartilhada por todos os objetos
da classe
• Os atributos descrevem os dados contidos
nas instâncias de uma classe
• Em um momento dado, um objeto de uma
classe conterá valores para todos os
atributos descritos na sua classe
20
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Atributos - Notação
• Atributos podem ser identificados apenas
com nomes
• Atributos podem ter seus tipos (ou classes)
especificados e terem valores padrão
definidos
Cliente
nome
endereço
telefone
Parede
altura : real
largura : real
espessura : real
viga : boolean = false
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Atributos - Notação
: Professor
titulo = “PhD”
nome = “Ivan”
: Professor
titulo = “Mestre”
Nome = “Gibeon”
Professor
titulo
nome
Valor do Atributo
Objeto
Nome do Atributo
Classe
21
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Operações
• Uma operação é uma abstração de alguma
coisa que se pode fazer com um objeto e
que é compartilhada por todos os objetos
da classe
• Um classe pode ter qualquer número de
operações, inclusive nenhuma
• Operações são o meio de alterar os valores
dos atributos
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Operações - Notação
• Como para os atributos, você pode especificar
uma operação apenas com seu nome
• Você pode também especificar a assinatura da
operação: seus parâmetros, o tipo desses
parâmetros e o tipo de retorno
Retângulo
mover()
aumentar()
diminuir()
22
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Resumo de classes
• Uma classe é composta por três seções
Nome da Classe DVD
Atributos
Operações
Hora
Status estrutura
comportamento
Voltar()
Pausar()
Adiantar()
Parar()
Tocar()
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Visibilidade
• Você pode usar marcações de acesso para
especificar o tipo de acesso permitido aos
atributos e operações
• Isto pode ser usados para classes, interfaces,
componentes, nós, use cases, subsistemas
+ público: todos os podem usar
# protegido: qualquer descendente poderá usar
- privado: somente usado na própria classe
23
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Relacionamentos
• Poucas classes vivem sozinhas
• Tipos de relacionamentos especialmente
importantes na modelagem
– Associações
– Agregação
– Composição
– Dependências
– Generalizações
– Realização
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Os relacionamentos ligam as classes/objetos
entre si criando relações lógicas entre estas
entidades. Os relacionamentos podem ser dos
seguintes tipos:
Relacionamentos
• Associação - especifica que objetos de um
elemento (classe) estão conectados a
objetos de outros elementos
24
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Relacionamentos
• Agregação - relacionamento fraco do tipo
“é parte de”. É um tipo especial de
associação
• Composição - relacionamento forte do tipo
“é parte de”. A composição entre um
elemento (o “todo”) e outros elementos
(“as partes”) indica que as partes só
existem em função do “todo”.
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Relacionamentos
• Dependência - relacionamento de uso, no
qual uma mudança na especificação de um
elemento pode alterar a especificação do
elemento dependente
• Generalização (herança) - relacionamento
entre descrições mais gerais e descrições
mais específicas, com mais detalhes sobre
alguns dos elementos gerais
• Realização - relacionamento entre uma
interface e o elemento que a implementa
25
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Relacionamentos - Notação
Associação
Sem/com navegação
Agregação
Realização
Generalização
Composição
Dependência
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Dependência
• Dependências são relações de uso
• Uma dependência indica que mudanças em
um elemento (o “servidor”) podem afetar
outro elemento (o “cliente”)
• Uma dependência entre classes indica que os
objetos de uma classe usam serviços dos
objetos de outra classe
Cliente Servidor
26
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Dependência –alguns tipos
• derive – a fonte é computada a partir do destino
• friend – a fonte tem acesso privilegiado ao destino
• instanceOf – o objeto fonte é instância da classe 
destino
• powertype – o destino é composto
por subconjuntos da 
fonte
• derivado – a fonte é computada a partir do destino
Entre pacotes: access e import
Entre use-cases: extend e include
Entre objetos: become, call e copy
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Generalização
• Relacionamento entre um elemento mais geral
(chamado de superclasse ou pai) e um mais
específico (chamado de subclasse ou filho)
Forma
origem
mover()
exibir()
Retângulo
ponto : Ponto
Círculo
raio : float
Polígono
pontos : List aDePontos
exibir()
Quadrado
27
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Herança Múltipla
• Ocorrem múltiplas superclasses para uma
mesma subclasse
Veículo Aquát ico
Veículo
Veículo Terrestre
Veículo Anfíbio
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Associação
• A associação é um relacionamento estrutural
que especifica que objetos de um elemento
estão conectados a objetos de outro elemento
Companhia Funcionárioemprega
28
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Multiplicidade
• É a cardinalidade de uma associação
Classe
exatamente 11
Classe
muitos (zero ou 
mais)
*
Classe
opcional (zero ou 
um)
0..
1
Classe
seqüência 
especificada
m..
n
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Associação Unária
• Quando há um relacionamento de uma
classe para consigo própria
Funcionário
1
1..*
1
1..*
gerencia
29
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Associação Binária
• Quando há duas classes envolvidas na
associação de forma direta de uma para a
outra
Cliente Pedido
0..*1
faz
1 0..*
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Associação: Navegabilidade
• Em geral a navegação entre as classes de uma
associação é bi-direcional
• Porém é possível limitá-la a apenas uma direção
Us uário Senha
30
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
• Papéis: um dos lados da associação
• Nomes de papéis são necessários para
associação entre dois objetos da mesma
classe
Associação: papéis
Companhia Empregado1..**
+empregador
1
0..*
+subordinado
+chefe
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Associação com Atributos
• Modela as propriedades associadas com
uma associação
• As propriedades devem ser representadas
por uma classe
Companhia Empregado
1..***
Trabalho
descrição
salário
31
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Monitor Teclado Mouse CaixaSistema
Computador
Agregação
• Uma forma especial de associação entre o
todo e suas partes, no qual o todo é
composto de partes
• Não impõe que a vida das “Partes”’ esteja
relacionado com a vida do “Todo”
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Composição
• Uma forma mais forte de agregação
• Há uma coincidência da vida das partes
• Uma vez criada a parte ela irá viver e
morrer com ele
• O “Todo” é responsável pelo
gerenciamento da criação e destruição das
partes
32
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Composição
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Interfaces
• Uma interface é um conjunto de operações
usado para especificar um serviço de uma
classe ou componente
• Diferentemente das classes, as interfaces
não especificam nenhuma estrutura
• Interfaces não podem conter atributos
33
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Interfaces
• Com as interfaces, é possível se concentrar
apenas nos serviços oferecidos por classes
ou componentes
• O uso de interfaces é uma maneira
elegante e poderosa de isolar a
especificação da implementação
• Uma interface especifica o contrato para
uma classe ou componente, sem definir
como ele será implementado
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Realização
• Realização é uma relação pela qual um
elemento especifica o contrato que outro
elemento deve implementar
• A realização é um relacionamento entre
uma especificação e sua implementação
• Indica que um elemento serve como
contrato que o outro deve seguir
34
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Realização - Notação
Empregado
Empregado_Impl
Empregado
verificarFicha()
calcularSalário()
<< interface>>
Empregado_Impl
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Como você modelaria:
• Dependente e Funcionário?
• Pedido e Item do pedido?
• Funcionário e Cartão de ponto?
• Carro, Roda, Direção e Carburador?
Exercícios
- Associação x Agregação x Composição
35
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Exercícios
• Identificar navegação e 
multiplicidade:
• Dependente e Funcionário;
• Pedido e Item do pedido;
• Funcionário e Cartão de ponto;
• Carro, Roda, Direção e Carburador;
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagramas Use Cases
36
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagramas de Use Cases
• Servem facilitam o entendimento de um
sistema mostrando a sua “visão externa”
• São usados para modelar o contexto de um
sistema, subsistema ou classe
• São uma das maneiras mais comuns de
documentar os requisitos do sistema
– Delimitam o Sistema
– Definem a funcionalidade do sistema
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Use Case
• Um use case é uma unidade funcional que
descreve o comportamento de um elemento
da aplicação
• contém sequências de ações, interagindo
com os atores que usam a aplicação
• inclui variantes, rotinas de erro, etc. que o
sistema executa
para produzir um resultado
observável para um ator
37
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Use Case: Representação 
Gráfica
• A coleção dos use cases deverá especificar todas 
as formas existentes de uso do sistema
Matricular aluno Solicitarhistórico
Verificar
pré-requisitos
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Atores
• O sistema será descrito através de vários
use cases que são executados por um
número de atores
• Atores constituem as entidades do
ambiente do sistema
• São pessoas ou outros subsistemas que
interagem com o sistema em
desenvolvimento
38
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Atores - Notação
Professora Sistema de controle
de pre-requisitos
Estudante
Secretária
<<Ator>>
Coordenador
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Atores: Especialização
• É possível definir tipos gerais de atores e
especializá-los usando o relacionamento
de especialização
Cl iente
ClienteEspecial
39
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagramas de Use Cases
Estudante
Secretária
<<estende>> Solicitar histórico do
semestre atual
Solicitar histórico de
todos os semestres
Solicitar
histórico
<<estende>>
Verificar
dependências
Matricular
aluno
<<inclui>>
Sistema de controle
de pré-requisitos
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Diagrama de Use Case 
Gerar Relatório
Retornar Item
Mudar Item
Cliente
Operador
40
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Expressão de variantes de use case
• Nem sempre é óbvio decidir se uma
funcionalidade corresponde a um novo use
cases. As vezes trata-se de uma variação de
um mesmo use case
– Se as diferenças forem pequenas elas
podem ser descritas através de variantes de
um mesmo use case
– Se as diferenças são grandes elas devem ser
descritas como use cases separados
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Expressão de variantes de use case
• Fluxo principal de eventos
– Descreva a seqüência normal de eventos de um
use case
• Fluxo excepcional de eventos
– Descreva as variações dos cursos básicos de
eventos (ex: Erros)
41
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Expressão de Variantes
• Use Case Retornar item
Fluxo principal de eventos:
• Quando o cliente depositar os seus
itens, ele/ela irá pressionar o botão
recibo para obter o recibo. O recibo
impresso irá listar os itens
depositados, seus totais e o valor a ser
pago ao cliente
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Expressão de Variantes
• Use Case Retornar item
Fluxo excepcional de eventos:
• Quando o cliente retorna um item ele é
medido pelo sistema. A medição é
usada para determinar que tipo de lata,
garrafa ou gradeado foi depositado. Se
aceito, o total do cliente será
incrementado. Se não for aceito,
apresentar mensagem ´NÃO É VALIDA´
42
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Organizando Use Cases
• Generalização (Generalization)
• Inclusão (Include)
• Extensão (Extend)
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Organizando Use Cases
• Generalização (Generalization)
- Quando o caso de uso B generaliza o caso 
de uso C isso significa que, além de fazer 
tudo que nele está especificado (ele = B), 
ele também executará tudo que 
está especificado no caso de uso C. A 
direção do relacionamento é sempre do 
generalizador (aqui o caso de uso B) para o 
generalizado (caso de uso C).
43
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Organizando Use Cases
• Inclusão (Include)
- Quando o caso de uso A “inclui” o caso de 
uso B, significa que sempre que o caso de 
uso A for executado o caso de uso B
também será executado. A direção do 
relacionamento é do caso de uso que está 
incluindo para o caso de uso incluído.
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Organizando Use Cases
• Extensão (Extend)
- Quando o caso de uso B estende o caso de 
uso A, significa que quando o caso de uso 
A for executado o caso de uso B poderá
(poderá – talvez não seja) ser executado 
também. A direção do relacionamento é 
do caso de uso extensor (aqui o caso de 
uso B) para o caso de uso estendido (aqui 
o caso de uso A).
44
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Organizando Use Cases
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Exercício
Fazer Pedido
Pontos de extensão
set prioridade
Fazer Pedido Urgente
Validar
usuário
Verificar 
senha
Teste de
retina
45
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
<<estende>>
(set prioridade)
Fazer Pedido
Pontos de extensão
set prioridade
Fazer Pedido Urgente
Use Case Fazer Pedido
Fluxo principal de eventos: inclui (Validar usuário). Receber
do usuário os itens do pedido. (set prioridade). Submeter o
pedido para processamento
<<inclui>>
Validar
usuário
Verificar 
senha
Teste de
retina
é-um
é-um
Exercício
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Solicitar
material
Checar 
estoque
Comprar
material
Emitir pedido de 
compra
Exercício
Almoxarife
46
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
<<estende>
>
Solicitar
material
Checar 
estoque
<<inclui>>
Comprar
material
Emitir pedido de 
compraé-um
Exercício
Almoxarife
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Exercício
47
Texto do Título
• Nível de Corpo Um
– Nível de Corpo Dois
• Nível de Corpo Três
– Nível de Corpo Quatro
» Nível de Corpo Cinco
Exercício

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando