Preparatório EsFCEx TÉCNICAS DE PROGRAMAÇÃO Programação Orientada a Objetos Prof. Ricardo Sant'Ana
Preparatório EsFCExTÉCNICAS DE PROGRAMAÇÃO
Programação Orientada a ObjetosProf. 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-casepublic 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"); } }}
ConceitosBreak 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
Resultado0 - 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
Resultado0 - 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
Resultado0 - 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
Resultado0 - 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
ResultadoDaria 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 classe possuem 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
Exemplopublic 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
ExemploDados 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
Exemploclass 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
Exemplopackage 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
Exemplopublic 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.
AtributosEncapsulados
MétodoModificador
MétodoAcessor
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
Exemplopublic 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 classePonto3D sobreescreve o 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 visibilidadedefault. 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:RicardoNome:AnaNome:WaleskaMatricula:123Nome:LuizMatricula:112Nome: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:RicardoNome:AnaNome:WaleskaMatricula:123Nome:LuizMatricula:112Nome:Leandro
Matricula:0
Conceitos
Desafio Finalpublic 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 Final122
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áticospublic class 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áticosimport 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-4509E-mail: [email protected]
Site: www.iic.pro.brSkype: luizcidade
Prof. Ricardo Sant'Ana