You are on page 1of 98

A Plataforma Java Programao Orientada a Objetos em Java

Programao Orientada a Objetos em Java


Prof. Giuliano Prado de Morais Giglio, M.Sc.
profgiuliano@yahoo.com.br http://www.giulianoprado.xpg.com.br

OBJETIVOS DO CURSO
n

Fornecer uma viso geral da linguagem Java e apresentar suas potencialidades. Capacitar os alunos a trabalhar com a linguagem de programao Java. Introduzir as principais fundamentos de implementao de aplicaes grficas Java com pacote Swing.

ORGANIZAO DO CURSO
Introduo a linguagem JAVA; Estrutura da Linguagem; Java e Orientao a Objetos; Classes
Objetos (Instanciao) Atributos Mtodos Encapsulamento; Sobrecarga;

Herana e Polimorfismo; Aplicaes Visuais (Swing) com acesso a Banco de Dados (JDBC, DAO, ...);

A Plataforma Java Programao Orientada a Objetos em Java

Introduo a Linguagem Java


Prof. Giuliano Prado de Morais Giglio, M.Sc.

CONCEITOS DO JAVA
Java : Uma Linguagem de Programao
Um Ambiente de Desenvlvimento Um Ambiente de Aplicativos

CONCEITOS DO JAVA
J2SE Contm as classes principais da plataforma Java, e chamado s vezes de Core Java Plataform. n J2EE um conjunto de tecnologias que fornecem APIs e um ambiente para desenvolvimento e execuo de aplicaes coorporativas. n J2ME o Java para pequenos dispositivos, desde palms at celulares.
n

INTRODUO AO JAVA
n

Vantagens de Java como Linguagem de Programao:


vOrientada a Objetos (O.O) vcdigo sem bugs: mais fcil em Java que em C++ vdesalocao manual de memria no existe varrays verdadeiros + ausncia de aritmtica de ponteiro vsubstituio de herana mltipla por interface vindependncia de plataforma!

JAVA
n

Simples
Sintaxe similar a C / C++ No possui os recursos perigosos, desnecessrios ou pouco usados:
Aritmtica de ponteiros (*--pt = vet+5) Estruturas (struct) Definio de tipos (typedef) Pr-processamento (#define) Liberao explcita de memria (free) Eliminao de 50% dos erros mais comuns Interpretadores pequenos (256 Kb)

COLETOR DE LIXO
nA

Linguagem Java realiza a liberao de memria, que antes era responsabilidade do programador.

JAVA
n Orientada a Objetos

Utiliza tecnologia de objetos similar a de C++, com alguns acrscimos e simplificaes.

JAVA
n Distribuda

Implementa os protocolos da arquitetura TCP/IP, tais como: HTTP, SMTP, TCP, UDP, RTP, FTP, etc.

JAVA
n Robusta

Possui checagem em tempo de compilao e execuo. Gerenciamento automtico de memria (garbage collector ). Ausncia de recursos perigosos. Extensiva verificao do cdigo

JAVA
n Robusta

O fonte compilado para um cdigo intermedirio (bytecode). O interpretador funciona como uma Mquina Virtual Java (JVM).

INDEPENDNCIA DE PLATAFORMA

JAVA
n Interpretada

Os bytecodes so executados por um interpretador (JVM) embora existam opes de compilao.

JVM - JAVA VIRTUAL MACHINE


n

Cabe ao interpretador Java de cada plataforma de hardware especfica assegurar a execuo do cdigo compilado para a JVM. c

AMBIENTE DE PROGRAMAO JAVA


n

Java 2 Standard Developers Kit (J2SDK)


JVM mais todas as APIs, compilador e ferramentas (tudo o que voc precisa para escrever programas Java) JVM mais as APIs (tudo o que voc precisa para executar programas Java)

Documentao das APIs (Application Programming Interface)

AMBIENTE DE PROGRAMAO JAVA


n Java

2 Standard Developers Kit (J2SDK)


Disponvel para download no Site Java da Sun (java.sun.com) Verso atual (J2SDK 1.6.0) Principais aplicativos:
javac (compilador) java (interpretador) applet viewer (visualizador de Applets)

AMBIENTE DE PROGRAMAO JAVA


n Documentao

das APIs (Application Programming Interface)


Descreve quais so as classes definidas pela linguagem, o que fazem e como elas devem ser usadas nos programas. Disponvel para download ou on-line no Site Java da Sun (http://java.sun.com/docs/index.html)

AMBIENTE DE PROGRAMAO JAVA


n Existem

editores (IDEs) especficos para o desenvolvimento de Aplicativos Java


vSUN NetBeans vBorland JBuilder vEclipse vBlueJ vJCreator

INSTALAO
n n n

Fazer o download do J2SDK. Instalar o arquivo jdk-6u6-windows-i586-p.exe Incluir as seguintes variveis de ambiente:
JAVA_HOME: apontar para o diretrio onde o J2SDK foi instalado = C:\Arquivos programas\Java\jdk1.6.0_06 CLASSPATH:responsvel por definir um caminho de pesquisa para as classes do J2SE = ;.JAVA_HOME PATH: responsvel por definir um caminho de pesquisa para arquivos executveis. Se est varivel no for configurada, o processo de compilao dos programas feitos em Java somente poder ser executado dentro da pasta lib do diretrio de instalao do J2SE 6.0 JDK = C:\Arquivos programas\Java\jdk1.6.0_06\bin

INSTALAO
n Criar

um subdiretrio onde estaro contidos todos os programas Java. n Testar o ambiente


c:\java -version

PRIMEIRO PROGRAMA JAVA


Digite o programa Hello.javaapresentado abaixo, utilizando o Bloco de Notas
/*** Primeiro Programa Java ***/ class Hello { public static void main(String arg[]) { System.out.println(Hello World!); } }

PRIMEIRO PROGRAMA JAVA


Hello.java

PRIMEIRO PROGRAMA JAVA


n Compilar

o Programa
javac Hello.java

n Se

o programa foi compilado corretamente, um novo arquivo (Hello.class) ser criado. o programa
java HelloWorldApp

n Interpretar

AMBIENTE DE PROGRAMAO JAVA

ANATOMIA DO PROGRAMA
n Comentrios

comentrios em Java seguem a mesma sintaxe de c. /* texto */ // texto /*** Primeiro Programa Java ***/ n O compilador ignora estas linhas

n Os

ANATOMIA DO PROGRAMA
de Classe n a unidade bsica para uma linguagem OO como Java n class nome { ... } n class a palavra reservada que marca o incio da declarao de uma classe.
n Definio

ANATOMIA DO PROGRAMA
n Delimitao um

de Blocos

bloco est sempre entre chaves { } Em Java as instrues terminam em ponto-e-vrgula (;)

ANATOMIA DO PROGRAMA
Mtodo main n Toda aplicao java, exceto Applets e Servlets, deve possuir o mtodo main. public static void main (String args[ ]){ System.out.println(Hello World!"); } n O mtodo main indica o incio de execuo de qualquer programa Java.

ANATOMIA DO PROGRAMA

Argumentos do Mtodo main public - um qualificador do mtodo que indica que este acessvel externamente a esta classe. static - um outro qualificador que especifica o mtodo como sendo um mtodo de classe. void - indica que no existe retorno a este mtodo. main - o nome do mtodo. String args[ ] - Armazena valores passados por linha de comando.

ANATOMIA DO PROGRAMA
n System.out.println(Hello

World!)

Escreve na tela o contedo nos parntesis. Chamada do mtodo println para o atributo out da classe System. O argumento (...) do tipo String.

ANATOMIA DO PROGRAMA
n System.out.println(sequncia

de

escape)
\n (nova linha) \t (tabulao horizontal) \r (retorno de carro) \\ (barra invertida) \ (aspas duplas)

DETALHES IMPORTANTES
fonte tem extenso .java n Programa compilado tem extenso .class n A linguagem case-sensitive, letras maisculas so diferentes de letras minsculas n Cada programa uma classe
n Programa

DETALHES IMPORTANTES
n n n n n

Nome da classe no programa tem que ser igual ao nome do arquivo fsico .java Sintaxe similar a linguagem C/C++ As classes podem estar agrupadas em package Package um subdiretrio. Exemplo: java.awt, java.math As classes podem ser compactadas (zip ou jar)

ESTRUTURAS DE PROGRAMAO
n Identificadores

Nomeiam variveis, funes, classes e objetos Podem conter letras e/ou dgitos, _ e $ No podem ser iniciados por dgito No podem ser palavras reservadas No tem tamanho mximo

ESTRUTURAS DE PROGRAMAO
VLIDOS n Nome n NumDepen n total_geral n NOME INVLIDOS n 1prova n total geral

ESTRUTURAS DE PROGRAMAO

ESTRUTURAS DE PROGRAMAO

ESTRUTURAS DE PROGRAMAO
n n

Texto char: representa um caracter Unicode de 16 bits (exemplos: a, M, \t, \u02B1)


retrocesso tab avano de linha retorno de carro aspas apstrofo barra invertida indica o caracter unicode em hexadecimal

\b \t \n \r \ \ \\ \u001B

ESTRUTURAS DE PROGRAMAO
n Texto
n

String: representa uma seqncia de caracteres


char opcao; opcao = 'S'; opcao = 'N'; String frase; frase = Ordem e Progresso;

ESTRUTURAS DE PROGRAMAO
n Inteiro byte short int long 8 bits 16 bits 32 bits 64 bits 2727-1 215..215-1 231..231-1 263..263-1

ESTRUTURAS DE PROGRAMAO
n Inteiro

byte index = 50; short soma = 2000; int num carros = 5; _ long valor = 0XDADAL;

ESTRUTURAS DE PROGRAMAO
n Tipos Ponto Flutante (Real)

float 32 bits double 64 bits


n

Representaes:
3.14 6.02E23 2.718F 123.4E+306D

float pi = 3.1415f; double pi = 3.1415;

ESTRUTURAS DE PROGRAMAO
n Declaraes

e atribuies de variveis

As declaraes podem ser exibidas em qualquer posio do cdigo-fonte.


int x, y; float z = 3.144f; double w = 3.1415; boolean verdade = true; char c, d; c = 'A'; d = '\u0013'; x = 6; y = 1000;

ESTRUTURAS DE PROGRAMAO
n Variveis n Inicializao

padro Java

variveis numricas com zero variveis booleanas com false outras variveis com null

OPERADORES
n Lgicos

Comparao de valor: = = , !=, !, > e > Juno de expresses: &, &&, |, || Comparao de objetos: instanceof()

OPERADORES
n Aritmticos

Soma ( + ) Subtrao ( - ) Multiplicao ( * ) Diviso ( / ) Resto ( % )

OPERADORES
n Considere

um operador @ qualquer n Expresses do tipo X = X @ Z podem ser substitudas por X @= Z


x=x+3 x += 3

x=x*(9+y)

x *= ( 9 + y )

OPERADORES
n Ateno

(programadores C/C++):

O operador + no apenas aritmtico (por ex. pode ser utilizado para inicializao e concatenao de strings) Existe o tipo booleano, logo os operadores relacionais e lgicos NO geram inteiros No h converses automticas (por ex. real para inteiro)

OPERADORES
n Ateno

(programadores C/C++):

int i, j; float r; i = r / j; // ERADO! i = (int) r / j; // OK!

CONTROLE DE FLUXO
n Estrutura de Deciso - If / Else if (expresso booleana) { instruo ou bloco de comandos } else { instruo ou bloco de comandos }
if (cont >= 0) { System.out.Println(Erro !!!); } else { System.out.println(Ok !); }

CONTROLE DE FLUXO
n

Estrutura de Deciso - switch

switch (expresso short, int, byte ou char) { case expresso2: comandos; break; case expresso3: comandos; break; default: comandos; break; }

CONTROLE DE FLUXO
n
{ case 0: setBackground(Color.black); break; case 2: setBackground(Color.red); break; default: setBackground(Color.white); break; }

Estrutura de Deciso - switch


switch (cor)

A instruo break (opcional) impede que o fluxo de execuo continue pelas opes seguintes A clusula default opcional

CONTROLE DE FLUXO
n Estrutura de Repetio for
for (expr_inicial; expr_booleana; expr_increm) { bloco de comandos }
for (int x=0; x<10; x++) { System.out.println(" Valor do X : " + x); }

CONTROLE DE FLUXO
n Estrutura de Repetio - while
while (expr_booleana) { bloco de comandos }

int cont = 0 while (cont < 100) { System.out.println(" contando " + cont); cont++; }

CONTROLE DE FLUXO
n Estrutura de Repetio - do while
do { bloco de comandos } while (expr_booleana)
int x = 0; do { x++; } while (x <10);

VETORES(Arrays)
n n n

n n n

Declarao Podem ser declarados arrays de quaisquer dos tipos atravs dos smbolos [ e ]. A declarao no cria o array, isto , no aloca memria. Isso feito pela instruo new (arrays so objetos em Java). char s[ ]; // declarao s = new char[3]; // Criao s[0] = A; s[1] = B; s[2] = C; // atribuio

VETORES(Arrays)
n Declarao

Os colchetes podem ser usados antes ou depois da varivel. Exemplo:


char s[ ]; char [ ]s;

VETORES(Arrays)
n

Declarando, criando e iniciando um array


char s[ ] = {'A', 'B', 'C'};
// declarao, criao e incializao

Em Java array um objeto, mesmo quando composto por tipos primitivos. Apenas a declarao no cria o objeto, sendo necessrio o uso da palavra reservada new.
Point p[ ] = new Point[5]; p[0] = new Point(); p[1] = new Point();

VETORES(Arrays)
n Alocao

de Memria

n Quando

um array criado, todos os seus elementos so inicializados.

VETORES(Arrays)
n

Arrays no podem ser dimensionados na definio:


int vector[5]; //ERRADO!

n Arrays

no podem ser utilizados sem a criao:


int vector[]; vector[0] = 4; //ERRADO!

VETORES(Arrays)
n Para

determinarmos o seu tamanho podemos usar o mtodo length:


int lista [] = new int [10]; for (int j = 0; j < lista.length; j++) { System.out.println(lista[j]); }

VETORES(Matrizes)
n Multi-dimensionais

int lista [] = new int [10]; int matriz [][] = new int [4][5]; matriz [0][0] = 300; matriz [1][3] = 600;

Enumeraes
n enum

Permitem criar um novo tipo de dado parecido com um primitivo que recebe um conjunto de constantes ordenadas e separadas por , Exemplo
enum Meses { Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez };

Enumeraes
n T,

mas... Pra que eu quero isso ?? n Enumeraes simplificam o trabalho de criar certos domnios que no precisam estar em banco de dados, como por exemplo constantes que definem mensagens do sistema, status de objetos, entre outros.

Enumeraes
usamos enumeraes no precisamos comparar com nmeros inteiros, o prprio nome da constante definida utilizado. n Exemplo:
if ( mes == Meses.Jan) ...
n Quando

Enumeraes
n Mas

no s isso ! Em Java voc ainda recebe uma incrvel forma de criar enumeraes com objetos ! isso mesmo! Com direito a atributos e mtodos! n Ligando agora voc ainda recebe esse incrvel kit compilador, ele at flutua na gua !

Enumeraes
public enum Mes { Jan(Janeiro, 01), Fev(Fevereiro, 02), Mar(Maro , 03), Abr(Abril, 04), Mai(Maio, 05), Jun(Junho, 06); private final String nome; private final String numero; Mes(String n, String num) { nome = n; numero = num; } public String getNome() { return nome; } public String getNumero() { return numero; } }

Enumeraes
public class TestaMes { public static void main(String args[]) { for (Mes m : Mes.values()) { System.out.println(m + + m.getNome() + + m.getNumero()); } } }

nMas que for esse ??

For aprimorado
n Esse

for permite percorrer um array ou um enum (ou ainda uma Collection que s veremos l na frente) de forma mais simples n Definimos o tipo que retornado pelo array ou pelo enum, e pegamos a lista a percorrer

Pra usar o for com array


public class TestaFor { public static void main(String args[]) { int a[] = {4,5,6,3,4,2,1}; for (int i : a) { System.out.println(i); } } }

STRINGS
string no um tipo primitivo, uma classe pr-definida do Java. So seqncias de caracteres. n Pode ser criado com ou sem a palavra new.
String String String nova = String e = ""; // uma string vazia alo = "Alo Pessoal"; nova; "Sou nova"; nome = new String("Antonio");

n Uma

STRINGS
n Operaes

com String new.

// Concatenao String nova = alo + ", tudo Ok ? "; // Edio String substr = alo.substring(0,3); // "Alo" // Verificando tamanho int tam = alo.length(); // tamanho = 11

Tratamento de Excees
n

n n

O tratamento de excees uma importante etapa do desenvolvimento de software. Em outras linguagens esse mecanismo complexo e/ou confuso. Em Java usamos um bloco try/catch que tenta executar um conjunto de instrues e caso acontea uma exceo ele a pega e prov o tratamento adequado.

Tratamento de Excees
n n

Os blocos try/catch so complementados pelos blocos finally (que so opcionais). Blocos finally so *sempre* executados, somente uma instruo System.exit() pode impedir um bloco finally de executar. Usamos blocos finally para executar instrues de limpeza tal como fechar statements, resultsets e conexes a banco.

Tratamento de Excees
public int getInteiro() { int i = 0; try { String str = JOptionPane.showInputDialog (digite um numero); i = Integer.parseInt(str); } catch (NumberFormatException e) { System.out.println(string nao pode ser convertida); i = -1; } finally { System.out.println(esta e a ultima parte); } return i; }

A Plataforma Java Programao Orientada a Objetos em Java

Java e Orientao a Objetos - Conceitos Principais Prof. Giuliano Prado de Morais Giglio, M.Sc.

Orientao a Objetos
nHistria da OO
Programao sob demanda Programao estruturada Orientao a Objetos

nDiversos avanos foram realizados na rea acadmica ainda na dcada de 70 nA partir da dcada de 80 comeou a ser adotada tomando seu espao nos anos 90

Orientao a Objetos
nO

paradigma estruturado trata de funes e procedimentos aplicados a dados n O paradigma orientado a objetos trata de dados e comportamentos
Paradigma Estruturado
dados funes

Paradigma OO
funes dados

Orientao a Objetos
PCuidado

! Orientao a Objetos no elimina a programao estruturada. Dentro dos mtodos (que definem o comportamento de um objeto) usamos a programao estruturada.

Orientao a Objetos
n Classes

e Objetos constituem a unidade de representao de dados para esse paradigma. E mantm uma relao muito prxima entre si. n Podemos pensar na Classe como a forma da pea ou do bolo, e nos objetos como peas prontas feitas de matria prima.

Orientao a Objetos

Orientao a Objetos
definem novos tipos de dados, tal como structs de C ou registers de Pascal. n A partir de novos tipos de dados torna-se mais fcil organizar a aplicao em questo. n Um objeto uma instncia de uma classe, ou seja, um exemplar do conjunto de objetos que seguem os moldes daquela classe
n Classes

Orientao a Objetos
n Atributos

so os campos que contm as informaes daquela classe. Ao conjunto de atributos preenchidos de um objeto damos o nome de estado do objeto n Existem atributos de classe e atributos de instncia.

Orientao a Objetos
n Mtodos

definem o comportamento dos objetos definidos pela classe. n Por comportamento entendemos o conjunto de reaes ou atividades que os objetos podem desempenhar. n Exemplo: Classe Avio, mtodo decolar, mtodo pousar, etc... n Mtodos podem ter parmetros de entrada e retorno

Principais Diagramas de UML


n Casos

de Uso sem diagrama n Existe um diagrama para casos de uso, ele pode ser comparado informalmente ao nvel zero dos DFDs. Apresenta uma viso de alto nvel das interaes do sistema. n A grande importncia dos casos de uso est na descrio textual detalhada do caso de uso J exemplo no quadro

nDiagrama de Classes este diagrama representa as classes que usaremos no sistema, suas associaes, relacionamentos e heranas. nTpicos importantes
composio versus agregao classes de associao

Principais Diagramas de UML

Principais Diagramas de UML


n Diagrama

de Classes exemplo

Principais Diagramas de UML


n Diagrama

de Seqncia a importncia desse diagrama e mostrar o fluxo de mensagens entre as classes/objetos do sistema. n Uma boa prtica de modelagem criar os diagramas de seqncia para as interaes mais complexas do sistema.

n Diagrama

Principais Diagramas de UML


de Seqncia exemplo

A Plataforma Java Programao Orientada a Objetos em Java

Java e Orientao a Objetos - Implementao Prof. Giuliano Prado de Morais Giglio, M.Sc.

DEFINIO DE UM OBJETO
n

Um objeto pode ser descrito por um conjunto de atributos (propriedades) e seu comportamento:

DEFINIO DE UM OBJETO
n

Um cachorro possui um estado (nome, cor, raa) e um comportamento (latindo, mordendo, lambendo).
ATRIBUTOS Pluto Dourado Vira-latas COMPORTAMENTO Descansando Uivando

CLASSES DE OBJETOS
n Grupo

de objetos com os mesmos atributos e o mesmo comportamento pertencem mesma classe.

CLASSES DE OBJETOS
n Uma

classe um modelo ou prottipo que define as propriedades e mtodos (comportamento) comuns a um conjunto de objetos. so moldes que definem as variveis e os mtodos comuns a todos os objetos de um determinado tipo.

n Classes

CLASSES DE OBJETOS
n No

mundo real existem vrios objetos do mesmo tipo. Por exemplo, a sua bicicleta uma das milhares que existem no mundo. n Usando a terminologia de orientao a objetos, o objeto sua bicicleta uma instncia da classe de objetos bicicleta.

CLASSES DE OBJETOS
n Classes X Objetos Uma

classe um molde a partir do qual vrios objetos so criados.

ORIENTAO A OBJETOS EM JAVA


n

n n

Programas em Java provavelmente iro criar diversos objetos de diversos tipos de classes. Os objetos interagem entre si atravs da troca de mensagens. Aps o objeto ter realizado o trabalho proposto, o mesmo eliminado atravs da coleta automtica de lixo.

REPRESENTAO DE UMA CLASSE


Classe Atributos

Mtodos

ESTRUTURA DE UMA CLASSE EM JAVA


class BirthDate { int daya; int month; int year;

int getDay() {

REFERNCIA A UMA CLASSE EM JAVA


BirthDate myBirthDate;

CLASSES EM JAVA
Declarao: class Ponto { ... } n Propriedades: dados que as instncias da classe contero: class Ponto { float x, y; }
n

CLASSES EM JAVA
class Veiculo {
// Propriedades private float velocidadeMaxima; protected float capacidadeTanque, consumo; protected int potencia, ano; protected String marca, modelo, cor; public String chassis, placa; ... // Mtodos ...

public float autonomia ( ) { return capacidadeTanque * consumo; } }

CLASSE = Molde de Objetos


Tempo de Compilao Tempo de Execuo

Classe: Carro Esportivo

Objeto Carro: Instncia 3

CRIAO DE OBJETOS (INSTANCIAO)


n Um objeto de

uma classe criado utilizando-se a palavra new.


Date mayBirthDate = new Date();

EXEMPLO

REFERNCIAS PARA OBJETOS


n Alocao

de memria:

Ponto p1; // cria apenas a referncia Ponto p1 = new Ponto(); // aloca memria e atribui // endereo referncia

DIFERENA COM TIPOS PRIMITIVOS


n Quando

se declara variveis de qualquer tipo primitivo (int, float, char, etc.), o espao na memria alocado como parte da operao. n A declarao de uma varivel de classe no aloca memria, somente quando a instruo new chamada.

DIFERENA COM TIPOS PRIMITIVOS

REFERNCIA PARA OBJETOS


n Alocao

de memria

Ponto p2 = p1; // cria outra referncia // para o mesmo objeto

ATRIBUIO DE VALORES
n

As propriedades dos objetos podem ser manipuladas diretamente pelo operador de ponto (.)
Ponto p1 = p1.x = 1; p1.y = 2; // Ponto p2 = p2.x = 3; p2.y = 4; // new Ponto();

p1 representa o ponto (1,2) new Ponto();

p2 representa o ponto (3,4)

p1 = p2; p1.x = 10; // p1 representa o ponto (10,4)

// p2 representa o ponto (10,4)

OBTENO DE VALORES
n Os valores

das propriedades podem ser obtidos facilmente


System.out.pritln("p1.x = " + p1.x + "."); System.out.pritln("p2.x = " + p2.x + "."); // p1.x = 10. // p2.x = 10.

MTODOS
n n

Definem o comportamento da classe. Declarao:


class Ponto { int x, y; void mover (int dx, int dy) x += dx; y += dy; } }

MTODOS
n Implementam

as funes de uma

classe n Possuem sintaxe semelhante sintaxe de definio das funes de um programa procedural n Determinam o comportamento da classe e a troca de mensagens com outras classes

MTODOS

ASSINATURA DE UM MTODO

O tipo de retorno pode ser void

CHAMADAS DE MTODOS
n

A troca de mensagens entre os objetos realizada atravs da chamada de mtodos com passagem de argumentos Exemplo
... p1.mover(10,l0); //Deslocou p1 dez unidades, nos dois eixos. ...

EXEMPLO
class ProgramaPrincipal { public static void main (String args[]) { Funcionario func; func = new Funcionario(Juca,102);

MTODO Main
class ProgramaPrincipal { public static void main (String args[]) { Funcionario func; func = new Funcionario(Juca,102); } }

PALAVRA RESERVADA This


n n

As vezes necessrio que o objeto se referencie. Existe uma palavra reservada this que significa uma referncia ao prprio objeto

class Ponto { int x, y; void mover (int x, int y) { this.x = x; this.y = y; } }

PALAVRA RESERVADA This


n

Quando o mtodo chamado, a palavra-chave this refere-se ao objeto classStartDate

PASSAGEM DE ARGUMENTOS
n Tipos

de argumentos n Objetos passagem por referncia.


Originais so sujeitos a alteraes dentro do mtodo.
n Tipos

primitivos passagem por valor.

Originais no so sujeitos a alteraes dentro do mtodo.

PASSAGEM DE ARGUMENTOS
n

Tipos de argumentos

class Ponto { public int x, y; Ponto (int x, int y) { this.x = x; this.y = y; } public void teste (Ponto pt, int i) { pt.x = 3; pt.y = 4; i = 1; }

PASSAGEM DE ARGUMENTOS
n

Tipos de argumentos

... public static void main (String args[]) { Ponto ponto = new Ponto(1,2); int i = 2; // Antes, ponto=(1,2) e i = 2. ponto.teste(ponto,i); // Depois, ponto=(3,4) e i = 1. } }

VARIVEIS LOCAIS
n

Alm das propriedades de um objeto, podem ser definidos outros tipos de varivel, locais a um mtodo ou a um bloco de operaes.
float calculaMedia(float p1, float p2) { float media = (p1 + p2)/2; return media; }

VARIVEIS LOCAIS
... String alunos[]; float listaAprovados() { for (int i = 0; i < alunos.length;i++) { String nome = alunos[i]; System.out.println(i + ": " + nome); } }

CONSTRUTORES
n

n n

Devemos usar construtores quando queremos definir o estado inicial de objetos de uma classe (atribuir valores aos atributos de um objeto no momento de sua criao, por exemplo) Usados na criao de um objeto atravs do comando new Possuem o mesmo nome da classe e no tm tipo de retorno!

CONSTRUTOR PADRO
n

A linguagem Java declara um construtor padro, vazio, que no recebe nenhum parmetro Ponto p1 = new Ponto(); Quando declaramos um novo construtor, esse construtor padro deixa de existir e substitudo pelo novo construtor
class Ponto { int x; int y; Ponto () { } }

CONSTRUTORES
n

Podem receber parmetros, que podem servir para inicializao dos atributos da classe Uma classe pode ter vrios construtores
class Ponto { int x; int y; Ponto (int x, int y) { this.x = x; this.y = y; } }

CONSTRUTORES
n Deve

ser usado no momento da criao do objeto:


Ponto p1 = new Ponto(1,2); Ponto p2; p2 = new Ponto(3,4); Ponto p3 = new Ponto();

CONSTRUTORES

CONSTRUTORES

MEMBROS DE CLASSE
n

Pode-se definir numa classe membros que sejam compartilhados por todas instncias daquela classe. Esses membros so chamados de membros de classe. Podem ser:
propriedades (variveis) mtodos

Todo membro de classe deve usar o qualificador static.

VARIVEIS DE CLASSE
n

Exemplo:
class Pessoa { static int numPessoas = 0; int id; Pessoa () { id = numPessoas; numPessoas++; } ... }

VARIVEIS DE CLASSE

VARIVEIS DE CLASSE
n

Exemplo:
Pessoa joao = new Pessoa (); // joao.id = 0; // joao.numPessoas = 1; Pessoa ana = new Pessoa(); // ana.id = 1; // ana.numPessoas = 2;

Fazer este exemplo, imprimindo (id) e (numPessoas).

VARIVEIS DE CLASSE
n Os

membros de classe podem ser acessados diretamente, sem necessidade da existncia de um objeto.
Pessoa.numPessoas = 100; // Prxima pessoa criada ser 101

ESCOPO DE VARIVEIS
n Ao

utilizar o nome de uma varivel dentro de um mtodo, Java procurar a sua definio na seguinte ordem:
bloco bloco mais externo mtodo varivel de instncia ou classe super-classe

MTODOS DE CLASSE
class Example { .. static int multiply10(int value) { .. } }

Exemplo:
int value = "100"; int new_value = Example.multiply10(value); System.out.println("n.v = " + new_value);

CONSTANTES
n Podem

ser:

variveis (de instncia, de classe ou locais) mtodos


n So

declaradas com a palavra reservada final

CONSTANTES
class Teste { // Variveis constantes final int ESQUERDA = 0; final int DIREITA = 0; // Mtodo constante private final static void main (String args[]) { .. } .. }

ENCAPSULAMENTO
Atravs dos mtodos podemos atingir uma das principais caractersticas da orientao a objetos. O encapsulamento, que a capacidade de esconder do mundo exterior as estruturas internas de uma classe. n O encapsulamento define que os atributos s so acessados atravs de mtodos o que evita o acoplamento
n

ENCAPSULAMENTO
n

a forma de restringir o acesso aos mtodos e propriedades de uma classe. n Protege os dados de um objeto contra uma modificao imprpria. n necessrio definir o controle de acesso aos mtodos e propriedades de uma classe, de forma que no se interfira no seu funcionamento.

CONTROLE DE ACESSO
membros de uma classe podem ser protegidos de acessos indevidos n Mtodos de acesso: public e private
public: membros podem ser acessados livremente private: membros s podem ser acessados pela prpria classe (necessrio definir os accessor methods - get e set)
n Os

CONTROLE DE ACESSO
n

Exemplo class Pessoa {


private nome; private idade; public obs; Pessoa (String nome, int idade){ this.nome = nome; } public imprimeNome() { System.out.println(Nome: + nome); }

CONTROLE DE ACESSO
n

Exemplo
Pessoa p1 = new Pessoa("Joao",10); p1.nome = "Raul";//ERRO DE COMPILAO! p1.obs = "bom garoto"; //OK! p1.imprimeNome(); //OK! // Nome: Joao

SOBRECARGA DE MTODOS
n Sobrecarregar

um mtodo significa definir dois ou mais mtodos com o mesmo nome, porm com assinaturas diferentes. diferente pode ser: tipo de retorno, nmero ou tipos de parmetros diferentes.

n Assinatura

SOBRECARGA DE MTODOS
nA

sobrecarga pode ser feita igualmente aos mtodos construtores boa prtica usar a sobrecarga, somente, em mtodos que possuam a mesma funcionalidade.

n Uma

SOBRECARGA DE MTODOS
n

Exemplo

SOBRECARGA DE MTODOS
n

Exemplo
class Ponto { ... void mover (int dx, int dy) { x += dx; y += dy; } void mover (int raio, float ang) { raio*Math.cos(ang); raio*Math.sen(ang); } }

SOBRECARGA DE CONSTRUTORES
n

Exemplo
class Ponto { int x; int y; Ponto () { } Ponto (int x, int y) { this.x = x; this.y = y; } ... }

SOBRECARGA DE CONSTRUTORES
n n

A sobrecarga de construtores visa definir formas diferentes de criar um objeto Exemplo:


Ponto p1 = new Ponto(); //p1 est em (0,0) Ponto p2 = new Ponto(1,2); //P2 est em (1,2)

SOBRECARGA DE CONSTRUTORES
n n n n

Um construtor pode chamar outro construtor. Isso se chama encadeamento de construtores. Para isto necessrio usar a palavra reservada this. Uma chamada a outro construtor dever ser a primeira linha do construtor!

SOBRECARGA DE CONSTRUTORES
n

Exemplo:
class Ponto { int x=0; int y=0; Ponto () { this(0,0); } Ponto (int x, int y) { this.y=y; } }

O QUE HERANA?

O QUE HERANA?
um mecanismo que permite a uma classe herdar todo o comportamento e os atributos de outra classe. n Uma classe que herda de outra classe chamada subclasse e a classe que fornece a herana chamada superclasse.
n Herana

O QUE HERANA?
n n n n

A classe A a superclasse de B A classe B uma subclasse de A A classe B a superclasse de C, D e E As classes C, D e E so subclasses de B

HERANA
n

As superclasses definem atributos e mtodos genricos que so herdados pelas classes derivadas. Um mtodo herdado de uma superclasse pode ser redefinido pela classe derivada, mantendo o mesmo nome mas agindo de forma diferente. Normalmente os atributos de um objeto s podem ser consultados ou modificados atravs dos seus mtodos (accessor methods).

HERANA EM JAVA
n n

Java adota o modelo de rvore A classe Object a raiz da hierarquia de classes qual todas as classes existentes pertencem; Quando no declaramos que uma classe estende outra, ela, implicitamente, estende Object

HERANA EM JAVA
n

Uma classe Java estende apenas uma outra classe (herana simples ou nica) Para criar uma sub-classe, usamos a palavra reservada extends

HERANA EM JAVA
n

Como os mtodos so organizados em uma hierarquia de classes:

HERANA EM JAVA
n

Funcionamento quando uma subclasse define um mtodo que possui o mesmo nome, tipo de retorno e argumentos que um mtodo definido em uma superclasse.

HERANA EM JAVA

EXEMPLO DE HERANA EM JAVA

SOBRECARGA E ANULAO
n

Sobrecarga de Mtodos (overloading)


Definir mais de um mtodo com mesmo nome mas com assinaturas (parmetros) diferentes.

Anulao de Mtodos (overriding)


Definir um novo mtodo com mesmo nome e assinatura de outro de uma superclasse.

Mtodos final no podem ser sobrepostos.

EXEMPLO DE SOBRECARGA E ANULAO

THIS e SUPER
n

Usados quando for necessrio referenciar explicitamente a instncia (this) ou a superclasse (super).

CONTROLE DE ACESSO: PROTECTED


n

Java permite declararmos um membro (mtodo ou atributo) que, embora no seja acessvel por outras classes, herdado por suas sub-classes Para isso usamos o modificador de controle de acesso protected

RESUMO DE VISIBILIDADE
n

Resumindo:
private: membros que so vistos s pela prpria classe e no so herdados por nenhuma outra public: membros so vistos e herdados por qualquer classe protected: membros que so vistos pelas classes do pacote e herdados por qualquer outra classe package: membros que so vistos e herdados pelas classes do pacote

ESPECIALIZAO X EXTENSO
n

Uma classe pode herdar de outra para especializ-la redefinindo mtodos, sem ampliar sua interface Uma classe pode herdar de outra para estend-la declarando novos mtodos e, dessa forma, ampliando sua interface. As duas coisas podem acontecer simultaneamente

POLIMORFISMO
nPolimorfismo as definies clssicas (e confusas) de polimorfismo so:
A - Capacidade que uma operao [mtodo] assumir mais de uma implementao em classes diferentes e B - Capacidade de um determinado atributo referenciar objetos de diferentes tipos, assumindo assim vrias formas

POLIMORFISMO
nA

situao A significa que se considerarmos uma hierarquia de classes as diferentes subclasses podem redefinir um determinado mtodo da classe pai (ou base). n A situao B significa que podemos ter um atributo (ou varivel) definido como do tipo base, mas referenciando objetos das subclasses.

POLIMORFISMO
nA

importncia do polimorfismo est no fato de que, em determinadas circunstncias, podemos ter um atributo (ou varivel) do tipo base referenciado objetos das classes derivadas [B] e executaremos um mtodo definido na classe base porm redefinido nas subclasses [A].

POLIMORFISMO
n

a capacidade de um objeto tomar vrias formas A capacidade polimrfica decorre diretamente do mecanismo de herana Ao estendermos ou especializarmos uma classe, no perdemos compatibilidade com a superclasse

POLIMORFISMO
n n

Exemplo
Veculo uma superclasse

Automvel subclasse de veculo class Veiculo{...}


class Automovel extends Veiculo {...}

Sempre que precisarmos de um Veculo, podemos usar um Automvel, ou um Caminho, ou nibus em seu lugar

POLIMORFISMO
n

Podemos criar um vetor de Veculos. Este poder conter Automveis:


Veiculo[ ] veiculos = new Veiculo[5]; Veiculos[0] = new Veiculo(); Veiculos[1] = new Automovel(JKL5098);

POLIMORFISMO
n

Exemplo:

public class Employee {} public class Manager extends Employee { private String department;} Employee e = new Manager(); (OK) e.department = Financeiro; (ERRADO)

POLIMORFISMO
n

Polimorfismo o nome formal para o fato de que, quando precisamos de um objeto de determinado tipo, podemos usar uma verso mais especializada dele. Esse fato pode ser bem entendido analisando-se a rvore de hierarquia de classes.

OPERADOR INSTANCEOF
n

Java mantm informaes de tipo em tempo de execuo e nos permite consult-las atravs do comando instanceof
Veiculo vc = new Veiculo( ); boolean b = vc instanceof Automovel; // b = false

OPERADOR INSTANCEOF
n

Utilizado para saber o real tipo do objeto usado.

CONVERSO DE TIPOS
n

Exemplos: STRING VALOR NUMRICO

String str = "34"; int num_int = Integer.parseInt(str); float num_float = Float.parseFloat(str); double num_double = Double.parseDouble(str);

VALOR NUMRICO STRING


String valor_str = Integer.toString(num_int); Float.toString(num_float); Double.toString(num_double);

CLASSES ABSTRATAS
n

Ao criarmos uma classe para ser estendida, s vezes, codificamos alguns mtodos para os quais no sabemos dar uma implementao, ou seja, um mtodo que s subclasses sabero implementar. Uma classe deste tipo no pode ser instanciada pois sua funcionalidade est incompleta. Tal classe dita abstrata.

CLASSES ABSTRATAS EM JAVA


n

Java suporta o conceito de classes abstratas: podemos declarar uma classe abstrata usando o modificador abstract. Mtodos podem ser declarados abstratos para que suas implementaes sejam adiadas para as subclasses. Da mesma forma, usamos o modificador abstract e omitimos a implementao desse mtodo.

CLASSES ABSTRATAS EM JAVA

INTERFACES
n n n n

Java no permite herana mltipla com herana de cdigo Java implementa o conceito de interface possvel herdar mltiplas interfaces Em Java, uma classe estende uma outra classe e implementa zero ou mais interfaces Para implementar uma interface em uma classe, usamos a palavra implements

INTERFACES

INTERFACES
n

Uma vez que uma interface no possui implementao, devemos notar que:
seus campos devem ser pblicos, estticos e constantes seus mtodos devem ser pblicos e abstratos

Como esses qualificadores so fixos, no precisamos declara-los (note o exemplo anterior)

Collections
um conjunto de classes e interfaces do pacote java.util que fornecem inmeras facilidades para trabalhar com colees de objetos n Existem vrios algoritmos de ordenao e detalhes no uso de Collections. Vamos ver as principais caractersticas para o uso de colees.
n

Collections
n Collections

uma interface que conta com os seguintes mtodos :


isEmpty() indica se a coleo est vazia contains(Object o) true/false para o caso da coleo conter o objeto iterator() retorna o objeto para iterao pela coleo

Collections percorrendo
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class TesteCollections { public static void main(String[] args) { ArrayList a = new ArrayList(); percorre(a); } private static void percorre(Collection c) { Iterator i = c.iterator(); while(i.hasNext()) { System.out.println(i.next()); } } }

Collections ArrayList
n Permite

a criao de um Array que funciona como uma lista. A grande vantagem que pode aumentar o tamanho de forma automtica, no esttico como os arrays tradicionais.

Collections ArrayList
n

Principais mtodos:
add(Object o) adiciona o objeto passado add(int i, Object o) adiciona o objeto na posio indicada. clear() limpa o arraylist get(int i) retorna o objeto na posio passada remove(int i) remove o objeto na posio indicada size() retorna o tamanho do arraylist

Collections HashMap
n n

Permite criar um hash onde teremos pares de chave/valor. Podemos incluir objetos com suas chaves e as chaves no sero repetidas. Alm disso aceita null como chave. Permite retornar um iterator para percorrermos tanto chaves quanto valores.

Collections HashMap
n

Principais mtodos:
containsKey(Object o) verifica se o objeto passado uma chave containsValue(Object o) verifica se o objeto passado um valor get(Object key) retorna o valor da chave passada put(Object key, Object val) insere na chave key o valor val. values() retorna uma Collection com os valores keySet() retorna um Set com as chaves (permite o iterator)

Collections percorrendo
import java.util.Collection; import java.util.HashMap; import java.util.Iterator; public class TesteHashMap { public static void main(String[] args) { HashMap hm = new HashMap(); hm.put("primeiro", 1); hm.put("segundo", 2); System.out.println("containsKey(primeiro)" + hm.containsKey("primeiro")); System.out.println("containsValue(segundo)" + hm.containsValue("segundo")); System.out.println("get(primeiro)" + hm.get("primeiro")); System.out.println("put(terceiro, 3)" + hm.put("terceiro",3)); Collection c = hm.values(); percorre(c); Collection c2 = hm.keySet(); percorre(c2); } private static void percorre(Collection c) { Iterator i = c.iterator(); while(i.hasNext()) System.out.println(i.next()); } }

You might also like