SlideShare uma empresa Scribd logo
1 de 36
Instrutor Daniel Bernardo
Programação Orientada
a Objetos com Java
Instrutor Daniel Bernardo
Princípios de Orientação a Objetos
• Construímos Software para resolver problemas
• Pessoas tem problemas
• Logo, construímos Software para pessoas
Instrutor Daniel Bernardo
Princípios de Orientação a Objetos
Um bom Software não apenas resolve
um problema imediatamente, como
também está projetado para suportar
as inevitáveis mudanças solicitadas
pelas pessoas.
Instrutor Daniel Bernardo
Princípios de Orientação a Objetos
• Validação de CPF
– Espalhado por várias partes do sistema;
• Adição de novas funcionalidades
– Validar maior idade;
Instrutor Daniel Bernardo
Princípios de Orientação a Objetos
• Sistema para banco
– A classe Conta
Instrutor Daniel Bernardo
Princípios de Orientação a Objetos
• Sistema para banco
– A classe Cliente
Instrutor Daniel Bernardo
Princípios de Orientação a Objetos
• Usando nossa Classe
– Devemos utilizar nossa classe em forma de Objeto;
– Um objeto é uma instância de uma classe;
– Para instanciar um objeto de uma classe, usa-se a palavra new;
– Se você tentar utilizar uma variável do tipo da nossa classe, sem
utilizar o new, obterá um NullPointerException;
Instrutor Daniel Bernardo
Princípios de Orientação a Objetos
• Métodos:
Instrutor Daniel Bernardo
Pacotes
• Quando um programador utiliza as classes feitas por outro
surge um problema clássico: como escrever duas classes com
o mesmo nome?
• Por exemplo, pode ser que a minha classe de Data funcione de
um certo jeito e a classe de Data de um colega de outro jeito.
Pode ser que a classe de Data de uma biblioteca funcione
ainda de terceira maneira.
• Os diretórios estão diretamente relacionados aos chamados
pacotes e costumam agrupar classes de funcionalidade
parecida.
• Um pacote pode conter nenhum, um ou mais subpacotes e/ou
nenhuma,uma ou mais classes dentro dele
Instrutor Daniel Bernardo
Pacotes
• Em Suma:
– Um pacote ou package na tecnologia Java nada mais é do que
um conjunto de classes localizadas na mesma estrutura
hierárquica de diretórios.
– Usualmente, são colocadas em um pacote classes
relacionadas, construídas com um propósito comum para
promover a reutilização de código:
• validação de CPF e CNPJ, operações com data,
manipulação de vetores, cálculos matemáticos como
médias e percentuais, etc;
Instrutor Daniel Bernardo
API Java
Instrutor Daniel Bernardo
Padrão de nomenclatura
• br.com.nomedaempresa.nomedoprojeto.subpacote
• br.com.nomedaempresa.nomedoprojeto.subpacote2
• br.com.nomedaempresa.nomedoprojeto.subpacote2.subpacote3
• Os pacotes só possuem letras minúsculas, não importa
quantas palavras estejam contidas nele.
• Esse padrão existe para evitar ao máximo o conflito de
pacotes de empresas diferentes.
Instrutor Daniel Bernardo
Import
Full Qualified Name
Esse é o verdadeiro nome de uma classe, por isso que duas classes X em
pacotes diferentes não conflitam:
br.com.empresa.pacote.Classe
Utiliza-se o import para declaração de classes que são referenciadas no
arquivo fonte mas que não pertencem ao pacote onde este arquivo se
encontra.
Podem referenciar:
Outras classes no mesmo projeto
Classes da API Java, como por exemplo java.util.List
Classes contidas nas bibliotecas utilizada pelo projeto, ou seja, nos arquivos
*.jar referenciados no classpath do projeto
Instrutor Daniel Bernardo
Import
• Classes essencias para o funcionamento de qualquer
projeto Java, são implicitamente importadas na Classe.
• Por isso que não é necessário fazer o import das
classes System e String por exemplo.
Instrutor Daniel Bernardo
Modificadores de Acesso
• private: A única classe capaz de acessar os atributos, construtores e
métodos privados é a própria classe. Classes não podem ser private, mas
atributos, construtores e métodos sim.
• protected: Aquilo que é protected pode ser acessado por todas as
classes do mesmo pacote e por todas as classes que a estendam.
Somente atributos, construtores e métodos podem ser protected.
• default: (sem nenhum modificador) – Se nenhum modificador for utilizado,
todas as classes do mesmo pacote têm acesso ao atributo, construtor,
método ou classe.
• public: Todas as classes podem acessar aquilo que for definido como
public. Classes, atributos, construtores e métodos podem ser public.
Instrutor Daniel Bernardo
Herança
Instrutor Daniel Bernardo
Herança
Instrutor Daniel Bernardo
Herança
• Regras para Herança no Java:
– Uma classe pode ser Herdada por várias outras
classes;
– Uma classe só pode Herdar uma única classe;
– Membros protected são acessíveis;
– Toda classe herda de Object;
Instrutor Daniel Bernardo
Herança
• Problema 1:
– No fim de ano, todos funcionários recebem uma
bonificação no valor de 10% do salário;
– Exceto os Gerentes, que recebem uma bonificação
de 15%;
Instrutor Daniel Bernardo
Herança
• Problema 2:
– A regra para cálculo da bonificação de gerentes
mudou, agora ela será no mesmo valor percentual
da bonificação dos funcionários mais R$ 1.000,00;
Instrutor Daniel Bernardo
Exercícios
Faça os exercícios 1, 2 e 3 da página 68.
Instrutor Daniel Bernardo
Polimorfismo
• Traduzindo, do grego, ao pé da letra, polimorfismo significa
"muitas formas".
• Essas formas, em nosso contexto de programação, são as
subclasses/objetos criados a partir de uma classe maior,
mais geral, ou abstrata.
• Polimorfismo é a capacidade que o Java nos dá de controlar
todas as formas de uma maneira mais simples e geral, sem
ter que se preocupar com cada objeto especificamente
Instrutor Daniel Bernardo
Polimorfismo
• Uma variável do tipo Funcionario, pode armazenar um
objeto do tipo Funcionario;
• Se gerente é um Funcionario, então uma variável do
tipo Funcionário pode armazenar um objeto do tipo
Gerente;
Instrutor Daniel Bernardo
Polimorfismo
• Qual método o Java invocará?
– De Funcionário?
– De Gerente?
A escolha de qual
implementação será chamada é
feita em Tempo de Execução
Instrutor Daniel Bernardo
Polimorfismo
• O benefício do Polimorfismo é observado quando
utilizamos os tipos como parâmetros dos métodos:
• Problema 3: Criar uma funcionalidade que calcule o
total gasto em bonificações. Considerando todos
funcionarios da empresa. (Funcionario, Gerente e
qualquer outro que houver)
Instrutor Daniel Bernardo
Polimorfismo
• Sistema para faculdade que controle o gasto com
funcionários;
• Relatório que imprima informações do funcionário e
quanto a faculdade gasta com ele;
• Funcionario recebe salário;
• Professor recebe salário + 10,00 hora / aula;
Instrutor Daniel Bernardo
Polimorfismo
Instrutor Daniel Bernardo
Exercícios
• Exercícios 4 e 5 da página 68
Instrutor Daniel Bernardo
Classes Abstratas
Faz sentido existir um objeto Funcionario?
No mundo real, funcionário idealiza um
segmento.
Nós temos Secretárias, Diretores, Gerentes…
Não designamos niguém como Funcionário.
Instrutor Daniel Bernardo
Classes Abstratas
• Quando não queremos receber uma instância desta classe, mas
queremos obter a vantagem do polimorfismo e da herança, utilizamos
classe Abstrata.
• Métodos abstratos:
• Não faz sentido o método getBonificacao() ter uma implementação na
classe Funcionario, já que em nosso sistema, queremos que cada
funcionário específico tenha uma regra de bonificação diferente.
• Deixamos abstrato para utilizar na classe controladora de bonificação.
• Qualquer classe que estender Funcionário, será obrigada a implementar o
método abstrato
Instrutor Daniel Bernardo
Classes Abstratas
• Classe Diretor estende Gerente: não precisa
implementar o método, pos gerente já implementa
• Classe Secretária e Classe SecretariaAdministrativa
que estende Secretária. Classe Secretaria não precisa
implementar o método, já que é uma classe abstrata.
Instrutor Daniel Bernardo
Exercícios
• Página 79.
Instrutor Daniel Bernardo
Interfaces
• Problema: Em um sistema de banco, podem acessar Gerentes e
Diretores;
• Nem todo funcionário tem o método autentica e nem deve ter;
• Uma classe Abstrata FuncionarioAutenticavel resolveria o
problema em partes;
• Surge outro problema: Agora os clientes podem acessar o sistema.
• Jamais faça Herança sem Sentido.
Instrutor Daniel Bernardo
Interfaces
• Interfaces fazem com que classes garantam sempre um
comportamento;
• Cria um contrato que define o que uma classe deve fazer;
• A classe que quiser, pode assinar este contrato e fica obrigada a
implementar o que a Interface define;
• Interfaces expõem o que deve ser feito, e não como deve ser
feito;
• Interfaces deixam o código mais flexível a mudanças;
• Métodos public e abstract;
Instrutor Daniel Bernardo
Exercicio página 89
Instrutor Daniel Bernardo
Exceptions

Mais conteúdo relacionado

Mais procurados

Programação em java linguagem, ap is, boas práticas e eclipse
Programação em java   linguagem, ap is, boas práticas e eclipseProgramação em java   linguagem, ap is, boas práticas e eclipse
Programação em java linguagem, ap is, boas práticas e eclipse
Filipe Bezerra Sousa
 

Mais procurados (18)

Programação em java linguagem, ap is, boas práticas e eclipse
Programação em java   linguagem, ap is, boas práticas e eclipseProgramação em java   linguagem, ap is, boas práticas e eclipse
Programação em java linguagem, ap is, boas práticas e eclipse
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Java modulo 01 - Introdução
Java modulo 01 - IntroduçãoJava modulo 01 - Introdução
Java modulo 01 - Introdução
 
Apostila de Fundamentos Java
Apostila de Fundamentos JavaApostila de Fundamentos Java
Apostila de Fundamentos Java
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 
ApresentaçãO De Java
ApresentaçãO De JavaApresentaçãO De Java
ApresentaçãO De Java
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)Introdução à Programação em Java - Aula 1 (PT-PT)
Introdução à Programação em Java - Aula 1 (PT-PT)
 
Aula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem JavaAula 2 - POO: Fundamentos da linguagem Java
Aula 2 - POO: Fundamentos da linguagem Java
 
001 cesep - turma java
001   cesep - turma java001   cesep - turma java
001 cesep - turma java
 
Academia java intensivo
Academia java intensivoAcademia java intensivo
Academia java intensivo
 
Aula de Introdução - JAVA
Aula de Introdução  - JAVAAula de Introdução  - JAVA
Aula de Introdução - JAVA
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
Palestra - Profissão: Desenvolvedor
Palestra - Profissão: DesenvolvedorPalestra - Profissão: Desenvolvedor
Palestra - Profissão: Desenvolvedor
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Conhecendo Java
Conhecendo JavaConhecendo Java
Conhecendo Java
 

Destaque

Lógica de programação construção de algoritmos e estrutura de dados
Lógica de programação   construção de algoritmos e estrutura de dadosLógica de programação   construção de algoritmos e estrutura de dados
Lógica de programação construção de algoritmos e estrutura de dados
pronatecvja
 
Seguranca da Informação -Práticas de segurança
Seguranca da Informação -Práticas de segurançaSeguranca da Informação -Práticas de segurança
Seguranca da Informação -Práticas de segurança
Luiz Arthur
 
Segurança da Informação - Firewall
Segurança da Informação - FirewallSegurança da Informação - Firewall
Segurança da Informação - Firewall
Luiz Arthur
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem java
Rosicleia Frasson
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação
12anogolega
 

Destaque (20)

Exercicios java2016 - resolvidos
Exercicios java2016 - resolvidosExercicios java2016 - resolvidos
Exercicios java2016 - resolvidos
 
Lógica de programação construção de algoritmos e estrutura de dados
Lógica de programação   construção de algoritmos e estrutura de dadosLógica de programação   construção de algoritmos e estrutura de dados
Lógica de programação construção de algoritmos e estrutura de dados
 
Seguranca da Informação -Práticas de segurança
Seguranca da Informação -Práticas de segurançaSeguranca da Informação -Práticas de segurança
Seguranca da Informação -Práticas de segurança
 
HERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVAHERANÇA - Programação Orientada a Objetos JAVA
HERANÇA - Programação Orientada a Objetos JAVA
 
Segurança da Informação - Firewall
Segurança da Informação - FirewallSegurança da Informação - Firewall
Segurança da Informação - Firewall
 
POO - 07 - Operadores do Java
POO - 07 - Operadores do  JavaPOO - 07 - Operadores do  Java
POO - 07 - Operadores do Java
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Operadores Java
Operadores JavaOperadores Java
Operadores Java
 
Introdução a linguagem java
Introdução a linguagem javaIntrodução a linguagem java
Introdução a linguagem java
 
Etapas da programação
Etapas da programaçãoEtapas da programação
Etapas da programação
 
Maratona de programação 2009. Exercícios para Iniciantes.
Maratona de programação 2009. Exercícios para Iniciantes.Maratona de programação 2009. Exercícios para Iniciantes.
Maratona de programação 2009. Exercícios para Iniciantes.
 
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais) [Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
[Curso Java Básico] Aula 13: Operadores (Aritiméticos, Lógicos e Relacionais)
 
Exercicios java básico
Exercicios java básicoExercicios java básico
Exercicios java básico
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação
 
Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está ComeçandoCurso Java Básico Aula 01: Introdução e Dicas para quem está Começando
Curso Java Básico Aula 01: Introdução e Dicas para quem está Começando
 
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVAProgramação Orientada a Objetos - Conceitos básicos da linguagem JAVA
Programação Orientada a Objetos - Conceitos básicos da linguagem JAVA
 
Introdução a programação Orientada a Objeto
Introdução a programação Orientada a ObjetoIntrodução a programação Orientada a Objeto
Introdução a programação Orientada a Objeto
 
Algoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso CompletoAlgoritmos e Técnicas de Programação - Curso Completo
Algoritmos e Técnicas de Programação - Curso Completo
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 

Semelhante a Aula 3.ppt

2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
guest9b4c7f
 
Curso de CVS - Parte 0 - Sobre o curso
Curso de CVS - Parte 0 - Sobre o cursoCurso de CVS - Parte 0 - Sobre o curso
Curso de CVS - Parte 0 - Sobre o curso
Marden Neubert
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
Regis Magalhães
 

Semelhante a Aula 3.ppt (20)

Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos2009_2Sem.POOII.Ciencia Aula2   Revisao De Classes E Objetos
2009_2Sem.POOII.Ciencia Aula2 Revisao De Classes E Objetos
 
POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
Atividade 3
Atividade 3Atividade 3
Atividade 3
 
Heranca reescrita e_polimorfismo
Heranca reescrita e_polimorfismoHeranca reescrita e_polimorfismo
Heranca reescrita e_polimorfismo
 
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16
Conceitos de Orientação a Objeto e Exemplos no Estudo de Caso do TRT-16
 
Curso de CVS - Parte 0 - Sobre o curso
Curso de CVS - Parte 0 - Sobre o cursoCurso de CVS - Parte 0 - Sobre o curso
Curso de CVS - Parte 0 - Sobre o curso
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Working with legacy code 3
Working with legacy code 3Working with legacy code 3
Working with legacy code 3
 
Aula 4 herança, sobrescrita de métodos, construtor
Aula 4   herança, sobrescrita de métodos, construtorAula 4   herança, sobrescrita de métodos, construtor
Aula 4 herança, sobrescrita de métodos, construtor
 
Java 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De ClasseJava 08 Modificadores Acesso E Membros De Classe
Java 08 Modificadores Acesso E Membros De Classe
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
 
Clean code em C#
Clean code em C#Clean code em C#
Clean code em C#
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 
Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1Programação Orientada a Objetos parte 1
Programação Orientada a Objetos parte 1
 
Java aula 2
Java aula 2Java aula 2
Java aula 2
 
Aula Herança
Aula HerançaAula Herança
Aula Herança
 
Formação 1 eja digital
Formação 1   eja digitalFormação 1   eja digital
Formação 1 eja digital
 
Programação C - Aula 1
Programação C - Aula 1Programação C - Aula 1
Programação C - Aula 1
 
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
Programação Orientada a Objetos - Pós Graduação - Aula 4 - refactoring com ho...
 

Aula 3.ppt

  • 1. Instrutor Daniel Bernardo Programação Orientada a Objetos com Java
  • 2. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Construímos Software para resolver problemas • Pessoas tem problemas • Logo, construímos Software para pessoas
  • 3. Instrutor Daniel Bernardo Princípios de Orientação a Objetos Um bom Software não apenas resolve um problema imediatamente, como também está projetado para suportar as inevitáveis mudanças solicitadas pelas pessoas.
  • 4. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Validação de CPF – Espalhado por várias partes do sistema; • Adição de novas funcionalidades – Validar maior idade;
  • 5. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Sistema para banco – A classe Conta
  • 6. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Sistema para banco – A classe Cliente
  • 7. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Usando nossa Classe – Devemos utilizar nossa classe em forma de Objeto; – Um objeto é uma instância de uma classe; – Para instanciar um objeto de uma classe, usa-se a palavra new; – Se você tentar utilizar uma variável do tipo da nossa classe, sem utilizar o new, obterá um NullPointerException;
  • 8. Instrutor Daniel Bernardo Princípios de Orientação a Objetos • Métodos:
  • 9. Instrutor Daniel Bernardo Pacotes • Quando um programador utiliza as classes feitas por outro surge um problema clássico: como escrever duas classes com o mesmo nome? • Por exemplo, pode ser que a minha classe de Data funcione de um certo jeito e a classe de Data de um colega de outro jeito. Pode ser que a classe de Data de uma biblioteca funcione ainda de terceira maneira. • Os diretórios estão diretamente relacionados aos chamados pacotes e costumam agrupar classes de funcionalidade parecida. • Um pacote pode conter nenhum, um ou mais subpacotes e/ou nenhuma,uma ou mais classes dentro dele
  • 10. Instrutor Daniel Bernardo Pacotes • Em Suma: – Um pacote ou package na tecnologia Java nada mais é do que um conjunto de classes localizadas na mesma estrutura hierárquica de diretórios. – Usualmente, são colocadas em um pacote classes relacionadas, construídas com um propósito comum para promover a reutilização de código: • validação de CPF e CNPJ, operações com data, manipulação de vetores, cálculos matemáticos como médias e percentuais, etc;
  • 12. Instrutor Daniel Bernardo Padrão de nomenclatura • br.com.nomedaempresa.nomedoprojeto.subpacote • br.com.nomedaempresa.nomedoprojeto.subpacote2 • br.com.nomedaempresa.nomedoprojeto.subpacote2.subpacote3 • Os pacotes só possuem letras minúsculas, não importa quantas palavras estejam contidas nele. • Esse padrão existe para evitar ao máximo o conflito de pacotes de empresas diferentes.
  • 13. Instrutor Daniel Bernardo Import Full Qualified Name Esse é o verdadeiro nome de uma classe, por isso que duas classes X em pacotes diferentes não conflitam: br.com.empresa.pacote.Classe Utiliza-se o import para declaração de classes que são referenciadas no arquivo fonte mas que não pertencem ao pacote onde este arquivo se encontra. Podem referenciar: Outras classes no mesmo projeto Classes da API Java, como por exemplo java.util.List Classes contidas nas bibliotecas utilizada pelo projeto, ou seja, nos arquivos *.jar referenciados no classpath do projeto
  • 14. Instrutor Daniel Bernardo Import • Classes essencias para o funcionamento de qualquer projeto Java, são implicitamente importadas na Classe. • Por isso que não é necessário fazer o import das classes System e String por exemplo.
  • 15. Instrutor Daniel Bernardo Modificadores de Acesso • private: A única classe capaz de acessar os atributos, construtores e métodos privados é a própria classe. Classes não podem ser private, mas atributos, construtores e métodos sim. • protected: Aquilo que é protected pode ser acessado por todas as classes do mesmo pacote e por todas as classes que a estendam. Somente atributos, construtores e métodos podem ser protected. • default: (sem nenhum modificador) – Se nenhum modificador for utilizado, todas as classes do mesmo pacote têm acesso ao atributo, construtor, método ou classe. • public: Todas as classes podem acessar aquilo que for definido como public. Classes, atributos, construtores e métodos podem ser public.
  • 18. Instrutor Daniel Bernardo Herança • Regras para Herança no Java: – Uma classe pode ser Herdada por várias outras classes; – Uma classe só pode Herdar uma única classe; – Membros protected são acessíveis; – Toda classe herda de Object;
  • 19. Instrutor Daniel Bernardo Herança • Problema 1: – No fim de ano, todos funcionários recebem uma bonificação no valor de 10% do salário; – Exceto os Gerentes, que recebem uma bonificação de 15%;
  • 20. Instrutor Daniel Bernardo Herança • Problema 2: – A regra para cálculo da bonificação de gerentes mudou, agora ela será no mesmo valor percentual da bonificação dos funcionários mais R$ 1.000,00;
  • 21. Instrutor Daniel Bernardo Exercícios Faça os exercícios 1, 2 e 3 da página 68.
  • 22. Instrutor Daniel Bernardo Polimorfismo • Traduzindo, do grego, ao pé da letra, polimorfismo significa "muitas formas". • Essas formas, em nosso contexto de programação, são as subclasses/objetos criados a partir de uma classe maior, mais geral, ou abstrata. • Polimorfismo é a capacidade que o Java nos dá de controlar todas as formas de uma maneira mais simples e geral, sem ter que se preocupar com cada objeto especificamente
  • 23. Instrutor Daniel Bernardo Polimorfismo • Uma variável do tipo Funcionario, pode armazenar um objeto do tipo Funcionario; • Se gerente é um Funcionario, então uma variável do tipo Funcionário pode armazenar um objeto do tipo Gerente;
  • 24. Instrutor Daniel Bernardo Polimorfismo • Qual método o Java invocará? – De Funcionário? – De Gerente? A escolha de qual implementação será chamada é feita em Tempo de Execução
  • 25. Instrutor Daniel Bernardo Polimorfismo • O benefício do Polimorfismo é observado quando utilizamos os tipos como parâmetros dos métodos: • Problema 3: Criar uma funcionalidade que calcule o total gasto em bonificações. Considerando todos funcionarios da empresa. (Funcionario, Gerente e qualquer outro que houver)
  • 26. Instrutor Daniel Bernardo Polimorfismo • Sistema para faculdade que controle o gasto com funcionários; • Relatório que imprima informações do funcionário e quanto a faculdade gasta com ele; • Funcionario recebe salário; • Professor recebe salário + 10,00 hora / aula;
  • 28. Instrutor Daniel Bernardo Exercícios • Exercícios 4 e 5 da página 68
  • 29. Instrutor Daniel Bernardo Classes Abstratas Faz sentido existir um objeto Funcionario? No mundo real, funcionário idealiza um segmento. Nós temos Secretárias, Diretores, Gerentes… Não designamos niguém como Funcionário.
  • 30. Instrutor Daniel Bernardo Classes Abstratas • Quando não queremos receber uma instância desta classe, mas queremos obter a vantagem do polimorfismo e da herança, utilizamos classe Abstrata. • Métodos abstratos: • Não faz sentido o método getBonificacao() ter uma implementação na classe Funcionario, já que em nosso sistema, queremos que cada funcionário específico tenha uma regra de bonificação diferente. • Deixamos abstrato para utilizar na classe controladora de bonificação. • Qualquer classe que estender Funcionário, será obrigada a implementar o método abstrato
  • 31. Instrutor Daniel Bernardo Classes Abstratas • Classe Diretor estende Gerente: não precisa implementar o método, pos gerente já implementa • Classe Secretária e Classe SecretariaAdministrativa que estende Secretária. Classe Secretaria não precisa implementar o método, já que é uma classe abstrata.
  • 33. Instrutor Daniel Bernardo Interfaces • Problema: Em um sistema de banco, podem acessar Gerentes e Diretores; • Nem todo funcionário tem o método autentica e nem deve ter; • Uma classe Abstrata FuncionarioAutenticavel resolveria o problema em partes; • Surge outro problema: Agora os clientes podem acessar o sistema. • Jamais faça Herança sem Sentido.
  • 34. Instrutor Daniel Bernardo Interfaces • Interfaces fazem com que classes garantam sempre um comportamento; • Cria um contrato que define o que uma classe deve fazer; • A classe que quiser, pode assinar este contrato e fica obrigada a implementar o que a Interface define; • Interfaces expõem o que deve ser feito, e não como deve ser feito; • Interfaces deixam o código mais flexível a mudanças; • Métodos public e abstract;