Professional Documents
Culture Documents
Roteiro
A linguagem Java e a mquina virtual Objetos e Classes Encapsulamento, Herana e Polimorfismo Primeiro Exemplo
A Linguagem JAVA
Principais caractersticas:
Orientao ao objetos Excees multi-thread Liberao automtica de memria Independncia de Plataforma
Linguagens de Programao
Ambiente de Execuo
Um programa, para ser executado, precisa de um conjunto de 'servios de apoio' que normalmente so oferecidos pelo sistema operacional. Em VB, por exemplo, as funes para criao da interface de usurio so exemplos de funes que acessam esses 'servios de apoio'. Normalmente os servios oferecidos pelo sistema operacional so disponibilizados atravs de funes de biblioteca.
Ambiente de Execuo
Essa dependncia compromete a portabilidade dos sistemas. Por essa razo, alguns fabricantes tm trabalhado na linha de oferecer um 'ambiente de execuo' aos programas que seja independente da mquina e do sistema operacional.
Todos os direitos reservados Klais
A mquina virtual Java, JVM, constitui o ambiente de execuo para programas Java. atravs da JVM que se consegue a independncia de plataforma: para cada plataforma (hardware + sistema operacional) implementada uma verso da JVM. Uma vez compilado, o cdigo pode ser executado em qualquer JVM.
JVM Windows Cdigo Java Compilador JAVA ByteCode JVM Linux JVM mainframe
Windows Cdigo VB Cdigo C# Cdigo Cobol Compilador VB Compilador C# Compilador Cobol ByteCode Ambiente .net
ByteCode
Objetos
Objetos reunem num nico elemento as caractersticas estticas e comportamentais. Caractersticas estticas so representadas como dados associados ao objeto. Elas descrevem o estado atual do objeto. Caractersticas dinmicas so descritas atravs de operaes ou mtodos executados pelo objeto. Estado e comportamento so partes integrantes do objeto.
Objetos
Um exemplo
Dados: descrevem o estado atual do objeto.
Encapsulamento
Um objeto encapsula numa nica entidade o seu estado e os mtodos que definem o seu comportamento. Consequncia
acoplamento mais fraco entre as diversas partes do sistema menor probabilidade de interferncias esprias entre as partes do sistema
Mtodos e Mensagens
A execuo de um mtodo disparada pelo envio de uma mensagem ao objeto. A execuo do mtodo a interpretao que o objeto d mensagem.
Tringulo origem p1 p2 desenha(cor) pinta(cor)
desenha(azul)
Mtodos e Mensagens
desenha(azul)
desenha(azul)
Objetos e Classes
tenha um significado bem definido para o problema em questo uma classe descreve um grupo de objetos com o mesmo conjunto de propriedades (atributos), os mesmos relacionamentos com outros objetos e a mesma semntica (operaes ou mtodos)
Objetos e Classes
Todos os objetos da classe funcionrio oferecem a mesma interface e mantm o mesmo conjunto de atributos.
Jos ...
classe Funcionrio
Cada instncia no entanto tem os seus prprios valores para os cada um dos atributos
Herana
Uma classe pode dar origem a outras classes atravs de herana (ou especializao). Os objetos da classe derivada herdam da classe origem (ou classe-me) todos os atributos e mtodos. A classe derivada pode estender a classe-me agregando novos atributos e mtodos. Ela pode tambm redefinir mtodos da classe-me.
Herana
classe-me
classederivada
generalizao
Polimorfismo
Numa situao onde se espera um objeto de uma determinada classe C sempre possvel utilizar um objeto de uma classe derivada de C.
desenhar a figura
Os pilares da OO
Herana e polimorfismo
fatorao de elementos comuns favorece o reuso
Objetos
Um objeto um 'elemento' de uma classe Cada objeto tem os seus dados associados
Um exemplo
Suponha uma classe que define fraes. Cada objeto dessa classe tem associado
um valor correspondente ao numerador um valor correspondente ao denominador um conjunto de operaes (soma, subtrao, etc.)
Um exemplo
public class Fracao { int num; // numerador int den; // denominador /* construtor */ public Fracao(int n, int d){ int m = mdc(n,d); num = n/m; den = d/m; } public String toString() { return "("+num+"/"+den+")"; } private static int mdc(int a, int b){ while (a != b) if(a > b) a = a - b; else b = b - a; return a; } public Fracao soma(Fracao f){ return new Fracao(f.num*den + num*f.den, f.den*den); } public Fracao mult(Fracao f){ return new Fracao(f.num*num,f.den*den); } public float toFloat(){ return (float)num / (float)den; } } Todos os direitos reservados Klais
Um exemplo
Nesse exemplo
o mtodo
public Fracao(int n, int d){ int m = mdc(n,d); num = n/m; den = d/m; }
Um exemplo
Nesse exemplo
a declarao das 'variveis' int num; int den; define os dados ou atributos associados a cada objeto da classe. os atributos definidos dessa forma s podem utilizados pelos mtodos da classe onde so definidos.
Todos os direitos reservados Klais
Um exemplo
Nesse exemplo
o mtodo
public string toString(){ return "("+num+/"+dem+")";
o operador + na expresso "("+num+/"+den+")" usado para realizar a concatenao de strings. o modificador public permite que o mtodo toString() seja usado por outras classes.
Um exemplo
public class Teste1 { /** * @param args */ public static void main(String[] args) { Fracao f1 = new Fracao(1,2); Fracao f2 = new Fracao(2,3); System.out.println("f1:"+f1.toString()+ " = " + f1.toFloat()); System.out.println("f2:"+f2.toString()+ " = " + f2.toFloat()); System.out.println("f1+f2:"+f1.soma(f2).toString()); System.out.println("f1*f1:"+f1.mult(f2).toString()); } }
Um exemplo
Nesse exemplo
os objetos f1 e f2 so criados atravs da chamada ao construtor. Essas variveis so apenas referncias a objetos. quando declaramos uma varivel da forma
Fracao f1;
estamos declarando uma referncia a um objeto que ainda no est definido. ao fazermos a atribuio
f1 = new Fracao(1,2);
estamos indicando que c1 passa a se referir ao objeto criado atravs do construtor. Se fizermos uma atribuio da forma f2 = f1; fazemos com que f1 e f2 sejam referncias aos mesmos objetos.
Todos os direitos reservados Klais