Académique Documents
Professionnel Documents
Culture Documents
Objetos em
Parte 1
Fundamentos de Java
2
Introduo
Motivaes para Uso da Orientao
a Objetos
uso de abstrao de dados simplifica
o processo de modelagem
paradigma nico para anlise, projeto
e implementao
reduo de custos de
desenvolvimento atravs do reuso de
cdigo
reduo de custos de manuteno
atravs da separao entre interface
e implementao 3
Introduo
Motivaes para o Uso de Java
Propsito geral
Bem projetada
Orientada a objetos
Confivel
Relativamente fcil
ou seja, relativamente difcil ;-)
Segura
4
JVM
Program
Compila
a Fonte Bytecodes
dor
Interpreta
dor Processa
(program dor
a
executve
Combina compilao
l) e interpretao
Vantagens
Execuo rpida
Portabilidade
Introduo 5
A Plataforma Java
Baseia-se na JVM
Executveis escritos em bytecodes
Idia fundamental:
write once, run anywhere
Linguagem Java a parte central
da plataforma
Introduo 6
Ambiente de Execuo
Bytecode
s
J J J J
V JIT V JIT V JIT V JIT
M M M M
Introduo 7
Caractersticas de Java
Orientada a Objetos
com exceo dos tipos primitivos,
tudo so classes e objeto
no existe o conceito de funes ou
procedimentos independentes
reuso de cdigo atravs de
bibliotecas de classes
bem mais simples que C++
Introduo 8
Caractersticas de Java
Portvel
Arquitetura baseada na JVM
Padro rgido da linguagem
programas fontes so os mesmos
fixa o tamanho e intervalos dos tipos bsicos
fixa o comportamento dos operadores
biblioteca de classes padronizada
Introduo 9
Caractersticas de Java
Confivel
orientao a objetos induz o
programador a prticas de
programao confiveis
ausncia de ponteiros (no permite a
manipulao direta de endereos de
memria)
mecanismo de tratamento de
excees
verificao extensiva em tempo de
compilao e de execuo
Introduo
No elimina necessidade de boa prtica 10
Caractersticas de Java
Dinmica
classes so carregadas sob demanda
Distribuda
suporte atravs de bibliotecas de alto
nvel
invocao de mtodos de objetos
remotos
Applets
programas especiais carregados e
executados atravs de Web browsers
Introduo 11
atualizao de cdigo sem distribuio
Caractersticas de Java
Segura
Vrias camadas de controle de
segurana contra cdigo malicioso
no permite ao programador manipular
endereos
interpretador Java realiza verificao de
bytecodes (se no contm cdigo ilegal)
sempre que cdigo no confivel
carregado
uso de sandbox (acesso limitado aos
recursos locais)
assinatura digital criptografada
Introduo 12
Caractersticas de Java
Eficiente
Embora interpretada
20 vezes mais lenta que equivalente em
C
satisfaz grande parte das aplicaes
Interpretadores Java podem incluir
compiladores de bytecodes JIT
Pode-se escrever partes do programa
em C/C++
Pode-se usar compilador especfico para
plataforma de execuo
Introduo
Nunca ser igual a C 13
Caractersticas de Java
Suporta Concorrncia
rotinas mltiplas concorrentes
(threads)
elementos para sincronizao
Introduo 14
Componentes do JDK
Compilador (javac)
Interpretador (java)
Visualizador de applets
(appletviewer)
Bibliotecas (packages)
Gerador de documentao
(javadoc)
Depurador de programas (jdb)
Ambiente de execuo (jre)
Introduo 15
Primeiro Exemplo
//Eco.java
import java.io.*;
public class Eco {
public static void main(String[] args) {
for (int i=0; i < args.length; i++)
System.out.print(args[i] + " ");
System.out.println();
}
}
Aplicao
Salvar como arquivo Eco.java
Introduo 16
Primeiro Exemplo
Introduo 17
Tipos, Variveis e
Operadores
Tipos primitivos e compostos
Variveis
declarao
escopo
tempo de vida
Operadores
quais so e como operam
precedncia e associatividade
18
Tipos Primitivos
No so considerados objetos
Alocados na pilha
Possuem mesmo tamanho e
caractersticas,
independentemente de plataforma
8 tipos:
boolean, char
byte, short, int, long
float, double
Tipos, Vars e Ops 19
Tipos Inteiros
Tipo Tamanho
Alcance
Byte 8 bits -128 at 127
short 16 bits -32.768 at 32.767
int 32 bits -2.147.483.648 at 2.147.483.647
long 64 bits -9223372036854775808 at 9223372036854
Sada:
i: 127
i: -128
Tipos, Vars e Ops 21
Tipos Ponto Flutuante
Tipo Tamanho Alcance
float 4 bytes 3.402823 E+38F
aprox.
double8 bytes 1.79769313486231 E+308
aprox.
Sada:
123.000087513252
123.000084
Representao de Caracteres
Individuais
Tamanho de 16 bits
Tabela Unicode
cdigo numrico sem sinal (at 32768
caracteres)
Internacionalizao
compatvel com a tabela ASCII
Tipos, Vars e Ops 24
Tipo Caractere
Tabela Unicode
compatvel com a tabela ASCII
valor literal de um caractere
limitado por aspas simples: a
caracteres especiais e sem
representao visual
precedidos por barra invertida: \n, \
uso de escapes
\u0061 \141 a
uso como identificador (s escape
\uxxxx)
Tipos, Vars
inte Ops
b\u0061 = 10; // int ba = 10; 25
Tipo Caractere
Tabela Unicode
cuidado com uso de escapes
String s = \;
String s1 = \u0022; //
String s2 = \u005c\u0022 // \
caracteres especiais
Representao Significado
\n Pula linha (newline ou linefeed)
\r Retorno de carro (carriage return)
\b Retrocesso (backspace)
\t Tabulao (horizontal tabulation)
\f Nova pgina (formfeed)
Tipos, Vars e Ops 26
\ Apstrofe
Tipo Caractere - Exemplo I
public class charTeste {
Exemplo
public class ternario {
static public void main (String[] args)
{
int i = 7;
int j = i < 10 ? (2*i) : (i); // faz j = 2*i
System.out.println(i: + i); // i: 7
System.out.println(j: + j); // j: 14
}
}
O b j1 O b j2 O b j2
class shortExplo
{
public static void main ( String[] args )
{
short valor = 32;
System.out.println(valor + " um short!");
}
}
class charExplo
{
public static void main ( String[] args )
{
char ch = 'A' ;
System.out.println("Um caracter: " + ch );
}
}
Mude 'A' no programa por 'AA' e compile-o. Agore mude 'AA' por
novamente.
class byteExplo
{
public static void main ( String[] args )
{
byte a, b, c;
b = 10;
c = 15;
a = b + c;
System.out.println("Um byte: " + a );
}
}
Sequenciais
Separadas por ponto e vrgula ( ; )
Bloco { } permite agrupar diretivas
Mltiplas
Contr e Prog Basvariveis de controle 65
for - Estrutura Geral
in ic ia liz a o
v e r d a d e ir o
e x p re s s o
d ir e tiv a
l g ic a
f a ls o
in c r e m e n t o /
d e c re m e n to
e x p re s s o f a ls o v e r d a d e ir o e x p re s s o f a ls o
l g ic a l g ic a
v e r d a d e ir o
d ir e t iv a 1 d ir e t iv a 1 d ir e tiv a 2
e x p re s s o
l g ic a
caso 1 caso 2 d e fa u lt
e x p re s s o fa ls o
l g ic a
d ir e tiv a
v e r d a d e ir o
v e r d a d e ir o
d ir e tiv a
e x p re s s o
l g ic a
fa ls o
while do-while
Objetos e Classes
Subtipos e Herana
Polimorfismo
77
Histrico
Linguagem SIMULA (anos 60), derivada do ALGOL e
desenvolvida no Centro Noruegus de Computao,
por Kristen Nygaard e Ole-Johan Dahl.
A SIMULA era utilizada para simulaes e foi a
pioneira na utilizao de classes e subclasses,
semelhantes s usadas atualmente em POO.
SMALLTALK (anos 70), foi a primeira linguagem
autntica orientada a objetos. Foi desenvolvida por
cientistas do Xerox Palo Alto Research Center (Xerox
PARC).
Cada elemento do SMALLTALK tratado como sendo
um objeto. Esta linguagem puramente OO.
78
Histrico
C++, dos laboratrios da AT&T Bell, criada por
Bjarne Stroustrup, uma expanso da linguagem C,
muito popular e conhecida.
Suporta POO, mantendo as caractersticas do C
tradicional.
Fcil transio do C para o C++.
79
Linguagem Java
uma linguagem de programao de propsito geral,
orientada a objetos e adequada para a Internet.
Utilizada para o desenvolvimento de qualquer tipo de
Applets JAVA
80
Conceitos
Definio: o termo orientao a objetos significa
organizar o mundo real como uma coleo de objetos
que incorporam estrutura de dados e um conjunto
de operaes que manipulam estes dados.
Polimorfismo
Herana
81
Objetos
uma entidade lgica que contm dados e cdigo
para manipular esses dados.
Exemplos:
82
Objetos
Classes:
um tipo de dado, como os j conhecidos, para
declarar variveis.
Uma varivel de uma classe chamada de Objeto.
83
Objetos
VARIVEIS DE CLASSE VARIVEIS DE INSTNCIA
DADOS
DADOS
MTODOS
MTODOS
INSTNCIA DE
CLASSE UMA CLASSE
84
Objetos
Objetos interagem e comunicam-se atravs de
mensagens...
...as mensagens identificam os mtodos a serem
executados no objeto receptor
85
Mensagens e Mtodos
Para invocar um mtodo de um objeto, deve-se enviar uma
mensagem para este objeto.
Para enviar uma mensagem deve-se:
identificar o objeto que receber a mensagem
Um objeto possui:
um estado (definido pelo conjunto de valores dos seus
86
Abstrao
Focalizar o essencial, ignorar propriedades acidentais
atravs de mtodos.
No precisamos saber como as variveis de instncia so
88
Objetos - Encapsulamento
Todo o acesso aos dados do objeto feito atravs
da chamada a uma operao (mtodo) da sua
interface
Mudanas na implementao de um objeto, que
preservem a sua interface externa, no afetam o
resto do sistema.
A interface (pblica) de um objeto declara todas as
operaes permitidas (mtodos)
89
Polimorfismo
O Polimorfismo ocorre quando uma
mesma mensagem chegando a
objetos diferentes provoca respostas
diferentes.
90
Polimorfismo
MENSAGEM
OBJETO 1 OBJETO 2
AO 1 AO 2
91
Herana
o processo em que CLASSE BASE
um objeto pode AB
adquirir as
caractersticas de
outro objeto. Caractersticas
Herana Simples: AB Herdadas
AB
um objeto herda as C
caractersticas de D E F
uma nica classe. CLASSES DERIVADAS
Herana Mltipla:
uma objeto herda
caractersticas de
mais de uma classe.
92
Herana
Exemplo:
93
Termos Tcnicos
Relacionados
Ligao Dinmica:
o processo de ligar (link) um programa com suas
bibliotecas durante sua execuo.
Nas linguagens convencionais, a ligao esttica,
isto , todas as conexes ocorrem antes da
execuo do programa.
Na ligao dinmica, as bibliotecas so carregadas e
descarregadas da memria conforme solicitadas
durante a execuo do programa.
No ambiente Windows, essas bibliotecas possuem a
extenso DLL (Dynamic Link Library).
94
Ligao Esttica
*.CPP *.OBJ
FONTE OBJETO
COMPILAO
LINK EXECUTVEL
*.EXE
BIBLIOTECAS
*.OBJ
*.LIB
95
Ligao Dinmica
EXE
FONTE
EXECUTVEL
OU
LIGAO
ESTTICA
DLL DLL
96
Termos Tcnicos
Relacionados
Programao Visual
a maneira de se programar desenhando os
orientao a objetos.
Mtodos Construtores e Destrutores
Mtodos Construtores: alocam dinamicamente na
memria, liberando-a.
A alocao das instncias dinmica.
97
Mtodos Construtores e
Destrutores
MEMRIA
INSTNCIA
CLASSE DA CLASSE
OBJETO
NA MEMRIA
MTODO
MTODO DESTRUTOR
CONSTRUTOR
98
Termos Tcnicos
Relacionados
Persistncia:
o tempo que um objeto permanece na memria.
99
POO x Tcnicas
Tradicionais
Mtodos Procedimentos e
funes
Variveis de Instncia Dados
Mensagens Chamadas de
procedimento e funes
Classes Tipos de Dados
Herana No existe
Chamadas sob controle Chamada sob controle
do sistema do programador
100
Propriedades
As propriedades NO SO variveis de instncia.
As propriedades chamam mtodos que alteram as
variveis de instncia.
Quando atribumos um dado a uma propriedade,
chamado um mtodo SET.
Quando pegamos um dado, chamado um mtodo GET.
Exemplos:
objeto.propriedade = dado =
valor objeto.propriedade
Isto equivale a: Isto equivale a:
objeto.SET_prop(valor) objeto.GET_prop(dado)
101