Preparatório EsAEx
TÉCNICAS DE PROGRAMAÇÃO
Programação Orientada a Objetos
Prof. Ricardo Sant'Ana
Sumário
1 Introdução
2 Conceitos
3 Conclusão
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, subrotinas, 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: 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)
Programação Orientada a Objetos em Java
Ponteiros em C
Árvores e Pilhas (Estrutura da Dados)
Teoria e Exercícios
Conhecimento prévio!
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.
Conceitos
Atributos Estáticos ou Atributos de Classe
São atributos válidos para toda a classe, ou seja, se
vc trocar o valor de um atributo de classe, você
estará trocando o valor do atributo de TODOS os
objetos daquela classe.
• Na verdade, existe 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 ExAluno1 {
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ábio Instituiçã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
public 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.instituicao
Aluno Q = new Aluno();
Q.nome="Aline";
Aluno.instituicao="EME";
System.out.println("Nome:"+P.nome+"\tInstituição: "+Aluno.instituicao);
Aluno.instituicao
System.out.println("Nome:"+Q.nome+"\tInstituição: "+Aluno.instituicao);
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){
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:
public class ExUtils {
public static void main(String[] args){
System.out.println(Utils.Anagrama(“ricardo”));
Utils.Anagrama(“ricardo”)
}
}
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)
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 ExUtils {
public static void main(String[] args){
Utils W = new Utils();
System.out.println(W.Anagrama("ricardo"));
W.
}
}
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
Perguntas ?
Prof. Ricardo Sant'Ana