SlideShare uma empresa Scribd logo
Programação Orientada a
Objetos
Aula 5
Curso: Análise e Desenvolvimento de Sistemas
Professor: Rafael Wendel Pinheiro
• Roteiro da Aula
– Encapsulamento
– Associação
– Polimorfismo
– Exercícios
2
Encapsulamento
3
• Encapsulamento
– O conceito de encapsulamento visa
“esconder” atributos e métodos de uma
classe que são interessantes não serem
“vistos” fora da classe.
– Nesse contexto, quem for consumir a classe,
saberá “o que ela faz” e não “como ela
faz”.
– A classe será acessada apenas por seus
métodos públicos, que são as “interfaces da
classe”. 4
• Encapsulamento
– Imagine a classe “Carro”. Essa classe possui
os atributos capacidadeTanque e
qtdeCombustivel.
– É interessante que esses atributos sejam
implementados como “privados” para garantir
que anomalias como quantidade >
capacidade.
5
• Encapsulamento
6
public class Carro{
private int capacidadeTanque;
private int qtdeCombustivel;
public Carro(int capacidadeTanque){
this.capacidadeTanque = capacidadeTanque;
}
public void abastecer(int qtdeCombustivel){
if((this.qtdeCombustivel + qtdeCombustivel) > this.capacidadeCombustivel){
System.out.println(“Quantidade excede o limite do tanque!”);
}
else{
this.qtdeCombustivel = this.qtdeCombustivel + qtdeCombustivel;,
System.out.println(“Carro abastecido. Quantidade atual: ” + this.qtdeCombustivel );
}
}
}
• Encapsulamento
7
Carro c = new Carro(50);
c.abastecer(40); // Imprime: “Carro abastecido. Quantidade atual: 40”
c.abastecer(15); // Imprime: “Quantidade excede o limite do tanque”
c.abastecer(10); // Imprime: “Carro abastecido. Quantidade atual: 50”
Externamente não é possível saber que o método abastecer está acessando
os atributos capacidadeTanque e qtdeCombustivel e por vezes alterando
esse segundo.
• Encapsulamento
– É interessante que todos os atributos de uma
classe sejam encapsulados, ou seja, não
sejam públicos.
– Dessa forma, eles não poderão ser
acessados/modificados diretamente fora da
classe, apenas através de comportamentos
(métodos).
– Para isso, deve-se implementar os métodos
set e get.
8
• Encapsulamento
– Método set serve para atribuir um valor a uma
propriedade da classe.
– Método get serve para recuperar/visualizar o
valor de uma propriedade da classe
9
• Encapsulamento
10
public class Pessoa{
private String nome;
private String email;
public void setNome(String nome){
this.nome = nome;
}
public String getNome(){
return this.nome;
}
public void setEmail(String email){
this.email = email;
}
public String getEmail(){
return this.email;
}
}
• Encapsulamento
11
Pessoa p = new Pessoa();
p.setNome(“Joao”);
p.setEmail(“joao@ifspcapivari.com.br”);
System.out.println(“Nome: ” + p.getNome() );
System.out.println(“Email: ” + p.getEmail() );
• Exercício 1:
– Crie a classe Usuario com os atributos nome,
login e senha.
– Como você implementaria a classe para que o
atributo nome só salvasse nomes com CAIXA
ALTA, login só caixa baixa e senha uma String
com limite de 16 caracteres?
– Implemente!!!
12
Associação
13
• Associação
– A associação entre classes ocorre quando o
atributo de uma classe é do tipo de outra
classe.
– Por exemplo, imagine a classe Endereço com
os atributos rua e numero. Imagine também a
classe Cliente que tem os atributos nome e
idade. Cliente possui Endereço, logo, nessa
classe terá um atributo do tipo Endereço.
14
• Associação
15
public class Endereco{
private String rua;
private String numero;
public void setRua(String rua){
this.rua = rua;
}
public String getRua(){
return this.rua;
}
public void setNumero(String numero){
this.numero = numero;
}
public String getNumero(){
return this.numero;
}
}
16
public class Cliente{
private String nome;
private int idade;
private Endereco endereco;
public void setNome(String nome){
this.nome = nome;
}
public String getNome(){
return this.nome;
}
public void setIdade(int idade){
this.idade = idade;
}
public int getIdade(){
return this.idade;
}
public void setEndereco(Endereco endereco){
this.endereco = endereco;
}
public Endereco getEndereco(){
return this.endereco;
}
}
• Associação
17
Endereco e = new Endereco();
e.setRua(“Rua das Flores”);
e.setNumero(“123”);
Cliente c = new Cliente();
c.setNome(“Joao”);
c.setIdade(30);
c.setEndereco(e);
System.out.println(“Rua: ” + c.getEndereco().getRua() );
//Imprime: “Rua: Rua das Flores”
Polimorfismo
18
• Polimorfismo
– Polimorfismo é a capacidade de uma instância
se portar de várias formas de acordo com sua
referência.
– Por exemplo, retome o projeto da aula anterior
onde existia a classe Funcionario e Gerente.
– Sabe-se que todo gerente é um funcionário, e
isso é viabilizado através da herança.
19
• Polimorfismo
20
Gerente g = new Gerente(“Joao”);
g.salario = 1500;
g.horasExtras = 10;
Funcionario f = g;
f.calcularSalarioTotal();
Vai ser executado o método da
classe Funcionario ou Gerente?
Interfaces
21
• Interfaces
– Em OO, as Interfaces fornecem uma lista de
métodos que as classes que a implementarem
deverão ter.
– Sua principal função é fornecer um mecanismo
de desacoplar as classes (diminuir a
dependência entre as classes)
– Serve como um “contrato” que todas as classes
devem cumprir quando assumem a
implementação da Interface.
22
• Interfaces
– Exemplo: Organograma de Funcionários da
Empresa XYZ.
23
• Interfaces
– No Sistema da Empresa XYZ os Diretores e
Gerentes possuem acesso através de um
login/senha. Os Operadores NÃO POSSUEM
acesso ao sistema.
– Como fazer?
24
• Interfaces
– Incompatibilidade: Operador não “autentica” no
sistema.
25
• Interfaces
– Nesse caso, pode-se criar uma Interface
“IAutenticavel” e nela declarar o método
“autenticar(): boolean”. Todas as classes que
tiverem acesso através de login e senha
deverão implementar essa Interface e
consequentemente possui o método
“autenticar(): boolean”
26
• Interfaces
27
• Implementação
28
Classe Funcionario
(Super-classe
Interface
IAutenticavel
• Implementação
– Classe Gerente
29
• Implementação
– Classe Diretor
30
• Interfaces
– Uma classe pode implementar várias Interfaces
distintas
– A classe pode ter outros métodos particulares
além daqueles declarados pela Interface a qual
implementa
– Uma variável do tipo “Interface” pode receber
uma instância de qualquer classe que a
implementa.
31
32
• Exercício 2:
– Crie uma classe chamada ContaBancaria. Essa classe
deverá ter os atributos numeroConta, saldo e
historico. Faça os métodos:
• Construtor para receber o numero e o saldo inicial da conta.
• depositar: recebe um valor e acopla ao saldo
• sacar: recebe um valor a ser sacado do saldo
• consultarSaldo: Imprime o número da conta e o saldo atual.
(Obs: cada consulta resulta em uma taxa de 0,25 no saldo)
• aplicarReajuste: Atualiza o saldo em 0,02%
• exibirHistorico: deverá exibir todas as ações já executadas
por essa conta.
33
• Fim!
34

Mais conteúdo relacionado

Mais procurados

Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
Armando Daniel
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
Arthur Emanuel
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
Elaine Cecília Gatto
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
Daniel Brandão
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
Arthur Emanuel
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
Ludimila Monjardim Casagrande
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
Alberto Simões
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
Igor Takenami
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
Daniel Brandão
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
Pedro De Almeida
 
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
Daniel Brandão
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
Nécio de Lima Veras
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
Álvaro Farias Pinheiro
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
Ludimila Monjardim Casagrande
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dados
elliando dias
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
Armando Daniel
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
Antonio Oliveira
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
soncino
 
Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1
Elaine Cecília Gatto
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de Sistemas
Clayton de Almeida Souza
 

Mais procurados (20)

Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Java: Heranca e polimorfismo
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismo
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Aula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHPAula 02 - Introdução ao PHP
Aula 02 - Introdução ao PHP
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Aula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas CondicionaisAula03 PHP - Estruturas Condicionais
Aula03 PHP - Estruturas Condicionais
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
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
 
O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
Metodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de SoftwareMetodologias de Desenvolvimento de Software
Metodologias de Desenvolvimento de Software
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 
Normalização de Banco de Dados
Normalização de Banco de DadosNormalização de Banco de Dados
Normalização de Banco de Dados
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Tratamento de exceções java
Tratamento de exceções   javaTratamento de exceções   java
Tratamento de exceções java
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1Interfaces Gráficas em Java Parte 1
Interfaces Gráficas em Java Parte 1
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de Sistemas
 

Destaque

PHP - Arrays
PHP - ArraysPHP - Arrays
PHP - Arrays
Rafael Pinheiro
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
Rafael Pinheiro
 
Caderno de Linguagem de Programação para Web
Caderno de Linguagem de Programação para WebCaderno de Linguagem de Programação para Web
Caderno de Linguagem de Programação para Web
geysasz
 
Conheça mais o SlideShare
Conheça mais o SlideShareConheça mais o SlideShare
Conheça mais o SlideShare
Rafael Pinheiro
 
Mini Curso Wordpress
Mini Curso WordpressMini Curso Wordpress
Mini Curso Wordpress
Rafael Pinheiro
 
Aula 2 conversao de variaveis j option-pane
Aula 2   conversao de variaveis j option-paneAula 2   conversao de variaveis j option-pane
Aula 2 conversao de variaveis j option-pane
Rafael Pinheiro
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
iMasters
 
Metodologia SCRUM
Metodologia SCRUMMetodologia SCRUM
Metodologia SCRUM
Rafael Pinheiro
 
PHP Orientado a Objetos
PHP Orientado a ObjetosPHP Orientado a Objetos
PHP Orientado a Objetos
Rodrigo Gomes da Silva
 
PHP Experience 2016 - [Workshop] Elastic Search: Turbinando sua aplicação PHP
PHP Experience 2016 - [Workshop] Elastic Search: Turbinando sua aplicação PHPPHP Experience 2016 - [Workshop] Elastic Search: Turbinando sua aplicação PHP
PHP Experience 2016 - [Workshop] Elastic Search: Turbinando sua aplicação PHP
iMasters
 
Curso de PHP - Arrays
Curso de PHP - ArraysCurso de PHP - Arrays
Curso de PHP - Arrays
Fabio Moura Pereira
 
Php array
Php arrayPhp array
Php array
Core Lee
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
guest9c455546
 
TESTE DE AVALIAÇÃO - Microsot Word
TESTE DE AVALIAÇÃO - Microsot WordTESTE DE AVALIAÇÃO - Microsot Word
TESTE DE AVALIAÇÃO - Microsot Word
P.ESPERANCA
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
Augusto Pascutti
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
Norivan Oliveira
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
Luiz Junior
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
SlideShare
 

Destaque (20)

PHP - Arrays
PHP - ArraysPHP - Arrays
PHP - Arrays
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
 
Caderno de Linguagem de Programação para Web
Caderno de Linguagem de Programação para WebCaderno de Linguagem de Programação para Web
Caderno de Linguagem de Programação para Web
 
Conheça mais o SlideShare
Conheça mais o SlideShareConheça mais o SlideShare
Conheça mais o SlideShare
 
Mini Curso Wordpress
Mini Curso WordpressMini Curso Wordpress
Mini Curso Wordpress
 
Aula 2 conversao de variaveis j option-pane
Aula 2   conversao de variaveis j option-paneAula 2   conversao de variaveis j option-pane
Aula 2 conversao de variaveis j option-pane
 
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHPPHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
 
Metodologia SCRUM
Metodologia SCRUMMetodologia SCRUM
Metodologia SCRUM
 
PHP Orientado a Objetos
PHP Orientado a ObjetosPHP Orientado a Objetos
PHP Orientado a Objetos
 
PHP Experience 2016 - [Workshop] Elastic Search: Turbinando sua aplicação PHP
PHP Experience 2016 - [Workshop] Elastic Search: Turbinando sua aplicação PHPPHP Experience 2016 - [Workshop] Elastic Search: Turbinando sua aplicação PHP
PHP Experience 2016 - [Workshop] Elastic Search: Turbinando sua aplicação PHP
 
Curso de PHP - Arrays
Curso de PHP - ArraysCurso de PHP - Arrays
Curso de PHP - Arrays
 
Php array
Php arrayPhp array
Php array
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
TESTE DE AVALIAÇÃO - Microsot Word
TESTE DE AVALIAÇÃO - Microsot WordTESTE DE AVALIAÇÃO - Microsot Word
TESTE DE AVALIAÇÃO - Microsot Word
 
Orientação a Objetos com PHP
Orientação a Objetos com PHPOrientação a Objetos com PHP
Orientação a Objetos com PHP
 
CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1CURSO DE PHP PARA INICIANTES - AULA 1
CURSO DE PHP PARA INICIANTES - AULA 1
 
Curso de PHP Básico ao Avançado
Curso de PHP Básico ao AvançadoCurso de PHP Básico ao Avançado
Curso de PHP Básico ao Avançado
 
2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare2015 Upload Campaigns Calendar - SlideShare
2015 Upload Campaigns Calendar - SlideShare
 
What to Upload to SlideShare
What to Upload to SlideShareWhat to Upload to SlideShare
What to Upload to SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

Semelhante a Aula 5 encapsulamento, associação, polimorfismo, interfaces

ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
biandamakengo08
 
Apostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a ParteApostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a Parte
Ilton Barbosa
 
Java11
Java11Java11
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5
Ilton Barbosa
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
TDC 2015 São Paulo - Clean Code para Testers
TDC 2015 São Paulo - Clean Code para TestersTDC 2015 São Paulo - Clean Code para Testers
TDC 2015 São Paulo - Clean Code para Testers
Stefan Teixeira
 
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
Elaine Cecília Gatto
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
Natanael Fonseca
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dados
Sérgio Souza Costa
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3
Thyago Maia
 
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
 
Pacotes -organizando_suas_classes_e_bibliotecas
Pacotes  -organizando_suas_classes_e_bibliotecasPacotes  -organizando_suas_classes_e_bibliotecas
Pacotes -organizando_suas_classes_e_bibliotecas
Pedro Neto
 
Classes csharp
Classes csharpClasses csharp
Classes csharp
Tiago
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, Interface
Arthur Emanuel
 
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptxAULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AurelcioOliveira
 
POO - Aula 003
POO - Aula 003POO - Aula 003
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
Infogenius
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
Mario Sergio
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3
Thyago Maia
 
03 fundamentos java
03 fundamentos java03 fundamentos java
03 fundamentos java
Raytssa Martins
 

Semelhante a Aula 5 encapsulamento, associação, polimorfismo, interfaces (20)

ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#ebook-completo c# o melhor para começar no c#
ebook-completo c# o melhor para começar no c#
 
Apostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a ParteApostila PhP com Wamp, 4a Parte
Apostila PhP com Wamp, 4a Parte
 
Java11
Java11Java11
Java11
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
TDC 2015 São Paulo - Clean Code para Testers
TDC 2015 São Paulo - Clean Code para TestersTDC 2015 São Paulo - Clean Code para Testers
TDC 2015 São Paulo - Clean Code para Testers
 
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
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Java - Introdução a banco de dados
Java - Introdução a banco de dadosJava - Introdução a banco de dados
Java - Introdução a banco de dados
 
Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3Desenvolvimento Web com PHP - Aula 3
Desenvolvimento Web com PHP - Aula 3
 
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
 
Pacotes -organizando_suas_classes_e_bibliotecas
Pacotes  -organizando_suas_classes_e_bibliotecasPacotes  -organizando_suas_classes_e_bibliotecas
Pacotes -organizando_suas_classes_e_bibliotecas
 
Classes csharp
Classes csharpClasses csharp
Classes csharp
 
Java: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, InterfaceJava: Classes Abstratas, Anônimas, Interface
Java: Classes Abstratas, Anônimas, Interface
 
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptxAULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
AULA DIA 22-2024 - PROGRAMACAO ORIENTADA A OBJETOS EM JAVA.pptx
 
POO - Aula 003
POO - Aula 003POO - Aula 003
POO - Aula 003
 
Linguagens Poo
Linguagens PooLinguagens Poo
Linguagens Poo
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3
 
03 fundamentos java
03 fundamentos java03 fundamentos java
03 fundamentos java
 

Aula 5 encapsulamento, associação, polimorfismo, interfaces

  • 1. Programação Orientada a Objetos Aula 5 Curso: Análise e Desenvolvimento de Sistemas Professor: Rafael Wendel Pinheiro
  • 2. • Roteiro da Aula – Encapsulamento – Associação – Polimorfismo – Exercícios 2
  • 4. • Encapsulamento – O conceito de encapsulamento visa “esconder” atributos e métodos de uma classe que são interessantes não serem “vistos” fora da classe. – Nesse contexto, quem for consumir a classe, saberá “o que ela faz” e não “como ela faz”. – A classe será acessada apenas por seus métodos públicos, que são as “interfaces da classe”. 4
  • 5. • Encapsulamento – Imagine a classe “Carro”. Essa classe possui os atributos capacidadeTanque e qtdeCombustivel. – É interessante que esses atributos sejam implementados como “privados” para garantir que anomalias como quantidade > capacidade. 5
  • 6. • Encapsulamento 6 public class Carro{ private int capacidadeTanque; private int qtdeCombustivel; public Carro(int capacidadeTanque){ this.capacidadeTanque = capacidadeTanque; } public void abastecer(int qtdeCombustivel){ if((this.qtdeCombustivel + qtdeCombustivel) > this.capacidadeCombustivel){ System.out.println(“Quantidade excede o limite do tanque!”); } else{ this.qtdeCombustivel = this.qtdeCombustivel + qtdeCombustivel;, System.out.println(“Carro abastecido. Quantidade atual: ” + this.qtdeCombustivel ); } } }
  • 7. • Encapsulamento 7 Carro c = new Carro(50); c.abastecer(40); // Imprime: “Carro abastecido. Quantidade atual: 40” c.abastecer(15); // Imprime: “Quantidade excede o limite do tanque” c.abastecer(10); // Imprime: “Carro abastecido. Quantidade atual: 50” Externamente não é possível saber que o método abastecer está acessando os atributos capacidadeTanque e qtdeCombustivel e por vezes alterando esse segundo.
  • 8. • Encapsulamento – É interessante que todos os atributos de uma classe sejam encapsulados, ou seja, não sejam públicos. – Dessa forma, eles não poderão ser acessados/modificados diretamente fora da classe, apenas através de comportamentos (métodos). – Para isso, deve-se implementar os métodos set e get. 8
  • 9. • Encapsulamento – Método set serve para atribuir um valor a uma propriedade da classe. – Método get serve para recuperar/visualizar o valor de uma propriedade da classe 9
  • 10. • Encapsulamento 10 public class Pessoa{ private String nome; private String email; public void setNome(String nome){ this.nome = nome; } public String getNome(){ return this.nome; } public void setEmail(String email){ this.email = email; } public String getEmail(){ return this.email; } }
  • 11. • Encapsulamento 11 Pessoa p = new Pessoa(); p.setNome(“Joao”); p.setEmail(“joao@ifspcapivari.com.br”); System.out.println(“Nome: ” + p.getNome() ); System.out.println(“Email: ” + p.getEmail() );
  • 12. • Exercício 1: – Crie a classe Usuario com os atributos nome, login e senha. – Como você implementaria a classe para que o atributo nome só salvasse nomes com CAIXA ALTA, login só caixa baixa e senha uma String com limite de 16 caracteres? – Implemente!!! 12
  • 14. • Associação – A associação entre classes ocorre quando o atributo de uma classe é do tipo de outra classe. – Por exemplo, imagine a classe Endereço com os atributos rua e numero. Imagine também a classe Cliente que tem os atributos nome e idade. Cliente possui Endereço, logo, nessa classe terá um atributo do tipo Endereço. 14
  • 15. • Associação 15 public class Endereco{ private String rua; private String numero; public void setRua(String rua){ this.rua = rua; } public String getRua(){ return this.rua; } public void setNumero(String numero){ this.numero = numero; } public String getNumero(){ return this.numero; } }
  • 16. 16 public class Cliente{ private String nome; private int idade; private Endereco endereco; public void setNome(String nome){ this.nome = nome; } public String getNome(){ return this.nome; } public void setIdade(int idade){ this.idade = idade; } public int getIdade(){ return this.idade; } public void setEndereco(Endereco endereco){ this.endereco = endereco; } public Endereco getEndereco(){ return this.endereco; } }
  • 17. • Associação 17 Endereco e = new Endereco(); e.setRua(“Rua das Flores”); e.setNumero(“123”); Cliente c = new Cliente(); c.setNome(“Joao”); c.setIdade(30); c.setEndereco(e); System.out.println(“Rua: ” + c.getEndereco().getRua() ); //Imprime: “Rua: Rua das Flores”
  • 19. • Polimorfismo – Polimorfismo é a capacidade de uma instância se portar de várias formas de acordo com sua referência. – Por exemplo, retome o projeto da aula anterior onde existia a classe Funcionario e Gerente. – Sabe-se que todo gerente é um funcionário, e isso é viabilizado através da herança. 19
  • 20. • Polimorfismo 20 Gerente g = new Gerente(“Joao”); g.salario = 1500; g.horasExtras = 10; Funcionario f = g; f.calcularSalarioTotal(); Vai ser executado o método da classe Funcionario ou Gerente?
  • 22. • Interfaces – Em OO, as Interfaces fornecem uma lista de métodos que as classes que a implementarem deverão ter. – Sua principal função é fornecer um mecanismo de desacoplar as classes (diminuir a dependência entre as classes) – Serve como um “contrato” que todas as classes devem cumprir quando assumem a implementação da Interface. 22
  • 23. • Interfaces – Exemplo: Organograma de Funcionários da Empresa XYZ. 23
  • 24. • Interfaces – No Sistema da Empresa XYZ os Diretores e Gerentes possuem acesso através de um login/senha. Os Operadores NÃO POSSUEM acesso ao sistema. – Como fazer? 24
  • 25. • Interfaces – Incompatibilidade: Operador não “autentica” no sistema. 25
  • 26. • Interfaces – Nesse caso, pode-se criar uma Interface “IAutenticavel” e nela declarar o método “autenticar(): boolean”. Todas as classes que tiverem acesso através de login e senha deverão implementar essa Interface e consequentemente possui o método “autenticar(): boolean” 26
  • 31. • Interfaces – Uma classe pode implementar várias Interfaces distintas – A classe pode ter outros métodos particulares além daqueles declarados pela Interface a qual implementa – Uma variável do tipo “Interface” pode receber uma instância de qualquer classe que a implementa. 31
  • 32. 32
  • 33. • Exercício 2: – Crie uma classe chamada ContaBancaria. Essa classe deverá ter os atributos numeroConta, saldo e historico. Faça os métodos: • Construtor para receber o numero e o saldo inicial da conta. • depositar: recebe um valor e acopla ao saldo • sacar: recebe um valor a ser sacado do saldo • consultarSaldo: Imprime o número da conta e o saldo atual. (Obs: cada consulta resulta em uma taxa de 0,25 no saldo) • aplicarReajuste: Atualiza o saldo em 0,02% • exibirHistorico: deverá exibir todas as ações já executadas por essa conta. 33