Documente Academic
Documente Profesional
Documente Cultură
TCNICAS DE PROGRAMAO
Programao Orie!ta"a a O#$etos
Pro%& Ri'ar"o Sa!t(A!a
S)m*rio
ntroduo
+
Conceitos
,
Concluso
-
I!tro")o
Lista de Assuntos
2. TCNCAS 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.
I!tro")o
Bibliografia
COSTA, Daniel G. JAVA em Rede: Recursos Avanados. Rio de Janeiro:
Brasport, 2008.
DEITE./ 0& M& 1A2A Como Programar& 3& e"& 4S&5&67 E"itora 8oo9ma!/ ,::3&
GAMMA, Erich et al. Padres de Projeto: Solues Reutilizveis de Software
Orientado a Objetos. [S.l.]: Bookman, 2005.
GUMARES, 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; AUGENSTEN, Moshe J.
Estruturas de Dados Usando C. [S.l.]: Makron Books, 1995.
VELOSO, Paulo et al. Estrutura de Dados. [S.l.]: Editora Campus, 1983.
;IRT0/ Ni95a)s& A5gor<tmos e Estr)t)ra"os "e Da"os& 4S&5&67 E"itora P08/
+=>=.
I!tro")o
Primeira percepo:
Ponteiros em C
Teoria e !erc"cios
Conhecimento prvio!
Co!'eitos
Plataforma %a&a
Funcionamento (eral
Bytecodes
Funcionamento (eral
Multiplataforma
Co!'eitos
Principais struturas
Operadores:
Aritmticos, Relacionais e Lgicos;
Estruturas Condicionais:
f, switch-case, ternrio
Estruturas de repetio
For, while, do-while
Co!'eitos
)bser&aes
Ternrio
Observar que %5oat !ota?@&AB daria um erro, pois
Java consideraria 7.5 como double.
public class Exemplo {
public static void main(String[] args) {
float float nota = 7.5F; nota = 7.5F;
char situacao = nota > 7 ? ! " #;
S$stem.out.println(%Situacao" % & situacao);
'
'
Co!'eitos
)bser&aes
Ternrio
Sintaxe do ternrio: (condio) C C resultado se V 7 7 resultado se F
public class Exemplo {
public static void main(String[] args) {
float float nota = 7.5F; nota = 7.5F;
char situacao = nota > 7 ? ! " #;
S$stem.out.println(%Situacao" % & situacao);
'
'
Co!'eitos
)bser&aes
Ternrio
Resultado:
Situacao: A
public class Exemplo {
public static void main(String[] args) {
float float nota = 7.5F; nota = 7.5F;
char situacao = nota > 7 ? ! " #;
S$stem.out.println(%Situacao" % & situacao);
'
'
Co!'eitos
Brea* no s+itc,-case
public class Exemplo {
public static void main(String[] args) {
int resposta = (;
switch (resposta) {
case )"
S$stem.out.println(%*n+ormatica%);
break;
case ("
S$stem.out.println(%En+ermagem%);
break;
case ,"
S$stem.out.println(%-sicologia%);
break;
case ."
S$stem.out.println(%-e/agogia%);
break;
default"
S$stem.out.println(%0ao encontra/o%);
'
'
'
Co!'eitos
Brea* no s+itc,-case
nfermagem
public class Exemplo {
public static void main(String[] args) {
int resposta = (;
switch (resposta) {
case )"
S$stem.out.println(%*n+ormatica%);
break;
case ("
S$stem.out.println(%En+ermagem%);
break;
case ,"
S$stem.out.println(%-sicologia%);
break;
case ."
S$stem.out.println(%-e/agogia%);
break;
default"
S$stem.out.println(%0ao encontra/o%);
'
'
'
Co!'eitos
Brea* no s+itc,-case
nfermagem
Psicologia
Pedagogia
.ao encontrado
public class Exemplo {
public static void main(String[] args) {
int resposta = (;
switch (resposta) {
case )"
S$stem.out.println(%*n+ormatica%);
case ("
S$stem.out.println(%En+ermagem%);
case ,"
S$stem.out.println(%-sicologia%);
case ."
S$stem.out.println(%-e/agogia%);
default"
S$stem.out.println(%0ao encontra/o%);
'
'
'
Co!'eitos
Brea* no s+itc,-case
nfermagem
Psicologia
.ao encontrado
public class Exemplo {
public static void main(String[] args) {
int resposta = (;
switch (resposta) {
case )"
S$stem.out.println(%*n+ormatica%);
case ."
S$stem.out.println(%-e/agogia%);
case ("
S$stem.out.println(%En+ermagem%);
case ,"
S$stem.out.println(%-sicologia%);
default"
S$stem.out.println(%0ao encontra/o%);
'
'
'
Co!'eitos
2esultado
0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 -
public class Exemplo {
public static void main(String[] args) {
for (int i = 1; i 2 )1; i&&) {
S$stem.out.print(i & % 3 %);
'
'
'
Co!'eitos
/tili0ao do continue
2esultado
0 - 1 - 2 - 3 - 4 - 5 - 6 - 8 - 9 -
O sete no aparece !!
public class Exemplo {
public static void main(String[] args) {
for (int i = 1; i 2 )1; i&&) {
if (i==7) continue;
S$stem.out.print(i & % 3 %);
'
'
'
Co!'eitos
/tili0ao do brea*
2esultado
0 - 1 - 2 - 3 - 4 - 5 - 6 -
A partir do sete no aparece mais nada !!
public class Exemplo {
public static void main(String[] args) {
for (int i = 1; i 2 )1; i&&) {
if (i==7) break;
S$stem.out.print(i & % 3 %);
'
'
'
Co!'eitos
2esultado
0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10
public class Exemplo {
public static void main(String[] args) {
int i=1;
for (i = 1; i 2 )1; i&&) {
S$stem.out.print(i & % 3 %);
'
S$stem.out.println(i);
'
'
Co!'eitos
2esultado
Daria erro, pois a varivel i foi declarada dentro do escopo do lao e,
portanto, no existe for do lao !
public class Exemplo {
public static void main(String[] args) {
for (int i=1; i 2 )1; i&&) {
S$stem.out.print(i & % 3 %);
'
S$stem.out.println(i);
'
'
Co!'eitos
P)) 3 parte 4
Classes e Objetos
Atributos e Mtodos
Construtor e Destrutor
Co!'eitos
5lasses e )b6etos
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 cdigo que cria um objeto da classe
Solicitacao:
public class Solicitacao {
String nome;
long cp+;
int protocolo;
'
Solicitacao 4 = new Solicitacao();
Co!'eitos
Atributos e #$todos
Atri#)tos7
modelam o estado que a classe pode ter. So os atributos
que diferenciam um objeto de outro da mesma classe.
MDto"os7
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.
Co!'eitos
!emplo
A classe Carro abaixo definida possui os atributos modelo,
marca, cor, ano, proprietario e autorizados; possui o mtodo
imprime();
class 5arro {
String mo/elo;
String marca;
char cor;
int ano;
String proprietario;
boolean autori6a/o;
void imprime() {
S$stem.out.println(%7a/os /o 8e9culo%);
S$stem.out.println(%:arca" % & marca & %;t:o/elo"% & mo/elo);
S$stem.out.println(%7ono" % & proprietario & %;t!no" % & ano);
'
'
Co!'eitos
!emplo
public class Executa8el {
public static void main(String[] args) {
5arro ! = new 5arro();
!.mo/elo=%siena%;
!.autori6a/o=false;
!.cor=<;
!.marca=%+iat%;
!.ano=(11=;
!.proprietario=%Elias%;
5arro < = new 5arro();
<.mo/elo=%palio%;
<.autori6a/o=true;
<.cor=0;
<.marca=%+iat%;
<.ano=(1)(;
<.proprietario=%#a+ael%;
!.imprime();
<.imprime();
'
'
Co!'eitos
!emplo
Dados do veculo
Marca: fiat Modelo:siena
Dono: Elias Ano: 2009
Dados do veculo
Marca: fiat Modelo:palio
Dono: Rafael Ano: 2012
Co!'eitos
5onstrutor
5onstrutor
!emplo
class -onto(7 {
double x;
double $;
String la>el;
-onto(7(){
x=1;$=1;la>el=%nen?um%;
'
void imprime(){
S$stem.out.println(%x= %&x&%;t $=%&$&%;t%&la>el);
'
'
Co!'eitos
!emplo (continuao)
public class Ex-onto1) {
public static void main(String[] args) {
-onto(7 @ = new -onto(7();
@.x = )1;
@.$ = )1;
@.la>el = %marco1)%;
@.imprime();
-.imprime();
'
'
Chamando
o construtor
Co!'eitos
7estrutor
P)) 3 parte 8
Visibilidade
Sobrecarga de Mtodos
Co!'eitos
9isibilidade
Tipos de 9isibilidade
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.
Co!'eitos
!emplo
package app.sistema;
public class -onto(78 {
private double x;
public double $;
String la>el;
public -onto(78(double xA double $A String la>el) {
this.x = x;
this.$ = $;
this.la>el = la>el;
'
'
Co!'eitos
!emplo(cont:)
package app.sistema;
public class Ex-onto(78 {
public static void main(String[] args) {
-onto(78 @ = new -onto(78()A)ABponto inicialB);
@.x=1; CC erro
@.$=); CC oD
@.la>el=BtesteB; CC oD E :esmo pacoteE
'
'
Co!'eitos
!emplo
public class !luno {
private String nome;
private int matricula;
public int get:atricula() {
return matricula;
'
public void set:atricula(int matricula) {
this.matricula = matricula;
'
public String get0ome() {
return nome;
'
public void set0ome(String nome) {
this.nome = nome;
'
'
Co!'eitos
!emplo
Modificadores:
setMatricula
setNome
public class Exemplo!luno {
public static void main(String[] args) {
!luno @ = new !luno();
@.set:atricula(711);
@.set0ome(%#o>erto 5aio%);
S$stem.out.println(@.get:atricula()&% 3 %&@.get0ome());
'
'
Co!'eitos
!emplo
Acessores:
getMatricula
getNome
public class Exemplo!luno {
public static void main(String[] args) {
!luno @ = new !luno();
@.set:atricula(711);
@.set0ome(%#o>erto 5aio%);
S$stem.out.println(@.get:atricula()&% 3 %&@.get0ome());
'
'
Co!'eitos
ncapsulamento:
=obrecarga de #$todos:
mtodo sobrecarregado
overload
Co!'eitos
!emplo:
Herana
Sobrescrita
nterfaces
Co!'eitos
?erana:
=inta!e (%a&a):
=obrescrita (o&erride)
!emplo
public class -onto(7 {
protected double x;
protected double $;
protected String la>el;
-onto(7(){
x=1;$=1;la>el=%nen?um%;
'
void imprime(){
S$stem.out.println(%x= %&x&%;t $=%&$&%;t%&la>el);
'
'
Co!'eitos
!emplo(cont:)
public class -onto,7 extends -onto(7 {
protected double 6;
-onto,7() {
super();
6 = 1;
'
public void imprime() {
super.imprime();
S$stem.out.println(%6=% & 6);
'
'
Co!'eitos
!emplo(cont:)
public class -onto,7 extends -onto(7 {
protected double 6;
-onto,7() {
super();
6 = 1;
'
public void imprime() {
super.imprime();
S$stem.out.println(%6=% & 6);
'
'
A classe herda os atributos
x, y e label da classe pai
O mtodo imprime() da classe
Ponto3D sobreescreve o mtodo
imprime da classe Ponto2D.
Co!'eitos
!emplo(cont:)
public class -onto,7 extends -onto(7 {
protected double 6;
-onto,7() {
super();
6 = 1;
'
public void imprime() {
super.imprime();
S$stem.out.println(%6=% & 6);
'
'
O contrutor tem visibilidade
default. Portanto, onde
poderemos instanciar objetos
da classe Ponto3D ?
Co!'eitos
Utilizao de Herana:
Relacionamento " UM
PESSOA
A.GNO
UM (A)
Co!'eitos
7iagrama de 5lasses
Co!'eitos
@nterfaces
!emplo:
!emplo (cont:)
public class !luno implements *mprimi8el{
private String nome;
private int matricula;
public void imprime(){
S$stem.out.println(matricula&% 3 %&nome);
'
public :ap get5on+iguracoes*mpressora() {
CC co/igo
return null;
'
public void set5on+iguracao(String c?a8eA String 8alor) {
CC co/igo
'
'
Co!'eitos
5lasses Abstratas
No so instanciadas.
)utros conceitos
Classe Final
P)) 3 Parte C
Polimorfismo
Co!'eitos
Polimorfismo
Polimorfismo
A sobrecarga $ a possibilidade de
implementao de m$todos que possuam
a mesma assinatura de m$todo mas que
diferem nos parDmetros passados para o
m$todo:
Polimorfismo de @ncluso
!emplo
package app.polimor+ismo;
public class -essoa {
public String nome;
public void imprime() {
S$stem.out.println(%0ome"% & nome);
'
'
package app.polimor+ismo;
public class !luno extends -essoa {
public int matricula;
public void imprime() {
super.imprime();
S$stem.out.println(%:atricula"% & matricula);
'
'
Co!'eitos
!emplo (cont:)
package app.polimor+ismo;
public class Ex {
public static void main(String[] args) {
-essoa ! = new -essoa();
!.nome = %#icar/o%;
-essoa < = new -essoa();
<.nome = %!na%;
!luno 5 = new !luno();
5.nome = %4alesDa%;
5.matricula = )(,;
!luno 7 = new !luno();
7.nome = %Fui6%;
7.matricula = ))(;
-essoa E = new -essoa();
E.nome = %Fean/ro%;
Co!'eitos
!emplo(cont:)
public class Ex {
public static void main(String[] args) {
.
.
.
-essoa[] 8etor = { !A <A 5A 7A E ';
for (int i = 1; i 2 8etor.lengt?; i&&) {
8etor[i].imprime();
'
'
'
Co!'eitos
!emplo(cont:)
!emplo (cont:)
package app.polimor+ismo;
public class Ex {
public static void main(String[] args) {
-essoa ! = new -essoa();
!.nome = %#icar/o%;
-essoa < = new -essoa();
<.nome = %!na%;
!luno 5 = new !luno();
5.nome = %4alesDa%;
5.matricula = )(,;
!luno 7 = new !luno();
7.nome = %Fui6%;
7.matricula = ))(;
-essoa E = new Aluno();
E.nome = %Fean/ro%;
E agora ??
Co!'eitos
!emplo(cont:)
Matricula:0
Co!'eitos
7esafio Final
public class ! {
public int getGalor() {
return );
'
'
public class < extends ! {
public int getGalor() {
return (;
'
'
Co!'eitos
7esafio Final
public class 5o/igo {
public static void main(String[] args) {
! p) = new !();
< p( = new <();
! p, = new <();
S$stem.out.println(p).getGalor());
S$stem.out.println(p(.getGalor());
S$stem.out.println(p,.getGalor());
'
'
Co!'eitos
P))
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 ?
Co!'eitos
Atributos st1ticos
Atributos st1ticosG
public class !luno {
public String nome;
public static String instituicao;
'
public class Ex!luno {
public static void main(String[] args) {
!luno - = new !luno();
-.nome = %FH>io%;
-.instituicao = %57S%;
S$stem.out.println(%0ome" % & -.nome & %;t*nstituiIJo" % & -.instituicao);
!luno @ = new !luno();
@.nome = %!line%;
@.instituicao = %E:E%;
S$stem.out.println(%0ome" % & -.nome & %;t*nstituiIJo" % & -.instituicao);
S$stem.out.println(%0ome" % & @.nome & %;t*nstituiIJo" % & @.instituicao);
'
'
Co!'eitos
Atributos st1ticos
Sada:
Nome: Fbio nstituio: CDS
Nome: Fbio Nome: Fbio nstituio: EME nstituio: EME
Nome: Aline nstituio: 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.
Co!'eitos
Atributos st1ticos
public class Ex!luno( {
public static void main(String[] args) {
!luno - = new !luno();
-.nome=%FH>io%;
!luno.instituicao=%57S%;
S$stem.out.println(%0ome"%&-.nome&%;t*nstituiIJo"
%&!luno.instituicao);
!luno @ = new !luno();
@.nome=%!line%;
!luno.instituicao=%E:E%;
S$stem.out.println(%0ome"%&-.nome&%;t*nstituiIJo"
%&!luno.instituicao);
S$stem.out.println(%0ome"%&@.nome&%;t*nstituiIJo"
%&!luno.instituicao);
'
'
Co!'eitos
Atributos st1ticos
#$todos st1ticos
#$todos st1ticos
import Ka8a.util.FinDe/Fist;
import Ka8a.util.#an/om;
public class Ltils {
public static String !nagrama(String s) {
FinDe/Fist - = new FinDe/Fist();
for (int i = 1; i 2 s.lengt?(); i&&)
-.a//(new 5?aracter(s.c?ar!t(i)));
#an/om @ = new #an/om();
String res = %%;
while (-.si6e() > 1) {
res = res & -.remo8e(@.next*nt(-.si6e()));
'
return res;
'
'
Co!'eitos
#$todos st1ticos
#$todos st1ticos
#$todos st1ticos
Observao mportante:
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 !
Co!'5)so