You are on page 1of 27

Curso de Java

Orientao a objetos e a Linguagem JAVA

Todos os direitos reservados Klais

Roteiro

A linguagem Java e a mquina virtual Objetos e Classes Encapsulamento, Herana e Polimorfismo Primeiro Exemplo

Todos os direitos reservados Klais

A Linguagem JAVA

Principais caractersticas:
Orientao ao objetos Excees multi-thread Liberao automtica de memria Independncia de Plataforma

Todos os direitos reservados Klais

Linguagens de Programao

Ao se aprender uma nova linguagem de programao, normalmente se estuda


sintaxe tipos de dados (bsicos, compostos, definidos pelo usurio) operadores Essas caractersticas so comandos de controle comuns maioria das linguagens ditas "de uso funes geral". Esse o caso de entrada e sada C, C++, Pascal, VB e tambm de C#. bibliotecas
Todos os direitos reservados Klais

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.

Todos os direitos reservados Klais

Ambiente de Execuo

O conjunto de servios oferecidos pelo sistema operacional


no padronizado afeta a estrutura das aplicaes

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

Mquina Virtual JAVA

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.

Todos os direitos reservados Klais

JVM x Ambiente .net

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 Cdigo Executvel

ByteCode

Todos os direitos reservados Klais

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.

Todos os direitos reservados Klais

Objetos

Um exemplo
Dados: descrevem o estado atual do objeto.

Funcionrio nome endereo registro cargo salario_bruto situao data de admisso

Operaes: mtodos que descrevem os aspectos dinmicos do objeto.

calcular_salrio_lquido() atualizar_situao() alterar_cargo() calcular_FGTS() verificar_saldo_frias()

Todos os direitos reservados Klais

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

Todos os direitos reservados Klais

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)

Todos os direitos reservados Klais

Mtodos e Mensagens

Objetos diferentes podem dar interpretaes diferentes a uma mesma mensagem


Tringulo origem p1 p2 desenha(cor) pinta(cor)

desenha(azul)

desenha(azul)

Retngulo origem largura altura desenha(cor) pinta(cor)

Todos os direitos reservados Klais

Objetos e Classes

Um objeto um conceito, abstrao ou algo que

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)

Um objeto uma instncia (ou um exemplar) de uma classe.


Todos os direitos reservados Klais

Objetos e Classes

Maria ... Joo ... Ana ... Pedro ...

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

Todos os direitos reservados Klais

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.

Todos os direitos reservados Klais

Herana

classe-me

Figura origem desenha(cor) pinta(cor) move(dx,dy)

classederivada

Tringulo origem p1 p2 desenha(cor) pinta(cor)

Retngulo origem largura altura desenha(cor) pinta(cor)

Todos os direitos reservados Klais

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

Todos os direitos reservados Klais

Os pilares da OO

Encapsulamento, herana e polimorfismo constituem os pilares da orientao a objetos. Encapsulamento


melhora a modularidade do sistema disciplina as interfaces reduz interferncias entre as partes

Herana e polimorfismo
fatorao de elementos comuns favorece o reuso

Todos os direitos reservados Klais

Objetos

Um tipo de dado define


um conjunto de valores um conjunto de operaes sobre esses valores.

Uma classe define


um conjunto de dados um conjunto de mtodos

Um objeto um 'elemento' de uma classe Cada objeto tem os seus dados associados

Todos os direitos reservados Klais

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.)

Todos os direitos reservados Klais

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; }

o construtor dessa classe: utilizado para a criao de objetos dessa classe.


tem o mesmo nome que a classe inicia os atributos do objeto sendo criado (neste caso i e r). exemplo de uso: Fracao f = new Fracao(12,32); o modificador public indica que o mtodo pode ser utilizado por outras classes que faam parte do projeto ou usem o pacote que contm a classe.
Todos os direitos reservados Klais

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+")";

responsvel pela converso de um objeto Fracao para string. Exemplo:


Supondo a declarao Fracao f = new Fracao(2,3); ao fazermos c.toString(), o valor retornado ser o string
"(2/3)"

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.

Todos os direitos reservados Klais

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()); } }

Todos os direitos reservados Klais

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

You might also like