Escolar Documentos
Profissional Documentos
Cultura Documentos
Programa de computador
um conjunto de comandos e regras que um programador deve conhecer para poder manipular os recursos de um computador.
So escritos programao.
em
uma
linguagem
de
Para que um programa possa ser executado deve ser traduzido para uma linguagem que possa ser compreendida pelo computador atravs de um compilador.
Programa de computador
O paradigma de programao orientada a objetos considera que os dados a serem processados e os mecanismos de processamento desses dados devem ser considerados em conjunto. Os modelos representam conjuntamente dados e operaes sobre esses dados.
Modelos
Modelos so representaes simplificadas de objetos, pessoas, itens, tarefas, processos, conceitos, idias etc. So usados comumente por pessoas no seu dia-a-dia, independente do uso de computadores.
Mesa 2 Kg refeio
Sobremesa Refrigerante Cerveja
Cerveja
Modelos e Dados
O quadro branco um modelo do restaurante, representando de forma simplificada as informaes do restaurante necessrias para contabilizar os pedidos.
O modelo representa certos dados ou informaes. Os dados contidos no modelo so somente relevantes abstrao do mundo real feita.
Modelos e Operaes
Um modelo normalmente contm operaes ou procedimentos associados a ele, por exemplo:
Incluso de um pedido para uma mesa. Modificao do status de um pedido. Encerramento dos pedidos de uma mesa.
Tambm possvel a criao de modelos que possuem somente dados ou somente operaes. Modelos podem conter submodelos e ser parte de outros modelos.
6
Pessoa como paciente de uma clnica mdica Pessoa como contato comercial
A criao e uso de modelos uma tarefa natural e a extenso desta abordagem programao deu origem ao paradigma Programao Orientada a Objetos.
7
POO um paradigma de programao de computadores onde se usam classes e objetos, criados a partir dos modelos descritos anteriormente, para representar e processar dados usando programas de computadores.
Encapsulamento
A capacidade de ocultar dados dentro do modelos, permitindo que somente operaes especializadas ou dedicadas manipulem os dados ocultos chama-se encapsulamento.
Modelos que encapsulam os dados possibilitam a criao de programas com menos erros e mais clareza.
Encapsulamento
Modelos podem conter dados para representao das informaes ou dados relativos ao que se deseja modelar e operaes para manipulao dos dados. Em muitos casos, ser desejvel que os dados no possam ser acessados ou usados diretamente, mas somente atravs das operaes.
Por Exemplo:
Mquina fotogrfica o mecanismo da cmera oculta os dados e a maneira como so processados.
10
Encapsulamento
Em muitos modelos teremos vantagens em usar mecanismos de ocultao de dados: sempre que existir uma maneira de deixar ao modelo a capacidade e responsabilidade pela modificao de um de seus dados, devemos criar uma operao para faz-lo. Por exemplo:
Modelo que represente conta bancria e operao de retirada.
11
12
Exemplo 1: em pseudocdigo
Representa uma Modelo Lampada lmpada em uso Incio do modelo dado estadoDaLampada; Acende a Lmpada operao acende() incio estadoDaLampada = aceso; fim Apaga a Lmpada operao apaga() incio estadoDaLampada = apagado; fim Mostra o estado da lmpada operao mostraEstado() incio se (estadoDalampada == aceso) imprime A lmpada est acesa seno imprime A lmpada est apagada; fim Fim do modelo
13
14
Exemplo 2: em pseudocdigo
Modelo ContaBancriaSimplificada
Dados da conta
operao abreConta(nome,deposito,especial) incio nomeDoCorrentista = nome; saldo = deposito; Inicializa simultaneamente todos os dados do modelo contaEspecial = especial; fim operao abreContaSimples(nome) incio nomeDoCorrentista = nome; saldo = 0.00; contaEspecial = false; fim
Inicializa simultaneamente todos os dados do modelo, usando o nome passado como argumento e os outros valores com valores default
15
16
17
Classes e objetos
Programadores que utilizam POO criam e usam objetos a partir de classes, que so relacionadas diretamente com os modelos descritos.
Classes so estruturas utilizadas para descrever os modelos, ou seja, contm a descrio dos dados (atributos) e das operaes (mtodos) que podem ser realizadas sobre eles.
Nome da Classe
Atributo 1 Atributo 2 Atributo 3 Mtodo 1 Mtodo 2
18
Classes e objetos
Os
dados contidos em uma classe so conhecidos como campos ou atributos daquela classe. Cada campo deve ter um nome e ser de um tipo de dado nativo ou uma classe existente.
Valores dentro de classes podem ser variveis. As operaes contidas so os mtodos. receber argumentos
19
Classes e objetos
Para
que objetos ou instncias possam ser manipulados, necessria a criao de referncias a estes objetos, que so variveis do tipo da classe.
Classe -> Planta do edifcio, que descreve o edifcio, mas no corresponde fisicamente a ele.
Classe Edifcio
Exemplo:
21
Em linguagens OO, possvel declarar campos como referncias a instncias de outras classes j existentes (Objetos).
23
Podemos observar que, para cada dado do modelo existe um campo correspondente na classe.
24
A classe String usada para representar cadeias de caracteres. (No so dados nativos, sendo instncias da classe String)
25
Operadores Aritmticos
+ (soma) - (subtrao) * (multiplicao) / (diviso) % (resto de uma diviso inteira) int(A) / int(B) (parte inteira de uma diviso)
+ (concatenao)
26
Menor
Maior
27
Mtodos no podem ser criados dentro de outros mtodos, nem fora da classe qual pertencem.
28
void inicializaDataSimples(byte d,byte m,short a) { if (dataEValida(d,m,a) == true) { dia = d; mes=m; ano=a; Mtodo } da classe else { dia = 0; mes=0; ano=0; Mtodo } da classe } boolean dataEValida(byte d,byte m,short a) { if ((d>=1) && (d<=31) && (m>=1) && (m<=12)) return true; else return false; }
29
30
Campos declarados em uma classe so vlidos por toda a classe, mesmo que os campos estejam declarados depois dos mtodos que os usam.
Variveis e instncias de objetos declarados dentro de mtodos s sero vlidos dentro desse mtodo.
Dentro de mtodos e blocos de comandos, as variveis e objetos devem ser declarados antes de serem utilizadas.
Variveis passadas como argumentos para mtodos s so vlidas dentro dos mtodos.
No segundo exemplo, seria conveniente usar um modificador para restringir o acesso ao mtodo imprimeNmeroDaPgina, j que este s deve ser usado atravs do mtodo 33 imprimeRelatrio.
private: s podem ser acessados, modificados ou executados por mtodos da mesma classe, sendo ocultos para o programador usurio que for usar instncias desta classe ou criar classes herdeiras ou derivadas.
protected: funciona como o modificador private, exceto que classes herdeiras ou derivadas tambm tero acesso ao campo ou mtodo.
Finalmente, campos e mtodos podem ser declarados sem modificadores. Nesse caso, eles sero considerados como pertencentes categoria package, significando que seus campos e mtodos sero visveis para todas as classes de um mesmo 34 pacote.
Mtodos que devem ser acessveis devem ser declarados com o modificador public. Caso classes no venham a ser agrupadas em pacotes, a omisso no gera problemas. Mtodos para controle dos campos devem ser escritos, e estes mtodos devem ter o modificador public.
35
private determina que os dados s podem ser manipulados dentro da prpria classe. Como dia, ms e ano so declarados fora dos mtodos, so variveis globais (atributos).
public void inicializaData(byte d,byte m,short a) { if (dataEValida(d,m,a) == true) As variveis d, m e a so parmetros (argumentos) e s podem ser manipulados dentro desse mtodo.
public { dia = d; mes=m; ano=a; indica } que o mtodo else pode ser { dia acessado = 0; mes=0; ano=0; sem } restries }
36
System.out.println(dia + / + ms + / + ano);
objetos,
so
conjuntos de objetos que representam os objetos existentes no negcio modelado. conjuntos de objetos que representam estruturas adequadas para a manipulao de dados. Os objetos que compem o programa comunicam-se por trocas de mensagens.
precisa ter um ponto de entrada Aplicacao { que indique mquina virtual onde iniciar a public static void main(String[] s) execuo. { } } 38
public: visvel para qualquer outra classe. static: dispensa a criao de objetos. void: nenhum retorno esperado.
main: conveno para indicar a mquina virtual qual o ponto de entrada da aplicao. String[] args: parmetros passados pela aplicao via linha de comando. args o identificador.
39
public void moverPontos() Utilizao do mtodo mover da classe { p1.mover(4F,2F); Ponto, atravs do objeto p1. p2.mover(-2F,-4F); } public void criarPontos() Instncia de um objeto da classe Ponto { p1 = new Ponto(); p2 = new Ponto(); } public void rodar() Mtodo principal, que ser executado { criarPontos(); inicialmente pela mquina virtual Java. moverPontos(); } public static void main(String[] s) { Aplicacao ap = new Aplicacao(); ap.rodar(); } Criao de um objeto da prpria classe
40
41
new instancia um novo objeto. new aloca o espao necessrio para armazenar o estado do objeto e uma tabela para indicar o corpo do cdigo necessrio para efetuar suas operaes. new executa as tarefas de inicializao do objeto conforme o seu Construtor. new retorna o identificador do objeto criado e o operador de atribuio utilizado para copiar este endereo para uma varivel, que servir para futuras referncias ao objeto. O compilador e a mquina virtual Java verificam o tipo da varivel e o tipo da referncia retornada.
42
44
Na declarao aloca-se espao para a referncia ao objeto. A alocao do objeto realizada atravs do operador new.
45
J vimos que podemos criar aplicaes que utilizam instncias de classes definidas pelo usurio ou j existentes. Aps criar a instncia da classe com a palavra-chave new, usamos mtodos para inicializar os campos da instncia. Na declarao aloca-se espao para a referncia ao objeto. Por esquecimento, um programador pode criar a instncia de uma classe mas no inicializar seus dados.
46
Construtor um tipo especial de membro de classe chamado automaticamente quando instncias so criadas atravs da palavra chave new. Construtores so teis para:
47
Construtores devem ter exatamente o mesmo nome da classe; Construtores no possuem tipo de retorno, nem mesmo void; Construtores so, normalmente, pblicos. Programador no pode chamar construtores diretamente;
48
Caso o programador no fornea uma verso explcita do construtor, Java utiliza uma verso de construtor implcita que no recebe nenhum parmetro.
Se o programador fornecer um construtor a uma classe, a linguagem no mais incluir o construtor padro implcito.
49
public class Empregado { String Nome, Endereo, CPF; float Salrio; int Idade; public Empregado ( String N, String End, String cpf, int Ida) { Nome = N; Construtor da classe Empregado. Endereo = End; Observe que no foi definido um CPF = cpf; tipo de retorno e possui o mesmo nome da classe. Idade = Ida; }
50
Construtores - Exemplo
Utilizao do Construtor da class CriaEmpregado classe Empregado para { public static void main(String args[]) instanciar um objeto. { Empregado obj = new Empregado(Maria Silva, Rua X n 246", Nome do Nome"403.234.567-33",58); Objeto da classe
}
51
System.out.println(...)
Tipos primitivos podem ser concatenados a Strings atravs do operador + Exemplo:
class saidaDados { public static void main (String args[]) { System.out.println(saida de dados); } }
52
Toda a classe que for se utilizar de entrada de dados via teclado deve utilizar o package Java.io.*. Esse pacote contm as classes que tratam de entrada de dados.
import java.io.*
Para obter valores do teclado em uma classe Java necessrio criar um objeto da classe BufferedReader.
BufferedReader obj = new BufferedReader(new inputStreamReader(System.in));
Todo a entrada de dados est sujeita a erros, j que fica a merc da digitao do usurio final. A forma mais simples de se tratar essa exceo solicitar que a exceo no seja tratada localmente atravs da linha de comando:
throws java.io.IOException
53
O Java s permite a entrada de Strings, desta forma, para que possamos informar valores numricos necessrio fazer uma converso de String para o tipo numrico desejado, comovarivel line umaver a podemos String. A seguir:
Converso de String para float float f = Float.valueOf(line).floatValue(); Converso de String para double double d
=54
import java.io.*; class soma { public static void main (String args[ ] ) throws java.io.IOException { String aux; int a, b; BufferedReader obj = new BufferedReader(new InputStreamReader (System.in)); System.out.println("Digite o primeiro nmero: "); aux = obj.readLine(); a = Integer.valueOf(aux).intValue(); System.out.println("Digite o segundo nmero: "); aux = obj.readLine(); b = Integer.valueOf(aux).intValue(); a = a + b; System.out.println("O resultado : " + a);
55
Operadores Relacionais
Operadores Aritmticos
&& (E lgico) || (OU lgico) ! (NO lgico)
< (menor) > (maior) <= (menor ou igual) >= (maior ou igual) == (igual) != (diferente)
56
if else
Estrutura do Comando
Observaes:
O comando else opcional. Na construo de ifs aninhados, o else refere-se sempre ao if mais prximo. Procure usar chaves para delimitar os blocos. O operador de comparao igual a representado por == e no por =. Bloco de comandos pode ser um nico comando (terminado por ponto-e-vrgula) ou vrios comandos (delimitados por {}). indispensvel o uso de parnteses ( ) na expresso_booleana.
57
switch
Estrutura do Comando
bloco2;
break; [default: bloco3; break;]
Observaes:
Usual para selecionar alguma ao de um nmero de
alternativas. A varivel de controle s pode ser inteira ou char. O case define o ponto de entrada da execuo. Se voc quiser que s um bloco de declaraes seja executado use break. 58 A opo default opcional.
while
Estrutura do Comando
Observaes:
indispensvel o uso de parnteses ( ) na expresso_booleana.
O lao permanece em execuo enquanto a expresso_booleana for verdadeira. Um erro comum no atualizar as variveis de controle do lao, o que acarreta um loop infinito. Outro erro freqente colocar o ponto e vrgula aps o while. A fase de atualizao das variveis de controle ficam fora do lao, gerando um loop infinito. Use sempre chaves para delimitar o Bloco de comandos.
59
do - while
Estrutura do Comando
do
{ Bloco de comandos; } while (expresso_booleana);
Observaes:
semelhante ao comando while, sendo que a condio de
parada do lao testada aps o bloco de comandos.
Pelo menos uma vez o bloco de comandos ser executado. Observe as mesmas consideraes do comando while.
60
for
Observaes:
Num loop for explicita as quatro partes de uma iterao.
Um erro comum colocar o ponto e vrgula aps o for,
ficando o bloco de comandos fora do lao. O resultado um loop que nada realiza.
61
62
Sobrecarga
Um mtodo pode ter o mesmo nome que outro mtodo na mesma classe;
Isto usual quando existem duas ou mais formas diferentes de se realizar a mesma tarefa;
diz-se
que
mtodo
est
Java permite a criao de mtodos com nome iguais, contanto que as assinaturas sejam diferentes; A assinatura composta do nome mais os tipos de argumento. O tipo de retorno no faz parte da assinatura;
64
Sobrecarga
Java admite tambm, que se sobrecarregue os construtores de uma classe.
Deve-se se referir de dentro de um construtor sobrecarregado para outro, atravs do uso da palavra reservada this.
65
Exemplo de Sobrecarga
class criaEmpregado { public static void main(String args[])
As chamadas dos mtodos sobrecarregados esto apresentadas em negrito.
{ Empregado emp1 = new Empregado("Maria","123123123", "Rua das flores 245", 25,500); System.out.println("A idade de Maria = "+ emp1.DevolveIdade()); System.out.println("A idade de Maria daqui a 10 anos e = " + emp1.DevolveIdade(10)); Empregado emp2 = new Empregado("Tadeu",700); System.out.println("O salrio de Tadeu = "+emp2.salario); }
66
Exemplo de Sobrecarga
public class Empregado { String nome, endereco, cpf; float salario; int idade; public Empregado ( String n, String end, String c, int ida, float sal) { this(n, sal); endereco=end; cpf=c; idade=ida; } Uso da referncia this para chamar o outro construtor.
{ return idade+numAnos;
} }
67
A referncia this
Na chamada dos mtodos de uma classe, a mquina virtual passa implicitamente como parmetro uma referncia ao objeto ao qual a mensagem foi enviada.
Quando se deseja recuperar esta referncia de dentro do corpo da classe, usa-se a palavra reservada this.
Pode-se ainda utilizar a palavra chave this para se referir a um construtor sobrecarregado, como vimos anteriormente. Entretanto, neste caso, a palavra chave no diz respeito referncia do objeto, visto que este ainda est sendo criado.
68
A referncia this
public class ExemploThis { public static void main(String args[]) { Funcionario func1 = new Funcionario("Maria",500); Funcionario func2 = new Funcionario("Joo",700); func1.salario = func1.ajustaSalario(20); func2.salario = func2.ajustaSalario(30); System.out.println("O novo salrio de "+ func1.nome +" = "+func1.salario); System.out.println("O novo salrio de "+ func2.nome +" = "+func2.salario); } }
69
public float ajustaSalario(float percentual) { float novoSalario; novoSalario = this.salario + calculo(percentual,this); return novoSalario; } Uso do this para acessar um atributo do objeto.
private float calculo(float percentual, Funcionario obj) { float valorAcrescido; valorAcrescido = obj.salario * percentual / 100; return valorAcrescido; } }
70
Reutilizao de Classes
Um dos maior benefcio que a Programao Orientada a Objeto nos proporciona a reutilizao de cdigo.
A reutilizao se caracteriza pelo aproveitamento de classes e seus mtodos que j estejam escritos e que j tenham o seu funcionamento testado e comprovado.
A Reutilizao de cdigo diminui a necessidade de escrever novos mtodos e classes gerando economia de tempo e segurana.
Existe duas maneiras de conseguir esse reaproveitamento: Atravs de Composio ou atravs de Herana.
71
Composio
A composio o conceito mais usual no desenvolvimento de aplicaes baseadas em Orientao a Objetos.
Parte do pressuposto que uma determinada classe vai instanciar objetos de outras classes, utilizando-se do que esses objetos fazem para compor as funcionalidades da nova classe.
Esse conceito pode ser visto em exemplos anteriores (classe criaEmpregado e classe exemploThis), que instanciaram objetos da classe Empregado e funcionrio respectivamente.
CriaEmpregado exemploThis
Empregado
Funcionrio
72
Herana
Herana a capacidade de uma classe definir o seu comportamento e sua estrutura aproveitando definies de outra classe, normalmente conhecida como classe base ou classe pai.
A herana no precisa ser interrompida na derivao de uma camada de classes. A coleo de todas as classes que se estendem de um pai comum chama-se hierarquia de herana.
A palavra reservada extends que define que uma classe est herdando de outra.
Analista de Sistemas
73
Herana
Atravs do mecanismo de herana possvel definirmos classes genricas que agreguem um conjunto de definies comuns a um grande nmero de objetos (Generalizao). A partir destas especificaes genricas podemos construir novas classes, mais especficas, que acrescentem novas caractersticas e comportamentos aos j existentes (Especializao).
Funcionrio
nome salrio
Analista de Sistemas
idiomas
linguagem
74
acesso a variveis escondidas (shadow), ou seja, variveis de uma classe que tem o mesmo nome de uma varivel definida em uma subclasse;
acesso a mtodos que foram redefinidos, ou seja, mtodos que possuem a mesma assinatura na classe Pai e na classe derivada;
75
Exemplo de Herana
Classe Pai public class Automovel Declarao de { public static final byte movidoAGasolina = 1; constantes. public static final byte movidoAAlcool = 2; public static final byte movidoADiesel = 3; private static final byte numeroMaximoDePrestacoes = 24;
Atributos
Construtor
Exemplo de Herana
public float quantoCusta() { float preco = 0; switch (combustivel) { case movidoAGasolina: preco = 12000.0f; break; case movidoAAlcool: preco = 10500.0f; break; case movidoADiesel: preco = 11000.0f; break; } return preco; } public String toString() { String resultado; resultado = modelo+" "+cor+"\n"; switch(combustivel) { case movidoAGasolina: resultado += "Gasolina \n"; break; case movidoAAlcool: resultado += "lcool \n"; break; case movidoADiesel: resultado += "Diesel \n"; break; } return resultado; } }
77
Exemplo de Herana
public class AutomovelBasico extends Automovel { private boolean retrovisorDoLadoDoPassageiro; private boolean limpadorDoVidroTraseiro; private boolean radioAMFM;
Atributos A palavra extends que determina que AutomovelBasico herda de Automovel.
public AutomovelBasico (String m, String c, byte comb, boolean r, boolean l, boolean af) { super(m,c,comb); A palavra super, indica retrovisorDoLadoDoPassageiro = r; que deve ser usado o limpadorDoVidroTraseiro = l; construtor da classe Pai. radioAMFM = af; } public AutomovelBasico (String m, String c, byte comb) { super(m,c,comb); retrovisorDoLadoDoPassageiro = true; limpadorDoVidroTraseiro = true; radioAMFM = true; }
78
Exemplo de Herana
public float quantoCusta() Os dois mtodos { float preco = super.quantoCusta(); apresentados nessa if (retrovisorDoLadoDoPassageiro == true) transparncia possuem a preco = preco + 280; mesma assinatura da classe if (limpadorDoVidroTraseiro == true) Automovel, o que caracteriza uma redefinio preco = preco + 650; de mtodos da classe Pai. if (radioAMFM == true) preco = preco + 190; return preco; A palavra super, indica que deve ser chamado o mtodo } quantoCusta() e toString() da public String toString() classe Pai. { String resultado = super.toString(); if (retrovisorDoLadoDoPassageiro == true) resultado += "Com retrovisor do lado direito \n"; if (limpadorDoVidroTraseiro == true) resultado += "Com limpador traseiro \n"; if (radioAMFM == true) resultado += "Com radio \n"; return resultado; 79 }}
Exemplo de Herana
public class DemoAutomovel { public static void main(String arg[]) { Automovel a = new Automovel("Fusca","verde", Automovel.movidoAAlcool); System.out.println(a.toString()); Instncia de um objeto da System.out.println(a.quantoCusta()); classe AutomovelBasico. System.out.println(a.quantasPrestacoes()); AutomovelBasico ab = new AutomovelBasico("Corsa","cinza", Automovel.movidoAGasolina,true,true,false); System.out.println(ab.toString()); System.out.println(ab.quantoCusta()); System.out.println(ab.quantasPrestacoes()); } }
Observe que o mtodo quantasPrestacoes() est sendo acessado atravs de um objeto da classe AutomovelBasico. Isso s possvel porque a classe AutomovelBasico herda da classe Automovel, assim todos os atributos e mtodos da classe Pai podem ser usados pela classe derivada. Instncia de um objeto da classe Automovel.
80
Polimorfismo
O mecanismo de herana permite a criao de classes a partir de outras j existentes com relao -um-tipode, de forma que, a partir de uma classe genrica, classes mais especializadas possam ser criadas.
A relao -um-tipo-de entre classes permite a existncia de outra caracterstica fundamental de linguagens OO, o polimorfismo.
Polimorfismo (muitas formas) permite a manipulao de instncias de classes que herdem de uma mesma classe ancestral de forma unificada.
Podemos escrever mtodos que recebam instncias de uma classe C, e os mesmos mtodos sero capazes de processar instncias de qualquer classe que herde de C, j que qualquer classe que herde de C -um-tipo-de C.
81
Polimorfismo
Permite a extensibilidade do sistema com pouco ou nenhum impacto nas classes existentes;
Permite a construo de classes genricas para efetuar tarefas gerais comuns aos softwares, como as estruturas de dados.
82
Exemplo de Polimorfismo
public class ConcessionariaDeAutomoveis { public static void main(String args[]) { Automovel a1 = new Automovel("Fiat","bege", Automovel.movidoAAlcool); AutomovelBasico a2 = new AutomovelBasico("Corsa","cinza", Automovel.movidoAGasolina); imprime(a1); O mtodo imprime recebe um objeto da classe Automovel imprime(a2); como parmetro. Observe que nesse exemplo, chamamos o } mtodo passando a1 e a2, ou seja, objetos de classes
diferentes mas da mesma hierarquia de classes, caracterizando dessa forma a utilizao de polimorfismo.
public static void imprime(Automovel a) { System.out.println(Dados do automvel escolhido : "); System.out.println(a.toString()); System.out.println("Valor : "+a.quantoCusta()); System.out.println(a.quantasPrestacoes()+" prestaes de "+ (a.quantoCusta()/a.quantasPrestacoes())); } }
83
Classes Abstratas
So classes compostas por implementaes genricas e especificaes de procedimentos. Como no so totalmente implementadas, no produzem instncias, ou seja, no podemos criar objetos dessas classes. Elas agrupam caractersticas e comportamentos que sero herdados por outras classes e fornecem padres de comportamento que sero implementados nas subclasses.
A classe passa a servir como modelo genrico para as classes que sero dela derivadas.
84
Classes Abstratas
Um mtodo abstrato ser apenas o molde de uma implementao a ser provida pelas classes filhas concretas.
sua
Mtodos que no so abstratos podem ser usados normalmente pelos objetos das classes que derivam da classe abstrata.
As classes que derivarem de um classe abstrata devem obrigatoriamente implementar todos os mtodos abstratos definidos na classe Pai.
85
public Figura (int x1, int y1) { x = x1; y = y1; } public abstract void desenha(); public abstract void apaga();
public void move (int x1, int y1) { apaga(); x = x1; y = y1; Declarao de um mtodo desenha(); normal que poder ser } utilizado pelos objetos de }
classes derivadas.
Declarao dos mtodos abstratos. Esses mtodos devem obrigatoriamente ser implementados nas classes derivadas.
86
public void desenha() { System.out.println("Desenhando quadrado (" + x + "," + y + ")"); } public void apaga() { System.out.println("Apagando quadrado (" + x + "," + y + ")"); } } class TesteAbstract { public static void main (String args[]) Classe { Quadrado q = new Quadrado(10,10); para testar q.desenha(); o exemplo. q.move(50,50); q.apaga(); } }
87
Interfaces
Se uma classe definida por apenas mtodos abstratos ento melhor no usar a palavra-chave abstract. Para estes caso o Java fornece uma tcnica chamada de interfaces que pode ser usada para definir um modelo de comportamento.
As interfaces diferem dos mtodos abstratos no fato de que nenhum mtodo da interface pode ter um corpo.
Uma classe pode implementar vrias interface mas apenas herda (extends) de uma nica classe. As Interfaces so compiladas da mesma forma que uma classe.
88
Interfaces
Uma interface uma coleo de definio de mtodos.
Java possui a palavra reservada interface para indicar a definio de uma interface. Sintaticamente equivalente a uma classe completamente abstrata.
Todos
Semanticamente entretanto, as duas diferem, pois uma interface guarda uma idia de protocolo (compromisso) entre classes.
89
Exemplo de Interfaces
class Linha implements FiguraGeometrica { int x, y ; interface FiguraGeometrica public Linha(int x1, int y1) { x = x1; y=y1; } public void desenha( ) { System.out.println("Desenhando linha (" + x + "," + y + ") "); } public void apaga( ) { System.out.println("Apagando linha (" + x + "," + y + ")" ); } public void move (int x1, int y1) Nesse exemplo a classe { this.apaga(); quadrado implementa a interface figuraGeometrica e x = x1; aceita desenvolver todos os y = y1; mtodos definidos pela this.desenha(); interface. } } { public void desenha(); public void apaga(); public void move (int x1, int y1); }
90
Pacotes
Um package um agrupamento de classes e interfaces que esto logicamente relacionadas.
No Java um conjunto de classes e interfaces que esto dentro de um mesmo diretrio de arquivos.
e para realizar controles de acesso; Membros de uma classe sem a especificao do controle de acesso so considerados membros que podem ser acessados pelas classes do mesmo package.
91
Pacotes
Para
colocar uma classe em um determinado pacote, deve-se colocar a palavra reservada package na primeira linha de cdigo do arquivo fonte (*.java). package java.lang;
Para
utilizar classes definidas em outros pacotes deve-se importar as classes atravs da palavra chave import. Importa apenas a
classe String
import java.lang.*;
java.util Classes de utilitrios (Data, Dicionrio, Pilha, Vetor, Random, etc.) java.sql Classes para manipulao de Banco de Dados
93
Tratamento de Excees
Uma exceo um evento que ocorre durante a execuo do programa, que foge normalidade do fluxo de instrues.
Linguagens que tratam adequadamente as excees tm a vantagem de separar a lgica da aplicao do tratamento de erros.
tratveis
pelo
94
Emitindo Excees
Os mtodos podem emitir excees de forma explcita. Um mtodo pode declarar que capaz de emitir uma exceo, usando para isso a clusula throws.
Ao emitir uma exceo est se considerando que o mtodo chamador ir tratar a exceo.
Caso o mtodo chamador no trate a exceo ser apresentado um erro no console do computador e a aplicao pode parar de rodar.
No prximo exemplo, caso seja digitado uma letra em lugar de um nmero, a mquina virtual Java emite um erro e para a execuo da aplicao.
95
Capturando Excees
Para capturar excees coloque o trecho que pode originar a exceo num bloco try.
Manipule cada exceo num bloco catch. Podem existir vrios catch para um nico try, j que num nico bloco try podem ocorrer tipos de excees diferentes.
try{ //origina a //exceo } catch(exception1){ //manipula exc1 } catch(exception2){ //manipula exc2 } finally { //proc. //obrigatrios }
97
InputStreamReader(System.in));
n = Float.valueOf(line).floatValue();
}
98
catch (Exception e) {
finally
Vetores Um vetor (array) uma seqncia de objetos ou valores de tipos primitivos, todos do mesmo tipo e combinados sob um nico identificador.
definido no momento da sua criao. Em Java, vetores so objetos. Na prtica, eles herdam de Object.
10 0
Vetores
Declarao: Exemplos:
Construo: Exemplo:
Inicializao:
Observe que um vetor pode ser declarado, construdo e inicializado ao mesmo tempo.
10 1
class DiasDosMeses { public static void main(String[] arg) { int[] maxDiasMes = new int[12]; String[] nomeMes = {"JAN", "FEV", "MAR", "ABR", "MAI", "JUN", "JUL", "AGO","SET", "OUT", "NOV", "DEZ"}; for(int i=0; i < maxDiasMes.length; i++) { if(((i+1 < 8) && ((i+1)%2==1)) || ((i+1 >= 8) && ((i+1)%2==0))) maxDiasMes[i] = 31; else maxDiasMes[i] = 30; } maxDiasMes[1] = 28; for(int i=0;i<12;i++) System.out.println(nomeMes[i]+":"+ maxDiasMes[i]); } }
10 2
class ManipulaMatriz { public static void main(String args[]) Declarao e construo { int Mat[][] = new int[5][2]; de uma matriz. for( int i=0; i < Mat.length; i++) { for( int j=0; j < Mat[0].length; j++) { Mat[i][j]= (i*2)+j; System.out.print(" Mat[ "+ i +" ] " +"[ " + j + " ] = " + Mat[i][j]); } System.out.println( "); } } }
10 3
Referncias Bibliogrficas: SANTOS, R. Introduo Programao Orientada a Objetos Usando Java. 1a Edio: Editora Campus. 2003.
DEITEL,
10 4