Académique Documents
Professionnel Documents
Culture Documents
Reviso de OO
Agenda
Definio
A POO um paradigma de programao de
computadores que usa os conceitos de
Objetos e Classes como elementos centrais
para representar e processar dados usados
nos programas.
POO um paradigma de anlise, projeto e
programao de sistemas de software
baseado na composio e interao entre
diversas unidades de software chamadas de
objetos.
Definio
Classe
uma espcie de forma que molda como os nossos
objetos sero estanciados na memria.
Classe a definio de como os objetos vo ser.
Classe a forma de bolo, objetos so os bolos que se faz
a partir daquela forma.
Classe
Fonte: UniversidadeXTI
Atributos
Elementos que definem a estrutura de uma classe, ou
seja, suas caractersticas. Basicamente a estrutura de
dados que vai representar a classe.
Atributos
Mtodos
So blocos de cdigo que pertencem a uma classe e tem
por finalidade realizar uma tarefa. Mtodos geralmente
correspondem uma ao do objeto.
Assinatura
Sobrecarga
Mtodos
Objetos
So representaes reais de uma classe;
Tambm so conhecidos como instncias da classe.
Objetos
Tarefinha 1
Criar a classe PessoaFisica com Nome, CPF, Endereo,
Bairro e Cidade todos do tipo String;
Criar a classe PessoaJuridica com Nome, CNPJ, Inscrio
Estadual, Endereo, Bairro e Cidade todos do tipo String;
Criar um mtodo chamado toString para cada classe que
retorne (Nome, CPF ou CNPJ, Endereo, Bairro e Cidade;
Criar um mtodo chamado getDocumento para cada
classe que retorne o CPF ou CNPJ;
Criar um mtodo chamado formatarDocumento na classe
PessoaFisica e PessoaJuridica.
Dvidas
Abstrao
utilizada para a definio de entidades do mundo real
(considerao as suas caractersticas e aes);
Representao apenas das caractersticas essenciais do
ponto de vista do desenvolvimento do sistema
Concentrao em ideias gerais (o que), no em
detalhes (como)
Abstrao
Abstrao
Abstrao
Encapsulamento
a tcnica utilizada para esconder uma ideia;
Proteo de suas variveis para evitar uma configurao
invlida:
Qtd de banheiros na casa = -1;
Velocidade do Avio durante voo: 0 KM
Nmero de Celular: abcd-efgh
Encapsulamento
Quando um controle remoto estraga, o que voc faz?
Troca o controle ou troca a televiso inteira?
O que acontece em um sistema de vendas, aonde temos
cadastros de funcionrios, usurios, gerentes, clientes,
produtos entre outros, se por acaso acontecer um
problema na parte do usurio?
Encapsulamento
Em um processo de encapsulamento os atributos das
classes so do tipo private. Para acessar esses tipos de
modificadores, necessrio criar mtodos setters e
getters.
IMPORTANTE o uso do construtor para inicializao dos
atributos.
Encapsulamento
Composio
Relacionamento tem-um;
Objetos podem ser construdos a partir de outros
objetos;
Decomposio de alguma entidade grande e complexa
em entidades menores;
Permite decompor um problema complexo em problemas
menores e mais simples;
Estratgia de dividir para conquistar!
Composio
Composio
Tarefinha 2
Criar classe Motor com tipo (String), potencia (int);
Criar a classe Chassi com numero (String), ano(int);
Criar a classe Pneu com raio(int), numeroSerie (String),
modelo (String);
Criar a classe Carro com modelo (String),
velocidadeMaxima (int), segundosZeroACem (double),
pneu (Pneu), motor (Motor), chassi (Chassi);
Herana
Hierarquizao de abstraes
Mecanismos para permitir Reuso e Extensibilidade
-UM;
Herana
Tarefinha 3
Criar classe Funcionario com Nome (String), CPF(String) e
Salrio (Double);
Criar a classe Gerente com Nome (String), CPF(String),
Salrio (Double), qtdFuncionario (Int);
Criar a classe Diretor com Nome (String), CPF(String),
Salrio (Double), qtdFuncionario (Inteiro) e Senha
(String);
Criar um mtodo chamado autenticar que receba como
parmetro uma String e valide a senha cadastrada no objeto e
retorne um booleano.
Herana
Tarefinha 4
Aplique o conceito de herana na Tarefinha 3;
Aplique o conceito de herana na Tarefinha 1.
Herana
Tarefinha 5
Criar a classe animal com nome (String), peso (double) e
comida (String);
Criar um mtodo dormir que imprima Dormir e
fazerBarulho que imprima Fazer Barulho;
Criar as classes Cachorro e Galinha que seja filho da
classe Animal;
Fazer programa de teste para imprimir as informaes de
cada animal.
Herana
Reuso de Cdigo
A descrio da superclasse pode ser usada para definir a
subclasse
Extensibilidade
Algumas operaes da superclasse podem ser redefinidas na
subclasse.
Polimorfismo
Permite que diferentes classes tenham mtodos com a
mesma assinatura, porm estes mtodos podem possuir
comportamentos diferentes.
Polimorfismo
Tarefinha 6
Na Tarefinha 5, criar a classe ExibirInformacao com o
mtodo chamado exibirAnimal que receba como
parmetro do tipo animal e imprima o peso e qual
barulho ele faz;
Como exibir os mesmos dados do mtodo exibirAnimal
sem polimorfismo?
Polimorfismo
Tarefinha 7
Criar uma classe Funcionario com nome (String), salario
(Double);
Criar o mtodo getGratificacao;
Criar o mtodo getInfo;
Polimorfismo
Tarefinha 7
Criar uma classe Professor com nome (String), salario
(Double) e horas (Inteiro);
Criar o mtodo getGratificacao que retorne salario +
(horas * 20);
Criar o mtodo getInfo que retorne a String Nome:
fulano, sou Professor com 20h/aula e Salrio R$ 125,00
onde o salrio vem do mtodo getGratificacao.
Polimorfismo
Tarefinha 7
Criar uma classe Monitor com nome (String), salario
(Double) e horas (Inteiro);
Criar o mtodo getGratificacao que retorne salario +
(horas * 10);
Criar o mtodo getInfo que retorne a String Nome:
fulano, sou Monitor com 20h/aula e Salrio R$ 100,00
onde o salrio vem do mtodo getGratificacao.
Polimorfismo
Tarefinha 8
Criar a classe Relatorio;
Criar um mtodo chamado gerencialFuncionario que
receba o atributo do tipo funcionario.
Executar esse mtodo passando como parmetros um
objeto do tipo Professor e Monitor.
Public class Relatorio {
public void gerencialFuncionario(Funcionario f) {
System.out.println(f.getClass().getSimpleName());
System.out.println(f.getInfo());
System.out.println(f.getGratificacao());
}
}
Classe Abstrata
Uma classe abstrata desenvolvida para representar
entidades e conceitos abstratos, NO possuindo
instncias.
Ela define um modelo (template) para uma
funcionalidade e fornece uma parte genrica da
funcionalidade que compartilhada por um grupo de
classes derivadas;
Classe Abstrata
Classe Abstrata
Tarefinha 9
Na classe Monitor da Tarefinha 7, comente o mtodo
getInfo;
Executar novamente a Tarefinha 8;
Classe Abstrata
Como obrigar o desenvolvedor a implementar o mtodo
getInfo na classe Monitor?
Como obrigar que o desenvolvedor no faa uma
instancia de Funcionario (Tarefinha 7) ou Pessoa
(Tarefinha 4)?
RESPOSTA: Altere a classe Funcionario na Tarefinha 7
para uma classe abstrata e execute novamente a
Tarefinha 8
Interface
Contrato entre a classe. Quando uma classe implementa
uma interface, ela est comprometida a fornecer o
comportamento publicado pela interface.
Interface
Interface
Criar a classe Corredor com o mtodo correr;
Criar a classe Nadador com o mtodo nadar;
Criar a classe Ciclista com o mtodo pedalar;
Interface
Tarefinha 10
Criar a interface Ciclista com o mtodo pedalar;
Criar a interface Corredor com o mtodo correr;
Criar a interface Nadador com o mtodo nadar;
Criar a classe triatleta com nome (String), idade (Inteiro) e
que seja filho de Ciclista, Corredor e Nadador.
Interface
Tarefinha 11
Criar a interface AreaCalculavel com o mtodo
calcularArea com tipo de retorno double;
Criar a classe Quadrado que implemente a Interface
AreaCalculavel (lado * lado);
Criar a classe Cubo que implemente a Interface
AreaCalculavel (lado * lado * lado);
Criar uma classe de TesteInterface que implemente o
mtodo imprimirInformacao que receba como parmetro
um atributo do tipo AreaCalculavel;
Passar para o mtodo imprimirInformacao a instancia de
Quadrado e Cubo.
Pacotes
Agrupamento de classes organizadas por uma
determinada categoria;
Pacotes vai auxiliar voc a desenvolver sistemas mais
reusveis e extensveis, organizando as classes do sistema
em "mdulos" que podem ser analisados, reusados e
modificados isoladamente ou com o auxlio de outros
poucos "mdulos".
Pacotes
Classe x Pacote
Classes
Agrupam definies de mtodos, atributos, inicializares, etc.
definem tipos
Pacotes
Agrupam definies de classes relacionadas
estruturam sistemas de grande porte, facilitando a localizao
das classes
Pacotes
Motivao
Organizar seu programa em mdulos;
Java organiza suas classes em pacotes;
Evitar conflitos de nomes (java.util.List e java.awt.List);
Modularizao.
Pacotes
Motivao
Pacotes
Motivao
Pacotes
http://www.fafica.com
package com.fafica
Pacotes
Padro de Codificao
O padro da Oracle para dar nome aos pacotes relativo
ao nome da empresa que desenvolveu a classe;
S possuem letras minsculas, no importa quantas
palavras estejam contidas nele.
com.fafica.aluno
com.fafica.pessoa
com.fafica.pessoal.controller
com.fafica.pessoa.model
com.fafica.pessoa.view
com.fafica.aula01
com.fafica.exemplo
Dvidas
Obrigado !
Maurcio Manoel
mauricio.junior@fafica-pe.edu.br