Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Preparatório EsFCEx
TÉCNICAS DE PROGRAMAÇÃO
Programação Orientada a Objetos
Prof. Ricardo Sant'Ana
 
Sumário
Introdução1
Conceitos2
Conclusão3
 
Introdução
Lista de Assuntos
 2. TÉCNICAS DE PROGRAMAÇÃO:
• a. Lógica aplicada: algoritmos, técnicas de construção de 
algoritmos, resolução de problemas. 
• b. Estrutura de dados: vetores, matrizes, cadeia de caracteres, 
listas lineares, pilhas, filas, árvores, grafos, pesquisa de dados, 
classificação de dados, estruturas e tipos abstratos de dados, 
recursividade, eficiência e complexidade. 
• c. Programação estruturada: refinamentos sucessivos, estruturas 
em blocos, estruturas de controle de fluxo, programação modular, 
rotinas, sub-rotinas, procedimentos e funções (Linguagem C). 
• d. Programação orientada a objetos: classes e objetos, 
polimorfismo, herança, interface, linguagens orientadas a objetos 
(Linguagens C++ e Java). 
• e. Linguagens de programação para a internet: JAVA, PHP e JSP. 
 
Introdução
Bibliografia
 COSTA, Daniel G. JAVA em Rede: Recursos Avançados. Rio de Janeiro: 
Brasport, 2008.
 DEITEL, H. M. JAVA Como Programar. 6. ed. [S.l.]: Editora Bookman, 2006.
 GAMMA, Erich et al. Padrões de Projeto: Soluções Reutilizáveis de Software 
Orientado a Objetos. [S.l.]: Bookman, 2005.
 GUIMARÃES, Ângelo de Moura; LAGES, Newton de Castilho. Algoritmos 
Estruturados de Dados. [S.l.]: Editora LTC, 1994.
 MORGAN, Michael. JAVA 2 para Programadores Profissionais. [S.l.]: Editora 
Ciência Moderna, 2001.
 MUTO, Claudio Adonai. PHP & MYSQL Guia Completo. [S.l.]: Brasport, 2004.
 TENENBAUM, Aaron M.; LANGSAM, Yedidyah; AUGENSTEIN, Moshe J. 
Estruturas de Dados Usando C. [S.l.]: Makron Books, 1995.
 VELOSO, Paulo et al. Estrutura de Dados. [S.l.]: Editora Campus, 1983.
 WIRTH, Niklaus. Algorítmos e Estruturados de Dados. [S.l.]: Editora PHB, 
1989.
 
Introdução
Foco (baseado em questões)
Primeira percepção:
 Programação Orientada a Objetos em Java
 Ponteiros em C
 Árvores e Pilhas (Estrutura da Dados)
Teoria e Exercícios
 Conhecimento prévio!
 
Conceitos
Mas o que é Java ?
 
Conceitos
Plataforma Java
 A classe MyProgram.java é compilada 
utilizando o javac e, o resultado, é executado 
numa máquina virtual java (JVM).
 
Conceitos
Funcionamento Geral
 Texto comum com extensão .java
• javac MyProgram.java → MyProgram.class
 Bytecodes
 Java Virtual Machine (JVM)
• java MyProgram
 
Conceitos
Funcionamento Geral
 Multiplataforma
 
Conceitos
Principais Estruturas
 Tipos da Dados Primitivos: 
• boolean, char, byte, int, long, float, double;
 Operadores:
• Aritméticos, Relacionais e Lógicos;
 Estruturas Condicionais:
• If, switch-case, ternário
 Estruturas de repetição
• For, while, do-while
 
Conceitos
Observações
 Ternário
• Observar que float nota=7.5; daria um erro, pois 
Java consideraria 7.5 como double.
public class Exemplo {
 public static void main(String[] args) {
 floatfloat nota = 7.5F; nota = 7.5F;
 char situacao = nota > 7 ? 'A' : 'R';
 System.out.println("Situacao: " + situacao);
 }
}
 
Conceitos
Observações
 Ternário
 Sintaxe do ternário: (condição) ?? resultado se V : : resultado se F
public class Exemplo {
 public static void main(String[] args) {
 floatfloat nota = 7.5F; nota = 7.5F;
 char situacao = nota > 7 ? 'A' : 'R';
 System.out.println("Situacao: " + situacao);
 }
}
 
Conceitos
Observações
 Ternário
 Resultado:
Situacao: A
public class Exemplo {
 public static void main(String[] args) {
 floatfloat nota = 7.5F; nota = 7.5F;
 char situacao = nota > 7 ? 'A' : 'R';
 System.out.println("Situacao: " + situacao);
 }
}
 
Conceitos
Break no switch-case
public class Exemplo {
 public static void main(String[] args) {
 int resposta = 2;
 switch (resposta) {
 case 1:
 System.out.println("Informatica");
 break;
 case 2:
 System.out.println("Enfermagem");
 break;
 case 3:
 System.out.println("Psicologia");
 break;
 case 4:
 System.out.println("Pedagogia");
 break;
 default:
 System.out.println("Nao encontrado");
 }
 }
}
 
Conceitos
Break no switch-case
Enfermagem
public class Exemplo {
 public static void main(String[] args) {
 int resposta = 2;
 switch (resposta) {
 case 1:
 System.out.println("Informatica");
 break;
 case 2:
 System.out.println("Enfermagem");
 break;
 case 3:
 System.out.println("Psicologia");
 break;
 case 4:
 System.out.println("Pedagogia");
 break;
 default:
 System.out.println("Nao encontrado");
 }
 }
}
 
Conceitos
Break no switch-case
Enfermagem
Psicologia
Pedagogia
Nao encontrado
public class Exemplo {
 public static void main(String[] args) {
 int resposta = 2;
 switch (resposta) {
 case 1:
 System.out.println("Informatica");
 case 2:
 System.out.println("Enfermagem");
 case 3:
 System.out.println("Psicologia");
 case 4:
 System.out.println("Pedagogia");
 default:
 System.out.println("Nao encontrado");
 }
 }
}
 
Conceitos
Break no switch-case
 
Enfermagem
Psicologia
Nao encontrado
public class Exemplo {
 public static void main(String[] args) {
 int resposta = 2;
 switch (resposta) {
 case 1:
 System.out.println("Informatica");
 case 4:
 System.out.println("Pedagogia");
 case 2:
 System.out.println("Enfermagem");
 case 3:
 System.out.println("Psicologia");
 default:
 System.out.println("Nao encontrado");
 }
 }
}
 
Conceitos
Utilização básica laço for
Resultado
0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 -
public class Exemplo {
 public static void main(String[] args) {
 for (int i = 0; i < 10; i++) {
 System.out.print(i + " - ");
 }
 }
}
 
Conceitos
Utilização do continue
Resultado
0 - 1 - 2 - 3 - 4 - 5 - 6 - 8 - 9 - 
 O sete não aparece !!
public class Exemplo {
 public static void main(String[] args) {
 for (int i = 0; i < 10; i++) {
 if (i==7) continue; 
 System.out.print(i + " - ");
 }
 }
}
 
Conceitos
Utilização do break
Resultado
0 - 1 - 2 - 3 - 4 - 5 - 6 - 
 A partir do sete não aparece mais nada !!
public class Exemplo {
 public static void main(String[] args) {
 for (int i = 0; i < 10; i++) {
 if (i==7) break; 
 System.out.print(i + " - ");
 }
 }
}
 
Conceitos
Utilização do laço for
Resultado
0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10
public class Exemplo {
 public static void main(String[] args) {
 int i=0;
 for (i = 0; i < 10; i++) {
 System.out.print(i + " - ");
 }
 System.out.println(i);
 }
}
 
Conceitos
Utilização do laço for
Resultado
Daria erro, pois a variável i foi declarada dentro do escopo do laço e, 
portanto, não existe for do laço !
public class Exemplo {
 public static void main(String[] args) {
 
 for (int i=0; i < 10; i++) {
 System.out.print(i + " - ");
 }
 System.out.println(i);
 }
}
 
Conceitos
POO – parte 1
 Classes e Objetos
 Atributos e Métodos
 Construtor e Destrutor
 
Conceitos
Classes e Objetos
 Dada uma entidade qualquer que desejamos modelar, a classe 
é o projeto dessa entidade. Um objeto dessa classe representa 
a entidade em si.
 Exemplo1:
 Exemplo de um trecho de código que cria um objeto da classe 
Solicitacao:
public class Solicitacao {
 String nome;
 long cpf;
 int protocolo;
}
Solicitacao W = new Solicitacao();
 
Conceitos
Atributos e Métodos
 Atributos: 
• modelam o estado que a classe pode ter. São os atributos 
que diferenciam um objeto de outro da mesma classe.
 Métodos: 
• modelam as ações que os objetos poderão executar. Todos 
os objetos da mesma classepossuem os mesmos métodos. 
 Atributos e Métodos são os MEMBROS da classe.
 
Conceitos
Exemplo
 A classe Carro abaixo definida possui os atributos modelo, 
marca, cor, ano, proprietario e autorizados; possui o método 
imprime();
class Carro {
 String modelo;
 String marca;
 char cor;
 int ano;
 String proprietario;
 boolean autorizado;
 void imprime() {
 System.out.println("Dados do veículo");
 System.out.println("Marca: " + marca + "\tModelo:" + modelo);
 System.out.println("Dono: " + proprietario + "\tAno: " + ano);
 }
}
 
Conceitos
Exemplo
public class Executavel {
 public static void main(String[] args) {
 Carro A = new Carro();
 A.modelo="siena";
 A.autorizado=false;
 A.cor='B';
 A.marca="fiat";
 A.ano=2009;
 A.proprietario="Elias";
 Carro B = new Carro();
 B.modelo="palio";
 B.autorizado=true;
 B.cor='N';
 B.marca="fiat";
 B.ano=2012;
 B.proprietario="Rafael";
 A.imprime();
 B.imprime();
 }
}
 
Conceitos
Exemplo
Dados do veículo
Marca: fiat Modelo:siena
Dono: Elias Ano: 2009
Dados do veículo
Marca: fiat Modelo:palio
Dono: Rafael Ano: 2012
 
Conceitos
Construtor
 O construtor é um “método” da classe que é 
chamado sempre que instanciamos um objeto 
desta;
 O construtor não tem retorno (nem void) ;
 O construtor sempre tem o mesmo nome da 
classe; 
 Se não for definido pelo programador, é 
adicionado automaticamente pelo compilador 
Java.
 O operador new exige , como parâmetro, um 
construtor.
 
Conceitos
Construtor
 Em Java, construtor é método ?
• Para a JVM é um método estático especial, cujo nome 
interno é "<init>", e é tratado de modo um pouco diferente 
dos métodos normais. 
• O construtor não é herdado, mesmo sendo public. O 
construtor não pode usar alguns modificadores que se 
aplicam a métodos - como final. O construtor não possui 
retorno.
• Constructor declarations are not members. 
The body of a class declares members (fields and methods 
and nested classes and interfaces), instance and static 
initializers, and constructors 
 Em Java, construtor não é método
 
Conceitos
Exemplo
class Ponto2D {
 double x;
 double y;
 String label;
 Ponto2D(){
 x=0;y=0;label="nenhum";
 }
 void imprime(){
 System.out.println("x= "+x+"\t y="+y+"\t"+label);
 }
}
 
Conceitos
Exemplo (continuação)
public class ExPonto01 {
 public static void main(String[] args) {
 Ponto2D Q = new Ponto2D();
 Q.x = 10;
 Q.y = 10;
 Q.label = "marco01";
 Q.imprime(); 
 P.imprime();
 }
}
Chamando 
o construtor
 
Conceitos
Destrutor
 Em outras linguagens de programação, o destrutor é 
um método utilizado para liberar o espaço de 
memória do objeto;
 O Java não possui destrutor. 
 O Java possui o Garbage Collector: 
 Todos os objetos que perdem todas as suas 
referências num programa são CANDIDATOS a 
serem descartados pelo Garbage Collector
 O método finalize() do Java torna o objeto candidato 
a ser descartado pelo Garbage Collector.
 
Conceitos
POO – parte 2
 Visibilidade
 Métodos Acessores e Modificadores
• Encapsulamento
 Sobrecarga de Métodos
 
Conceitos
Visibilidade
 A visibilidade permite que o programador defina 
quais atributos e métodos poderão ser acessados 
por outras classes.
Tipos de Visibilidade
• private: somente a classe atual pode acessar
• public: todas as outras classes podem acessar
• protected: somente classes do mesmo pacote ou 
classes filhas terão acesso.
• default: somente as classes do mesmo pacote 
tem acesso.
 
Conceitos
Exemplo
package app.sistema;
public class Ponto2Dv {
 private double x;
 public double y;
 String label;
 public Ponto2Dv(double x, double y, String label) {
 this.x = x;
 this.y = y;
 this.label = label;
 }
}
 
Conceitos
Exemplo(cont.)
package app.sistema;
public class ExPonto2Dv {
public static void main(String[] args) {
 Ponto2Dv Q = new Ponto2Dv(1,1,”ponto inicial”);
 Q.x=0; // erro
 Q.y=1; // ok
 Q.label=”teste”; // ok ! Mesmo pacote!
}
}
 
Conceitos
Métodos Acessores e Modificadores
 Método Acessor: método, geralmente 
público, que dá acesso de leitura a um 
atributo da classe.
 Método Modificador (Mutante): 
método, geralmente público, que dá 
acesso de escrita a um atributo da classe.
 
Conceitos
Exemplo
public class Aluno {
 private String nome;
 private int matricula;
 public int getMatricula() {
 return matricula;
 }
 public void setMatricula(int matricula) {
 this.matricula = matricula;
 }
 public String getNome() {
 return nome;
 }
 public void setNome(String nome) {
 this.nome = nome;
 }
 
}
 
Conceitos
Exemplo
Modificadores:
setMatricula
setNome
public class ExemploAluno {
 public static void main(String[] args) {
 Aluno Q = new Aluno();
 Q.setMatricula(700);
 Q.setNome("Roberto Caio");
 System.out.println(Q.getMatricula()+" - "+Q.getNome());
 }
}
 
Conceitos
Exemplo
Acessores:
getMatricula
getNome
public class ExemploAluno {
 public static void main(String[] args) {
 Aluno Q = new Aluno();
 Q.setMatricula(700);
 Q.setNome("Roberto Caio");
 System.out.println(Q.getMatricula()+" - "+Q.getNome());
 }
}
 
Conceitos
Métodos Acessores e Modificadores
 Método Acessor:também são conhecidos 
como getters
 Método Modificador (Mutante): 
também são conhecidos como setters.
 
Conceitos
Encapsulamento: 
 encapsular significa “esconder/proteger a 
implementação” do usuário da classe.
 na prática, isso significa, principalmente, 
deixar os atributos (dados) private/protected.
Atributos
Encapsulados
Método
Modificador
Método
Acessor
 
Conceitos
Sobrecarga de Métodos: 
 Sobrecarga de métodos permite que dentro 
de uma mesma classe, métodos que tenham 
o mesmo nome mas que tenham diferentes 
parâmetros.
• em outras palavras, dizemos que podemos criar 
métodos com o mesmo nome. 
• da mesma forma que existe sobrecarga de 
métodos, existem a sobrecarga de construtor.
 método sobrecarregado 
• overload
 
Conceitos
Exemplo: 
 Dois métodos imprime adicionados na classe 
Auno:
 public void imprime(){
 System.out.println(matricula+" - "+nome);
 }
 public void imprime(int n){
 for(int i=0; i<n; i++){
 this.imprime();
 }
 
 
Conceitos
POO – parte 3
 Herança
• Sobrescrita
 Interfaces
 
Conceitos
Herança: 
 mecanismo da POO que permite que uma 
classe seja definida a partir de uma outra pré-
existente.
 
 A nova classe (classe filha) herda todos os 
atributos e métodos da classe mãe (progenitora).
 Observação: devemos considerar a visibilidade 
Herança Simples x Herança Composta
 Sintaxe (Java):
 class ClasseFilha extends ClassePai
 
Conceitos
Sobrescrita (override)
 Na classe filha é possível re-escrever um 
método existente na classe pai
• Mesma assinatura da classe Pai
• A visibilidade pode ser MENOS restritiva
– private (mais restritiva)
– default
– protected
– public (menos restritiva)
 
Conceitos
Exemplo
public class Ponto2D {
 protected double x;
 protected double y;
 protected String label;
 Ponto2D(){
 x=0;y=0;label="nenhum";
 }
 void imprime(){
 System.out.println("x= "+x+"\t y="+y+"\t"+label);
 }
}
 
Conceitos
Exemplo(cont.)
public class Ponto3D extends Ponto2D {
 protected double z;
 Ponto3D() {
 super();
 z = 0;
 }
 public void imprime() {
 super.imprime();
 System.out.println("z=" + z);
 }
}
 
Conceitos
Exemplo(cont.)
public class Ponto3D extends Ponto2D {
 protected double z;
 Ponto3D() {
 super();
 z = 0;
 }
 public void imprime() {
 super.imprime();
 System.out.println("z=" + z);
 }
}
A classe herda os atributos 
x, y e label da classe pai 
O método imprime() da classe
Ponto3D sobreescreveo método
imprime da classe Ponto2D.
 
Conceitos
Exemplo(cont.)
public class Ponto3D extends Ponto2D {
 protected double z;
 Ponto3D() {
 super();
 z = 0;
 }
 public void imprime() {
 super.imprime();
 System.out.println("z=" + z);
 }
}
O contrutor tem visibilidade
default. Portanto, onde
poderemos instanciar objetos 
da classe Ponto3D ?
 
Conceitos
Aspectos particulares da Herança no 
Java:
 Toda classe é filha da classe Object
 Java somente permite Herança Simples
 Utilização de Herança:
• Relacionamento “É UM”
PESSOA
ALUNO
É UM (A)
 
Conceitos
Diagrama de Classes

 
Conceitos
Interfaces
 As interfaces em Java são similares às classes
 Possuem hierarquia de forma similar às classes
• É possível utilizar extends entre interfaces
 As interfaces definem comportamentos
• Na forma de uma lista de métodos públicos
 Definem o que uma classe deve implementar e não 
como essa classe irá implementar.
 Se uma classe implementa uma interface, ela 
deverá implementar todos os 
métodos/comportamentos desta interface. 
 
Conceitos
Exemplo:
 Acima temos um aspecto geral de como é 
definida de uma interface
Observe que a sintaxe utilizada é similar ao da 
classe – mas ao invés de utilizar class utilizamos 
interface.
Os métodos da interface não possuem 
implementação 
public interface Imprimivel{
 public void imprime();
 public Map getConfiguracoesImpressora();
 public void setConfiguracao(String chave, String valor);
}
 
Conceitos
Exemplo (cont.)
public class Aluno implements Imprimivel{
 private String nome;
 private int matricula;
 public void imprime(){
 System.out.println(matricula+" - "+nome);
 } 
 public Map getConfiguracoesImpressora() {
 // codigo
 return null;
 }
 public void setConfiguracao(String chave, String valor) {
 // codigo
 }
}
 
Conceitos
Classes Abstratas
 Não são instanciadas.
 Podem definir métodos sem implementação
• Esses métodos também utilizam o modificador 
abstract
• Neste caso, se uma classe (concreta) extender 
(extends) essa classe abstrata, ela DEVERÁ 
implementar esses métodos.
 
Conceitos
Exemplo de classe Abstrata:
public abstract class Aluno {
 private String nome;
 private int matricula;
 public Aluno(String nome, int matricula) {
 this.nome = nome;
 this.matricula = matricula;
 }
 public abstract void imprime();
 }
}
 
Conceitos
Outros conceitos
 Atributos e Métodos estáticos
 Classe Final
 Wrappers e AutoBoxing (*)
 Tratamento de Exceções (*)
 
Conceitos
POO – Parte 4
 Polimorfismo
 
Conceitos
Polimorfismo
 Pilares da Programação Orientada a Objetos:
• Encapsulamento
• Herança
• Polimorfismo
 
Conceitos
Polimorfismo
 É o mecanismos da POO que permite que 
um serviço apresente diversos 
comportamentos.
 Tipos de Polimorfismo em Java:
• Polimorfismo de Inclusão
• Sobrecarga
• Sobreposição ou sobrescrita
 
Conceitos
A sobrecarga é a possibilidade de 
implementação de métodos que possuam 
a mesma assinatura de método mas que 
diferem nos parâmetros passados para o 
método.
 Esses métodos podem estar em classe pai e 
filha.
A sobreposição é a possibilidade de re-
escrevermos um método de uma ancestral 
utilizando a mesma assinatura.
 
Conceitos
Polimorfismo de Inclusão
 O polimorfismo de inclusão permite a criação 
de variáveis polimórficas, isto é, variáveis (ou 
objetos) de determinada classe que 
apresentam comportamentos distintos de 
acordo com o objeto que recebe.
 
Conceitos
 Exemplo
package app.polimorfismo;
 public class Pessoa {
 public String nome;
 public void imprime() {
 System.out.println("Nome:" + nome);
 }
}
package app.polimorfismo;
public class Aluno extends Pessoa {
 public int matricula;
 public void imprime() {
 super.imprime();
 System.out.println("Matricula:" + matricula);
 }
}
 
Conceitos
Exemplo (cont.)
package app.polimorfismo;
public class Ex {
 public static void main(String[] args) {
 Pessoa A = new Pessoa();
 A.nome = "Ricardo";
 Pessoa B = new Pessoa();
 B.nome = "Ana";
 Aluno C = new Aluno();
 C.nome = "Waleska";
 C.matricula = 123;
 Aluno D = new Aluno();
 D.nome = "Luiz";
 D.matricula = 112;
 Pessoa E = new Pessoa();
 E.nome = "Leandro";
 
Conceitos 
Exemplo(cont.)
 
public class Ex {
 public static void main(String[] args) {
 .
 .
 .
 Pessoa[] vetor = { A, B, C, D, E };
 for (int i = 0; i < vetor.length; i++) {
 vetor[i].imprime();
 }
 }
}
 
Conceitos 
Exemplo(cont.)
 
Qual o resultado ?
Nome:Ricardo
Nome:Ana
Nome:Waleska
Matricula:123
Nome:Luiz
Matricula:112
Nome:Leandro
 
Conceitos
Exemplo (cont.)
package app.polimorfismo;
public class Ex {
 public static void main(String[] args) {
 Pessoa A = new Pessoa();
 A.nome = "Ricardo";
 Pessoa B = new Pessoa();
 B.nome = "Ana";
 Aluno C = new Aluno();
 C.nome = "Waleska";
 C.matricula = 123;
 Aluno D = new Aluno();
 D.nome = "Luiz";
 D.matricula = 112;
 Pessoa E = new Aluno();
 E.nome = "Leandro";
E agora ??
 
Conceitos 
Exemplo(cont.)
 
Qual o resultado ?
Nome:Ricardo
Nome:Ana
Nome:Waleska
Matricula:123
Nome:Luiz
Matricula:112
Nome:Leandro
 Matricula:0
 
Conceitos
Desafio Final
public class A {
 public int getValor() {
 return 1;
 }
}
public class B extends A {
 public int getValor() {
 return 2;
 }
}
 
Conceitos
Desafio Final
public class Codigo {
 public static void main(String[] args) {
 A p1 = new A();
 B p2 = new B();
 A p3 = new B();
 System.out.println(p1.getValor());
 System.out.println(p2.getValor());
 System.out.println(p3.getValor());
 }
}
 
Conceitos
Resultado do Desafio Final
1
2
2
 
Conceitos
POO
 Atributos Estáticos
 Métodos Estáticos
 Observação: não estava claro na ementa que esse 
assunto seria abordado – no entanto, para resolver a 
questão de 2010, tal conhecimento foi necessário.
 Lembram do que comentei sobre Deitel ?
 
Conceitos
Atributos Estáticos ou Atributos de Classe
 São atributos válidos para todos objetos da classeda classe, 
ou seja, se você trocar o valor de um atributo de 
classe, você estará trocando o valor do atributo de 
TODOS os objetos daquela classe.
• É como se houvesse um único atributo para a 
classe toda.
 Atributos de classe DEVEM ser acessados utilizando 
o nome da classe seguido pelo atributo 
• nomeDaClasse.nomeDoAtributo
• Mas, como veremos adiante, isso não é 
obrigatório!
 
Conceitos
Atributos Estáticos
 Isso torna o código mais claro do que se 
utilizássemos o:
• nomeDaInstância.nomeDoAtributo.
 O espaço de memória dos atributos estáticos 
é compartilhado entre os objetos daquela 
classe.
• Atributos estáticos somente podem ser acessados 
internamente à classe – por métodos estáticos. 
 
Conceitos
Atributos Estáticos}
public class Aluno {
 public String nome;
 public static String instituicao;
}
public class ExAluno {
 public static void main(String[] args) {
 Aluno P = new Aluno();
 P.nome = "Fábio";
 P.instituicao = "CDS";
 System.out.println("Nome: " + P.nome + "\tInstituição: " + P.instituicao);
 Aluno Q = new Aluno();
 Q.nome = "Aline";
 Q.instituicao = "EME";
 System.out.println("Nome: " + P.nome + "\tInstituição: " + P.instituicao);
 System.out.println("Nome: " + Q.nome + "\tInstituição: " + Q.instituicao);
 }
}
 
Conceitos
Atributos Estáticos
 Saída:
Nome: Fábio Instituição: CDS
Nome: FábioNome: Fábio Instituição: EMEInstituição: EME
Nome: Aline Instituição: EME
 Para evitar confusão, portanto, utilizamos a notação com 
o nome da classe (e não da instância)
• Observe o código a seguir que produz o MESMO 
resultado.
 
Conceitos
Atributos Estáticos
publicclass ExAluno2 {
 public static void main(String[] args) {
 Aluno P = new Aluno();
 P.nome="Fábio";
 Aluno.instituicao="CDS";
 System.out.println("Nome:"+P.nome+"\tInstituição: 
"+Aluno.instituicao);
 Aluno Q = new Aluno();
 Q.nome="Aline";
 Aluno.instituicao="EME";
 System.out.println("Nome:"+P.nome+"\tInstituição: 
"+Aluno.instituicao);
 System.out.println("Nome:"+Q.nome+"\tInstituição: 
"+Aluno.instituicao);
 }
}
 
Conceitos
Atributos Estáticos
 Saída é a mesma !!:
Nome: Fábio Instituição: CDS
Nome: Fábio Instituição: EME
Nome: Aline Instituição: EME
 Isso significa que você deve conhecer as duas sintaxes → 
do ponto de vista de programação, a segunda é ideal. Do 
ponto de vista de prova, você deve conhecer o resultado 
de ambas.
 
Conceitos
Métodos Estáticos
 Os métodos de classe devem ser acessados 
utilizando o nome da classe – de forma similar ao 
que foi visto anteriormente com os atributos 
estáticos.
 Não é necessário instanciar um objeto da classe para 
acessar o método estático da mesma.
 Métodos de classe somente podem acessar 
métodos/atributos estáticos daquela classe.
• Exemplo: Classe Math do Java.
 Tipicamente utilizados quando a classe não possui 
estado (portanto não possui atributos e, assim, 
somente tem métodos). Ex: classes utilitárias. 
 
Conceitos
Métodos Estáticos
import java.util.LinkedList;
import java.util.Random;
public class Utils {
 public static String Anagrama(String s) {
 LinkedList P = new LinkedList();
 for (int i = 0; i < s.length(); i++)
 P.add(new Character(s.charAt(i)));
 Random Q = new Random();
 String res = "";
 while (P.size() > 0) {
 res = res + P.remove(Q.nextInt(P.size()));
 }
 return res;
 }
}
 
Conceitos
Métodos Estáticos
 Exemplo de como utilizar o método anagrama 
da classe do slide anterior:
 Exemplo do uso de métodos static. Observe que não é necessário criar 
um objeto da classe Utils para utilizar o método Anagrama.
 Métodos estáticos são interessantes quando desejamos criar uma 
biblioteca de funções ou utilidades (classe utilitária)
public class ExUtils {
 public static void main(String[] args) {
 System.out.println(Utils.Anagrama("ricardo"));
 }
}
 
Conceitos
Métodos Estáticos
 Da mesma forma que os atributos estáticos, 
métodos estáticos podem ser acessados por 
meio das instâncias:
public class Ex2 {
 public static void main(String[] args) {
 Utils W = new Utils();
 System.out.println(W.Anagrama("ricardo"));
 }
}
 
Conceitos
Métodos Estáticos
 Observação Importante:
• Métodos estáticos podem chamar outros métodos 
estáticos e/ou atributos estáticos.
• Não é possível fazer um acesso a instância de 
dentro de um método estático
– Ou seja, não é possível utilizar o “this” dentro de um 
método estático !
 
Conclusão
Chegamos aqui ?
 
FIM
CIDADE IDIOMAS & CURSOS 
PREPARATÓRIOS
CLN 113 - Bloco C - Sala 207 a 210 
Asa Norte - Brasília - DF - CEP 70.763-503
Tel: (61) 3340-0433 / 9975-4464 / 8175-4509
E-mail: cursocidade@iic.pro.br
Site: www.iic.pro.br
Skype: luizcidade
Prof. Ricardo Sant'Ana
	PowerPoint Template
	Contents
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34
	Slide 35
	Slide 36
	Slide 37
	Slide 38
	Slide 39
	Slide 40
	Slide 41
	Slide 42
	Slide 43
	Slide 44
	Slide 45
	Slide 46
	Slide 47
	Slide 48
	Slide 49
	Slide 50
	Slide 51
	Slide 52
	Slide 53
	Slide 54
	Slide 55
	Slide 56
	Slide 57
	Slide 58
	Slide 59
	Slide 60
	Slide 61
	Slide 62
	Slide 63
	Slide 64
	Slide 65
	Slide 66
	Slide 67
	Slide 68
	Slide 69
	Slide 70
	Slide 71
	Slide 72
	Slide 73
	Slide 74
	Slide 75
	Slide 76
	Slide 77
	Slide 78
	Slide 79
	Slide 80
	Slide 81
	Slide 82
	Slide 83
	Slide 84
	Slide 85
	Slide 86
	Slide 87
	Slide 88
	Slide 89

Mais conteúdos dessa disciplina