You are on page 1of 89

Preparatrio EsFCEx

TCNICAS DE PROGRAMAO
Programao Orientada a Objetos
Prof. Ricardo Sant'Ana
Sumrio

1 Introduo

2 Conceitos

3 Concluso
Introduo
Lista de Assuntos
2. TCNICAS DE PROGRAMAO:
a. Lgica aplicada: algoritmos, tcnicas de construo de
algoritmos, resoluo de problemas.
b. Estrutura de dados: vetores, matrizes, cadeia de caracteres,
listas lineares, pilhas, filas, rvores, grafos, pesquisa de dados,
classificao de dados, estruturas e tipos abstratos de dados,
recursividade, eficincia e complexidade.
c. Programao estruturada: refinamentos sucessivos, estruturas
em blocos, estruturas de controle de fluxo, programao modular,
rotinas, sub-rotinas, procedimentos e funes (Linguagem C).
d. Programao orientada a objetos: classes e objetos,
polimorfismo, herana, interface, linguagens orientadas a objetos
(Linguagens C++ e Java).
e. Linguagens de programao para a internet: JAVA, PHP e JSP.
Introduo
Bibliografia
COSTA, Daniel G. JAVA em Rede: Recursos Avanados. Rio de Janeiro:
Brasport, 2008.
DEITEL, H. M. JAVA Como Programar. 6. ed. [S.l.]: Editora Bookman, 2006.
GAMMA, Erich et al. Padres de Projeto: Solues Reutilizveis de Software
Orientado a Objetos. [S.l.]: Bookman, 2005.
GUIMARES, 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
Cincia 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. Algortmos e Estruturados de Dados. [S.l.]: Editora PHB,
1989.
Introduo
Foco (baseado em questes)
Primeira percepo:
Programao Orientada a Objetos em Java
Ponteiros em C
rvores e Pilhas (Estrutura da Dados)

Teoria e Exerccios
Conhecimento prvio!
Conceitos
Mas o que Java ?
Conceitos
Plataforma Java
A classe MyProgram.java compilada
utilizando o javac e, o resultado, executado
numa mquina virtual java (JVM).
Conceitos
Funcionamento Geral
Texto comum com extenso .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:
Aritmticos, Relacionais e Lgicos;
Estruturas Condicionais:
If, switch-case, ternrio
Estruturas de repetio
For, while, do-while
Conceitos
Observaes
Ternrio

public class Exemplo {


public static void main(String[] args) {
float nota = 7.5F;
char situacao = nota > 7 ? 'A' : 'R';
System.out.println("Situacao: " + situacao);
}
}

Observar que float nota=7.5; daria um erro, pois


Java consideraria 7.5 como double.
Conceitos
Observaes
Ternrio
public class Exemplo {
public static void main(String[] args) {
float nota = 7.5F;
char situacao = nota > 7 ? 'A' : 'R';
System.out.println("Situacao: " + situacao);
}
}

Sintaxe do ternrio: (condio) ? resultado se V : resultado se F


Conceitos
Observaes
Ternrio
public class Exemplo {
public static void main(String[] args) {
float nota = 7.5F;
char situacao = nota > 7 ? 'A' : 'R';
System.out.println("Situacao: " + situacao);
}
}

Resultado:
Situacao: A
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
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");
}
}
}

Enfermagem
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");
case 2:
System.out.println("Enfermagem");
case 3:
System.out.println("Psicologia");
case 4:
System.out.println("Pedagogia");
default:
System.out.println("Nao encontrado");
}
}
}

Enfermagem
Psicologia
Pedagogia
Nao encontrado
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");
case 4:
System.out.println("Pedagogia");
case 2:
System.out.println("Enfermagem");
case 3:
System.out.println("Psicologia");
default:
System.out.println("Nao encontrado");
}
}
}

Enfermagem
Psicologia
Nao encontrado
Conceitos
Utilizao bsica lao for
public class Exemplo {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.print(i + " - ");
}
}
}

Resultado
0-1-2-3-4-5-6-7-8-9-
Conceitos
Utilizao do continue
public class Exemplo {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i==7) continue;
System.out.print(i + " - ");
}
}
}

Resultado
0-1-2-3-4-5-6-8-9-
O sete no aparece !!
Conceitos
Utilizao do break
public class Exemplo {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i==7) break;
System.out.print(i + " - ");
}
}
}

Resultado
0-1-2-3-4-5-6-
A partir do sete no aparece mais nada !!
Conceitos
Utilizao do lao for
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);
}
}

Resultado
0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10
Conceitos
Utilizao do lao for
public class Exemplo {
public static void main(String[] args) {

for (int i=0; i < 10; i++) {


System.out.print(i + " - ");
}
System.out.println(i);
}
}

Resultado
Daria erro, pois a varivel i foi declarada dentro do escopo do lao e,
portanto, no existe for do lao !
Conceitos
POO parte 1
Classes e Objetos
Atributos e Mtodos
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:

public class Solicitacao {


String nome;
long cpf;
int protocolo;
}
Exemplo de um trecho de cdigo que cria um objeto da classe
Solicitacao:
Solicitacao W = new Solicitacao();
Conceitos
Atributos e Mtodos
Atributos:
modelam o estado que a classe pode ter. So os atributos
que diferenciam um objeto de outro da mesma classe.

Mtodos:
modelam as aes que os objetos podero executar. Todos
os objetos da mesma classe possuem os mesmos mtodos.

Atributos e Mtodos so os MEMBROS da classe.


Conceitos
Exemplo
A classe Carro abaixo definida possui os atributos modelo,
marca, cor, ano, proprietario e autorizados; possui o mtodo
imprime();
class Carro {
String modelo;
String marca;
char cor;
int ano;
String proprietario;
boolean autorizado;

void imprime() {
System.out.println("Dados do veculo");
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 veculo
Marca: fiat Modelo:siena
Dono: Elias Ano: 2009
Dados do veculo
Marca: fiat Modelo:palio
Dono: Rafael Ano: 2012
Conceitos
Construtor
O construtor um mtodo da classe que
chamado sempre que instanciamos um objeto
desta;
O construtor no tem retorno (nem void) ;
O construtor sempre tem o mesmo nome da
classe;
Se no for definido pelo programador,
adicionado automaticamente pelo compilador
Java.
O operador new exige , como parmetro, um
construtor.
Conceitos
Construtor
Em Java, construtor mtodo ?
Para a JVM um mtodo esttico especial, cujo nome
interno "<init>", e tratado de modo um pouco diferente
dos mtodos normais.
O construtor no herdado, mesmo sendo public. O
construtor no pode usar alguns modificadores que se
aplicam a mtodos - como final. O construtor no 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 no mtodo
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 (continuao)
public class ExPonto01 {
public static void main(String[] args) {
Ponto2D Q = new Ponto2D();
Q.x = 10;
Q.y = 10;
Q.label = "marco01";
Q.imprime(); Chamando
o construtor
P.imprime();
}
}
Conceitos
Destrutor
Em outras linguagens de programao, o destrutor
um mtodo utilizado para liberar o espao de
memria do objeto;
O Java no possui destrutor.
O Java possui o Garbage Collector:
Todos os objetos que perdem todas as suas
referncias num programa so CANDIDATOS a
serem descartados pelo Garbage Collector
O mtodo finalize() do Java torna o objeto candidato
a ser descartado pelo Garbage Collector.
Conceitos
POO parte 2
Visibilidade
Mtodos Acessores e Modificadores
Encapsulamento
Sobrecarga de Mtodos
Conceitos
Visibilidade
A visibilidade permite que o programador defina
quais atributos e mtodos podero 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 tero 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
Mtodos Acessores e Modificadores
Mtodo Acessor: mtodo, geralmente
pblico, que d acesso de leitura a um
atributo da classe.
Mtodo Modificador (Mutante):
mtodo, geralmente pblico, 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
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());

} Modificadores:
setMatricula
setNome
Conceitos
Exemplo
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());

}
Acessores:
getMatricula
getNome
Conceitos
Mtodos Acessores e Modificadores
Mtodo Acessor:tambm so conhecidos
como getters
Mtodo Modificador (Mutante):
tambm so conhecidos como setters.
Conceitos
Encapsulamento:
encapsular significa esconder/proteger a
implementao do usurio da classe.
na prtica, isso significa, principalmente,
deixar os atributos (dados) private/protected.

Mtodo Atributos
Modificador Encapsulados

Mtodo
Acessor
Conceitos
Sobrecarga de Mtodos:
Sobrecarga de mtodos permite que dentro
de uma mesma classe, mtodos que tenham
o mesmo nome mas que tenham diferentes
parmetros.
em outras palavras, dizemos que podemos criar
mtodos com o mesmo nome.
da mesma forma que existe sobrecarga de
mtodos, existem a sobrecarga de construtor.
mtodo sobrecarregado
overload
Conceitos
Exemplo:
Dois mtodos 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
Herana
Sobrescrita
Interfaces
Conceitos
Herana:
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 mtodos da classe me (progenitora).
Observao: devemos considerar a visibilidade

Herana Simples x Herana Composta


Sintaxe (Java):
class ClasseFilha extends ClassePai
Conceitos
Sobrescrita (override)
Na classe filha possvel re-escrever um
mtodo 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 {
A classe herda os atributos
protected double z; x, y e label da classe pai

Ponto3D() { O mtodo imprime() da classe


super(); Ponto3D sobreescreve o mtodo
z = 0;
} imprime da classe Ponto2D.

public void imprime() {


super.imprime();
System.out.println("z=" + z);
}
}
Conceitos
Exemplo(cont.)
public class Ponto3D extends Ponto2D {
protected double z; O contrutor tem visibilidade
default. Portanto, onde
Ponto3D() { poderemos instanciar objetos
super(); da classe Ponto3D ?
z = 0;
}

public void imprime() {


super.imprime();
System.out.println("z=" + z);
}
}
Conceitos
Aspectos particulares da Herana no
Java:
Toda classe filha da classe Object
Java somente permite Herana Simples
Utilizao de Herana:
Relacionamento UM
PESSOA

UM (A)

ALUNO
Conceitos
Diagrama de Classes

Conceitos
Interfaces
As interfaces em Java so similares s classes
Possuem hierarquia de forma similar s classes
possvel utilizar extends entre interfaces
As interfaces definem comportamentos
Na forma de uma lista de mtodos pblicos
Definem o que uma classe deve implementar e no
como essa classe ir implementar.
Se uma classe implementa uma interface, ela
dever implementar todos os
mtodos/comportamentos desta interface.
Conceitos
Exemplo:
public interface Imprimivel{
public void imprime();
public Map getConfiguracoesImpressora();
public void setConfiguracao(String chave, String valor);
}

Acima temos um aspecto geral de como


definida de uma interface
Observe que a sintaxe utilizada similar ao da
classe mas ao invs de utilizar class utilizamos
interface.
Os mtodos da interface no possuem
implementao
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
No so instanciadas.
Podem definir mtodos sem implementao
Esses mtodos tambm utilizam o modificador
abstract
Neste caso, se uma classe (concreta) extender
(extends) essa classe abstrata, ela DEVER
implementar esses mtodos.
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 Mtodos estticos
Classe Final
Wrappers e AutoBoxing (*)
Tratamento de Excees (*)
Conceitos
POO Parte 4
Polimorfismo
Conceitos
Polimorfismo
Pilares da Programao Orientada a Objetos:
Encapsulamento
Herana
Polimorfismo
Conceitos
Polimorfismo
o mecanismos da POO que permite que
um servio apresente diversos
comportamentos.

Tipos de Polimorfismo em Java:


Polimorfismo de Incluso
Sobrecarga
Sobreposio ou sobrescrita
Conceitos
A sobrecarga a possibilidade de
implementao de mtodos que possuam
a mesma assinatura de mtodo mas que
diferem nos parmetros passados para o
mtodo.
Esses mtodos podem estar em classe pai e
filha.

A sobreposio a possibilidade de re-


escrevermos um mtodo de uma ancestral
utilizando a mesma assinatura.
Conceitos
Polimorfismo de Incluso
O polimorfismo de incluso permite a criao
de variveis polimrficas, isto , variveis (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"; E agora ??
D.matricula = 112;
Pessoa E = new Aluno();
E.nome = "Leandro";
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 Estticos
Mtodos Estticos

Observao: no estava claro na ementa que esse


assunto seria abordado no entanto, para resolver a
questo de 2010, tal conhecimento foi necessrio.
Lembram do que comentei sobre Deitel ?
Conceitos
Atributos Estticos ou Atributos de Classe
So atributos vlidos para todos objetos da classe,
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 no
obrigatrio!
Conceitos
Atributos Estticos
Isso torna o cdigo mais claro do que se
utilizssemos o:
nomeDaInstncia.nomeDoAtributo.
O espao de memria dos atributos estticos
compartilhado entre os objetos daquela
classe.
Atributos estticos somente podem ser acessados
internamente classe por mtodos estticos.
Conceitos
Atributos Estticos}
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 = "Fbio";
P.instituicao = "CDS";
System.out.println("Nome: " + P.nome + "\tInstituio: " + P.instituicao);
Aluno Q = new Aluno();
Q.nome = "Aline";
Q.instituicao = "EME";
System.out.println("Nome: " + P.nome + "\tInstituio: " + P.instituicao);
System.out.println("Nome: " + Q.nome + "\tInstituio: " + Q.instituicao);
}
}
Conceitos
Atributos Estticos
Sada:
Nome: Fbio Instituio: CDS
Nome: Fbio Instituio: EME
Nome: Aline Instituio: EME

Para evitar confuso, portanto, utilizamos a notao com


o nome da classe (e no da instncia)
Observe o cdigo a seguir que produz o MESMO
resultado.
Conceitos
Atributos Estticos
public class ExAluno2 {

public static void main(String[] args) {


Aluno P = new Aluno();
P.nome="Fbio";
Aluno.instituicao="CDS";
System.out.println("Nome:"+P.nome+"\tInstituio:
"+Aluno.instituicao);
Aluno Q = new Aluno();
Q.nome="Aline";
Aluno.instituicao="EME";
System.out.println("Nome:"+P.nome+"\tInstituio:
"+Aluno.instituicao);
System.out.println("Nome:"+Q.nome+"\tInstituio:
"+Aluno.instituicao);
}

}
Conceitos
Atributos Estticos
Sada a mesma !!:
Nome: Fbio Instituio: CDS
Nome: Fbio Instituio: EME
Nome: Aline Instituio: EME

Isso significa que voc deve conhecer as duas sintaxes


do ponto de vista de programao, a segunda ideal. Do
ponto de vista de prova, voc deve conhecer o resultado
de ambas.
Conceitos
Mtodos Estticos
Os mtodos de classe devem ser acessados
utilizando o nome da classe de forma similar ao
que foi visto anteriormente com os atributos
estticos.
No necessrio instanciar um objeto da classe para
acessar o mtodo esttico da mesma.
Mtodos de classe somente podem acessar
mtodos/atributos estticos daquela classe.
Exemplo: Classe Math do Java.
Tipicamente utilizados quando a classe no possui
estado (portanto no possui atributos e, assim,
somente tem mtodos). Ex: classes utilitrias.
Conceitos
Mtodos Estticos
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
Mtodos Estticos
Exemplo de como utilizar o mtodo anagrama
da classe do slide anterior:
public class ExUtils {

public static void main(String[] args) {


System.out.println(Utils.Anagrama("ricardo"));
}

Exemplo do uso de mtodos static. Observe que no necessrio criar


um objeto da classe Utils para utilizar o mtodo Anagrama.
Mtodos estticos so interessantes quando desejamos criar uma
biblioteca de funes ou utilidades (classe utilitria)
Conceitos
Mtodos Estticos
Da mesma forma que os atributos estticos,
mtodos estticos podem ser acessados por
meio das instncias:

public class Ex2 {


public static void main(String[] args) {
Utils W = new Utils();
System.out.println(W.Anagrama("ricardo"));
}
}
Conceitos
Mtodos Estticos
Observao Importante:
Mtodos estticos podem chamar outros mtodos
estticos e/ou atributos estticos.
No possvel fazer um acesso a instncia de
dentro de um mtodo esttico
Ou seja, no possvel utilizar o this dentro de um
mtodo esttico !
Concluso
Chegamos aqui ?
FIM
CIDADE IDIOMAS & CURSOS
PREPARATRIOS

CLN 113 - Bloco C - Sala 207 a 210


Asa Norte - Braslia - 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