Você está na página 1de 10

UNIVERSIDADE PAULISTA (UNIP)

CAMPI: PARASO / CHACAR SANTO ANTNIO


DISCIPLINA: LINGUAGEM DE PROGRAMAO ORIENTADA A OBJETOS (LPOO)
PROF. MSC. VLADIMIR CAMELO
EXEMPLOS E EXERCCIOS DE JAVA (PRTICO E TERICO)

LINGUAGEM DE PROGRAMAO ORIENTADA A OBJETOS (POO)


Na programao estruturada, as metodologias para a construo de um sistema so:

(i) Quebrar a tarefa principal em subtarefas e estas em subtarefas menores, at que seja possvel
implement-las; (topo para a base)

(ii) Implementar procedimentos para resolver tarefas simples e depois agrup-los em procedimentos mais
complexos, at se chegar resoluo da tarefa principal. (base para o topo).
As trs das principais atividades envolvidas em um projeto orientado a objetos so:
(i) Identificao dos objetos envolvidos com o sistema a ser desenvolvido e sua representao em forma de
classes;
(ii) Identificao de suas caractersticas relevantes e sua representao em forma de atributos;
(iii) Identificao de aes realizadas e servios prestados por esses objetos e sua representao em forma
de mtodos.
Como pode ser notado, para compreender a POO preciso analisar o significado de alguns elementos como
objeto e classe. Mas para entend-los, dever tambm ser analisado o conceito de atributos e mtodos.
OBJETOS
Objeto qualquer entidade do mundo real que apresente algum significado, mesmo que tal entidade no se
constitua algo concreto ou palpvel. Por exemplo, livro, calado para os ps, cada pea de roupa utilizada, mesa,
cadeira, gato, cachorro, computador, caneta, disquete, caderno, carro, avio, etc.
As caractersticas, prprias de cada objeto so chamados de atributos. Os atributos so qualidades que permitem
distinguir um objeto de outros semelhantes. Por exemplo, um cachorro pode ser diferenciado de outros por vrios
atributos: cor, raa, altura, comprimento, etc. Em outro exemplo, um carro pode ser diferenciado pelos atributos:
marca, modelo, ano, cor, placa, chassi, etc.
H atributos compartilhados por dois objetos, assim como h atributos especficos de determinados objetos. Por
exemplo, existe uma infinidade de carros cuja cor vermelha, mas no pode haver 2 carros com a mesma placa.
Alm de possuir atributos, os objetos podem manifestar comportamentos. Estes comportamentos dizem respeito
s aes que os objetos podem realizar ou servios que eles podem prestar e so chamados de mtodos. As
pessoas tambm so objetos, pois todas elas possuem caractersticas (nome, idade, pai, me, peso, altura, etc.) e
tambm manifestam um comportamento atravs de aes (falam, andam, trabalham, estudam, dormem, etc.).
H tambm os chamados objetos abstratos, como as formas geomtricas, que so abstraes matemticas. No
h como encontrar um crculo, uma elipse, um quadrado, um retngulo ou um tringulo no mundo real, mas
apenas objetos que tenham essas formas. Isso significa que um crculo, por exemplo, no um objeto palpvel ou
concreto, mas ele existe e tem suas caractersticas prprias (raio, rea, etc.).
Ao elaborar um projeto de sistemas, um objeto pode ser representado por meio de elipses. O termos Um e
Uma foram utilizados para reforar a idia de que um objeto sempre uma entidade especfica. Um computador,
por exemplo, representa um computador especfico e no um conjunto de computadores.

representao de objetos
CLASSE
O mais importante na POO a identificao de grupos de objetos com atributos comuns. Por exemplo, apesar dos
diferentes valores de cada um de seus atributos, os cachorros possuem o mesmo conjunto de atributos: cor, raa,
altura, comprimento e peso. Isto faz com que eles pertenam mesma categoria.

Uma classe representa um grupo de objetos com caractersticas comuns e compem-se, basicamente, de
atributos e de mtodos. Os atributos representam as caractersticas dos objetos, e os mtodos representam as
aes que eles podem realizar ou servios que eles podem prestar.
As classes so representadas, graficamente, atravs de um retngulo dividido em trs partes, como mostra a
figura abaixo. A primeira parte contm a identificao da classe, neste exemplo Cliente. A segunda parte contm
os atributos da classe: Nome, Endereo, Telefone, E-mail, CPF e RG. A terceira parte contm os mtodos:
Compra(), Paga() e Devolve(). O par de parnteses auxilia a distingui-los dos atributos.

Representao de classes
OPERAES DE ABSTRAO
O processo de abstrao comea com a criao de uma classe para representar um conjunto de objetos dentro
de um sistema. As classes no devem incluir todos os atributos dos objetos e nem todas as suas aes e servios.
Somente devem incluir os atributos e as aes (ou servios) pertinentes ao papel a ser desempenhado dentro do
programa.
O processo de abstrao compe-se de um conjunto de operaes realizadas com a finalidade de representar
objetos do mundo real em forma de classes, de modo que eles possam interagir em um programa para realizar
determinadas tarefas. Com isto, deve-se identificar os atributos e mtodos relevantes de cada classe e eliminar os
atributos e mtodos desnecessrios.
A figura abaixo mostra o processo de abstrao, ou seja, retirada dos atributos e mtodos desnecessrios,
deixando somente os atributos e mtodos relevantes para da classe Cliente.

processo de abstrao
Criar classes que representem os aspectos relevantes de objetos apenas um passo no contexto do processo de
abstrao. H, na verdade, seis operaes de abstrao distintas a serem analisadas: (i) Classificao; (ii)
Instanciao; (iii) Generalizao; (iv) Especializao; (v) Agregao; (vi) Decomposio.
1. CLASSIFICAO VERSUS INSTANCIAO
A classificao a operao de abstrao por meio da qual so analisados os objetos do mundo real para
identificar suas caractersticas comuns e definir a que classe cada um deles pertence, ou seja, a classificao
refere-se criao de uma classe para representar vrios objetos que possuem os mesmos atributos e realizas as
mesmas aes.
A instanciao segue o caminho inverso. Ela caracterizada pela criao de objetos a partir de uma classe j
existente, ou seja, a operao de instanciao somente pode ser realizada depois de concluda a operao de
classificao. A figura abaixo mostra os dois processos discutidos acima.

classificao e instanciao
2. GENERALIZAO VERSUS ESPECIALIZAO
A generalizao a operao de abstrao atravs da qual se procede a anlise de um conjunto de classes e a
identificao de caractersticas comuns entre elas, com o objetivo de criar uma classe mais genrica para
representar os atributos e mtodos existentes em duas ou mais classes especficas.
A especializao segue o caminho inverso da generalizao. Ela se caracteriza pela criao de duas ou mais
classes especficas a partir de uma classe genrica para representar atributos e mtodos que so distintos entre
elas. A figura abaixo mostra os dois processos discutidos acima.

generalizao versus especializao


3. AGREGAO VERSUS COMPOSIO
Uma operao de agregao realizada quando um objeto utilizado como parte da composio de outro objeto.
Uma operao de decomposio diz respeito atividade voltada para a separao dos objetos que compem
outro objeto, isolando-os. A figura abaixo mostra os dois processos discutidos acima.

generalizao versus especializao

BIBLIOGRAFIA BSICA

Santos, Rui R. dos, Programando em Java 2 Teoria e Aplicaes, Rio de Janeiro, Axcel books, 1
edio, 2004.

Boente, A., Aprendendo a programar em Java 2 Orientado a objetos, Rio de Janeiro, Brasport, 1
edio, 2003.
BIBLIOGRAFIA COMPLEMENTAR

Morgan, Michael, Java 2, para programadores profissionais, Axcel books, 1 edio, 2004.

Deitel, H.M., Java, como Programar, So Paulo, Pearson, 1 reimpresso, 2006.

IMPLEMENTAO DE CLASSES
1. DECLARAO
Para criar uma nova classe basta abrir um novo arquivo-fonte e declar-la de acordo com a sintaxe a seguir.
[encapsulamento] [qualificador] class <nome da classe> ...
H dois tipos de classes: externa e interna. Classes externas so aquelas que possuem seus nomes coincidindo
com o nome dos arquivos fontes. Classes internas so aquelas escritas dentro das classes externas.
Os termos para encapsulamento e qualificador so opcionais, com exceo para a classe externa que deve
possuir o modificador public (pblico). Tanto o encapsulamento, quanto o qualificador possibilitam modificar o
tipo de acesso classe. Os modificadores de acesso a uma classe so: public, protected, friendly e private. As
formas de qualificar uma classe so: abstract (abstrata) e final (final).
Quando o modificador public, significa que a classe poder ser instanciada e utilizada livremente. Isso serve
tanto para classes externas, quanto para classes internas. O modificador protected no se aplica s classes
externas e significa que a classe pode ser utilizada apenas no mesmo package (pacote) ou em subclasses da
classe externa. Quando a classe no possui modificador (friendly), ela pode ser instanciada e utilizada apenas
entre as classes que esto no mesmo package. Finalmente, o modificador private no se aplica s classes
externas e pode ser utilizado apenas na mesma classe externa, por classes internas.
O qualificador abstract indica que a classe no poder ser instanciada. Isto significa que nenhum objeto poder
ser criado diretamente a partir dela. Esse tipo de classe utilizado para definir superclasses genricas (operaes
de generalizao). A aplicao desse qualificador se estende tanto s classes externas quanto s internas. O
qualificador final indica que a classe no pode ser estendida, ou seja, no podem ser criadas outras classes a
partir dela. Neste tipo de classe no possvel realizar uma operao de especializao. Os qualificadores
abstract e final so exclusivos e jamais podem ser utilizados em conjunto.
//importaes ...
//classe externa
public class ClasseTeste {
//classe interna com encapsulador "public" e qualificador "final"
public abstract class ClasseI {
//...
}
protected class ClasseII { //classe interna com encapsulador "pritected"
//...
}
final class ClasseIII { //classe interna sem encapsulador e qualificador "final"
//...
}
//classe interna com encapsulador "private"
private class ClasseIV {
//...
}
//demais mtodos da classe externa ...
//mtodo principal
public static void main(String[] args) {
//...
}
}

2. INSTANCIAO
Instanciar uma classe significa criar um novo objeto a partir dela. Lembrando que todo objeto pertence a uma
classe. Todo objeto precisa ser declarado e instanciado. A declarao de objetos feita utilizando a seguinte
sintaxe:
<nome da classe> <nome do objeto>
A declarao de um objeto sempre iniciar com o nome de uma classe.
Exemplos:
ClasseTeste obj;
String st;
Depois de declarado o objeto precisa ser instanciado atravs da seguinte sintaxe:
<nome do objeto> = new <construtor>([<argumentos>]);
O responsvel pela instanciao do objeto sempre ser um construtor disponvel em sua classe. Todo construtor
possui o mesmo nome da classe a que se refere e h um construtor padro na maioria das classes que dispensa
o uso de argumentos.
A instanciao feita atravs de uma operao de atribuio em que o objeto recebe o espao na memria que
lhe for reservado pelo construtor. O operador new sempre preceder o construtor utilizado nessa operao. Caso
seja utilizado o construtor padro, o nome do construtor ser seguido de um par de parnteses sem nada dentro.
Exemplos:
obj = new ClasseTeste();
st = new String(Texto);
A declarao e a instanciao podem ser feitas numa nica instruo atravs da seguinte sintaxe:
<nome da classe> <nome do objeto>= new <construtor>([<argumentos>]);
Exemplos:
ClasseTeste obj = new ClasseTeste();
String st = new String(Texto);
possvel criar objetos annimos (aqueles que no possuem nome). Para isso no necessrio criar o nome do
objeto durante a instanciao. Esses objetos so utilizados no caso em que a instncia de classe utilizada uma
nica vez, diferente dos objetos com nome que podem ser utilizados enquanto estiverem na memria.
Exemplos:
new ClasseTeste();
//importaes ...
//classe externa
public class ClasseTeste {
//classe interna com encapsulador "pritected"
protected class ClasseI {
//...
}
//classe interna com encapsulador "private"
private class ClasseII {
//mtodo da classe interna ClasseII para acesso classe ClasseI
public void acesso() {
//objeto annimo que uma instncia da classe ClasseI
new ClasseI();
}
}
//demais mtodos da classe externa ...
//mtodo principal
public static void main(String[] args) {
//instncia da classe externa ClasseTeste - construtor padro
ClasseTeste obj = new ClasseTeste();
//instncia da classe String - construtor alternativo
String st = new String("Teste");
}
}

ATRIBUTOS
Os atributos tambm so conhecidos como dados membros ou variveis de instncia. Eles representam as
caractersticas dos objetos do mundo real que pertencem classe. Os atributos devem ser declarados entre o par
de chaves, que delimita o corpo da classe. So recomendveis que os atributos sejam os primeiros elementos a
serem listados. A sintaxe para a declarao de atributos est descrita abaixo.
[encapsulamento] [qualificador] class <nome da classe> //declarao da classe
{
<encapsulamento> <qualificador> <tipo> <nome>;
<encapsulamento> <qualificador> <tipo> <nome1>, <nome2>,, <nomeN>;
... classes internas
... mtodos da classe
}
As diretivas encapsulamento e qualificador determinam as restries de acesso aplicveis ao atributo. No caso do
encapsulamento, as restries podem ser public, protected, private ou friendly. Para o qualificador, as
restries so final, static, transiente e volatile.
//importaes ...
//classe pblica
public class ClasseAtributo
{
//atributos da classe ClasseAtributo
public final double DB = 10.5; //encapsulamento public e qualificador final
protected int i, j; //encapsulamento protected
static String st; //sem encapsulamento e qualificador static
transient private char[ ] chVetor; //modificador private e qualificador transient
public volatile float db; //encapsulamento public e qualificador volatile
//classes internas ...
//mtodos ...
}
Quando o modificador public, significa que o atributo poder ser utilizado livremente. O modificador protected
indica que o atributo poder ser utilizado apenas no mesmo package (pacote) ou em subclasses. Quando o
atributo no possui modificador (friendly), ele pode ser utilizado apenas no mesmo package. Finalmente, o
modificador private significa que o atributo poder ser utilizado apenas na mesma classe.
O qualificador final indica que o atributo constante. O qualificador static indica que o atributo pode ser
utilizado a partir do nome da classe. Ao modificar o contedo de um atributo static, a alterao reflete para todos
os objetos. Quando no h qualificador, a alterao realizada num atributo s reverte ao prprio objeto que o
alterou, os demais permanecem com seus respectivos valores. O qualificador transient indica que o atributo no
persistente e, portanto, no pode ser serializado. Finalmente, o qualificador volatile no permite que o atributo
seja armazenado em cache. O tipo pode ser um dos tipos de dados primitivos ou uma classe (tipo objeto) e o
nome a identificao do atributo.
Os atributos servem para armazenar informaes, mas para utiliz-los necessrio instanciar a classe a qual eles
pertencem, ou seja, criar um objeto a partir dela.

Representao grfica da classe Cliente


O grfico de classe acima representa a classe Cliente com os atributos nome e email do tipo String e credito do
tipo double e um mtodo chamado main com um parmetro (vetor) args do tipo String. Um cdigo possvel para a
classe acima est descrito abaixo:

//classe externa
public class Cliente {
//atributos
public String nome;
public String email;
public static double credito = 1000.0;
//mtodo principal
public static void main(String[ ] args) {
//instanciaes da classe Cliente
Cliente objcli1 = new Cliente(); //criao do objeto objcli1
Cliente objcli2 = new Cliente(); //criao do objeto objcli2
//manipulao dos atributos da classe Cliente a partir do objeto objcli1
objcli1.nome = new String("Jos da Silva");
objcli1.email = new String("jose@silva.com.br");
objcli1.credito = 2600.0; //sem efeito
//manipulao dos atributos da classe Cliente a partir do objeto objcli2
objcli2.nome = new String("Joo dos Santos");
objcli2.email = new String("joao@santos.com.br");
objcli2.credito = 8500.0;
//preparao da sada de dados para o cliente 1
String st = "Dados do cliente 1:\n";
st = st + "\nNOME:\t\t" + objcli1.nome;
st = st + "\nEMAIL:\t\t" + objcli1.email;
st = st + "\nCRDITO:\t\t" + objcli1.credito + "\n";
//impresso dos dados do cliente 1
System.out.println(st);
//preparao da sada de dados para o cliente 2
st = "Dados do cliente 2:\n";
st = st + "\nNOME:\t\t" + objcli2.nome;
st = st + "\nEMAIL:\t\t" + objcli2.email;
st = st + "\nCRDITO:\t\t" + objcli2.credito + "\n\n";

//impresso dos dados do cliente 1


System.out.println(st);

}
EXERCCIO
Implemente um cdigo possvel para a classe da figura abaixo.

representao grfica da classe NotaAluno


BIBLIOGRAFIA BSICA

Santos, Rui R. dos, Programando em Java 2 Teoria e Aplicaes, Rio de Janeiro, Axcel books, 1 edio, 2004.
Boente, A., Aprendendo a programar em Java 2 Orientado a objetos, Rio de Janeiro, Brasport, 1 edio, 2003.

BIBLIOGRAFIA COMPLEMENTAR

Morgan, Michael, Java 2, para programadores profissionais, Axcel books, 1 edio, 2004.

Deitel, H.M., Java, como Programar, So Paulo, Pearson, 1 reimpresso, 2006.

1.0 ESTRUTURAS CONDICIONAIS


O condicional contm a palavra chave if, seguido por um teste booleano. Um opcional else como palavra chave
pode ser executado na caso do teste ser falso, Exemplo:
if ( x < y)
System.out.println( x e menor do que y);
else
System.out.println( y e maior);
1.1 BLOCO
Um bloco definido por ({}) e contm um grupo de outros blocos. Quando um novo bloco criado um novo escopo
local aberto e permite a definio de variveis locais. As variveis definidas dentro de um bloco s podem ser
vistas internamente a este, e so terminadas ou extintas no final da execuo deste(}).
void testblock(){
int x = 10, w=1;
if (x> w) { // inicio do bloco
int y=50;
System.out.println(dentro do bloco);
System.out.println(x: + x);
System.out.println(y: + y);
} // final do bloco
System.out.println(w: + w);
System.out.println(y: + y);

// erro varivel no conhecida

}
1.2 O OPERADOR CONDICIONAL
Uma alternativa para o uso do if e else um operador ternrio condicional. Este operador ternrio (?: ) ,
chamado assim porque tem trs termos como parmetro.
test ? trueresult : falseresult
int menor = x < y ? x : y ;

//A varivel menor recebe o valor do menor entre x e

y.

1.3 O SWITCH
Um comum mecanismo para substituio de ifs que pode ser usado para um grupo de testes e aes junto a um
simples agrupamento chama-se switch.
switch (teste){
case valorum;
resultum;
break;
case valordois;
resultdois;
break;
case valortres:
resulttres;
break;
default: defaultresult;
}
O valor comparado com cada um dos casos relacionados. Se a combinao no for encontrada, o bloco default
executado. O default opcional, ento caso este no esteja associado ao comando, o bloco do swicth sem
executar nada.
EXERCCIOS PARA FIXAO DO CONTEDOSOBRE ESTRUTURAS CONDICIONAIS
1. Crie uma classe em Java que receba dois nmeros inteiros positivos e realize a comparao para verificar
e apresentar ao usurio qual dos dois nmeros o maior.
2. Crie uma classe em Java que receba do usurio um nmero qualquer e informe ao usurio se este
nmero primo ou no.
3. Crie uma classe em Java que implemente um menu com 5 opes, sendo estas: (1) Hambrguer, (2)
Sanduche, (3) Misto Quente, (4) Misto Frio e (5) Sair. Apresente este menu para o usurio e solicite que o

mesmo informe qual opo deseja escolher. Aps a escolha da opo apresente ao usurio a opo
informada.
EXEMPLOS DE CLASSES
IMPLEMENTE OS CDIGOS DAS CLASSES EM JAVA APRESENTADOS ABAIXO. ANLISE E EXPLIQUE COMO FUNCIONAM ESTAS
CONTEXTO. CRIE O DIAGRAMA DE CLASSES PARA OS CDIGOS APRESENTADOS ABAIXO COM SUAS DEVIDAS ASSOCIAES.

CLASSES NESTE

----------TestaCarro.java---------------class TestaCarro{
public static void main(String args[]){
Carro corsa = new Carro();
corsa.setMarca("GM");
corsa.setModelo("Corsa Sedam");
corsa.setCor("Prata");
corsa.setAno(2001);
Carro vectra = new Carro("GM","Vectra 16V","Azul",2000);
System.out.println ("Meu carro e " + corsa.getModelo() );
System.out.println ("Outro carro " + vectra.getModelo() );
}
}
--------------Carro.java---------------public class Carro {
private Motor motor;
private String modelo;
public Carro(String modelo, int idMotor, int cv) {
this.modelo=modelo;
this.motor=new Motor(idMotor, cv);
}
public int getCV() {
return this.motor.getCV();
}
}
--------------Motor.java---------------public class Motor {
private int id;
private int cv;
public Motor(int id, int cv) {
this.id=id;
this.cv=cv;
}
public int getCV() {
return this.cv;
}
}
EXERCCIO 1: PRIMEIRA CLASSE
Descrio do Trabalho: Defina uma classe simples denominada CS em Java com os seguintes atributos: nome,
endereco e cargo (todos do tipo String). Crie mtodos de gravao e leitura para os atributos. Faa um programa
que crie um objeto dessa classe e leia e mostre os valores referentes a esses atributos. Use a classe Tela para
apresentar estes resultados.

Exerccio 2: Atributo Esttico


Descrio do Trabalho: Crie uma classe denominada Est com um atributo esttico do tipo inteiro e um atributo do
tipo inteiro no esttico (atr1 e atr2). Crie mtodos mostra_atr1 e mostra_atr2 para apresentar o valor desses
atributos. Crie os mtodos inc_atr1 e inc_atr2 para incrementar o valor desses atributos (estes mtodos devem
receber um parmetro do tipo inteiro que o valor utilizado como incremento). Faa um programa que crie dois
objetos denominados est1 e est2 da classe Est, todos alterando e lendo esse atributo. Faa cada uma das classes
incrementar os dois atributos separadamente e mostre seus valores aps os incrementos.
Exerccio 3: Excees
Descrio do Trabalho: Compile o arquivo opcoes.java, erros.java e erros2.java. Execute os programas
erros.java e erros2.java. Explique qual a diferena entres essas duas abordagens.
Exerccio 3: Excees - Resposta:
--------- CLASSE OPCOES --------public class opcoes {
public void escolha(int op){
switch (op) {
case 1:
System.out.println("Voce escolheu a opcao 1");break;
case 2:
System.out.println("Voce escolheu a opcao 2");break;
default:
throw new RuntimeException("Deu erro");
}
} }
--------- PROGRAMA ERROS --------public class erros{
public static void main (String [] arg) {
opcoes op = new opcoes();
try{ op.escolha(4); }
catch (Exception e) { System.out.println("Algum erro");}
finally { System.out.println("Erro tratado");}
} }
--------- PROGRAMA ERROS2 --------public class erros2{
public static void main (String [] arg) {
opcoes op = new opcoes();
op.escolha(4);
} }

Você também pode gostar