Professional Documents
Culture Documents
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, ...);
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
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
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
Cabe ao interpretador Java de cada plataforma de hardware especfica assegurar a execuo do cdigo compilado para a JVM. c
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
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
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
\b \t \n \r \ \ \\ \u001B
ESTRUTURAS DE PROGRAMAO
n Texto
n
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)
Representaes:
3.14 6.02E23 2.718F 123.4E+306D
ESTRUTURAS DE PROGRAMAO
n Declaraes
e atribuies de variveis
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
OPERADORES
n Considere
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++):
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
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; }
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
VETORES(Arrays)
n
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
VETORES(Arrays)
n
n Arrays
VETORES(Arrays)
n Para
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()); } } }
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
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
// 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; }
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
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
de Classes exemplo
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
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
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
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.
Mtodos
int getDay() {
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 ...
EXEMPLO
de memria:
Ponto p1; // cria apenas a referncia Ponto p1 = new Ponto(); // aloca memria e atribui // endereo referncia
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.
de memria
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();
OBTENO DE VALORES
n Os valores
MTODOS
n n
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
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); } }
As vezes necessrio que o objeto se referencie. Existe uma palavra reservada this que significa uma referncia ao prprio objeto
PASSAGEM DE ARGUMENTOS
n Tipos
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
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
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;
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:
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
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
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
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
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
SOBRECARGA E ANULAO
n
THIS e SUPER
n
Usados quando for necessrio referenciar explicitamente a instncia (this) ou a superclasse (super).
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
Sempre que precisarmos de um Veculo, podemos usar um Automvel, ou um Caminho, ou nibus em seu lugar
POLIMORFISMO
n
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
CONVERSO DE TIPOS
n
String str = "34"; int num_int = Integer.parseInt(str); float num_float = Float.parseFloat(str); double num_double = Double.parseDouble(str);
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.
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.
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
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
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()); } }