aula 01 - revisão de poo

55
 POO II Revisão de OO 31 de julho de 2015 Prof. Maurício Manoel [email protected] https://edulify.com/mauricio.junior

Upload: mauricio-ama-aline

Post on 02-Nov-2015

223 views

Category:

Documents


0 download

DESCRIPTION

Revisão de Programação Orientada a Objetos

TRANSCRIPT

Prof. Maurício Manoel [email protected]
  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