Você está na página 1de 54

Programao OO

Utilizando

Professor: Laurentino Augusto Dantas


E-mail: guto@unipar.br

Bibliografia Bsica
DEITEL, H. M.; DEITEL, P. J. Java como
Programar 3a edio. Porto Alegre : Bookman,
2001.
FURGERI, Sergio. Java 2: ensino didtico:
desenvolvendo e implementando aplicaes.
So Paulo: rica, 2002.

Programao Orientada a Objetos

Prof: Augusto Dantas

Avaliaes
Provas (Peso 6.0)
Trabalhos (Peso 4.0)

Programao Orientada a Objetos

Prof: Augusto Dantas

Objetivos
Apresentar a teoria envolvida no paradigma da
Orientao a Objetos.
Expor conceitos, metodologias e ferramentas
indispensveis ao sucesso de um projeto
orientado a objetos.
Apresentar como essas tcnicas e conceitos so
implementados na linguagem Java.

Programao Orientada a Objetos

Prof: Augusto Dantas

Contedo
Histrico e cenrio atual da POO;
Programao estruturada e POO;
Paradigma de programao orientada a
objetos;
Classes, Objetos; Polimorfismo; Sobrecarga
de Mtodos; Herana; Encapsulamento;
Interface grfica; Persisitncia de dados;
Linguagem Java
Programao Orientada a Objetos

Prof: Augusto Dantas

Criar os seguintes Programas


Criar um Programa que leia 3 nmeros e
informe o maior.
Criar um programa que leia uma seqncia
de 100 nmeros e informe o maior, o menor
e a mdia dos nmeros lidos.
Criar um programa que leia 100 nmeros, e
imprima todos os nmeros lidos que so
maiores que a mdia dos nmeros lidos.
Programao Orientada a Objetos

Prof: Augusto Dantas

Iniciando em JAVA
Introduo

Sun Microsystems
Linguagem Orientada a Objetos
Compilada e Interpretada
tstst
ststs
tsisi

Compilador Java(Pentium)

Compilador Java(PowerPC)

Compilador Java(SPARC)

Programao Orientada a Objetos

Cdigo da
Mquina Java

aaaa
Interpretador
Java(Pentium)

bbbb
ByteCode

Interpretador
Java(PowerPC)

cccc
Interpretador
Java(SPARC)

Prof: Augusto Dantas

Linguagem JAVA Caractersticas

Caractersticas

Simples e familiar
Orientada a Objetos
Compilada e Interpretada
Pronta para Redes
Dinmico
Multi thread
Independente de Plataforma
Coletor de Lixo Garbage Colector
Segura

Programao Orientada a Objetos

Prof: Augusto Dantas

Linguagem JAVA
Introduo

Applets x Aplicativos
Aplicativos: Necessitam Interpretador na mquina
Applets: Interpretador est no Browser

JDK (Kit de desenvolvimento Java)


Compilador, Interpretador e utilitrios

javac<nome do arquivo>.java (Compilao)


java <nome do arquivo>
(Execuo)
appletviewer <nome do arquivo>.html
jar
(Compactador)
javadoc
(Gerao de documentao)

Programao Orientada a Objetos

Prof: Augusto Dantas

Linguagem JAVA
Esquema de Utilizao do JDK - Aplicativos

Cdigo fonte Java


Teste.java

Bytecodes
Teste.class

Compilador javac
Teste.java

Programao Orientada a Objetos

Interpretador java
Teste

Prof: Augusto Dantas

Linguagem JAVA

Esquema de Utilizao do JDK - Applets

Cdigo fonte Java


AppletTeste.java

Cdigo binrio
AppletTeste.class

Criao da pgina
HTML para o Applet
AppletTeste.html

Compilador javac
AppletTeste.java

Browser com
Interpretador embutido
AppletTeste.html

Programao Orientada a Objetos

Prof: Augusto Dantas

Linguagem JAVA
Estrutura das Aplicaes Java

Desenvolvimento de aplicaes sempre feito


atravs de classes.
class NomedaClasse
{
// Atributos
// Mtodos
public static void main( String args[] )
{
//corpo principal do programa
}

}
Programao Orientada a Objetos

Prof: Augusto Dantas

Linguagem JAVA
Primeira Aplicao

class helloWorld {
public static void main(String args[]) {
System.out.println(" Hello World");
}
}
Exemplo helloWorld.java
Elementos da Aplicao
Programao Orientada a Objetos

Prof: Augusto Dantas

Linguagem JAVA
Passagem de Parmetros da Linha de Comando

Separados por espao em branco


Vetor de strings do mtodo main.
Acesso feito indicando-se a posio no array,
import java.lang.*;
class App1
{
public static void main( String argv[] )
{
System.out.println(argv[0] + " " + argv[1] + " " + argv[2] );
System.out.println( "Tamanho do terceiro parametro: " +
argv[2].length() + "
Nmero de parametros: " + argv.length);
}
}
Prof: Augusto Dantas
Programao Orientada a Objetos

Atividade
Ler o captulo 1 do Livro do Furgeri e fazer
os exerccios.
Ler o Captulo 1 do Deitel e Fazer os
exerccios.
Equipe de no mximo 4 pessoas.

Programao Orientada a Objetos

Prof: Augusto Dantas

O que Orientao a Objetos?

Tcnica de modelagem de software que


procura construir sistemas complexos a
partir de componentes.

Khoshafian, S. e Abnous, R.

Objetos so coisas que podem ser


manipuladas.

Martin, R.C.

Programao Orientada a Objetos

Prof: Augusto Dantas

O Modelo de Objetos
Abstrao
Encapsulamento
Modularidade
Hierarquia

Programao Orientada a Objetos

Prof: Augusto Dantas

Abstrao
Eliminao do
irrelevante e
amplificao do
essencial

Programao Orientada a Objetos

Prof: Augusto Dantas

Abstrao

A abstrao denota as caractersticas


essenciais de um objeto que o distingue de
outros objetos e oferece uma fronteira
conceitual claramente definida, sempre a
partir da viso do observador
Uma abstrao deve ser entendida e
analisada independentemente do mecanismo
que a implementa

Programao Orientada a Objetos

Prof: Augusto Dantas

Encapsulamento
Nenhuma
parte de um
sistema
complexo
deve
depender de
detalhes
internos de
qualquer outra
parte
Programao Orientada a Objetos

Prof: Augusto Dantas

Encapsulamento

o processo de compartimentalizao dos


elementos de uma abstrao
Encapsulamento serve para separar a
interface contratual de uma abstrao de sua
implementao

Programao Orientada a Objetos

Prof: Augusto Dantas

Modularidade
Propriedade
de um
sistema
estar
decomposto
em partes
coesas e
fracamente
acopladas
Programao Orientada a Objetos

Prof: Augusto Dantas

Modularidade

A atividade de particionar um programa em


componentes individuais pode reduzir sua
complexidade
Mdulos so dependentes uns dos outros, o
que leva a uma relao de acoplamento

Programao Orientada a Objetos

Prof: Augusto Dantas

Hierarquia

ratos de
brinquedo

motores a
base de mola

partes
diversas

Classificao
e ordenao
de
abstraes

tomos

Programao Orientada a Objetos

Prof: Augusto Dantas

Hierarquia
Promove a classificao e organizao das
abstraes
Formas de organizao:
Herana (simples ou mltipla)
Agregao

Programao Orientada a Objetos

Prof: Augusto Dantas

Como atingir Orientao a Objetos?


Cumprindo os princpios fundamentais do
modelo de objetos:

Abstrao
Encapsulamento
Modularidade
Hierarquia

Programao Orientada a Objetos

Prof: Augusto Dantas

Relacionamentos entre Classes

Agregao
Herana
Associao
Uso
Instanciao

Programao Orientada a Objetos

Prof: Augusto Dantas

Agregao/decomposio

Sob certo sentido, um objeto pode ser visto


como um agregado de outros objetos (suas
partes).
Programao Orientada a Objetos

Prof: Augusto Dantas

Especializao/Generalizao
(Herana)

dependendo do contexto (domnio de aplicao)


em que se est imerso, um mesma classe pode
ser especializada de diferentes formas
Programao Orientada a Objetos

Prof: Augusto Dantas

Classes X Objetos
Classes : agrupam os objetos com base em algum
conjunto de propriedades comum a todos estes
objetos
Objeto: contm atributos e comportamentos que o
caracterizam para o domnio de um problema
Atributos: descrevem as caractersticas ou
propriedades dos objetos
Mtodos: manipulao dos atributos ocorre atravs
dos procedimentos
Programao Orientada a Objetos

Prof: Augusto Dantas

Conceito de Objeto

mtodos

LATIR

DEITAR

Programao Orientada a Objetos

raa
idade

propriedades

ABAIXAR

Prof: Augusto Dantas

Orientao a Objetos
Exemplo

Classe: PESSOA
Atributos :cor_de_olho, cor_de_cabelo, idade
Mtodos : faz_aniversario, muda_cor_de_cabelo.
Instanciando esta classe PESSOA, obtemos o
objeto:
maria = new PESSOA ( );
joao
= new PESSOA ( );
PESSOA

cor_de_olho
cor_de_cabelo
idade

muda_cor_cabelo()
faz_aniversario()

Programao Orientada a Objetos

Prof: Augusto Dantas

Orientao a Objetos
Exemplo

Cada objeto tem suas caractersticas:


maria.cor_de_olho = castanho;
maria.cor_de_cabelo = castanho;
maria.idade
= 24;
joao possui outros valores para seus atributos.
joao.cor_de_olho = castanho claro;
joao.cor_de_cabelo = preto;
joao.idade
= 26;
Programao Orientada a Objetos

Prof: Augusto Dantas

Orientao a Objetos
Mtodos

Mtodos so utilizados para alterar os valores


dos atributos:
maria.faz_aniversario ( );
O mtodo faz_aniversario implementa uma
rotina onde ir somar mais um no atributo idade
de maria:
faz_aniversario( ) {
maria.idade = maria.idade+1;
}
Programao Orientada a Objetos

Prof: Augusto Dantas

Atividade
Pesquisar sobre Orientao a Objetos:
Histrico;
Caractersticas;
Comparativo entre programao estruturada e
OO.
Equipe de no mximo 4 pessoas.

Programao Orientada a Objetos

Prof: Augusto Dantas

Programando em Java
Comentrios
// texto
Todos os caracteres de // para o final da linha so ignorados.
/* texto */
Todos os caracteres de /* para */ so ignorados.
/** texto
* @ consulte java.appplet.Applet
*/
Identificadores
Devem comear com uma letra, sublinhado (_) ou sinal de sifro ($).
Java sensvel a maisculas e minsculas.

Programao Orientada a Objetos

Prof: Augusto Dantas

Tipos de Dados
Inteiros
Inteiros podem ser expressados no formato: decimal (base 10), hexadecimal
(base 16), ou octal (base8).
2, 2L 0777 0xDeadBeef
Ponto Flutuante
Representam valores decimais com um componente fracionrio. Podem ser
expressos na notao padro ou cientfica.
3.1415 3.1E12 .1e12 2E12
2.0d or 2.0D
double
2.0f or 2.0F or 2.0
float
Booleanos
So expressados por true e false, sendo que estes no podem ser convertidos em
nenhuma representao numrica.
Programao Orientada a Objetos

Prof: Augusto Dantas

Tipos de Dados
Caracteres
Os caracteres em Java so ndices do conjunto de caracteres Unicode que so
valores de 16 bits que podem ser convertidos em inteiros e manipulados com
operadores inteiros. Um caracter inteiro representado dentro de um par de
apstrofos ( ). Para os caracteres que no podem ser inseridos diretamente a
tabela abaixo mostra algumas seqncias de escape de caracteres.
\ddd
\uxxxx
\
\
\\
\r
\n
\f
\t
\b

Caracter octal (ddd)


Caracter UNICODE hexadecimal (xxxx)
Apstrofo
Aspas
Barra Invertida
Retorno de carro
Nova linha (linefeed)
Form feed
Tab
Backspace

Programao Orientada a Objetos

Prof: Augusto Dantas

Tipos de Dado
Tipos Simples
byte
short
int
long

Largura
8
16
32
64

float
double
char
boolean

32
64
16
true ou false

Programao Orientada a Objetos

Faixa
-128 a 127
-32768 a 32767
-2.147.483.648 a 2.147.483.647
-9.223.372.036.854.775.808...
9.223.372.036.854.775.807
3,4e - 308..1,7e + 308
1,7e - 038..3,4e + 038
0 a 65536

Prof: Augusto Dantas

Converso de Tipos
float y = (float)x; // int x = 10;
double y = (double)x; // int x = 10;
int y= (int)x; // float x = 10.5;
float y = Float.parseFloat(x); // String x = 10;
double y = Double.parseDouble(x) // String x = 10
int y = Integer.parseInt(x); // String x = 10;
byte b[] = x.getBytes(); // String x = java;
String y = String.valueOf(x) // int x = 100;
String y = new String(x) // byte x[];

Programao Orientada a Objetos

Prof: Augusto Dantas

Operadores
Operadores Aritmticos
Operador

+
*
/
%
++
+=
-=
*=
/=
%=
--

Ao
Adio
Subtrao e menos unrio
Multiplicao
Diviso
Mdulo
(resto da diviso)
Incremento
Atribuio Aditiva
Atribuio Subtrativa
Atribuio de Multiplicao
Atribuio de Diviso
Atribuio deMdulo
(resto de diviso)
Decremento

Programao Orientada a Objetos

Operadores Relacionais
Operador
Ao
==
Igual a
!=
Diferente
>
Maior do que
<
Menor do que
>=
Maior ou igual a
<=
Menor ou igual a

Prof: Augusto Dantas

Operadores Bit a Bit


Operador
Ao
~ NOT bit-a-bit unrio
& AND bit-a-bit
| OR bit-a-bit
^ OR exclusivo bit-a-bit
>> Deslocamento direita (shift right)
>>>
Com zeros
<< Deslocamento esquerda (shift left)
&= Atribuio AND bit-a-bit
|= Atribuio OR bit-a-bit
^= Atribuio OR exclusivo bit-a-bit
>>=
Atribuio de deslocamento direita
>>>=
Atribuio de deslocamento direita com preenchimento
<<=
Atribuio de deslocamento `a esquerda
Programao Orientada a Objetos

Prof: Augusto Dantas

Operadores Lgicos
Operador
&
|
^
||
&&
!
&=
|=
^=
==
!=
?:

Ao
AND lgico
OR Lgico
XOR Lgico (OR exclusivo)
OR
AND
NOT unrio lgico
Atribuio de AND
Atribuio de OR
Atribuio de XOR
Igual a
Diferente de
if-then-else ternrio

Programao Orientada a Objetos

Prof: Augusto Dantas

Atividade em Sala
Fazer exerccios da lista 01 (em sala).

Programao Orientada a Objetos

Prof: Augusto Dantas

Trabalho de Casa
Ler o Captulo 2 do Deitel e Fazer os
exerccios .
Equipe de no mximo 4 pessoas.

Programao Orientada a Objetos

Prof: Augusto Dantas

Estrutura de Desvio Condicional


class IfElse
{public static void main(String args[ ])
Controle de Fluxo ( if-else)
{ int mes = 4;
O comando if-else permite a
String estacao;
seleo de 1 e 2 ramos. A clusula
if (mes ==12 || mes == 1 || mes == 2)
{ estacao = "Vero"; }
else opcional.
else if (mes ==3 || mes == 4 || mes == 5)
{ estacao = "Outono";}
else if (mes ==6 || mes == 7|| mes ==8)
if (expresso booleana) declarao1;
{estacao = "Inverno";}
[else declarao2;]
else if (mes ==9|| mes == 10|| mes == 11)
Neste caso, apenas uma
{estacao = "Primavera";}
else
declarao pode aparecer depois
{estacao = "Desconhecida";}
de if e else. Para incluir mais
System.out.println("Abril esta na estacao" +
declaraes preciso usar chaves.
estacao + "."); }
}
Programao Orientada a Objetos

Prof: Augusto Dantas

Comandos
class Switch{
Controle de Fluxo ( switch)
public static void main(String args[ ]) {
Fornece a opo de ir para
int mes = 4;
diferentes partes do cdigo com
String estacao = new String();
base no valor de uma nica varivel switch (mes) {
ou expresso.
case 12:
A forma geral de declarao :
case 1:
switch (expressao) {
case valor1:
break;
case valor2:
break;
case valorN:
break;
default:
}
Programao Orientada a Objetos

case 2:
estacao = "Verao"; break;
case 3:
case 4:
case 5:
estacao = "Outono"; break;
}
System.out.println("Abril esta na estacao" +
estacao + ".");
} }
Prof: Augusto Dantas

Comandos
Controle de Fluxo ( return)
Faz com que a execuo retorne
para a chamada do mtodo.
class Return{
public static void main(String args[ ]) {
boolean t = true;
System.out.println(Antes de return);
if (t)
return;
System.out.println(Isto nao e
executado);
}
}

Repetio (while) com teste no


inicio.
Programao Orientada a Objetos

[inicializao]
while ( encerramento ) {
corpo;
[iterao;]
}
classe While{
public static void main(String args[ ]){
int n = 10;
while (n > 0) {
System.out.println( n);
n--;
}
}
}

Prof: Augusto Dantas

Comandos
Repetio (do-while)
[inicializao;]
do {corpo; [iterao;] } while (trmino);

Exemplo:
class DoWhile{
public static void main(String args[ ]) {
int n = 10;
do {
System.out.println( n );
--n;
} while (n > 0);
} }

Programao Orientada a Objetos

Repetio (for)
Comando compacto de repetio.
Forma geral:
for (inicializao; encerramento;
iterao ) corpo;
class for{
public static void main(String args[ ]) {
for (int i = 1; i <= 10; i++)
System.out.println(i = + i);
}
}

Prof: Augusto Dantas

Comandos
Declarao de Vrgula:
Para incluir mais de uma declaraao de
inicializao e iterao no comando for,
use a vgula.
class Virgula {
public static void main (String args[ ]) {
int a,b;
for (a = 1, b = 4; a < b; a++, b--) {
System.out.println(a = + a);
System.out.println(b = + b);
}
}
}
Programao Orientada a Objetos

continue:

Para continuar dentro do lao, e


parar de executar o restante do
cdigo em uma iterao, use
continue.

class Continue {
public static void main (String args[ ]) {
for (int i = 0; i < 10; i++) {
System.out.printn(i + );
if (i % 2 == 0)
continue;
System.out.println( );
}
}}
Prof: Augusto Dantas

Tratamento de Excees
Exceo uma condio anormal que
surge em uma seqncia de cdigo
em tempo de execuo.
O comando Try tem a seguinte forma:
try {
// bloco de cdigo
}catch (ExcecaoTipo1 e) {
//manipulador de ExcecaoTipo1
}catch (ExcecaoTipo2 e) {
//manipulador de ExcecaoTipo2
throw(e); //lana a exceo novamente
} finally {
}
Programao Orientada a Objetos

Excees no-tratadas
class Exc0 {
public static void main(String args[ ]){
int d = 0;
int a = 42/d;
}
}

Usando try e catch


class Exc0 {
public static void main(String args[ ]){
try{
int d = 0;
int a = 42/d;
} catch (ArithmeticException e) {
System.out.println(diviso por zero);
}
}}

Prof: Augusto Dantas

Excees
Vrias clusulas catch
class MultiCatch {
public static void main (String args[ ]){
try{
int a = 0;
System.out.println("a = " + a);
int b = 42 / a;
int c[ ] = { 1 };
c[42] = 99;
}
catch(ArithmeticException e){
System.out.println("div por 0: " + e);
}
catch(ArrayIndexOutOfBoundsException e){
System.out.println("Estouro ndice array " +
} }}
Programao Orientada a Objetos

Prof: Augusto Dantas

Atividade
Fazer os exerccios de 1 a 5 da lista 02.
Ler o Captulo 3,4,5 do Deitel e Fazer os
exerccios.
Equipe de no mximo 4 pessoas.

Programao Orientada a Objetos

Prof: Augusto Dantas

Funes
Math.
ceil(), floor(), max(), min(), sqrt(), pow(), random()

Funes String
length(), charAt(), toUpperCase, toLowerCase(),
substring(), trim(), replace(), equals(), compareTo()

Programao Orientada a Objetos

Prof: Augusto Dantas