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