Beruflich Dokumente
Kultur Dokumente
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
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) {
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:
Mtodos:
modelam as aes que os objetos podero executar. Todos
os objetos da mesma classe possuem os mesmos mtodos.
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";
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;
}
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;
}
Conceitos
Exemplo
public class ExemploAluno {
} Modificadores:
setMatricula
setNome
Conceitos
Exemplo
public class ExemploAluno {
}
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:
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;
}
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);
}
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 {
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;
}
}
}
}
Conceitos
Resultado do Desafio Final
1
2
2
Conceitos
POO
Atributos Estticos
Mtodos Estticos
}
Conceitos
Atributos Estticos
Sada a mesma !!:
Nome: Fbio Instituio: CDS
Nome: Fbio Instituio: EME
Nome: Aline Instituio: EME