Você está na página 1de 19

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