Você está na página 1de 11

Orientao a Objetos

ORIENTAO A OBJETOS A preocupao da programao orientada a objetos a de trazer para o computador a realidade do mundo que nos cerca, o mais prximo possvel do natural. Por exemplo: Um CARRO um veculo.

O CARRO tem caractersticas como MARCA, MODELO, TAMANHO e COR. Outros objetos do mesmo tipo tambm possuem essas caractersticas, porm sero diferentes um do outro. Alm das caractersticas fsicas, as coisas ou objetos, possuem aes ou procedimentos. No caso do carro, ele ANDA, PRA, ACELERA, BRECA etc. A orientao a objetos procura representar as coisas chamadas de objetos da forma como so notadas por todos ns, dando o foco no objeto com suas caractersticas fsicas e as aes possveis de ser realizadas com eles.

DEFINIES GERAIS CLASSE Uma classe define os atributos e comportamentos comuns compartilhados por um tipo de objeto. Os objetos de certo tipo ou classificao compartilham os comportamentos e atributos. As classes atuam de forma parecida com um cortador de molde ou biscoito, no sentido de que voc usa uma classe para criar ou instanciar objetos. SINTES (2002:8) A classe molda o objeto. como o tipo de dado das linguagens de programao que moldam as variveis. A partir do tipo de dado possvel identificar que tipo de operaes a varivel suporta. A classe a mesma coisa. Um outro exemplo, relacionado ao cotidiano, seria o projeto de um carro. Algum cria o projeto de um veculo (peas, design etc). A partir deste projeto diversos carros deste modelo so feitos, seguindo- se o projeto original. Apesar de serem todos do mesmo projeto, cada carro um carro com suas prprias caractersticas, por exemplo, um carro branco, o outro prata e assim por diante.

Orientao a Objetos

Declarao de uma classe: Qualificador class Nome-da-classe { // ATRIBUTOS da classe // MTODOS da classe } Qualificador : Indica a visibilidade do contedo pblico da classe. Existem dois tipos: public e package. public: Indica que o contedo pblico da classe pode ser usado por classes do mesmo pacote ou de outros pacotes. No Java, um pacote um diretrio ou uma pasta. package: Indica que o contedo pblico da classe s pode ser usado pelas classes do mesmo pacote, ou seja, classes que esto no mesmo diretrio. Ateno: - Um nico arquivo Java pode conter diversas classes, mas somente uma pode ser pblica. - Conforme j visto, o nome do arquivo deve ser o mesmo que o nome da classe pblica, tomando cuidado em manter os mesmos caracteres maisculos ou minsculos. - O nome da classe deve iniciar com uma letra maiscula. Isto uma conveno dos programadores Java, com a finalidade de distinguir uma classe de uma varivel.

PACOTE (PACKAGE) Um pacote um diretrio. Um pacote pode conter diversas classes. Normalmente classes com similaridades devem ser inseridas no mesmo pacote. Uma classe que utiliza um pacote deve ter a clusula import no incio do programa. A sintaxe utilizada : import nome-do-pacote.nome-da-classe. Exemplo: import java.util.Date; Importa a classe Date que est no pacote java.util. Na prtica, a classe Date est na pasta java\util. import java.io.*; Importa todas as classes do pacote java.io. Este pacote o pacote padro do Java JDK.

Orientao a Objetos

Ateno: Os pacotes devem estar localizados em um dos diretrios de classes do java (definida na varivel classpath - \jdk_path\lib).

PARTES DE UMA CLASSE Uma classe composta por dois itens: - atributos ou variveis de instncia e; - mtodos. Atributos ou variveis de instncia: So declaradas no incio da classe, fora de qualquer mtodo. So como variveis globais podendo ser usadas por qualquer mtodo.

OBJETO Um objeto uma construo de software que encapsula estado e comportamento . Os objetos permitem que voc modele seu software em termos reais e abstraes. SINTES (2002:7). Um objeto uma instncia de uma classe.

INSTANCIAO DE UMA CLASSE Quando um objeto criado, dizemos que instanciamos uma classe. Instanciar um objeto de uma classe alocar ou reservar espao de memria para as informaes0 deste objeto, da mesma forma como reservamos espao de memria quando declaramos uma varivel. A instanciao de um objeto feito com o uso do operador new: Sintaxe geral: nome - do - objeto = new nome - da - classe();

Orientao a Objetos

Exemplo: class Produto { int codigo; String nome; double preco; }

Produto.java

class TestaProduto { public static void main(String args[]) { Produto A, B; A = new Produto(); B = new Produto(); A.codigo = 1; A.nome = "chocolate"; A.preco = 2.00; B.codigo = 2; B.nome = "bala"; B.preco = 1.00; System.out.println("PRODUTO A.codigo + " " + A.nome + " System.out.println("PRODUTO B.codigo + " " + B.nome + " } } Os arquivos podem ser testados em arquivos distintos, ou no mesmo arquivo. Neste caso, teremos um arquivo com duas classes. Neste ltimo caso, o arquivo deve ser salvo com o nome da classe que contm o mtodo main. A: " + " + A.preco); B: " + " + B.preco);

TestaProduto.java

ATRIBUTOS ESTTICOS Cada objeto possui suas prprias variveis de instncia. Entretanto, algumas vezes teremos a necessidade de uma varivel que seja comum a todos os objetos da mesma classe. Neste caso, criamos uma varivel do tipo esttica, que ser compartilhada por todos objetos desta classe.

Orientao a Objetos

Exemplo: class Produto { static int codigo; String nome; double preco; } class TestaProduto2 { public static void main(String args[]) { Produto A, B; A = new Produto(); B = new Produto(); A.codigo = 1; A.nome = "chocolate"; B.nome = "bala"; System.out.println(A.codigo + " " + A.nome); System.out.println(B.codigo + " " + B.nome); } }

MTODOS DE UMA CLASSE Um mdulo na POO (Programao Orientada a Objetos) chamado de mtodo. Um objeto troca dados com outro objeto atravs da chamadas de mtodos. class Produto { static int codigo; String nome; double preco; public void exibePreco() { System.out.print(preco); } public void atualizaPreco(double porc) { preco = preco + preco*porc/100; }

O mtodo deve ser pblico para que outras classes o acessem.

Orientao a Objetos

} class TestaProduto3 { public static void main(String args[]) { Produto A; A = new Produto(); A.codigo = 1; A.nome = "chocolate"; A.preco = 2.00; System.out.println(A.codigo + " " + A.nome + " " + A.preco); A.atualizaPreco(10); A.exibePreco(); } } ENCAPSULAMENTO Encapsular significa esconder ou proteger na orientao a objetos. As variveis de instncia podem ser encapsuladas usando- se o atributo private . Isto faz com que a varivel somente possa ser acessada pela prpria classe. Uma classe externa no tem permisso para acessar esta varivel. A finalidade do encapsulamento a proteo dos dados. A varivel privada s pode ser alcanada indiretamente atravs de um mtodo. O mtodo enxerga a varivel porque ele est definido na prpria classe. Cabe ao mtodo realizar as consistncias necessrias para proteger o dado de valores invlidos.

Orientao a Objetos

class Veiculo { String nome; private float velocidade; public void acelera() { if (velocidade<=200); velocidade++; } void frea() { if (velocidade>0) velocidade--; } void mostraVelocidade() { System.out.println(velocidade); } } class UsaVeiculo { public static void main (String args[]) { int i; Veiculo veic; veic = new Veiculo(); veic.nome = "Corsa"; System.out.println(veic.nome); veic.mostraVelocidade(); for (i=1; i<=10; i++) veic.acelera(); veic.mostraVelocidade(); //System.out.println(veic.velocidade); //ERRO! } } CONSTRUTORES O construtor um mtodo especial criado para aes especficas para a instanciao do objeto. Desta forma, o construtor utilizado para inicializar atributos no momento da instanciao. Quando uma classe no possui um construtor, os atributos so inicializados com valores padres (variveis numricas recebem zero, valores lgicos recebem false, e objetos recebem null ). O construtor deve ter o mesmo nome que a classe seguida por um par de parnteses.

Orientao a Objetos

Um construtor no retorna valores.

Exemplo: class Funcionario { int codigo; String nome; String unidade; Funcionario() { unidade = "POMPEIA"; } } class UsaFuncionario { public static void main(String args[]) { Funcionario f1 = new Funcionario(); System.out.println("CODIGO :" + f1.codigo); System.out.println("NOME :" + f1.nome); System.out.println("UNIDADE:" + f1.unidade); } } O construtor pode receber argumentos, conforme mostra o exemplo a seguir: class Funcionario { int codigo; String nome; String unidade; Funcionario(String n) { unidade = "POMPEIA"; nome = n; } } class UsaFuncionario { public static void main(String args[]) { Funcionario f1 = new Funcionario("Maria"); System.out.println("CODIGO :" + f1.codigo); System.out.println("NOME :" + f1.nome); System.out.println("UNIDADE:" + f1.unidade); } //construtor

Orientao a Objetos

} DESTRUTORES Os destrutores eliminam os objetos da memria. O java possui coleta automtica de objetos. Um objeto ocioso automaticamente liberado pelo java.

Elaborar uma classe Item com os seguintes atributos: nome codigo string descrio string preco_unitario real desconto real quantidade inteiro

tipo

e os seguintes mtodos: nome descrio Item() Construtor Inicializa codigo, descricao, quantidade e preco). obterSubtotal() Calcula o subtotal do item, com o desconto. definirDesconto() Define a porcentagem de desconto. obterQuantidade() Retorna o valor do item quantidade. definirQuantidade() Define o valor do item quantidade. obterCodigo() Retorna o valor do cdigo. obterDescricao() Retorna a descrio do item. public class Item { private String codigo; private String descricao; private double preco_unitario; private double desconto; private int quantidade;

this, uma referncia que aponta para a instncia do objeto.

public Item(String codigo, String descricao, int quantidade, double preco) { this.codigo = codigo; this.descricao = descricao; if (quantidade>=0) this.quantidade = quantidade; else this.quantidade = 0; this.preco_unitario = preco; } public double obterSubtotal() { double total, total_desconto, subtotal;

Orientao a Objetos

10

total = preco_unitario * quantidade; total_desconto = preco_unitario * desconto; subtotal = total - total_desconto; return (subtotal); } public void definirDesconto(double desconto) { if (desconto<=1) this.desconto = desconto; else this.desconto = 0; } public double obterDesconto() { return (desconto); } public int obterQuantidade() { return (quantidade); } public void definirQuantidade(int quantidade) { if (quantidade>=0) this.quantidade = quantidade; } public String obterCodigo() { return (codigo); }

Orientao a Objetos

11

public String obterDescricao() { return (descricao); } }

Programa que acessa a classe Item: class UsaItem { public static void main(String args[]) { Item leite = new Item("0001", "Leite Paulista", 2, 2.50); Item cafe = new Item("0002", "Cafe do Ponto", 3, 3.00); double preco_leite, preco_cafe, preco_total; leite.definirDesconto(0.15); preco_leite = leite.obterSubtotal(); preco_cafe = cafe.obterSubtotal(); preco_total = preco_leite + preco_cafe; System.out.println("Itens da compra:\n"); System.out.println(leite.obterDescricao() + "\t R$" + preco_leite); System.out.println(cafe.obterDescricao() + "\t R$" + preco_cafe); System.out.println("\n\nTotal a pagar: R$" + preco_total); } }