Вы находитесь на странице: 1из 69

INF01057

Programao Orientada a Objeto


Departamento de Inform>ca Aplicada - UFRGS

AULA 03
Introduo Programao Java

Profa. Mariana Recamonde Mendoza


Agenda

Recordando os principais conceitos de POO

Caracters@cas gerais da linguagem Java

Estrutura de programas e classes em Java



Elementos bsicos da linguagem Java

INF01057 - Programao Orientada a Objeto 2


Agenda

Recordando os principais conceitos de POO

Caracters@cas gerais da linguagem Java

Estrutura de programas e classes em Java



Elementos bsicos da linguagem Java
Ao nal da aula, voc dever:
v Comear a se familiarizar com a estrutura de programas em Java, e a sintaxe
da linguagem
v Aprender a declarar e testar classes em Java

INF01057 - Programao Orientada a Objeto 3


Relembrando
Objeto: mdulo construtor bsico
sistema uma coleo de objetos cooperantes que se comunicam
para a@ngir um obje@vo

Objeto: viso unicada dos aspectos est@cos e dinmicos


estrutura (estado): dados/atributos
comportamento: operaes

Cooperao entre objetos do @po cliente-servidor


cada objeto pe disposio da comunidade um conjunto de servios
(operaes)
servidor: servios
objetos requisitam servios a outros objetos
cliente: requisies
princpio da terceirizao

INF01057 - Programao Orientada a Objeto 4


Relembrando
Objeto
iden@dade:
imutvel ao longo de toda vida do objeto
atribudo pelo sistema, inacessvel, usado internamente
estado (estrutura)
valores assumidos por propriedades em um dado momento
pode variar ao longo da vida do objeto
comportamento
servios (operaes) que o objeto sabe realizar
alguns servios resultam na alterao do estado do objeto
unidade existente exclusivamente em tempo de execuo

INF01057 - Programao Orientada a Objeto 5


Relembrando
Classe: descrio das caracters@cas comuns a vrios objetos
estrutura
propriedades relevantes
atributos, variveis
comportamento
operaes disponveis sobre os dados
mtodos
unidade de descrio e execuo
todo objeto instncia de uma classe

INF01057 - Programao Orientada a Objeto 6


Relembrando
Mensagem
nico meio de comunicao entre objetos
requisio de um servio
analogia: chamada de subro@na
formato da mensagem
receptor
operao
parmetros (opcional)
um objeto s responde s mensagens que entende
operao denida na interface pblica

INF01057 - Programao Orientada a Objeto 7


Interface e implementao resumidos
Mascaramento de informaes (informa@on hiding)

Interface
servios que o objeto sabe oferecer (O QU?)
operaes
pblica
Foco do projeto OO

Implementao
implementao da estrutura e do comportamento (COMO?)
atributos/variveis
cdigo para operaes da interface (mtodos pblicos)
operaes internas (mtodos privados)
Foco da implementao OO

Uma mesma interface pode ser implementada de vrias maneiras!

INF01057 - Programao Orientada a Objeto 8


Como funciona tudo isto em Java?

INF01057 - Programao Orientada a Objeto 9


Java: apresentao
Java como linguagem de programao:
Evoluo de C++
Segue de forma bastante completa o paradigma OO
Portvel, robusta
Desenvolvimento de aplicaes locais, centralizadas e
distribudas

Java como plataforma:


Ambiente de execuo neutro (JVM - Java Virtual Machine) para
diferentes plataformas

INF01057 - Programao Orientada a Objeto 10


Caracters@cas
Java tanto compilada quanto interpretada.
O compilador transforma o programa em bytecodes
(instrues de mquina compreendidas pela Java Virtual
Machine), que so transformados em linguagem de mquina
pelo interpretador
Passos para escrita de programas em Java:

MeuPrograma.java

MeuPrograma.c;ass

INF01057 - Programao Orientada a Objeto 11


Linguagem compilada
Ex: C

Figura: Prof. Pedro Velho

INF01057 - Programao Orientada a Objeto 12


Linguagem interpretada
Ex: PHP, JavaScript

Figura: Prof. Pedro Velho

INF01057 - Programao Orientada a Objeto 13


Java
uma linguagem compilada e interpretada

Figura: Prof. Pedro Velho

INF01057 - Programao Orientada a Objeto 14


Java
Java compreende:
uma linguagem de programao: a linguagem Java dene a sintaxe e
semn@ca necessrias para funcionamento da linguagem de
programao, especicando @pos primi@vos, if/else, declarao de
classe, excees, regras de escopo de variveis e etc...

uma JVM (Java Virtual Machine): interpretador Java, que executa o


Java bytecode

uma API (Java Applica>on Programming Interface): conjunto de


classes incluidas no Ambiente de Desenvolvimento Java, como String,
classes Collec@on e classes para interface grca
hqps://docs.oracle.com/javase/7/docs/api/

PC-compatible Power Macintosh


15
Windows NT System 8
Ambientes de programao
JDK
Kit de desenvolvimento Java fornecido livremente pela Oracle/
Sun (compilador, interpretador, u@litrios, etc)
hqp://www.oracle.com/technetwork/java/javase/downloads/
index.html
Todos os ambientes de desenvolvimento necessitam do ambiente
JDK instalado para funcionar
BlueJ (Ensino de Java e OO) adotado nesta disciplina
hqp://www.bluej.org (disponvel download do instalador + JDK)
Eclipse (Desenvolvimento prossional)
hqp://www.eclipse.org
NetBeans (Desenvolvimento prossional)
hqp://www.netbeans.org/

INF01057 - Programao Orientada a Objeto 16


Estrutura de Programas Java
Classe
uma especicao que descreve a estrutura de dados e o
comportamento comuns a vrios objetos
quando instanciada, um objeto criado, o qual se comporta
como descrito em sua especicao
como um @po de dado, criado pelo programador

Pacote (Package)
uma coleo de classes e interfaces relacionadas que controlam
nveis de acesso/visibilidade
so usadas por programadores como unidades de organizao
de aplicaes

Aplicao
uma coleo de classes (e pacotes) + mtodo main

INF01057 - Programao Orientada a Objeto 17
Estrutura de Programas Java
A denio de classes a base da programao OO
Um programa em Java corresponde a, no mnimo, uma classe
PrimeiroPrograma.java
public class PrimeiroPrograma {

public static void main(String[] args) { public class


//declaracoes de variaveis (se houver) MeuPrograma

//comandos
System.out.println(Meu primeiro programa Java!");
}

Toda aplicaco java comea por um ponto de entrada, que


corresponde ao mtodo main().

INF01057 - Programao Orientada a Objeto 18


Estrutura de Programas Java
A denio de classes a base da programao OO
Um programa em Java corresponde a, no mnimo, uma classe
PrimeiroPrograma.java
public class PrimeiroPrograma {

public static void main(String[] args) { public class


//declaracoes de variaveis (se houver) MeuPrograma

//comandos
System.out.println(Meu primeiro programa Java!");
}

Para compilar e executar manualmente:


javac PrimeiroPrograma.java gera o Bytecode (PrimeiroPrograma.class)
java PrimeiroPrograma invoca a mquina virtual

INF01057 - Programao Orientada a Objeto 19


Estrutura de Programas Java
Pontos a observar:

public class PrimeiroPrograma {

public static void main(String[] args) {


//declaracoes de variaveis (se houver)

//comandos
System.out.println(Meu primeiro programa Java!");
Assinatura do mtodo }

main sempre deve ser }


public, sta@ce void,
e incluir o argumento
String[] args
Linhas de cdigo devem terminar
com ponto e vrgula
Cada classe pode ter somente um mtodo main() com a assinatura
public static void main(String[] args)
Ponto de entrada de uma aplicao, denido pela JVM
Primeiro mtodo invocado na classe executada (java PrimeiroPrograma)
INF01057 - Programao Orientada a Objeto 20
Estrutura de Programas Java
Classes so descritas em arquivos (texto)
Um arquivo pode conter uma ou mais classes
Mas apenas uma classe pode ser public (veremos mais adiante o que
isto signica...)

Por um questo de melhor organizao do projeto, recomenda-se escrever


uma classe por arquivo (veremos algumas excees posteriormente...)
Recomendado MeuPrograma.java
MinhaClasse.java MeuPrograma.java
public class
MeuPrograma
public class public class
MinhaClasse MeuPrograma
class
MinhaClasse

INF01057 - Programao Orientada a Objeto 21


Estrutura de uma Classe



class NomeDaClasse {

// declaracao dos atributos (variaveis)


// declaracao dos metodos

}



Obs:
// comentrio de linha

/* ... comentrio em
vrias linhas ...
*/
INF01057 - Programao Orientada a Objeto 22
Estrutura de uma Classe

nome da classe sempre inicia
palavra em maisculo
reservada
da linguagem
class NomeDaClasse {

// declaracao dos atributos (variaveis)


// declaracao dos metodos

}


nome dos atributos e mtodos
Obs: sempre inicia em minsculo
// comentrio de linha

/* ... comentrio em
vrias linhas ...
*/
INF01057 - Programao Orientada a Objeto 23
Estrutura de uma Classe
Um exemplo de classe simples

class ClasseSimples {

// declaracao dos atributos (variaveis)


int valor;
int limite;

// declaracao dos metodos

// incrementa valor se nao ultrapassar limite estabelecido


void incrementaValor(int aumento) {
int temp;
temp = valor + aumento;
if (temp <= limite) {
valor = temp;
}
}
}

INF01057 - Programao Orientada a Objeto 24


ClasseSimples
Estrutura de uma Classe int valor
int limite

Um exemplo de classe simples void incrementaValor (int)

class ClasseSimples {

// declaracao dos atributos (variaveis)


int valor;
int limite;

atributos // declaracao dos metodos


(variveis de // incrementa valor se nao ultrapassar limite estabelecido
instncia) void incrementaValor(int aumento) {
int temp;
temp = valor + aumento;
if (temp <= limite) {
varivel local valor = temp;
}
}
}

INF01057 - Programao Orientada a Objeto 25


Pacotes de classes Java
Coleo de classes localizadas na mesma estrutura hierrquica de
diretrios, normalmente provendo uma srie de facilidades
relacionadas que podem ser usadas em programas

@l na organizao de pacotes em grandes aplicaes, para evitar


problemas com nomes duplicados e permi@r a localizao do
cdigo da classe de forma eciente

Reproduzem a ideia de bibliotecas de cdigo de outras linguagems


de programao (ex: math.h, em C)

Cada pacote guardado em um diretrio diferente.


Exemplo: o package java.lang est armazenado no diretrio java/lang

INF01057 - Programao Orientada a Objeto 26


Pacotes de classes Java (API)
Quase tudo em Java representado atravs de objetos, e os
programas tm extrema dependncia de alguns objetos pr-
denidos. O prprio cdigo base da tecnologia Java est todo
estruturado em pacotes (ver especicao da API)

Alguns dos pacotes mais comuns:


java.lang: inclui classes fundamentais linguagem Java, entre elas
Object e String (carregado automa@camente pelo programa)
java.io: operaes de input e output
java.u>l: classes diversas, incluindo colees de dados (Vector,
Map,ArrayList, etc), data/hora, cdigo legado, etc
java.applet: usadas na implementao de applets
java.awt: suportam aplicaes em janelas (windowed)
java.awt.event: gerncia de eventos (movimento do mouse, click em
tens de menu, etc.)

Para usar um pacote: import java.util;

INF01057 - Programao Orientada a Objeto 27


Localizao de Classes
Classes do usurio: diretrio local ou pacote
classes podem usar outras classes do mesmo diretrio/pacote

Classes de biblioteca: diretrio \lib

Variveis de ambiente (se for u@lizar o ambiente padro JDK):


PATH: J2SDK... \bin
java.exe e javac.exe
CLASSPATH: J2SDK... \lib; .
classes de biblioteca e do usurio

INF01057 - Programao Orientada a Objeto 28


Elementos bsicos da linguagem Java
Ateno: Revisaremos apenas aspectos principais da linguagem.
Recomenda-se a leitura do material complementar disponvel
no Moodle:


Revisaremos:
Variveis, iden@cadores e @pos primi@vos
Declarao e inicializao de variveis
Expresses
Controles de uxo

INF01057 - Programao Orientada a Objeto 29


Elementos bsicos: Variveis e Tipos
Variveis so u@lizadas para armazenar dados a serem
manipulados e processados durante a execuo do programa
Local de armazenamento que possui um nome (iden@cador)
e guarda um valor de um >po especco de dado

Tm diferentes escopos (parte do programa onde so visveis)


variveis de instncia (varivel, membro de instncia): locais a
um objeto
variveis de classe (membro de classe): compar@lhadas por
todas instncias de uma dada classe
variveis temporrias (varivel local): denidas para auxiliar na
implementao de mtodos, e s existem durante sua execuo

Toda varivel tem um @po que no pode ser mudado, uma


vez declarado

INF01057 - Programao Orientada a Objeto 30


Elementos bsicos: Variveis e Tipos
Regras para nomes de variveis
Comea com letra, _ ou $ (no usual)
no pode ser uma palavra reservada da linguagem
abstract do implements private throw
boolean double import protected throws
break else instanceof public transient
byte extends int return true
case false interface short try
catch final long static void
char finally native super volatile
class float new switch while
continue for null syncronized
default if package this

Convenes
comear com letra minscula, e juntar palavras, iniciando cada nova
palavra com letra maiscula
privilegiar legibilidade (mesmo que o nome que grande)
meuContador, isVisible, oFilmeAvatarGanhouMuitosPremios

INF01057 - Programao Orientada a Objeto 31


Elementos bsicos: Variveis e Tipos
Tipos de Dados:
Java uma linguagem @pada: variveis, argumentos e retorno
de mtodos tm @po

Tipos Primi@vos pr-denidos na linguagem


Variveis de @po primi@vo

Classes da API ou classes escritas pelo programador


Variveis de @po referncia

INF01057 - Programao Orientada a Objeto 32


Elementos bsicos: Variveis e Tipos
Tipos Primi>vos:

So @pos atmicos, indivisveis, no denidos com base em
outros @pos de dados.

Na linguagem Java, apenas os @pos de dados primi@vos no
so objetos
por essa razo, s vezes, Java no considerada uma linguagem
puramente orientada a objetos.

INF01057 - Programao Orientada a Objeto 33


Elementos bsicos: Variveis e Tipos
Tipos Primi>vos: existem 8 @pos primi@vos em Java

INF01057 - Programao Orientada a Objeto 34


Elementos bsicos: Variveis e Tipos
Tipos Primi>vos: existem 8 @pos primi@vos em Java

Regra geral:
Use int para inteiro e double para nmero com
ponto utuante. Apenas use byte, short, long e
float se houver uma boa razo para escolher uma
preciso especca.

U@lize sempre int para contagem e indexao

Use int sempre que possvel. Use @pos de ponto


utuante apenas se o nmero contm uma parte
fracionria.

INF01057 - Programao Orientada a Objeto 35


Elementos bsicos: Declarao de Variveis
Segue a sintaxe: tipo nomeVariavel;

Somente avisa ao compilador que a varivel de certo nome


ser usada para representar valores de um determinado @po
int contador; (@po primi@vo)
Pessoa correntista; (@po referncia)

Java permite complementos na declarao de variveis para


diferenciar instncia vs. classe, ou denir visibilidade (veremos
em detalhe nas prximas aulas)
public static int contador;
protected Person correntista;

INF01057 - Programao Orientada a Objeto 36


Elementos bsicos: Declarao de Variveis
Importante

Para variveis de >po primi>vo: a declarao aloca o espao de
memria necessrio para armazenar o valor de acordo com o @po
declarado.
O valor que elas guardam so o real contedo da varivel.

Para variveis de >po referncia (@pos denidos pelo
programador): a declarao no cria instncias dessas classes, mas
sim uma referncia para uma instncia da classe!
O valor que elas guardam no o objeto propriamente dito, mas uma
referncia a uma instncia da classe declarada (um endereo de
memria)

INF01057 - Programao Orientada a Objeto 37


Elementos bsicos: Declarao de Variveis
Memria Stack e Memria Heap
As variveis de @po primi@vo e as referncias para objetos (varivel
@po referncia) so armazenadas na memria Stack
Estrutura de dado do @po Pilha Last in, First out (LIFO)

Organizao da memria stack
Variveis de @po primi@vo ocupam o nmero de bytes de acordo com
o @po declarado
Variveis de @po referncia ocupam sempre um nmero constante
de bytes que varia conforme a arquitetura do Sistema Operacional
Em arquiteturas de 32 bits ocupar 4 bytes
Em arquiteturas de 64 bits ocupar 8 bytes.

O contedo das variveis de @po referncia armazenado na


memria Heap

INF01057 - Programao Orientada a Objeto 38


Elementos bsicos: Inicializao de Variveis
Inicializao de Variveis de Tipo Primi@vo
declarao do valor inicial com operador de atribuio;

Em alguma poro do cdigo:


int contador; // declarao
boolean flag;
......
contador = 0; // inicializao
flag = true;

Junto com a declarao


int contador = 0; // declarao E inicializao
boolean flag = false;

INF01057 - Programao Orientada a Objeto 39


Elementos bsicos: Inicializao de Variveis
Inicializao de Variveis de Tipo Referncia
No basta declarar um objeto, pois apenas criamos uma referncia ao
mesmo.
Um objeto PRECISA ser criado, u@lizando a operao new
Mensagem new enviada a uma classe cria uma instncia desta classe

Declarao
Ponto origem;

Criao
origem = new Ponto (); // construtor denido sem argumentos

Declarao e inicializao (criao)


Ponto origem = new Ponto ();
INF01057 - Programao Orientada a Objeto 40
Declarao e inicializao de variveis: exemplo
Tipo Primi>vo
1 2 3 > int y;
> int x = 0; > x = 10;
> y = x;

y 10
x 0 x 10 x 10
STACK STACK STACK

4 5
> double min = 0.5; > boolean done = true;

min 0.5 done true


y min 0.5
10
x y 10
10
STACK x 10
STACK

Variveis adicionadas na ordem em que so declaradas


INF01057 - Programao Orientada a Objeto 41
Declarao e inicializao de variveis: exemplo
Tipo Primi>vo e Tipo Referncia class Contador {

1 > int x = 30;


2 > Contador c1;
// declaracao dos atributos
int valor=0;

// declaracao dos metodos


void incrementaContador() {
valor = valor + 1;
c1 null }
}
x 30 x 10
STACK STACK HEAP

3 4
> c1 = new Contador(); > c1. incrementaContador();
> Contador c2 = new Contador()
c2:Contador
c1:Contador c2 4a0ac5 c1:Contador valor 0
c1 2f996f valor c1 2f996f valor
0 1
x 10 x 10
STACK HEAP STACK HEAP

A memria Heap serve para armazenar os objetos propriamente ditos


A referncia aos objetos armazenada na Stack
A memria Heap no possui organizao lgica como a Stack
INF01057 - Programao Orientada a Objeto 42
Conveno geral para nomes
Java dis@nge entre letras maisculas e minsculas
Exemplo: pessoa difere de Pessoa

Nomes de classes iniciam com maiscula


Exemplo: class Pessoa

Nomes de variveis iniciam com minsculas e aps usam


maisculas
Exemplo: int idade, idadeMinima

Nomes de mtodos so verbos que iniciam com minscula e


aps usam maisculas
Exemplo: listaDados( )

INF01057 - Programao Orientada a Objeto 43


Elementos bsicos: Converso de @pos
Type cas@ng

Dois @pos possveis de converso em Java:

Converso explcita: atravs de um operador na forma de prexo:


(novo_tipo) operando, onde (novo_tipo) chamado cast

Converso implcita: executada pelo operador automa@camente


quando no houver perda de preciso

INF01057 - Programao Orientada a Objeto 44


Elementos bsicos: Converso explcita
Diz-se ao compilador para truncar o valor, assumindo a perda
de preciso

menor preciso = (cast) maior preciso

Tipo primi@vo

double x = 9.97; Erro de compilao


int i = x;

double x = 9.97;
int i = (int) x; i = 9

INF01057 - Programao Orientada a Objeto 45


Elementos bsicos: Converso implcita
Realizada automa@camente pelo compilador, promovendo
um valor de menor preciso para um @po de maior preciso,
para evitar perda de preciso
maior preciso = menor preciso

Ordem (maior para menor):
double > float > long > int > short > byte

Exemplos:
double d = 3.1415; int i=5;
int i = d; //no compila double d = i; //ok
double d = 5;
int i = d; //no compila
INF01057 - Programao Orientada a Objeto 46
Elementos bsicos: Expresses
Operadores aritm@cos so muito semelhantes a C

notao inx (operador no meio de 2 argumentos)


= atribuio
+ soma
- subtrao
* mul@plicao
/ diviso
% resto da diviso

INF01057 - Programao Orientada a Objeto 47


Elementos bsicos: Expresses
Operaes atalho

++ soma + 1
-- decrementa 1

notao prxada: incrementa e executa


int x, y;
x = 3;
y = ++x; // incrementa x e depois usa o seu valor na atribuio: x e y valem 4

notao posxada: executa e incrementa


int x , y;
x = 3;
y = x++; // usa o valor de x e depois o incrementa: y vale 3, x vale 4

INF01057 - Programao Orientada a Objeto 48


Elementos bsicos: Expresses
Operadores Relacionais

> maior que


>= maior ou igual que
< menor que
<= menor ou igual que
== igual a
!= diferente de
Comparao Atribuio

Ateno:
== diferente de =
INF01057 - Programao Orientada a Objeto 49
Elementos bsicos: Expresses
Operadores Lgicos

&& e lgico
|| ou lgico
! negao
^ XOR

INF01057 - Programao Orientada a Objeto 50


Elementos bsicos: Controle de uxo
Trs estruturas bsicas para controle de uxo:

Sequencial Condicional (Deciso) Iterao (Repe@o)

INF01057 - Programao Orientada a Objeto 51


Elementos bsicos: Controle de uxo
Trs estruturas bsicas para controle de uxo:

Sequencial Condicional (Deciso) Iterao (Repe@o)

varivel de teste pode ser


if; if-else; if-else aninhados; switch int, byte, short, ou char
char oper; int num1, num2, result;
... ......
if (nota >= 60) { switch (oper) {
System.out.println(Parabens!"); case '+':
System.out.println(Aprovado!"); result = num1 + num2; break;
} else { case '-':
System.out.println(Reprovado"); result = num1 - num2; break;
} default:
System.err.println(Erro);
}

INF01057 - Programao Orientada a Objeto 52


Elementos bsicos: Controle de uxo
Trs estruturas bsicas para controle de uxo:

Sequencial Condicional (Deciso) Iterao (Repe@o)



while; do-while; for

while ( test ) { do { for (initialization; test; post-processing) {


// body; // body; // body;
} } }
while ( test ) ;

INF01057 - Programao Orientada a Objeto 53


Elementos bsicos: String
String: sequncia de caracteres, para representar textos
No um @po primi@vo, mas uma classe presente na API e
automa@camente carregada pelo Java (java.lang.String)
char genero = F;
String generoString = Feminino;
com S maisculo!

// declarao
String ola;

// instanciao
ola = new String(Al Mundo Java !");

// declarao e instanciao (mais prtico)


String ola = "Al Mundo Java !";
String nome = Fulano de tal";
Funo de impresso na tela:
// concatenao de strings (\n = pula linha)
> Al Mundo Java ! String aula = ola + "\npor " + nome;
por Fulano de Tal System.out.println(aula);

INF01057 - Programao Orientada a Objeto 54


Elementos bsicos: String
A classe String possui mais de 50 mtodos denidos.
Para a lista completa, ver a documentao. Alguns exemplos:
boolean equal(String s): retorna verdadeiro se as strings so
iguais
Strings1=Ola Mundo, s2=Ola Mundo!!;
s1.equal(s2); //retorna false

int length(String s): retorna tamanho da String


String s1=Maria;
s1.length() // retorna 5

boolean contains(String s): retorna verdadeiro se contm a


String contm sequncia s
String s1=Maria, s2=ia;
s1.contains(s2) // retorna true

INF01057 - Programao Orientada a Objeto 55
Exemplo: Operao matem@ca
Operao matem@ca u@lizando objetos e mensagens
Uma classe Numero representa uma en@dade numrica

public class Numero {


int num;

void inicializa(int x){


num = x;
}

void soma (int x) {


num = num + x;
}

void imprimeValor() {
System.out.println("Valor: "+num);
}
}

INF01057 - Programao Orientada a Objeto 56


Exemplo: Operao matem@ca
Operao matem@ca u@lizando objetos e mensagens
Uma classe Numero representa uma en@dade numrica

public class Numero { public class TesteSoma {


int num; public static void main(String args[]) {
Numero p = new Numero();
void inicializa(int x){ p.inicializa(5);
num = x; p.soma(4);
} p.imprimeValor();
}
void soma (int x) { }
num = num + x;
}

void imprimeValor() {
System.out.println("Valor: "+num); Inicializa-se o valor do
}
} atributo num do objeto
p, passando o valor 5

INF01057 - Programao Orientada a Objeto 57


Exemplo: Operao matem@ca
Operao matem@ca u@lizando objetos e mensagens
Uma classe Numero representa uma en@dade numrica

public class Numero { public class TesteSoma {


int num; public static void main(String args[]) {
Numero p = new Numero();
void inicializa(int x){ p.inicializa(5);
num = x; p.soma(4);
} p.imprimeValor();
}
void soma (int x) { }
num = num + x;
}

void imprimeValor() { Uma adio realizada enviando


}
System.out.println("Valor: "+num);
uma mensagem a um objeto
} representando um nmero.

A mensagem especica que a
operao desejada a adio e
tambm o valor a ser somado ao
objeto receptor.
INF01057 - Programao Orientada a Objeto 58
Exemplo: Operao matem@ca
Operao matem@ca u@lizando objetos e mensagens
Uma classe Numero representa uma en@dade numrica

public class Numero { public class TesteSoma {


int num; public static void main(String args[]) {
Numero p = new Numero();
void inicializa(int x){ p.inicializa(5);
num = x; p.soma(4);
} p.imprimeValor();
}
void soma (int x) { }
num = num + x;
}

void imprimeValor() {
System.out.println("Valor: "+num);
}
} x + y pode ser interpretado como a
mensagem soma enviada ao objeto x
com parmetro y

INF01057 - Programao Orientada a Objeto 59


Exemplo: Operao matem@ca
Operao matem@ca u@lizando objetos e mensagens
Uma classe Numero representa uma en@dade numrica

public class Numero { public class TesteSoma {


int num; public static void main(String args[]) {
Numero p = new Numero();
void inicializa(int x){ p.inicializa(5);
num = x; p.soma(4);
} p.imprimeValor();
}
void soma (int x) { }
num = num + x;
}

void imprimeValor() {
System.out.println("Valor: "+num); > java TesteSoma
} > Valor: 9
}

INF01057 - Programao Orientada a Objeto 60


Exemplo: Classe Empregado
Para registro de empregados de uma empresa
Nome da classe
public class Empregado {
//atributos
v String uma classe pr-
String nome; denida em Java
String cargo;
char sexo;
float salario; v Em Java, apenas os @pos de
//metodos dados primi@vos no so
//...
objetos.
public void imprimeDados(){
System.out.println("Nome.....:"+nome);
System.out.println(Cargo....:"+cargo);
System.out.println("Sexo.....:"+sexo);
System.out.println("Salario.....:+salario);

public void alterarCargo(String novoCargo){


cargo = novoCargo;
}
}
public dene o que de
acesso pblico. Estudaremos em
detalhes mais adiante...
INF01057 - Programao Orientada a Objeto 61
Exemplo: Classe Empregado
Para registro de empregados de uma empresa
Declarando e criando
public class Empregado { um objeto a par@r da
//atributos
String nome; public class TesteEmpregado { classe
String cargo; public static void main(String args[]) {
char sexo; Empregado e1;
float salario; e1 = new Empregado();
//...
//metodos e1.alterarCargo(Diretor);
//... e1.imprimeDados();
}
public void imprimeDados(){ }
System.out.println("Nome.....:"+nome);
System.out.println(Cargo....:"+cargo);
System.out.println("Sexo.....:"+sexo);
System.out.println("Salario.....:+salario); e1: Objeto
}

public void alterarCargo(String novoCargo){


cargo = novoCargo;
Empregado e1;
}
}

Empregado: Classe

INF01057 - Programao Orientada a Objeto 62


Exemplo: Classe Empregado
Para registro de empregados de uma empresa

public class Empregado {


//atributos
String nome; public class TesteEmpregado {
String cargo; public static void main(String args[]) {
char sexo; Empregado e1;
float salario; e1 = new Empregado();
//...
//metodos e1.alterarCargo(Diretor);
//... e1.imprimeDados();
}
public void imprimeDados(){ }
System.out.println("Nome.....:"+nome);
System.out.println(Cargo....:"+cargo);
System.out.println("Sexo.....:"+sexo);
System.out.println("Salario.....:+salario);
Enviando mensagens
ao objeto e1, para que
}
altere o cargo e imprima o
public void alterarCargo(String novoCargo){ registro completo (mtodos
cargo = novoCargo;
} que fazem parte da interface
}
pblica)

INF01057 - Programao Orientada a Objeto 63


No BlueJ
Faa dowload do arquivo Empregado.zip no Moodle, e abra no BlueJ
Classe

INF01057 - Programao Orientada a Objeto 64


No BlueJ
Faa dowload do arquivo Empregado.zip no Moodle, e abra no BlueJ

Clicar 2 vezes

preciso compilar o cdigo: clique com o


boto direito sobre a classe > Compile

INF01057 - Programao Orientada a Objeto 65


No BlueJ
Faa dowload do arquivo Empregado.zip no Moodle, e abra no BlueJ

Clicar para executar a


aplicao

INF01057 - Programao Orientada a Objeto 66


No BlueJ
Faa dowload do arquivo Empregado.zip no Moodle, e abra no BlueJ

Clicar para instanciar um


objeto

INF01057 - Programao Orientada a Objeto 67


No BlueJ
Faa dowload do arquivo Empregado.zip no Moodle, e abra no BlueJ

Objeto instanciado:
possvel executar
seus mtodos e
inspecionar seus
dados

INF01057 - Programao Orientada a Objeto 68


No BlueJ
1. Tente compilar e executar o cdigo fornecido

2. Crie e teste um mtodo para inicializar as informaes do empregado, que


sero passadas como argumento.
Exemplo: e1.inicializa(Fulano,Gerente,m,5.800);

3. Crie um objeto manualmente e inspecione seus dados antes e depois da


chamada ao mtodo de inicializao.

4. Tente alterar manualmente na funo main() os dados de um dos


empregados. Exemplo: e1.nome=Ciclano; Isto funciona?

5. Crie e inicialize uma varivel double, atribua esta varivel ao salrio do e1. O
que acontece? E se voc alterar o valor dessa varivel, o que acontece com o
salrio de e1?

6. Instancie um segundo objeto empregado, execute e2 = e1, e inspecione o


objeto e2. O que voc observa? Altere manualmente algum dado de e1 e
inspecione novamente o objeto e2. O que voc pode concluir?

INF01057 - Programao Orientada a Objeto 69

Вам также может понравиться