Visão abstrata

Propaganda
Orientação a Objetos
Hyggo Oliveira de Almeida
Laboratório de Sistemas Embarcados e Computação Pervasiva
Centro de Engenharia Elétrica e Informática
Universidade Federal de Campina Grande
Apresentação do curso
Motivação para o curso
Objetivos do curso
Estudo de caso
Conteúdo
Resultado esperado
Avaliação
Bibliografia
Dúvidas???
1
Motivação para o curso
Por que orientação a objetos???
Voltemos um pouco no tempo...
... nos anos 80 e antes disso!
O que é que está na moda?
Paradigma estruturado!!!
Análise (Entender o problema)
Projeto (Modelar a solução)
Programação (Implementar a solução)
Pós-Sistemas de Informação - FAL
3
Motivação para o curso
Entidades de abstração
Funções e procedimentos
Sistemas comerciais tradicionais
Controle de estoque, por exemplo
Linguagens
Pascal, Cobol, C, Fortran
Pós-Sistemas de Informação - FAL
4
2
Motivação para o curso
Conjunto de procedimentos e funções invocados
com base em uma seqüência
Nível de complexidade dos sistemas condiz com o
suporte do paradigma
Problema
Calcular o total do estoque
Solução
calcularTotalEstoque();
Pós-Sistemas de Informação - FAL
5
Motivação para o curso
Problemas
Aumento da complexidade dos sistemas
Difícil gerenciamento
Entidade de abstração muito granular
Função
Sistema corporativo
“Calcular lucro das vendas”
Recuperar informações das filiais
Transmitir dados via rede
Recuperar informações de câmbio
Recuperar informações de taxas de juros
...
Pós-Sistemas de Informação - FAL
6
3
Motivação para o curso
SIMULA 67
Simulação de objetos do mundo real
Objetos e relacionamento entre eles
Que tal aproveitar a abstração???
Cadeira
Sala
Mesa
Funções e dados
dispersos e não
coesos
Enxergar o problema...
pensando em objetos!!!
Pós-Sistemas de Informação - FAL
7
Objetivo do curso
Convencê-los de que OO é uma boa ferramenta
para o desenvolvimento de sistemas de informação
Introduzir conceitos básicos de OO
Noções de...
Análise orientada a objetos
Projeto orientado a objetos
Programação orientada a objetos
Notação UML
diagramas mais usados
Pós-Sistemas de Informação - FAL
8
4
Estudo de caso
Sistema de informação, em geral, possui
complexidade de projeto
Maior que a complexidade algorítmica
De acordo com o tempo de curso...
...foco em aprender os conceitos
...saber como aplicá-los
Vamos desenvolver uma agenda simples
Nomes, endereços e telefones
Pós-Sistemas de Informação - FAL
9
Conteúdo do curso (Parte I)
OO - Conceitos básicos
Visão abstrata
Classificação
Especialização
Polimorfismo
Visão concreta
Encapsulamento, information hiding, passagem de mensagem
Herança
Ligação dinâmica, variáveis polimórficas
Entendendo o estudo de caso com OO!
Pós-Sistemas de Informação - FAL
10
5
Conteúdo do curso (Parte II)
Análise Orientada a Objetos
Análise de requisitos
UML – O que é? Pra que serve?
Diagrama de casos de uso
Modelo conceitual
Analisando o estudo de caso!
Pós-Sistemas de Informação - FAL
11
Conteúdo do curso (Parte III)
Projeto Orientado a Objetos
Explodindo casos de uso: diagramas de interação
Diagrama de seqüência
Diagrama de colaboração
Definindo classes, atributos e métodos: diagrama de
classes
Projetando o estudo de caso!
Pós-Sistemas de Informação - FAL
12
6
Conteúdo do curso (Parte IV)
Programação Orientada a Objetos
Introdução à linguagem Java
Mapeando conceitos para elementos da linguagem
“Oi, eu sou um programa Java!”
Programando o estudo de caso!
Pós-Sistemas de Informação - FAL
13
Ao terminar o curso vocês
devem...
conhecer conceitos básicos da orientação a objetos!
entender por que OO pode ser uma boa solução
para o desenvolvimento de software
saber realizar uma análise orientada a objetos
entender conceitos de projeto orientado a objetos
ter noções básicas de programação orientada a
objetos
Pós-Sistemas de Informação - FAL
14
7
Avaliação (em dupla)
Entendendo o estudo de caso com OO!
Exercício: 2,5 pontos
Analisando o estudo de caso!
Exercício: 2,5 pontos
Projetando o estudo de caso!
Exercício: 2,5 pontos
Programando o estudo de caso!
Exercício: 2,5 pontos
Pós-Sistemas de Informação - FAL
15
Bibliografia
Livros
Object-Oriented Analysis and Design with Applications, Grady Booch,1993
Applying UML and Patterns: An Introduction to Object-Oriented Analysis and
Design, Larman, Prentice-Hall, 1998
UML – Guia do usuário, James Rambaugh, Campus, 2000
Java How to Program, Harvey M. Deitel Paul J. Deitel, Prentice Hall, 2002
Artigos
Object Orientation Revealed!, Dr Ashley M. Aitken, School of Information
Systems, Curtin University of Technology, Perth, Australia
Outras fontes
Internet!!!
Pós-Sistemas de Informação - FAL
16
8
Dúvidas sobre o curso???
Dúvidas sobre o conteúdo...
É só isso???
Isso tudo professor???
E vai dar tempo???
Meu e-mail de contato:
[email protected]
Pós-Sistemas de Informação - FAL
17
Conceitos Básicos de
Orientação a Objetos
Visão abstrata
Classificação
Especialização
Polimorfismo
Visão concreta
Encapsulamento
Information hiding
Passagem de mensagem
Herança
Ligação dinâmica
Variáveis polimórficas
Entendendo o estudo de caso com OO!
9
Visão abstrata
Por que visão abstrata?
Em geral, os conceitos de orientação a objetos são
ensinados utilizando a tecnologia que dá suporte à OO
“Java em 15 dias e meio”
“C++ e OO, sem desespero”
“Agora vai! PHP com OO”
“É pra amanhã? Java e OO em uma noite!”
Problema!
Não se sabe a diferença entre conceito e tecnologia
É possível implementar um código Java que não é orientado a
objetos!!!
Pós-Sistemas de Informação - FAL
19
Visão abstrata
Os conceitos de OO são independentes de
tecnologia
O paradigma de OO define uma nova maneira de
enxergar o mundo (leia-se, contexto do problema)
Primeiro vamos aprender a enxergar o mundo
pensando em objetos...
... depois aprendemos uma tecnologia para tornar
a implementação possível
Em Java!
Pós-Sistemas de Informação - FAL
20
10
Visão abstrata
Orientação a objetos é...
“enxergar e modelar o mundo como
um conjunto de objetos interrelacionados e em interação”
Pós-Sistemas de Informação - FAL
21
Visão abstrata
Uma vez que já vemos o mundo desta forma... tornase bem conveniente
Enxergar o mundo...
... ou qualquer outro “sistema”
... inclusive um “sistema de software”.
Pós-Sistemas de Informação - FAL
22
11
Visão abstrata
Ok... mas o que são objetos?
Árvore
Bicicleta
Churrasqueira
Casa
Carro
Pessoa
Árvore
Pós-Sistemas de Informação - FAL
23
Visão abstrata
Um objeto é uma entidade física ou
conceitual que possui uma identidade,
propriedades e operações. E que pode
ser construído e destruído.
Pós-Sistemas de Informação - FAL
24
12
Visão abstrata
Identidade define a unicidade do objeto!
MinhaÁrvore
Minha
Bicicleta
Minha
Churrasqueira
MinhaCasa
MeuCarro
MeuPai
MinhaOutra
Árvore
Pós-Sistemas de Informação - FAL
25
Visão abstrata
Propriedades definem o estado do objeto!!!
cor: verde
espécie: pé de mato ☺
cor: preta
marchas:32
grelhas: 4
material: ferro
cor: marrom
valor: 50000
cor: azul
marca: ford
ano: 1975
quilometragem: 5000
Pós-Sistemas de Informação - FAL
nome: João
profissão: jogador
idade: 45
cor: verde
espécie: pé de pau! ☺
26
13
Visão abstrata
Operações definem os comportamentos que
podem ser desempenhados pelo objeto!!!
• andar
• comer
• beber
• germinar
• fazer sombra
• acelerar
• frear
• acelerar
• frear
• ligar
• desligar
• assar
• germinar
• fazer sombra
Pós-Sistemas de Informação - FAL
27
Visão abstrata
Mas eu preciso sempre enxergar todos os
objetos do meu mundo (ou do meu sistema)???
Não!!! A maneira como eu enxergo o mundo
depende do contexto do problema!!!
Pós-Sistemas de Informação - FAL
28
14
Visão abstrata
De que ferramenta eu preciso pra enxergar o
mundo de acordo com o contexto???
Abstração
Exercício intelectual de seleção de alguns aspectos de
domínio do problema, desconsiderando outros aspectos
não interessantes para o problema em questão
Conceito fundamental da OO
Pós-Sistemas de Informação - FAL
29
Visão abstrata
Mundo
Apenas o que interessa
no mundo...
Contexto do
problema
... de acordo com o
contexto!
Pós-Sistemas de Informação - FAL
30
15
Visão abstrata
Objeto
• Propriedades:
• Modelo
• Propriedades:
• Tamanho
• Descrição
• Custo
• Preço de venda
• Velocidade
• Número
• Instruções
Estudante
Vendedor
Pós-Sistemas de Informação - FAL
31
Visão abstrata
Objeto
• Operações:
• faturar
• Operações:
• somar
• garantir
• requisitar
• subtrair
• multiplicar
• dividir
Abstração
Vendedor
Enxergar os objetos
de acordo com o
contexto
Pós-Sistemas de Informação - FAL
Estudante
32
16
Visão abstrata
Outros conceitos fundamentais da OO
Classificação
Orientação
a Objetos
Polimorfismo
Especialização
Pós-Sistemas de Informação - FAL
33
Visão abstrata
Classificação
Agrupamento de objetos que possuem um conjunto de
propriedades e operações em comum.
Define um tipo de objetos pelo conjunto de
propriedades e operações
cor: verde
espécie: pé de mato
• germinar
• fazer sombra
Pós-Sistemas de Informação - FAL
cor: verde
espécie: pé de pau!
34
17
Visão abstrata
Classificação
Tipo: árvore
Propriedades: cor e
espécie
Operações: germinar e
fazer sombra
Objetos que são do tipo “árvore”
Pé de mato
Pé de pau
Pós-Sistemas de Informação - FAL
35
Visão abstrata
Especialização
Identificação de um subconjunto de objetos dentro de
uma classificação (tipo) que possui um conjunto
adicional de propriedades e operações.
Define um subtipo do tipo original
Propriedades originais + propriedades adicionais
Operações originais + operações adicionais
Pós-Sistemas de Informação - FAL
36
18
Visão abstrata
Especialização
• Propriedades:
• cor, espécie
Tipo: árvore
• Operações:
• germinar, fazer sombra
Adicional
Subtipo: árvore frutífera
Adicional
• Propriedades:
• cor, espécie e fruta
• Operações:
• germinar, fazer sombra e
dar frutos
Pós-Sistemas de Informação - FAL
37
Visão abstrata
Especialização
Especialização
Tipo: árvore
Generalização
Subtipo: árvore frutífera
Pé de mato
Pé de pau
Macieira
Cajueiro
Pós-Sistemas de Informação - FAL
38
19
Visão abstrata
Pessoa
Formada
Carro
Veiculo
Oftalmologista
Generalização
Especialização
Especialização/Generalização
Carro de corrida
Pós-Sistemas de Informação - FAL
39
Visão abstrata
Polimorfismo
É a habilidade de diferentes tipos de objetos realizarem
as mesmas propriedades e operações de formas
diferentes
Tipo: veículo
• acelerar
• frear
• acelerar
• frear
Subtipo: bicicleta
Subtipo: carro
Pós-Sistemas de Informação - FAL
40
20
Visão abstrata
Polimorfismo
Veículo pode acelerar e frear.
Acelerar e frear possuem formas diferentes pra cada subtipo
Subtipo: carro
Subtipo: bicicleta
acelerar = pedalar!!!
frear = apertar
o freio!!!
frear = pisar no
freio!!!
acelerar = pisar
no acelerador!!!
Pós-Sistemas de Informação - FAL
41
Visão abstrata
Entenderam os conceitos abstratos???
Observem que os conceitos são independentes de tecnologia
Se aplicam a qualquer tipo de sistema
Nenhuma linguagem de programação foi utilizada!!!
Pensar orientado a objetos é independente de programar
usando uma linguagem com suporte à orientação a objetos!!!
Sendo assim...
É possível entender a orientação a objetos, sem saber
programar em nenhuma linguagem!!!
Pós-Sistemas de Informação - FAL
42
21
Visão abstrata
Mão na massa!!!
“Enxergue” um dos objetos presentes na imagem abaixo de
acordo com o triângulo de orientação a objetos!
Menos os veículos, é claro!!!
Classificação
OO
Polimorfismo
Especialização
Pós-Sistemas de Informação - FAL
43
Visão concreta
Como construir objetos do mundo real usando objetos de
software????
Pós-Sistemas de Informação - FAL
44
22
Visão concreta
Em primeiro lugar... teremos que criá-los! Certo???
Nem tudo é “observação”!!!
Sistema de controle de estoque
• produto
• item
• estoque
Sistema de controle de tráfego
• carro
• rua
• vaga
Sistema de acadêmico
• aluno
• professor
• matrícula
• nota
Pós-Sistemas de Informação - FAL
45
Visão concreta
Precisamos ter noção de como os objetos são
criados...
... mais ainda, precisamos de um modelo pra criação
de objetos diferentes de acordo com um mesmo
tipo!
Na visão concreta... precisamos de uma CLASSE!!!
Pós-Sistemas de Informação - FAL
46
23
Visão concreta
Uma classe é um modelo, um protótipo para a
criação de exemplares ou instâncias de um
mesmo tipo.
Um objeto é um exemplar de uma classe
Objetos
Classe
new
Pé-de-pau B
new
Pé-de-pau C
Modelo de pé
de pau
Pé-de-pau A
Meu pé-de-pau
Pós-Sistemas de Informação - FAL
47
Visão concreta
Apesar da semelhança, classe é diferente de tipo
Uma classe define, automaticamente, um tipo e
uma implementação
Tipo:Carro
Define “o que”
Define “como”
Classe:Carro
frear = pisar no
freio!!!
Pós-Sistemas de Informação - FAL
acelerar = pisar
no acelerador!!!
48
24
Visão concreta
Todo objeto, instância de uma classe, terá:
as mesmas propriedades/atributos da classe
as mesmas operações/métodos da classe
A classe então é uma ferramenta para padronizar a
criação de objetos de um determinado tipo
E aí? Entenderam pra que serve uma classe?
Dúvidas sobre a construção de objetos?
Relação objeto x classe?
Podemos seguir na visão concreta de OO?
Pós-Sistemas de Informação - FAL
49
Visão concreta
Além da classe, para tornar os conceitos
abstratos definidos anteriormente em tecnologia...
Linguagem de programação
Modelagem
Modelos de banco de dados
Modelos formais
Etc...
Classificação
OO
Especialização
Polimorfismo
... as seguintes ferramentas devem ser providas:
Encapsulamento, information hiding, passagem de mensagem,
herança, variáveis polimórficas e ligação dinâmica
Pós-Sistemas de Informação - FAL
50
25
Visão concreta
As ferramentas da visão concreta dão suporte às
diferentes fundações da visão abstrata
Information Hiding
Encapsulamento
Passagem de mensagem
Classificação
OO
Especialização
Polimorfismo
Ligação dinâmica
Herança
Variáveis polimórficas
Pós-Sistemas de Informação - FAL
51
Visão concreta
Concretizando classificação: Encapsulamento
Agrupamento de atributos e métodos dentro de um objeto
Objeto
Métodos
Acesso aos atributos
apenas via métodos!
Atributos
O que você
comeu no almoço?
Pós-Sistemas de Informação - FAL
52
26
Visão concreta
Concretizando classificação: Information Hiding
Mostre ao cliente apenas o que ele pode ver!!!
Métodos
Objeto
Privados/Protegidos
Acesso apenas aos
Métodos públicos!
Atributos
Pós-Sistemas de Informação - FAL
53
Visão concreta
Concretizando classificação: Passagem de mensagem
Diga ao objeto o que ele tem de fazer!!!
“Objeto, me dá o teu nome pra eu mostrar na tela!!!”
Cliente
(outro objeto)
getNome
Objeto
“Objeto, imprima seu nome na tela!!!”
Cliente
(outro objeto)
imprimirNome
Objeto
Pós-Sistemas de Informação - FAL
54
27
Visão concreta
Concretizando especialização: Herança
Inclua os atributos e métodos de uma (super)classe em suas
(sub)classes
Classe A
Herança
Classe B
Compartilhamento
A herda de B
ou
A estende B
Pós-Sistemas de Informação - FAL
55
Visão concreta
Concretizando polimorfismo: Variáveis polimórficas
Polimorfismo
Variáveis/Atributos podem manipular objetos de mais de um
tipo específico
Pessoa p
Tipo
p = new Pessoa
Mesmo tipo
p = new Aluno
Subtipo
Nome
p = new Professor
Pós-Sistemas de Informação - FAL
56
28
Visão concreta
Concretizando polimorfismo: Ligação dinâmica
Veiculo p
• acelerar
Polimorfismo
Que método executar em tempo de execução???
p = new Veiculo
• acelerar
p = new Carro
• acelerar
p = new Bicicleta
• acelerar
Pós-Sistemas de Informação - FAL
57
Visão concreta
Mão na massa!!!
Utilize objetos da figura para exemplificar cada um
dos conceitos concretos definidos anteriormente
Pós-Sistemas de Informação - FAL
58
29
Avaliação
Mão na massa!!!
Entendendo o estudo de caso com OO!
Identifique cada um dos conceitos aprendidos e “enxergue” o
estudo de caso utilizando orientação a objetos
Classificação
Especialização
Polimorfismo
Pós-Sistemas de Informação - FAL
59
Análise Orientada a
Objetos
Análise de requisitos
Descrição dos requisitos
Métodos de análise
UML – O que é? Pra que serve?
Diagrama de casos de uso
Modelo conceitual
Analisando o estudo de caso!
30
Análise de requisitos
Independente do paradigma utilizando, no contexto de
desenvolvimento de software, tem-se uma análise de
requisitos
O que desenvolver?
Como funciona o software?
Quais são seus requisitos funcionais e não-funcionais?
Quem são os usuários do sistema?
Quais as funcionalidades referentes a cada usuário do sistema?
Quem manda???
O cliente!!!!
Pós-Sistemas de Informação - FAL
61
Análise de requisitos
Durante a análise de requisitos, como descrever as
informações obtidas (do cliente)
Linguagem conhecida por todos os desenvolvedores
Compartilhamento dos requisitos deve ser simples
Novos desenvolvedores podem entrar na equipe
A equipe pode ser completamente alterada
Pós-Sistemas de Informação - FAL
62
31
Descrição dos requisitos
Análise estruturada
Modelo Entidade-Relacionamento
Diagrama de Fluxo de Dados
Envia sinal
Requisita
cliente
Se não recebeu dados
Espera
recepção
de dados
Cliente
Se recebeu dados
Armazenamento
Dados em memória
Consulta
Analisa
dados
Processos
Devolve
posição
Pós-Sistemas de Informação - FAL
Memoriza
63
Descrição dos requisitos
Análise estruturada
Modelo de fluxo de controle
Sistemas dirigidos a eventos
CSPEC – Especificação de controle
PSPEC: especificação de processo
Texto narrativo, equações, tabelas...
Ex.: processar senha...
Dicionário de dados
Listagem organizada das definições de todos os elementos
pertinentes ao sistema
Pós-Sistemas de Informação - FAL
64
32
Métodos de análise
Análise orientada a objetos
É necessário haver uma forma de mapear os requisitos em
entidades do mundo real
Se estamos no mundo de objetos, o fluxo de
controle/dados utilizado anteriormente não é suficiente
Precisamos mapear os mundos dos requisitos para os
modelos conceituais de objetos
Enfim...como descobrir classes a partir de um conjunto de
requisitos???
Pós-Sistemas de Informação - FAL
65
Métodos de análise
Principais métodos
OMT - Rumbaugh
Booch
Fusion (HP)
Objectory - Jacobson
Coad / Yourdon
Martin / Odell
Shlaer / Mellor
Pós-Sistemas de Informação - FAL
66
33
Métodos de análise
O objetivo do curso não é apresentar processos de
desenvolvimento...
... portanto, o ciclo padrão de desenvolvimento de software, com
Análise, Projeto e Implementação será seguido.
Simplificação do CDI
Documentação????
UML!!!!
Redefinição de fases para processos atuais
RUP – Fases diferentes: Análise, Elaboração, Implementação e
Implantação
XP – Foco inicial em testes, fase de refatoramento
Pós-Sistemas de Informação - FAL
67
Unified Modeling Language
Linguagem de Modelagem Unificada
OMG – 1994
Booch, Rambaugh, Jacobson (“Três amigos”)
Unificação de várias outras linguagens (Objectory, Booch, OMT,...)
Não define um processo... é apenas uma linguagem!!!
Processos:
Rational Unified Process (RUP) – “Três amigos”
eXtreme Programming (XP)
Agile Modeling (AM)
Ciclo de Desenvolvimento Iterativo (CDI)
Object Modeling Technique (OMT)
Pós-Sistemas de Informação - FAL
68
34
Unified Modeling Language
UML serve para…
Comunicação
Desenvolvedores compartilham idéias e informações
Documentação
Facilidade de manutenção e atualização do software
Construção
Facilita o processo de definição do projeto de software
Especificação
Facilita a especificação dos requisitos do software
Concepção
Facilita a atividade de abstração e mapeamento do problema para o
mundo de objetos
Pós-Sistemas de Informação - FAL
69
Unified Modeling Language
Elementos da UML
Estruturais
Qual o “desenho” do software?
Comportamentais
Como o software funciona?
Agupamento
Como as entidades lógicas (objetos) e físicas (entidades
computacionais) são agrupadas
Pós-Sistemas de Informação - FAL
70
35
Unified Modeling Language
Diagramas da UML (Modelo estático)
Casos de Uso
Descrição das funcionalidades do sistema
Classe
Qual o modelo de classes do sistema?
Objetos.
Qual o modelo de objetos do sistema, ou seja, como as
instâncias das classes se relacionam em tempo de execução?
Componentes
Como as classes estão organizadas em componentes
binários???
Implantação
Como é a arquitetura física do sistema???
Pós-Sistemas de Informação - FAL
71
Unified Modeling Language
Diagramas da UML (Modelo dinâmico)
Seqüência
Como ocorre a interação entre as entidades em relação ao
tempo?
Colaboração
Como ocorre a interação entre as entidades em relação à
agrupamentos funcional, organização ou conjunto de classes?
Estados
Quais os “retratos” do estado do sistema e de cada instância de
classe em tempo de execução?
Atividades
Quais as atividades relacionadas à execução do sistema, em
termos dos seus estados?
Pós-Sistemas de Informação - FAL
72
36
Unified Modeling Language
Os diagramas UML serão apresentados durante o
curso de acordo com a necessidade de uso
Voltemos ao foco de análise...
... lembram??? Precisamos de uma maneira de descobrir
possíveis classes a partir de requisitos
De acordo com o CDI...
Diagrama de Casos de Uso
Modelo conceitual
Pós-Sistemas de Informação - FAL
73
Diagramas de casos de uso
Técnica simples e intuitiva
Identificação dos requisitos de um sistema
Mais especificamente, serve para:
captar os requisitos dos usuários;
identificar objetos e suas propriedades;
particionar um sistema em partes conhecidas e compreendidas
pelos usuários;
facilitar a definição da melhor alternativa de projeto.
Pós-Sistemas de Informação - FAL
74
37
Diagramas de casos de uso
Mais especificamente, serve para:
elaborar o plano de testes e aceitação do sistema;
descrever a funcionalidade do sistema e criar a documentação
para os usuários;
estimar porte e esforço de desenvolvimento do sistema.
Pós-Sistemas de Informação - FAL
75
Diagramas de casos de uso
O que é um caso de uso???
Casos de uso são cenários que descrevem as diversas
situações em que os usuários utilizam o sistema.
O conjunto desses cenários descreve a funcionalidade do
sistema.
Pós-Sistemas de Informação - FAL
76
38
Diagramas de casos de uso
Notação de casos de uso
Sistema
Fronteira do
sistema
Caso de uso
1
Ator 1
Caso de uso
2
Atores
Ator 2
Caso de uso
3
Ator 3
Casos de uso
Pós-Sistemas de Informação - FAL
77
Diagramas de casos de uso
O que é descrito num diagrama de casos de uso?
Seqüência de ações / interações que ocorrem durante uma
determinada execução do sistema.
Conjunto de cenários mostrando as diversas seqüências de
interação entre os atores e o sistema.
Diálogo realizado entre um usuário e o sistema para se atingir
algum objetivo.
Pós-Sistemas de Informação - FAL
78
39
Diagramas de casos de uso
Exemplo: Sistema de vendas (Loja)
Sistema
Comprar
produto
Cliente
Notificar
promoções
...
Adicionar/Remover
produto
Gerente
...
Pós-Sistemas de Informação - FAL
79
Diagramas de casos de uso
Exemplo: Sistema de agência de viagens
Sistema
Comprar
passagem
Passageiro
Adquirir
Ticket
...
Listar passageiros
Atendente
...
Pós-Sistemas de Informação - FAL
80
40
Diagramas de casos de uso
Exemplo: Sistema acadêmico
Sistema
Ver notas
Aluno
...
Gerenciar
Notas
Professor
...
Gerenciar disciplina
...
Administrador
Pós-Sistemas de Informação - FAL
81
Diagramas de casos de uso
Detalhando casos de uso
Gerenciar Disciplina
Adicionar
Disciplina
Gerenciar
Disciplinas
Remover
Disciplina
Editar
Disciplina
Pós-Sistemas de Informação - FAL
82
41
Diagramas de casos de uso
Casos de uso: versão estendida
Caso de uso: Adicionar disciplina
Atores: Administrador
Descrição: O administrador solicita a adição de disciplina ao sistema,
repassando o nome e o código da disciplina a ser adicionada. O sistema
retorna um ok caso a operação tenha sucesso.
Seqüência de eventos
Ação do ator
1. Administrador solicita adição de
disciplina repassando nome e código.
Resposta do Sistema
2. Sistema verifica se não
há outra disciplina com mesmo
código e adiciona disciplina.
3. Sistema retorna ok para
Administrador.
Pós-Sistemas de Informação - FAL
83
Diagramas de casos de uso
Mão na Massa!!!
Crie um diagrama de casos de uso para o sistema de
informação de sua empresa
Identifique os atores
Identifique as funcionalidades do sistema
Relacione as funcionalidades aos atores
Escolha 3 casos de uso para descrevê-los de forma estendida!
Pós-Sistemas de Informação - FAL
84
42
Modelo conceitual
Já sabemos analisar os requisitos do software...
...vamos agora enxergar o problema de acordo com os
conceitos da orientação a objetos
Objetivo: identificar as classes que fazem parte do
sistema
Através da identificação de objetos
Aplicação do “triângulo da OO”
Para descrever os objetos que fazem parte do modelo
utilizaremos a notação UML
Pós-Sistemas de Informação - FAL
85
Modelo conceitual
Notação UML para classe
Bicicleta
Bicicleta
marchas
cor
pedalar
frear
Nome
Atributos
Bicicleta
marchas
cor
Métodos
Pós-Sistemas de Informação - FAL
86
43
Modelo conceitual
Em análise, os métodos das classes podem ser
omitidos
A idéia do modelo conceitual é ter uma primeira visão
de como os objetos do sistema se relacionam
Relacionam????
Tipos de relacionamento:
Herança
Associação
Agregação/Composição
Pós-Sistemas de Informação - FAL
87
Modelo conceitual
Descrevendo herança (relacionamento “é um”)
Veiculo
Veiculo
Bicicleta
Bicicleta
CarroEsportivo
Pós-Sistemas de Informação - FAL
Carro
CarroCorrida
88
44
Modelo conceitual
Associação (relacionamento comum)
estuda
Aluno
Assunto
Bidirecional
Disciplina
matricula-se
ensina
Rótulos
Direção do
relacionamento
Professor
Pós-Sistemas de Informação - FAL
89
Modelo conceitual
Agregação/Composição (“é composto de”)
Carro
Roda
Motor
Velocimetro
Painel
Relógio
Pós-Sistemas de Informação - FAL
Porta luvas
90
45
Modelo conceitual
Cardinalidade
4
Roda
0..*
*
Carro
1
Motorista
1
Motor
Painel
1
Velocimetro
1
Relógio
1
Porta luvas
Pós-Sistemas de Informação - FAL
91
Modelo conceitual
Mão na Massa!!!
Crie um modelo conceitual para o sistema de
informação de sua empresa
Identifique as entidades do modelo
Identifique as classes envolvidas
Defina as associações entre as classes
Pós-Sistemas de Informação - FAL
92
46
Avaliação
Mão na Massa!!!
Realize uma análise orientada a objetos do estudo de
caso
Casos de uso
Modelo conceitual
Pós-Sistemas de Informação - FAL
93
Projeto Orientado a
Objetos
Explodindo casos de uso: diagramas de interação
Definindo classes, atributos e métodos: diagrama de classes
Agrupando funcionalidades: pacotes
Diagrama de pacotes
Diagramas de Implementação
Projetando o estudo de caso!
47
Explodindo casos de uso:
diagramas de interação
Como mapear os requisitos descritos nos casos de uso em métodos
das classes???
Caso de uso
3
Ator 1
...
Classe C
Caso de uso
2
Ator 2
Classe B
...
Caso de uso 1
Ator 3
Classe A
Classe D
...
Pós-Sistemas de Informação - FAL
95
Explodindo casos de uso:
diagramas de interação
Diagramas de interação
modelagem dos aspectos dinâmicos do sistema
mostra uma interação formada por um conjunto de objetos e seus
relacionamentos, incluindo as mensagens que poderão ser trocados
entre eles
Interação = Objetos + Vínculos + Mensagens
Dois tipos
Diagramas de seqüência
Diagramas de colaboração
Pós-Sistemas de Informação - FAL
96
48
Explodindo casos de uso:
diagramas de interação
Diagramas de Seqüência
Descrevem um comportamento interno
Mostram os eventos entre objetos
Descrevem uma interação no tempo
Ideal para especificações de tempo real
Não mostram os tipos de associação entre objetos
Pós-Sistemas de Informação - FAL
97
Explodindo casos de uso:
diagramas de interação
Diagramas de Seqüência
Possui duas características que os diferencia de diagramas de
colaboração:
Linha de vida do objeto
Representa a existência de um objeto de acordo com o tempo
Foco de controle
Representa o período em que o objeto está executando algum processamento
Pós-Sistemas de Informação - FAL
98
49
Explodindo casos de uso:
diagramas de interação
Diagramas de Seqüência
Que interação/cenário iremos modelar? Conexão telefônica!
2
1
tu
O chamador inicia
a chamada
3
..
u..
uu
u
uu
uu
uu
u
uu
Sinal de linha
Discar
5
trim
6
4
m
mm
. tri
m..
m
tr im
mm
...
trim
mm
Toca no chamador
Conexão
estabelecida!
Toca no receptor
Pós-Sistemas de Informação - FAL
99
Explodindo casos de uso:
diagramas de interação
Objetos
Diagramas de Seqüência
Ator
Linha de tempo
Chamador
:Telefone
t = 0s
levanta telefone
t = 5s
ouve o sinal
t = 15s
t = 20s
:Recebedor
Linha de vida
disca
toca campainha
toca campainha
Período de
atividade
atende
pare de tocar
t = 30s
pare de tocar
Fim da linha!
Pós-Sistemas de Informação - FAL
100
50
Explodindo casos de uso:
diagramas de interação
Diagramas de Colaboração
Representam interações entre classes
O eixo dos tempos não está explicito
As classes/objetos trocam mensagens, através de vínculos, ligações
estabelecidas entre elas
São semelhantes aos diagramas de seqüência, contendo as mesmas
informações
Pós-Sistemas de Informação - FAL
101
Explodindo casos de uso:
diagramas de interação
Diagramas de Colaboração
Possui duas características que os diferencia de diagramas de
seqüência:
Caminho
Existe o caminho para indicar como um objeto esta vinculado a outro
Número de seqüência
Ordem temporal de uma mensagem
Pós-Sistemas de Informação - FAL
102
51
Explodindo casos de uso:
diagramas de interação
Diagramas de Colaboração
Objetos
Seqüência
1:procura assunto
:GerenteMaterial
3.1:pede detalhes
es
çõ
op
e
ec
orn
2:f
3:pede detalhes
:Livro
Usuário
3.2:detalhes
Ator
Pós-Sistemas de Informação - FAL
103
Explodindo casos de uso:
diagramas de interação
Voltemos à pergunta: “Como mapear os requisitos descritos
nos casos de uso em métodos das classes???”
Exemplo: Sistema acadêmico
Ver boletim
Aluno
...
Gerenciar
Notas
Professor
...
Gerenciar disciplina
Administrador
...
Pós-Sistemas de Informação - FAL
104
52
Explodindo casos de uso:
diagramas de interação
Explodindo “Ver boletim”
Ver boletim
Quais as entidades envolvidas?
Atores
Aluno
Entidades do modelo conceitual
Aluno
Nota
Boletim
Disciplina
Pós-Sistemas de Informação - FAL
105
Explodindo casos de uso:
diagramas de interação
Descrição estendida do caso de uso
Caso de uso: Ver notas
Descrição: o aluno solicita ao sistema a visualização do boletim, o sistema
retorna o boletim do aluno de acordo com as disciplinas que ele faz parte.
Seqüência de eventos:
Ação do ator
Resposta do sistema
1. Aluno solicita a visualização do seu
boletim repassando sua matrícula.
2. Sistema recupera boletim do aluno.
3. Sistema exibe o boletim ao aluno.
Pós-Sistemas de Informação - FAL
106
53
Explodindo casos de uso:
diagramas de interação
Mão na massa!!!
Crie um diagrama de seqüência e um
diagrama de colaboração para o caso de uso
“ver boletim”.
Atores
Entidades do modelo conceitual
Aluno
Nota
Boletim
Aluno
Disciplina
Pós-Sistemas de Informação - FAL
107
Explodindo casos de uso:
diagramas de interação
Diagrama de seqüência
Aluno
aluno1:Aluno
:Boletim
:Nota
:Disciplina
novo(“Hyggo”)
exibir()
getValor()
retorna valor
getNome()
retorna nome
mostrarNaTela
Pós-Sistemas de Informação - FAL
108
54
Explodindo casos de uso:
diagramas de interação
Diagrama de colaboração
1:novo(“Hyggo”)
2:exibir()
aluno1:Aluno
Aluno
:Boletim
r()
r
alo
lo
tV
va
e
g
a
:
1
rn
2.
to
re
2:
.
2
2.5:mostrarNaTela
2.
4:
re
2.
to
3:
rn
ge
a
tV
va
alo
lo
r()
r
:Nota
:Disciplina
Pós-Sistemas de Informação - FAL
109
Definindo classes, atributos e
métodos: diagrama de classes
Reduzindo o abismo
aluno1:Aluno
Ver boletim
:Boletim
:Nota
:Disciplina
novo(“Hyggo”)
exibir()
getValor()
retorna valor
getNome()
retorna nome
mostrarNaTela
Setas chegando!!!
Métodos implementados pela classe alvo!!!
Algumas são retornos de
métodos!!!
Pós-Sistemas de Informação - FAL
110
55
Definindo classes, atributos e
métodos: diagrama de classes
Reduzindo o abismo
Transformando um modelo conceitual em um diagrama de classes!!!
cursa
Aluno
Retornos
novo(nome):nulo
Disciplina
Boletim
Parâmetro
+ getNome():nome
+ exibir():nulo
- mostrarNaTela() ???
Métodos
Nota
+ getValor():valor
Pós-Sistemas de Informação - FAL
111
Definindo classes, atributos e
métodos: diagrama de classes
Mas o que é “valor” e “nome”??? Melhor trabalhar com os tipos!!!
Aluno
novo(nome):nulo
???
Tipo: String
Rep: cadeia de caracteres
Exemplo: “joão”, “carro”,...
Disciplina
+ getNome():nome
???
Nota
+ getValor():valor
Tipo: int
Rep: número inteiro
Exemplo: 10, 9, 8923,...
???
Tipo primitivo (POO)
Pós-Sistemas de Informação - FAL
112
56
Definindo classes, atributos e
métodos: diagrama de classes
Diagrama de classes
Definindo tipos de parâmetros e retornos
cursa
Aluno
novo(String nome):void
Disciplina
Tipo do
parâmetro
+ getNome():String
Tipo do retorno
Boletim
+ exibir():void
- mostrarNaTela():void
Nota
+ getValor():int
Pós-Sistemas de Informação - FAL
113
Agrupando funcionalidades:
pacotes
Na medida em que cresce o número de classes vai
ficando mais difícil entender o projeto
Classes acopladas
Muitos relacionamentos
Classes não separadas por contexto
Contextos das classes
Interface
Relatório
Armazenamento
Negócio
Pós-Sistemas de Informação - FAL
CAOS!!!
114
57
Agrupando funcionalidades:
pacotes
Facilidade de entendimento e manutenção do
programa
Alta coesão das funcionalidades
Agrupar funcionalidades relacionadas em “pacotes”
BD
Relatório
Negócio
Interface
Pós-Sistemas de Informação - FAL
115
Diagrama de pacotes
Relacionamentos entre os diversos pacotes podem ser
descritos em um diagrama de pacotes
Interface
Dependências
Negócio
Banco de dados
Relatório
Pós-Sistemas de Informação - FAL
116
58
Diagramas de implementação
Descrição do projeto físico necessário à execução do
software
Diagrama de componentes
Descrição de relacionamentos entre módulos binários
Diagrama de implantação
Descrição de componentes físicos com algum tipo de
processamento
Pós-Sistemas de Informação - FAL
117
Diagramas de implementação
Diagrama de componentes
Classes e pacotes, quando compilados, tornam-se módulos
binários... de execução de software
No caso de Java, os módulos binários são encapsulados em
arquivos .JAR (Java ARchive)
No diagrama de componentes tem-se uma visão do
relacionamento entre módulos binários do software sendo
desenvolvido
Pós-Sistemas de Informação - FAL
118
59
Diagramas de implementação
Diagrama de componentes
Dependências
agenda.jar
dados.xml
usuario.ini
relatorio.jar
Unidades
binárias
(componentes)
Pós-Sistemas de Informação - FAL
119
Diagramas de implementação
Diagrama de implantação
Arquitetura física do sistema
Utilizado para descrever o sistema do ponto de vista de
hardware
Nome
Nó = qualquer dispositivo com
capacidade de processamento
Pós-Sistemas de Informação - FAL
120
60
Diagramas de implementação
Diagrama de implantação
Cardinalidade
1
Servidor
BD
Cliente*
Agenda
*
Impressora
Servidor1
Impressão
Pós-Sistemas de Informação - FAL
121
Diagramas de implementação
Pacotes
Implantação
A junção dos diagramas descreve a estrutura completa
do software de forma hierárquica
agenda.jar
Pós-Sistemas de Informação - FAL
Classes
Negócio
Cliente (Agenda)
122
61
Projetando o estudo de caso!
Realize o projeto orientado a objetos do estudo de caso
A partir dos diagramas de caso de uso crie diagramas de interação
Seqüência e colaboração
A partir dos diagramas de interação crie o diagrama de classe
completo
Classes
Atributos
Métodos
Visibilidade
Cardinalidade
Relacionamentos
Pacote “agenda”
Pós-Sistemas de Informação - FAL
123
Programação Orientada
a Objetos
Da modelagem ao software
Introdução à linguagem Java
“Oi, eu sou um programa Java!”
Mapeando conceitos para elementos da linguagem
Programando o estudo de caso!
62
Da modelagem ao software
Como mapear os modelos orientados a objetos em
programas???
???
Mas antes disso...
... o que é um programa???
Pós-Sistemas de Informação - FAL
125
Da modelagem ao software
O que são programas?
Descrições de como os computadores devem operar para
realizar os serviços que desejamos que façam
É apenas a descrição de uma atividade em potencial
Para obter o serviço é necessário instruir o computador a
executar o programa
Um programa em execução é um processo
Pós-Sistemas de Informação - FAL
126
63
Da modelagem ao software
Em que consiste um programa?
Uma seqüência de instruções que um programa deve seguir
Então... construir um programa é determinar estas
seqüência de instruções
Exemplo: programa pra calcular média aritmética
1: calcule a média aritmética de dois números
Está correto! Mas o computador não vai entender!
Pós-Sistemas de Informação - FAL
127
Da modelagem ao software
Programar é detalhar!!!
1: leia os números cuja média será calculada
2: some os números
3: divida a soma dos números pela quantidade de números
4: imprima o resultado
Está mais detalhado! Mas o computador entende esta linguagem???
Pós-Sistemas de Informação - FAL
128
64
Da modelagem ao software
Linguagens de programação
Os programas escritos anteriormente estão em português
Mas o computador não entende português
Linguagens de programação são projetadas para serem
entendidas pelo computador
Sendo assim, ao escrever um programa utilizando uma LP,
este poderá ser “interpretado” e executado pelo computador
Pós-Sistemas de Informação - FAL
129
Da modelagem ao software
Linguagens de programação
Em geral provê:
Um conjunto básico de instruções
Mecanismos para compor instruções
Repetição, seqüência, alternativa
Mecanismos de abstração
Procedimentos e dados
Pós-Sistemas de Informação - FAL
130
65
Introdução à Java
O que é Java?
Uma das mais modernas linguagens de programação OO
que existem atualmente
Implementa de forma clara os conceitos de OO
É uma “extensão” da linguagem C/C++
Mais fácil de utilizar
Mais robusta!!!
Pós-Sistemas de Informação - FAL
131
Introdução à Java
Programação não é o foco do curso
Apenas conceitos básicos serão apresentados
Necessários à execução do programa
Apenas a parte OO será abordada, respondendo à
pergunta:
“Como ocorre o mapeamento dos modelos UML para Java”
Para realmente criar programas
Estudar algoritmos
Estudar a sintaxe da linguagem
Praticar muito!!!
Pós-Sistemas de Informação - FAL
132
66
Introdução à Java
Criando uma classe-exemplo
Bicicleta
Bicicleta
public class Bicicleta{
private int marchas = 2;
private String cor = “amarelo”;
- marchas:int
- cor: string
+ getMarchas():int
+ getCor(): string
public int getMarchas(){
return marchas;
}
public String getCor(){
return cor;
}
}
Pós-Sistemas de Informação - FAL
133
Introdução à Java
Tipos de dados em Java (primitivos)
Inteiros: byte / short / int / long
Reais: float / double
Outros: char / boolean / void
Não são classes, apenas tipos
byte numeroPequeno = 245;
double minhaNota = 9.5;
int numeroMaior = 245000;
boolean souBonito = true;
char primeiraLetra = ‘H’;
Pós-Sistemas de Informação - FAL
134
67
Introdução à Java
Mas como o computador entende Java???
Compilador/Interpretador
00001111010010
10010011010110
10100110
Compilador/
Interpretador
public class Bicicleta{
...
}
Java
Binário
Pós-Sistemas de Informação - FAL
135
“Oi, eu sou um programa Java”
Onde é que a brincadeira começa???
Nas classes são definidas apenas as entidades, seus
atributos e operações
Mas quem invoca/solicita as operações???
Precisamos de um método principal onde a execução do
programa começa!!!
Em Java, o método principal = main
Pós-Sistemas de Informação - FAL
136
68
“Oi, eu sou um programa Java”
TestePrincipal (Exibindo a mensagem acima)
Qualquer classe pode ter um método principal
Esta é a sintaxe exata do
método!!!
public class TestePrincipal{
public static void main(String args[]){
System.out.println(“Oi, eu sou um programa Java”);
}
}
Comando para exibir
mensagens na tela!!!
Pós-Sistemas de Informação - FAL
137
“Oi, eu sou um programa Java”
Definindo variáveis
Exemplo: Cálculo da média de duas notas: 5 e 6
public class TestePrincipal{
public static void main(String args[]){
double nota1 = 5;
double nota2 = 6;
double media = (nota1+nota2)/2;
System.out.println(“Média:” + media);
Variáveis
}
}
Pós-Sistemas de Informação - FAL
138
69
“Oi, eu sou um programa Java”
Atribuição:
=
int a = 2; char letra = ‘c’; boolean acesa = true;
Aritméticos: + - * / %
2 + 2, a - a, 3*a, letra + letra
Unários:
a++;
++ -a = a+1;
Lógicos:
a--;
a=a-1;
= = != < > <= >
2 == 2; a == a; 5 > 3; a != 3; true != false;
Pós-Sistemas de Informação - FAL
139
“Oi, eu sou um programa Java”
Utilizando operadores
public class TestePrincipal{
public static void main(String args[]){
int a = 1;
System.out.println(a);
a++;
System.out.println(a);
System.out.println(a > 2);
System.out.println(a != 1);
}
}
Pós-Sistemas de Informação - FAL
140
70
“Oi, eu sou um programa Java”
Até agora, só classes... e como criar objetos a partir
de uma classe???
Operador new
public class TestePrincipal{
public static void main(String args[]){
Bicicleta minhaBike = new Bicicleta();
System.out.println(“Cor:” + minhaBike.getCor());
System.out.println(“Marchas:” + minhaBike.getMarchas());
}
}
Pós-Sistemas de Informação - FAL
141
“Oi, eu sou um programa Java”
Parametrizando o método construtor de Bicicleta
Não inicializados!
Método construtor
com mesmo nome
da classe e sem retorno
public class Bicicleta{
private int marchas;
private String cor;
public Bicicleta(int marchas, String cor){
this.marchas = marchas;
this.cor = cor;
}
Atribuição: this resolve
problema de nomes duplicado
Pós-Sistemas de Informação - FAL
Parâmetros necessários
à construção
142
71
“Oi, eu sou um programa Java”
Construindo o objeto via construtor parametrizado
public class TestePrincipal{
public static void main(String args[]){
Bicicleta minhaBike1 = new Bicicleta(2, “verde”);
System.out.println(“Cor 1:” + minhaBike1.getCor());
System.out.println(“Marchas 1:” + minhaBike1.getMarchas());
Bicicleta minhaBike2 = new Bicicleta(7, “azul”);
System.out.println(“Cor 2:” + minhaBike2.getCor());
System.out.println(“Marchas 2:” + minhaBike2.getMarchas());
}
}
Pós-Sistemas de Informação - FAL
143
“Oi, eu sou um programa Java”
Mão na massa!!!
Crie as classes Pessoa e Carro
Crie dois atributos e seus métodos de acesso (get)
Utilize a classe TestePrincipal para criar dois objetos do
tipo Pessoa e dois objetos do tipo Carro com atributos
diferentes
Pós-Sistemas de Informação - FAL
144
72
Mapeando conceitos para
elementos da linguagem
Como fazer herança???
Carro
- cor:String;
- chassi:int;
+ getCor():String;
+ getChassi():int;
Carro
CarroF1
- tipoBico:String;
+ getTipoBico():String;
Carro de F1
Pós-Sistemas de Informação - FAL
145
Mapeando conceitos para
elementos da linguagem
Carro
- cor:String;
- chassi:int;
+ getCor():String;
+ getChassi():int;
CarroF1
- tipoBico:String;
+ getTipoBico():String;
public class Carro{
private String cor;
private int chassi;
public Carro(String cor, int chassi){
this.cor = cor;
this.chassi = chassi;
}
...gets...
}
public class CarroF1 extends Carro{
private String tipoBico;
public CarroF1(String cor, int chassi, String tipoBico){
super(cor, chassi);
this.tipoBico = tipoBico;
}
...getTipoBico...
}
Pós-Sistemas de Informação - FAL
146
73
Mapeando conceitos para
elementos da linguagem
Associação e Agregação/Composição
Carro
1
Atributo - coleção
4
Marcha
1
Roda
Volante
Aluno
Atributos simples
Professor
Pós-Sistemas de Informação - FAL
147
Mapeando conceitos para
elementos da linguagem
Agregação/Composição e Associação
Atributos simples (relacionamentos 1 para 1)
Um atributo para cada instância??? Ou seja, n atributos???
Carro
1
Marcha
1
Volante
public class Carro{
private Marcha marcha;
private Volante volante;
public Carro(Marcha marcha, Volante volante){
this.marcha = marcha;
this.volante = volante;
}
}
Pós-Sistemas de Informação - FAL
148
74
Mapeando conceitos para
elementos da linguagem
Agregação/Composição
Atributos de coleção (relacionamentos 1 para n)
Um atributo para cada instância??? Ou seja, n atributos???
Carro
4
Roda
public class Carro{
private Marcha marcha;
private Volante volante;
private Roda roda1;
private Roda roda2;
private Roda roda3;
private Roda roda4;
...
}
Pós-Sistemas de Informação - FAL
149
Mapeando conceitos para
elementos da linguagem
Agregação/Composição
Problema??? E se for um time de futebol???
Relacionamento entre Time e Jogador é 1 para 12.
Time
12
Jogador
public class Time{
private Jogador jogador1;
private Jogador jogador2;
...
private Jogador jogador12;
...
}
Pós-Sistemas de Informação - FAL
150
75
Mapeando conceitos para
elementos da linguagem
Agregação/Composição
Precisamos de um “saco” para guardar vários objetos de
um mesmo tipo
Precisamos de um array
Roda[ ] rodas = new Roda[4];
Array de rodas!!!
Atributo = coleção de “Roda”
Pós-Sistemas de Informação - FAL
151
Mapeando conceitos para
elementos da linguagem
Agregação/Composição
Usando array!!!
Carro
4
Roda
public class Carro{
private Roda[ ] rodas;
}
Pós-Sistemas de Informação - FAL
152
76
Mapeando conceitos para
elementos da linguagem
Agregação/Composição
Usando array!!!
public class TestePrincipal{
public static void main(String args[]){
Marcha minhaMarcha = new Marcha();
Volante meuVolante = new Volante();
Roda[ ] rodas = new Roda[4];
rodas[0] = new Roda(“Dianteira direita”);
rodas[1] = new Roda(“Dianteira esquerda”);
rodas[2] = new Roda(“Traseira direita”);
rodas[3] = new Roda(“Traseira esquerda”);
Carro meuCarro = new Carro(minhaMarcha, meuVolante, rodas);
}
}
Pós-Sistemas de Informação - FAL
153
Mapeando conceitos para
elementos da linguagem
Mão na massa!!!
Implementem o exemplo completo!!!
Carro
+ getRodas()
1
Marcha
4
Roda
1
Volante
- posicao:String
+ getPosicao():String
Pós-Sistemas de Informação - FAL
154
77
Programando o estudo de caso
Implemente o estudo de caso modelado
anteriormente (Agenda)
1.
Crie o pacote agenda!!!
Comando package!!! Use o Eclipse!!!
2.
3.
Crie as classes e os seus relacionamentos
Crie uma ClassePrincipal que realiza uma operação de
busca de contatos por nomes
Pós-Sistemas de Informação - FAL
155
Programando o estudo de caso
Pra facilitar o entendimento... todos iniciarão
programando de acordo com o mesmo projeto simples
Contato
Agenda
+ buscarContato():Contato
5
- nome:String
- end:String
- telefone:String
- email:String
+ gets...
public class ClassePrincipal{
public static void main(String args[]){
Agenda minhaAgenda = new Agenda();
Contato contato = minhaAgenda.buscarContato(“Hyggo”);
System.out.println(“Nome:” + contato.getNome());
System.out.println(“Endereço:” + contato.getEnd());
System.out.println(“Telefone:” + contato.getTelefone());
System.out.println(“E-mail:” + contato.getEmail());
Pós-Sistemas de Informação - FAL
}
}
156
78
Programando o estudo de caso
Vocês vão precisar de três novos comandos: if, for e
equals
Estrutura condicional – IF
If (condição){
...
}else{...}
Exemplo:
if (a == b){
System.out.println(“A e B são iguais!!!”)
}else{
System.out.println(“A e B são diferentes!!!”)
}
Pós-Sistemas de Informação - FAL
157
Programando o estudo de caso
Vocês vão precisar de três novos comandos: if, for e
equals
Estrutura de repetição – FOR
for (declaração de variáveis locais ; condição de parada; incrementos){
\\código executado repetidas vezes
}
for (int i=0; i<10; i++){
System.out.println(“Contador:” + i);
}
Pós-Sistemas de Informação - FAL
158
79
Programando o estudo de caso
Vocês vão precisar de três novos comandos: if, for e
equals
Método de comparação entre objetos – equals
“objeto.equals(outroObjeto)” = true/false
Ex.: “hyggo”.equals(“hyggo”) = true;
Ex.: “hyggo”.equals(“HYGGO”) = false;
String nome1 = “João”;
String nome2 = “José”;
if (nome1 == nome2){
System.out.println(“Nomes são iguais!!!”)
}else{
System.out.println(“Nomes são diferentes!!!”)
}
Pós-Sistemas de Informação - FAL
159
Programando o estudo de caso
Utilizando for, if e equals no método buscarContato
public class Agenda{
private Contato[] contatos = new Contato[20];
public Contato buscarContato(String nome){
for (int i=0; i<this.contatos.length;i++){
if (contato[i].getNome().equals(nome)){
return contato[i];
}
}
System.out.println("Contato não encontrado!");
return new Contato(“”,””,””,””);
}
}
Pós-Sistemas de Informação - FAL
160
80
Download