Transcript of Aula 01 - Revisão de Poo
Prof. Maurício Manoel mauricio.junior@fafica-pe.edu.br
Classe, Atributo, Métodos e Objetos
Abstração
Encapsulamento
Composição
A POO é um paradigma de programação 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 análise, projeto e programação de
sistemas de software baseado na composição e interação entre
diversas unidades de software chamadas de objetos.
Definição
Classe É uma espécie de forma que molda como
os nossos
objetos serão estanciados na memória.
Classe é a definição de como os objetos vão
ser.
Classe é a forma de bolo, objetos são
os bolos que se faz a partir daquela forma.
Classe, Atributo, Métodos e Objetos
Fonte: UniversidadeXTI
Atributos Elementos que definem a estrutura de uma
classe, ou
seja, suas características. Basicamente a estrutura de dados
que vai representar a classe.
Classe, Atributo, Métodos e Objetos
Métodos São blocos de código que pertencem a uma
classe e tem
por finalidade realizar uma tarefa. Métodos geralmente correspondem
à uma ação do objeto.
Classe, Atributo, Métodos e Objetos
Assinatura Sobrecarga
Classe, Atributo, Métodos e Objetos
O que o objeto vai Representar?
O que o objeto conhece sobre si mesmo?
O que o objeto pode fazer (ações)?
Classe, Atributo, Métodos e Objetos
Tarefinha 1 Criar a classe PessoaFisica com Nome, CPF,
Endereço,
Bairro e Cidade todos do tipo String;
Criar a classe PessoaJuridica com Nome, CNPJ, Inscrição
Estadual, Endereço, Bairro e Cidade todos do tipo String;
Criar um método chamado toString para cada classe que
retorne (Nome, CPF ou CNPJ, Endereço, Bairro e Cidade;
Criar um método chamado getDocumento para cada classe que
retorne o CPF ou CNPJ;
Criar um método chamado formatarDocumento na classe
PessoaFisica e PessoaJuridica.
Classe, Atributo, Métodos e Objetos
É utilizada para a definição de entidades do mundo real
(consideração as suas características e ações);
Representação apenas das características essenciais do ponto
de vista do desenvolvimento do sistema
Concentração em ideias gerais (“o que”), não em detalhes
(“como”)
Abstração
Proteção de suas variáveis para evitar uma configuração
inválida:
Qtd de banheiros na casa = -1;
Velocidade do Avião durante voo: 0 KM
Número de Celular: abcd-efgh
Elimina dependência de implementação, escondendo-a de quem
usa o objeto no sistema;
Não expor detalhes internos para o usuário, tornando o
sistema mais independentes possível;
Encapsulamento
Quando um controle remoto estraga, o que você faz? Troca o
controle ou troca a televisão inteira?
O que acontece em um sistema de vendas, aonde temos
cadastros de funcionários, usuários, gerentes, clientes, produtos
entre outros, se por acaso acontecer um problema na parte do
usuário?
Encapsulamento
Em um processo de encapsulamento os atributos
das classes são do tipo private. Para acessar esses tipos de
modificadores, é necessário criar métodos setters e
getters.
IMPORTANTE o uso do construtor para inicialização dos
atributos.
Encapsulamento
Decomposição de alguma entidade grande e complexa em
entidades menores;
Permite decompor um problema complexo em problemas menores e
mais simples;
Estratégia de dividir para conquistar!
Composição
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);
Composição
É-UM;
Herança
Tarefinha 3 Criar classe Funcionario com Nome (String),
CPF(String) e
Salário (Double);
Criar a classe Gerente com Nome (String), CPF(String),
Salário (Double), qtdFuncionario (Int);
Criar a classe Diretor com Nome (String), CPF(String),
Salário (Double), qtdFuncionario (Inteiro) e Senha (String);
Criar um método chamado autenticar que receba como parâmetro
uma String e valide a senha cadastrada no objeto e retorne um
booleano.
Herança
Tarefinha 4 Aplique o conceito de herança na Tarefinha
3;
Aplique o conceito de herança na Tarefinha 1.
Herança
Tarefinha 5 Criar a classe animal com nome (String), peso
(double) e
comida (String);
Criar um método 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 informações de cada
animal.
Herança
Reuso de Código
A descrição da superclasse pode ser usada para definir a
subclasse
Extensibilidade
Herança
Permite que diferentes classes tenham métodos com a mesma
assinatura, porém estes métodos podem possuir comportamentos
diferentes.
Polimorfismo
Tarefinha 6 Na Tarefinha 5, criar a classe
ExibirInformacao com o
método chamado exibirAnimal que receba como parâmetro do tipo
animal e imprima o peso e qual barulho ele faz;
Como exibir os mesmos dados do método exibirAnimal sem
polimorfismo?
Polimorfismo
Tarefinha 7 Criar uma classe Funcionario com nome (String),
salario
(Double);
Tarefinha 7 Criar uma classe Professor com nome (String),
salario
(Double) e horas (Inteiro);
Criar o método getGratificacao que retorne salario + (horas
* 20);
Criar o método getInfo que retorne a String “Nome: fulano,
sou Professor com 20h/aula e Salário R$ 125,00” onde o salário vem
do método getGratificacao.
Polimorfismo
Tarefinha 7 Criar uma classe Monitor com nome (String),
salario
(Double) e horas (Inteiro);
Criar o método getGratificacao que retorne salario + (horas
* 10);
Criar o método getInfo que retorne a String “Nome: fulano,
sou Monitor com 20h/aula e Salário R$ 100,00” onde o salário vem do
método getGratificacao.
Polimorfismo
Tarefinha 8 Criar a classe Relatorio;
Criar um método chamado gerencialFuncionario que receba o
atributo do tipo funcionario.
Executar esse método passando como parâmetros um objeto do
tipo Professor e Monitor.
Public class Relatorio {
Uma classe abstrata é desenvolvida para representar
entidades e conceitos abstratos, NÃO
possuindo instâncias.
Ela define um modelo (template) para uma
funcionalidade e fornece uma parte genérica da
funcionalidade que é compartilhada por um grupo
de classes derivadas;
Classe Abstrata
Tarefinha 9 Na classe Monitor da Tarefinha 7, comente o
método
getInfo;
Classe Abstrata
Como obrigar o desenvolvedor a implementar o
método getInfo na classe Monitor?
Como obrigar que o desenvolvedor não faça 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
Classe Abstrata
Contrato entre a classe. Quando uma classe implementa uma
interface, ela está comprometida a fornecer o comportamento
publicado pela interface.
Interface
Interface
Tarefinha 10 Criar a interface Ciclista com o método
pedalar;
Criar a interface Corredor com o método correr;
Criar a interface Nadador com o método nadar;
Criar a classe triatleta com nome (String), idade (Inteiro)
e que seja filho de Ciclista, Corredor e Nadador.
Interface
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 método
imprimirInformacao que receba como parâmetro um atributo do tipo
AreaCalculavel;
Passar para o método imprimirInformacao a instancia de
Quadrado e Cubo.
Interface
Agrupamento de classes organizadas por uma determinada
categoria;
Pacotes vai auxiliar você a desenvolver sistemas mais
reusáveis e extensíveis, organizando as classes do sistema em
"módulos" que podem ser analisados, reusados e modificados
isoladamente ou com o auxílio de outros poucos "módulos".
Pacotes
definem tipos
estruturam sistemas de grande porte, facilitando a
localização das classes
Pacotes
Evitar conflitos de nomes (java.util.List e
java.awt.List);
Modularização.
Pacotes
Padrão de Codificação O padrão da Oracle para dar nome aos
pacotes é relativo
ao nome da empresa que desenvolveu a classe;
Só possuem letras minúsculas, não 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
Pacotes