SlideShare uma empresa Scribd logo
1 de 54
Baixar para ler offline
Profª Me. Cristiane Fidelix
(Simbologia clássica)
Linguagem de Programação
Java
 Conceitos:
- Encapsulamento
- Herança
- Polimorfismo
Encapsulamento
O que é o encapsulamento?
Mecanismo da linguagem de programação
para restringir o acesso a alguns
componentes dos objetos, escondendo os
dados de uma classe e tornando-os
disponíveis somente através de métodos.
O que é o encapsulamento?
• Na verdade, o mecanismo para restringir o acesso a alguns dos
componentes do objeto é a definição de ocultação de
informações. O encapsulamento é um conceito da Programação
Orientada a Objetos onde o estado de objetos (as variáveis da
classe) e seus comportamentos (os métodos da classe) são
agrupados em conjuntos segundo o seu grau de relação.
• Em programação orientada a objetos,
modificador de acesso, é a palavra-
chave que define como um atributo,
método, ou classe será visto no
contexto que estiver inserido.
Para utilizar estes modificadores de
acesso, basta que o escreva antes do
nome do atributo, método ou classe:
• Public: O modificador public
deixará visível a classe ou
membro para todas as outras
classes, subclasses e pacotes do
projeto Java.
• Protected: O modificador protected
deixará visível o atributo para todas
as outras classes e subclasses que
pertencem ao mesmo pacote. A
principal diferença é que apenas as
classes do mesmo pacote têm acesso
ao membro. O pacote da subclasse
não tem acesso ao membro.
• Private: O modificador private
deixará visível o atributo apenas
para a classe em que este
atributo se encontra.
• 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.
• Por entendimento os métodos setters servem
para alterar a informação de uma propriedade
de um objeto. E os métodos getters para
retornar o valor dessa propriedade.
Veja um exemplo de encapsulamento, na Listagem 2 gera-se os
atributos privados (private) e é realizado o processo de geração
dos métodos setters e getters.
Ex1 - Encapsulamento da classe
Funcionário
1º Criar: a classe
public class Funcionario {
private double salario;
private String nome;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public void setSalario(double salario) {
this.salario = salario;
}
public double getSalario() {
return salario;
}
}
2º criar: Classe Testadora dos métodos getters e
setters.
public class TestaFuncionario {
public static void main(String[] args) {
Funcionario funcionario = new Funcionario();
funcionario.setNome("Thiago");
funcionario.setSalario(2500);
System.out.println(funcionario.getNome());
System.out.println(funcionario.getSalario());
}
}
• Na classe testadora é instanciado a classe
“Funcionario”, onde a variável de referência é
usada para invocar os métodos setters,
informando algum dado.
• Ao final, é usado os métodos getters dentro
do “System.out.println” para gerar a saída dos
resultados que foram passados nos métodos
setters.
Herança
Conceito de Herança:
• Na Programação Orientada a Objetos o significado de
herança tem o mesmo significado para o mundo real.
• Assim como um filho pode herdar alguma
característica do pai, na Orientação a Objetos é
permitido que uma classe herde atributos e métodos
da outra, tendo apenas uma restrição para a
herança.
• Os modificadores de acessos das classes, métodos e
atributos só podem estar com
visibilidade public e protected para que sejam
herdados.
Conceito de Herança:
• Uma das grandes vantagens de usar o recurso da
herança é na reutilização do código.
• Esse reaproveitamento pode ser acionado quando
se identifica que o atributo ou método de uma classe
será igual para as outras.
• Para efetuar uma herança de uma classe é utilizada a
palavra reservada chamada extends.
Exemplo: A superclasse “Funcionario” que
servirá de base para as subclasses
usarem seus atributos ou
métodos.
1º Criar a
superclasse
Funcionario:
public class Funcionario {
private String nome;
private double salario;
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
public double calculaBonificacao(){
return this.salario * 0.1;
}
}
2º Criar a
subclasse
Gerente:
public class Gerente extends Funcionario {
private String usuario;
private String senha;
public String getUsuario() {
return usuario;
}
public void setUsuario(String usuario) {
this.usuario = usuario;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public double calculaBonificacao(){
return this.getSalario() * 0.6 + 100;
}
}
• Podemos ver que a classe “Gerente” está
herdando da classe “Funcionario” através da
palavra reservada extends.
• Acontece também a mudança do
comportamento de herança, a partir do
método “calculaBonificacao” que é
sobrescrito, pois entende-se que o valor da
classe “Gerente” é diferente para as demais.
3º Criar a subclasse Secretaria:
public class Secretaria extends
Funcionario {
private int ramal;
public void setRamal(int ramal) {
this.ramal = ramal;
}
public int getRamal() {
return ramal;
}
}
4º Criar a subclasse Telefonista:
public class Telefonista extends Funcionario {
private int estacaoDeTrabalho;
public void setEstacaoDeTrabalho(int estacaoDeTrabalho) {
this.estacaoDeTrabalho = estacaoDeTrabalho;
}
public int getEstacaoDeTrabalho() {
return estacaoDeTrabalho;
}
}
• Na classe TestaFuncionario são apresentadas
todas as classes e mostrada a reutilização de
código, um exemplo são os atributos “nome” e
“salario”. Portanto, não foi preciso criar em todas
as classes, apenas criou-se na superclasse.
• Apenas lembrando que o acesso dos atributos ou
métodos de uma superclasse é permitido
somente se estão definidos com o modo de
visibilidade como “public” ou “protected”.
5º Criar a classe TestaFuncionario:
public class TestaFuncionario {
public static void main(String[] args) {
Gerente gerente = new Gerente();
gerente.setNome("Carlos Vieira");
gerente.setSalario(3000.58);
gerente.setUsuario("carlos.vieira");
gerente.setSenha("5523");
Funcionario funcionario = new Funcionario();
funcionario.setNome("Pedro Castelo");
funcionario.setSalario(1500);
Telefonista telefonista = new Telefonista();
telefonista.setNome("Luana Brana");
telefonista.setSalario(1300.00);
telefonista.setEstacaoDeTrabalho(20);
Secretaria secretaria = new Secretaria();
secretaria.setNome("Maria Ribeiro");
secretaria.setSalario(1125.25);
secretaria.setRamal(5);
System.out.println("##### Gerente #####");
System.out.println("Nome.: "+gerente.getNome());
System.out.println("Salário.: "+gerente.getSalario());
System.out.println("Usuário.: "+gerente.getUsuario());
System.out.println("Senha.: "+gerente.getSenha());
System.out.println("Bonificação.: "+gerente.calculaBonificacao());
System.out.println();
System.out.println("##### Funcionário #####");
System.out.println("Nome.: "+funcionario.getNome());
System.out.println("Salário.: "+funcionario.getSalario());
System.out.println("Bonificação.: "+funcionario.calculaBonificacao());
System.out.println();
System.out.println("##### Telefonista #####");
System.out.println("Nome.: "+telefonista.getNome());
System.out.println("Salário.: "+telefonista.getSalario());
System.out.println("Estação de Trabalho.:
"+telefonista.getEstacaoDeTrabalho());
System.out.println("Bonificação.: "+telefonista.calculaBonificacao());
System.out.println();
System.out.println("##### Secretária #####");
System.out.println("Nome.: "+secretaria.getNome());
System.out.println("Salário.: "+secretaria.getSalario());
System.out.println("Ramal.: "+secretaria.getRamal());
System.out.println("Bonificação.: "+secretaria.calculaBonificacao());
System.out.println();
}
}
Poliformismo
• Poliformismo significa "muitas formas“.
• É o termo definido em linguagens orientadas
a objeto, como por exemplo Java, C# e C++,
que permite ao desenvolvedor usar o mesmo
elemento de formas diferentes;
• Polimorfismo denota uma situação na qual
um objeto pode se comportar de maneiras
diferentes ao receber uma mensagem, ou
seja, ocorre quando um método definido no
ancestral é redefinido no descendente com
um comportamento diferente.
As classes fazem a mesma operação
(método). Mas de forma diferente.
Exercício:
• Dos objetos a seguir, separe em grupos
aqueles que possuem “métodos” em
comum, mas que são executados de
forma diferente, ou seja, apresentam
poliformismo entre eles.
Poliformismo
Poliformismo
Poliformismo
Poliformismo: codigo java
Poliformismo: codigo java
• A essência do poliformismo é que, em vez de
perguntar a um objeto qual é o seu tipo e
então chamar algum comportamento baseado
nessa resposta, você simplesmente chama o
comportamento.
• O objeto, dependendo do seu tipo, faz a coisa
certa.
• No Poliformismo temos dois tipos:
• O Poliformismo Estático;
• O Poliformismo Dinâmico;
• O Poliformismo Estático :
Se dá quando temos a mesma operação
implementada várias vezes na mesma classe.
A escolha de qual operação será chamada
depende da assinatura dos métodos
sobrecarregados.
Sobrecarga de métodos
Exemplo:
Sobrecarga de Métodos
Sobrecarga de Métodos
• O Poliformismo Dinâmico:
Acontece na herança, quando a subclasse
sobrepõe o método original.
A escolha de qual método será chamado
depende do tipo do objeto que recebe a
mensagem.
Sobreposição de métodos:
Exemplo de Poliformismo:
Exemplo de Poliformismo:
Exemplo de Poliformismo:
Exercícios

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Java6
Java6Java6
Java6
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
 
Classificação de Documentos
Classificação de DocumentosClassificação de Documentos
Classificação de Documentos
 
Passagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OraclePassagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e Oracle
 
JavaFX e Scala - Como Leite com Bolacha
JavaFX e Scala - Como Leite com BolachaJavaFX e Scala - Como Leite com Bolacha
JavaFX e Scala - Como Leite com Bolacha
 
Programando em python dicionarios
Programando em python   dicionariosProgramando em python   dicionarios
Programando em python dicionarios
 
(A13) LabMM3 - JavaScript - Arrays multidimensionais
(A13) LabMM3 - JavaScript - Arrays multidimensionais(A13) LabMM3 - JavaScript - Arrays multidimensionais
(A13) LabMM3 - JavaScript - Arrays multidimensionais
 
Javascript
JavascriptJavascript
Javascript
 
Java8
Java8Java8
Java8
 
Prog web 06-php-oo
Prog web 06-php-ooProg web 06-php-oo
Prog web 06-php-oo
 
PHP ao Extremo
PHP ao ExtremoPHP ao Extremo
PHP ao Extremo
 
um breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidadesum breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidades
 
Documentacao automatica
Documentacao automaticaDocumentacao automatica
Documentacao automatica
 
Python 04
Python 04Python 04
Python 04
 
Meta-programacao em python
Meta-programacao em pythonMeta-programacao em python
Meta-programacao em python
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Php 08 Oo
Php 08 OoPhp 08 Oo
Php 08 Oo
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
Fugindo das armadilhas do MVC
Fugindo das armadilhas do MVCFugindo das armadilhas do MVC
Fugindo das armadilhas do MVC
 

Semelhante a Java Encapsulamento Herança Polimorfismo

Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2irenescotolo
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003elliando dias
 
POO-FundamentosPOO.pdf
POO-FundamentosPOO.pdfPOO-FundamentosPOO.pdf
POO-FundamentosPOO.pdfFausto Ayres
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dadosHenrique Fernandes
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
 
Heranca reescrita e_polimorfismo
Heranca reescrita e_polimorfismoHeranca reescrita e_polimorfismo
Heranca reescrita e_polimorfismoPedro Neto
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Desenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVADesenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVAWillian Magalhães
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Professor Samuel Ribeiro
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)Mario Sergio
 
Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1Elaine Cecília Gatto
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1ariovaldodias
 
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 ClasseRegis Magalhães
 

Semelhante a Java Encapsulamento Herança Polimorfismo (20)

Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2Programação Orientada por Objectos - Aula 2
Programação Orientada por Objectos - Aula 2
 
Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2Introdução à análise orientada a objetos parte 2
Introdução à análise orientada a objetos parte 2
 
introdução a linguagem java-2003
introdução a linguagem java-2003introdução a linguagem java-2003
introdução a linguagem java-2003
 
Tutorial Java: Polimorfismo
Tutorial Java: PolimorfismoTutorial Java: Polimorfismo
Tutorial Java: Polimorfismo
 
10 heranca
10   heranca10   heranca
10 heranca
 
POO-FundamentosPOO.pdf
POO-FundamentosPOO.pdfPOO-FundamentosPOO.pdf
POO-FundamentosPOO.pdf
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
Heranca reescrita e_polimorfismo
Heranca reescrita e_polimorfismoHeranca reescrita e_polimorfismo
Heranca reescrita e_polimorfismo
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Dip the dependency inversion principle
Dip   the dependency inversion principleDip   the dependency inversion principle
Dip the dependency inversion principle
 
Desenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVADesenvolvendo para WEB com JAVA
Desenvolvendo para WEB com JAVA
 
Lp3
Lp3Lp3
Lp3
 
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
Java básico - Módulo 08 - Introdução à programação orientada à objetos oo - c...
 
Curso de Java (Parte 4)
Curso de Java (Parte 4)Curso de Java (Parte 4)
Curso de Java (Parte 4)
 
Vraptor
VraptorVraptor
Vraptor
 
Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1Tutorial java orientação a objetos parte 1
Tutorial java orientação a objetos parte 1
 
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
 
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
 

Mais de Cris Fidelix

Alguns combinados C#
Alguns combinados C#Alguns combinados C#
Alguns combinados C#Cris Fidelix
 
Estudo de caso 1 - Prática de BD - Prof. Cristiane Fidelix
Estudo de caso 1 - Prática de BD - Prof. Cristiane FidelixEstudo de caso 1 - Prática de BD - Prof. Cristiane Fidelix
Estudo de caso 1 - Prática de BD - Prof. Cristiane FidelixCris Fidelix
 
Tecnologia e Sistemas de Informação ERP,CRM,SCM e E-business
Tecnologia e Sistemas de Informação  ERP,CRM,SCM e E-businessTecnologia e Sistemas de Informação  ERP,CRM,SCM e E-business
Tecnologia e Sistemas de Informação ERP,CRM,SCM e E-businessCris Fidelix
 
Modelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane FidelixCris Fidelix
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixCris Fidelix
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixCris Fidelix
 
Componentes dos Sistemas de Informação - Proª Cristiane fidelix
Componentes dos Sistemas de Informação - Proª Cristiane fidelixComponentes dos Sistemas de Informação - Proª Cristiane fidelix
Componentes dos Sistemas de Informação - Proª Cristiane fidelixCris Fidelix
 
Tipos de Sistema de Informação - Prof.ª Cristiane Fidelix
Tipos de Sistema de Informação - Prof.ª Cristiane FidelixTipos de Sistema de Informação - Prof.ª Cristiane Fidelix
Tipos de Sistema de Informação - Prof.ª Cristiane FidelixCris Fidelix
 
Fundamentos em Tecnologia da Informação - Prof.ª Cristiane Fidelix
Fundamentos em Tecnologia da Informação - Prof.ª Cristiane FidelixFundamentos em Tecnologia da Informação - Prof.ª Cristiane Fidelix
Fundamentos em Tecnologia da Informação - Prof.ª Cristiane FidelixCris Fidelix
 
Componentes dos Sistemas de Informação
Componentes dos Sistemas de InformaçãoComponentes dos Sistemas de Informação
Componentes dos Sistemas de InformaçãoCris Fidelix
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
 
Apresentação de Tecnologia da Informação - Prof.ª Cristiane Fidelix
Apresentação de Tecnologia da Informação - Prof.ª Cristiane FidelixApresentação de Tecnologia da Informação - Prof.ª Cristiane Fidelix
Apresentação de Tecnologia da Informação - Prof.ª Cristiane FidelixCris Fidelix
 
Carreiras TI - Gestão da Tecnologia da Informação
Carreiras TI -  Gestão da Tecnologia da InformaçãoCarreiras TI -  Gestão da Tecnologia da Informação
Carreiras TI - Gestão da Tecnologia da InformaçãoCris Fidelix
 
Apresentação de Tecnologia da Informação - Prof.ª Cristiane Fidelix
Apresentação de Tecnologia da Informação - Prof.ª Cristiane FidelixApresentação de Tecnologia da Informação - Prof.ª Cristiane Fidelix
Apresentação de Tecnologia da Informação - Prof.ª Cristiane FidelixCris Fidelix
 
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixApresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixCris Fidelix
 
Cases 3 - Java - Prof.ª Cristiane Fidelix
Cases 3 - Java - Prof.ª Cristiane FidelixCases 3 - Java - Prof.ª Cristiane Fidelix
Cases 3 - Java - Prof.ª Cristiane FidelixCris Fidelix
 
Cases 2 - Aula de Java - Prof.ª Cristiane Fidelix
Cases 2 - Aula de Java - Prof.ª Cristiane FidelixCases 2 - Aula de Java - Prof.ª Cristiane Fidelix
Cases 2 - Aula de Java - Prof.ª Cristiane FidelixCris Fidelix
 
Aula 2 - Java Prof.ª Cristiane Fidelix
Aula 2 - Java  Prof.ª Cristiane FidelixAula 2 - Java  Prof.ª Cristiane Fidelix
Aula 2 - Java Prof.ª Cristiane FidelixCris Fidelix
 
Cases 1 - Java -Prof.ª Cristiane Fidelix
Cases 1 - Java -Prof.ª Cristiane FidelixCases 1 - Java -Prof.ª Cristiane Fidelix
Cases 1 - Java -Prof.ª Cristiane FidelixCris Fidelix
 
Aula 2 - Java Prof.ª Cristiane Fidelix
Aula 2 - Java  Prof.ª Cristiane FidelixAula 2 - Java  Prof.ª Cristiane Fidelix
Aula 2 - Java Prof.ª Cristiane FidelixCris Fidelix
 

Mais de Cris Fidelix (20)

Alguns combinados C#
Alguns combinados C#Alguns combinados C#
Alguns combinados C#
 
Estudo de caso 1 - Prática de BD - Prof. Cristiane Fidelix
Estudo de caso 1 - Prática de BD - Prof. Cristiane FidelixEstudo de caso 1 - Prática de BD - Prof. Cristiane Fidelix
Estudo de caso 1 - Prática de BD - Prof. Cristiane Fidelix
 
Tecnologia e Sistemas de Informação ERP,CRM,SCM e E-business
Tecnologia e Sistemas de Informação  ERP,CRM,SCM e E-businessTecnologia e Sistemas de Informação  ERP,CRM,SCM e E-business
Tecnologia e Sistemas de Informação ERP,CRM,SCM e E-business
 
Modelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 3 - Prof.ª Cristiane Fidelix
 
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane FidelixModelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
Modelos de Processo de Desenvolvimento de Software 2 - Prof.ª Cristiane Fidelix
 
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane FidelixModelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
Modelos de Processo e Desenvolvimento de Software 1 - Prof.ª Cristiane Fidelix
 
Componentes dos Sistemas de Informação - Proª Cristiane fidelix
Componentes dos Sistemas de Informação - Proª Cristiane fidelixComponentes dos Sistemas de Informação - Proª Cristiane fidelix
Componentes dos Sistemas de Informação - Proª Cristiane fidelix
 
Tipos de Sistema de Informação - Prof.ª Cristiane Fidelix
Tipos de Sistema de Informação - Prof.ª Cristiane FidelixTipos de Sistema de Informação - Prof.ª Cristiane Fidelix
Tipos de Sistema de Informação - Prof.ª Cristiane Fidelix
 
Fundamentos em Tecnologia da Informação - Prof.ª Cristiane Fidelix
Fundamentos em Tecnologia da Informação - Prof.ª Cristiane FidelixFundamentos em Tecnologia da Informação - Prof.ª Cristiane Fidelix
Fundamentos em Tecnologia da Informação - Prof.ª Cristiane Fidelix
 
Componentes dos Sistemas de Informação
Componentes dos Sistemas de InformaçãoComponentes dos Sistemas de Informação
Componentes dos Sistemas de Informação
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
 
Apresentação de Tecnologia da Informação - Prof.ª Cristiane Fidelix
Apresentação de Tecnologia da Informação - Prof.ª Cristiane FidelixApresentação de Tecnologia da Informação - Prof.ª Cristiane Fidelix
Apresentação de Tecnologia da Informação - Prof.ª Cristiane Fidelix
 
Carreiras TI - Gestão da Tecnologia da Informação
Carreiras TI -  Gestão da Tecnologia da InformaçãoCarreiras TI -  Gestão da Tecnologia da Informação
Carreiras TI - Gestão da Tecnologia da Informação
 
Apresentação de Tecnologia da Informação - Prof.ª Cristiane Fidelix
Apresentação de Tecnologia da Informação - Prof.ª Cristiane FidelixApresentação de Tecnologia da Informação - Prof.ª Cristiane Fidelix
Apresentação de Tecnologia da Informação - Prof.ª Cristiane Fidelix
 
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane FidelixApresentação de Engenharia de software I - Prof. Cristiane Fidelix
Apresentação de Engenharia de software I - Prof. Cristiane Fidelix
 
Cases 3 - Java - Prof.ª Cristiane Fidelix
Cases 3 - Java - Prof.ª Cristiane FidelixCases 3 - Java - Prof.ª Cristiane Fidelix
Cases 3 - Java - Prof.ª Cristiane Fidelix
 
Cases 2 - Aula de Java - Prof.ª Cristiane Fidelix
Cases 2 - Aula de Java - Prof.ª Cristiane FidelixCases 2 - Aula de Java - Prof.ª Cristiane Fidelix
Cases 2 - Aula de Java - Prof.ª Cristiane Fidelix
 
Aula 2 - Java Prof.ª Cristiane Fidelix
Aula 2 - Java  Prof.ª Cristiane FidelixAula 2 - Java  Prof.ª Cristiane Fidelix
Aula 2 - Java Prof.ª Cristiane Fidelix
 
Cases 1 - Java -Prof.ª Cristiane Fidelix
Cases 1 - Java -Prof.ª Cristiane FidelixCases 1 - Java -Prof.ª Cristiane Fidelix
Cases 1 - Java -Prof.ª Cristiane Fidelix
 
Aula 2 - Java Prof.ª Cristiane Fidelix
Aula 2 - Java  Prof.ª Cristiane FidelixAula 2 - Java  Prof.ª Cristiane Fidelix
Aula 2 - Java Prof.ª Cristiane Fidelix
 

Java Encapsulamento Herança Polimorfismo

  • 1. Profª Me. Cristiane Fidelix (Simbologia clássica) Linguagem de Programação Java
  • 2.  Conceitos: - Encapsulamento - Herança - Polimorfismo
  • 4. O que é o encapsulamento? Mecanismo da linguagem de programação para restringir o acesso a alguns componentes dos objetos, escondendo os dados de uma classe e tornando-os disponíveis somente através de métodos.
  • 5. O que é o encapsulamento? • Na verdade, o mecanismo para restringir o acesso a alguns dos componentes do objeto é a definição de ocultação de informações. O encapsulamento é um conceito da Programação Orientada a Objetos onde o estado de objetos (as variáveis da classe) e seus comportamentos (os métodos da classe) são agrupados em conjuntos segundo o seu grau de relação.
  • 6. • Em programação orientada a objetos, modificador de acesso, é a palavra- chave que define como um atributo, método, ou classe será visto no contexto que estiver inserido. Para utilizar estes modificadores de acesso, basta que o escreva antes do nome do atributo, método ou classe:
  • 7. • Public: O modificador public deixará visível a classe ou membro para todas as outras classes, subclasses e pacotes do projeto Java.
  • 8. • Protected: O modificador protected deixará visível o atributo para todas as outras classes e subclasses que pertencem ao mesmo pacote. A principal diferença é que apenas as classes do mesmo pacote têm acesso ao membro. O pacote da subclasse não tem acesso ao membro.
  • 9. • Private: O modificador private deixará visível o atributo apenas para a classe em que este atributo se encontra.
  • 10. • 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. • Por entendimento os métodos setters servem para alterar a informação de uma propriedade de um objeto. E os métodos getters para retornar o valor dessa propriedade.
  • 11. Veja um exemplo de encapsulamento, na Listagem 2 gera-se os atributos privados (private) e é realizado o processo de geração dos métodos setters e getters.
  • 12. Ex1 - Encapsulamento da classe Funcionário
  • 13. 1º Criar: a classe public class Funcionario { private double salario; private String nome; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public void setSalario(double salario) { this.salario = salario; } public double getSalario() { return salario; } }
  • 14. 2º criar: Classe Testadora dos métodos getters e setters. public class TestaFuncionario { public static void main(String[] args) { Funcionario funcionario = new Funcionario(); funcionario.setNome("Thiago"); funcionario.setSalario(2500); System.out.println(funcionario.getNome()); System.out.println(funcionario.getSalario()); } }
  • 15. • Na classe testadora é instanciado a classe “Funcionario”, onde a variável de referência é usada para invocar os métodos setters, informando algum dado. • Ao final, é usado os métodos getters dentro do “System.out.println” para gerar a saída dos resultados que foram passados nos métodos setters.
  • 17. Conceito de Herança: • Na Programação Orientada a Objetos o significado de herança tem o mesmo significado para o mundo real. • Assim como um filho pode herdar alguma característica do pai, na Orientação a Objetos é permitido que uma classe herde atributos e métodos da outra, tendo apenas uma restrição para a herança. • Os modificadores de acessos das classes, métodos e atributos só podem estar com visibilidade public e protected para que sejam herdados.
  • 18. Conceito de Herança: • Uma das grandes vantagens de usar o recurso da herança é na reutilização do código. • Esse reaproveitamento pode ser acionado quando se identifica que o atributo ou método de uma classe será igual para as outras. • Para efetuar uma herança de uma classe é utilizada a palavra reservada chamada extends.
  • 19. Exemplo: A superclasse “Funcionario” que servirá de base para as subclasses usarem seus atributos ou métodos.
  • 20. 1º Criar a superclasse Funcionario: public class Funcionario { private String nome; private double salario; public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public double getSalario() { return salario; } public void setSalario(double salario) { this.salario = salario; } public double calculaBonificacao(){ return this.salario * 0.1; } }
  • 21. 2º Criar a subclasse Gerente: public class Gerente extends Funcionario { private String usuario; private String senha; public String getUsuario() { return usuario; } public void setUsuario(String usuario) { this.usuario = usuario; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } public double calculaBonificacao(){ return this.getSalario() * 0.6 + 100; } }
  • 22. • Podemos ver que a classe “Gerente” está herdando da classe “Funcionario” através da palavra reservada extends. • Acontece também a mudança do comportamento de herança, a partir do método “calculaBonificacao” que é sobrescrito, pois entende-se que o valor da classe “Gerente” é diferente para as demais.
  • 23. 3º Criar a subclasse Secretaria: public class Secretaria extends Funcionario { private int ramal; public void setRamal(int ramal) { this.ramal = ramal; } public int getRamal() { return ramal; } }
  • 24. 4º Criar a subclasse Telefonista: public class Telefonista extends Funcionario { private int estacaoDeTrabalho; public void setEstacaoDeTrabalho(int estacaoDeTrabalho) { this.estacaoDeTrabalho = estacaoDeTrabalho; } public int getEstacaoDeTrabalho() { return estacaoDeTrabalho; } }
  • 25. • Na classe TestaFuncionario são apresentadas todas as classes e mostrada a reutilização de código, um exemplo são os atributos “nome” e “salario”. Portanto, não foi preciso criar em todas as classes, apenas criou-se na superclasse. • Apenas lembrando que o acesso dos atributos ou métodos de uma superclasse é permitido somente se estão definidos com o modo de visibilidade como “public” ou “protected”.
  • 26. 5º Criar a classe TestaFuncionario: public class TestaFuncionario { public static void main(String[] args) { Gerente gerente = new Gerente(); gerente.setNome("Carlos Vieira"); gerente.setSalario(3000.58); gerente.setUsuario("carlos.vieira"); gerente.setSenha("5523"); Funcionario funcionario = new Funcionario(); funcionario.setNome("Pedro Castelo"); funcionario.setSalario(1500); Telefonista telefonista = new Telefonista(); telefonista.setNome("Luana Brana"); telefonista.setSalario(1300.00); telefonista.setEstacaoDeTrabalho(20); Secretaria secretaria = new Secretaria(); secretaria.setNome("Maria Ribeiro"); secretaria.setSalario(1125.25); secretaria.setRamal(5);
  • 27. System.out.println("##### Gerente #####"); System.out.println("Nome.: "+gerente.getNome()); System.out.println("Salário.: "+gerente.getSalario()); System.out.println("Usuário.: "+gerente.getUsuario()); System.out.println("Senha.: "+gerente.getSenha()); System.out.println("Bonificação.: "+gerente.calculaBonificacao()); System.out.println(); System.out.println("##### Funcionário #####"); System.out.println("Nome.: "+funcionario.getNome()); System.out.println("Salário.: "+funcionario.getSalario()); System.out.println("Bonificação.: "+funcionario.calculaBonificacao()); System.out.println(); System.out.println("##### Telefonista #####"); System.out.println("Nome.: "+telefonista.getNome()); System.out.println("Salário.: "+telefonista.getSalario()); System.out.println("Estação de Trabalho.: "+telefonista.getEstacaoDeTrabalho()); System.out.println("Bonificação.: "+telefonista.calculaBonificacao()); System.out.println();
  • 28. System.out.println("##### Secretária #####"); System.out.println("Nome.: "+secretaria.getNome()); System.out.println("Salário.: "+secretaria.getSalario()); System.out.println("Ramal.: "+secretaria.getRamal()); System.out.println("Bonificação.: "+secretaria.calculaBonificacao()); System.out.println(); } }
  • 30. • Poliformismo significa "muitas formas“. • É o termo definido em linguagens orientadas a objeto, como por exemplo Java, C# e C++, que permite ao desenvolvedor usar o mesmo elemento de formas diferentes; • Polimorfismo denota uma situação na qual um objeto pode se comportar de maneiras diferentes ao receber uma mensagem, ou seja, ocorre quando um método definido no ancestral é redefinido no descendente com um comportamento diferente.
  • 31. As classes fazem a mesma operação (método). Mas de forma diferente.
  • 32.
  • 33.
  • 34. Exercício: • Dos objetos a seguir, separe em grupos aqueles que possuem “métodos” em comum, mas que são executados de forma diferente, ou seja, apresentam poliformismo entre eles.
  • 35.
  • 41. • A essência do poliformismo é que, em vez de perguntar a um objeto qual é o seu tipo e então chamar algum comportamento baseado nessa resposta, você simplesmente chama o comportamento. • O objeto, dependendo do seu tipo, faz a coisa certa.
  • 42. • No Poliformismo temos dois tipos: • O Poliformismo Estático; • O Poliformismo Dinâmico;
  • 43. • O Poliformismo Estático : Se dá quando temos a mesma operação implementada várias vezes na mesma classe. A escolha de qual operação será chamada depende da assinatura dos métodos sobrecarregados.
  • 48.
  • 49. • O Poliformismo Dinâmico: Acontece na herança, quando a subclasse sobrepõe o método original. A escolha de qual método será chamado depende do tipo do objeto que recebe a mensagem.