A Plataforma Java Programação Orientada a Objetos em Java

Programação 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 visão geral da linguagem Java e apresentar suas potencialidades. Capacitar os alunos a trabalhar com a linguagem de programação Java. Introduzir as principais fundamentos de implementação de aplicações gráficas Java com pacote Swing.

n

n

ORGANIZAÇÃO DO CURSO
ü Introdução a linguagem JAVA; ü Estrutura da Linguagem; ü Java e Orientação a Objetos; ü Classes
§ § § § § Objetos (Instanciação) Atributos Métodos Encapsulamento; Sobrecarga;

ü Herança e Polimorfismo; ü Aplicações Visuais (Swing) com acesso a Banco de Dados (JDBC, DAO, ...);

A Plataforma Java Programação Orientada a Objetos em Java

Introdução a Linguagem Java
Prof. Giuliano Prado de Morais Giglio, M.Sc.

CONCEITOS DO JAVA
Java é: – Uma Linguagem de Programação
– Um Ambiente de Desenvlvimento – Um Ambiente de Aplicativos

CONCEITOS DO JAVA
J2SE – Contém 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 execução de aplicações coorporativas. n J2ME – É o Java para pequenos dispositivos, desde palms até celulares.
n

desnecessários ou pouco usados: ü Aritmética de ponteiros (*--pt = vet+5) ü Estruturas (struct) ü Definição de tipos (typedef) ü Pré-processamento (#define) ü Liberação explícita de memória (free) ü Eliminação de 50% dos erros mais comuns ü Interpretadores pequenos (256 Kb) .INTRODUÇÃO AO JAVA n Vantagens de Java como Linguagem de Programação: vOrientada a Objetos (O.O) vcódigo sem bugs: mais fácil em Java que em C++ vdesalocação manual de memória não existe varrays “verdadeiros” + ausência de aritmética de ponteiro vsubstituição de herança múltipla por interface vindependência de plataforma! JAVA n Simples ü Sintaxe similar a C / C++ ü Não possui os recursos “perigosos”.

COLETOR DE LIXO nA Linguagem Java realiza a liberação de memória. que antes era responsabilidade do programador. com alguns acréscimos e simplificações. . JAVA n Orientada a Objetos Utiliza tecnologia de objetos similar a de C++.

tais como: HTTP. RTP. üAusência de recursos “perigosos”. üGerenciamento automático de memória (“garbage collector” ). JAVA n Robusta üPossui checagem em tempo de compilação e execução. üExtensiva verificação do código . SMTP. UDP. etc. TCP.JAVA n Distribuída Implementa os protocolos da arquitetura TCP/IP. FTP.

JAVA n Robusta üO fonte é compilado para um código intermediário (“bytecode”). üO interpretador funciona como uma Máquina Virtual Java (JVM). INDEPENDÊNCIA DE PLATAFORMA .

JVM . có .JAVA n Interpretada Os bytecodes são executados por um interpretador (JVM) embora existam opções de compilação.JAVA VIRTUAL MACHINE n Cabe ao interpretador Java de cada plataforma de hardware específica assegurar a execução do código compilado para a JVM.

com) ØVersão atual (J2SDK 1.AMBIENTE DE PROGRAMAÇÃO JAVA n Java 2 Standard Developers Kit (J2SDK) JVM mais todas as APIs.sun.0) ØPrincipais aplicativos: § javac (compilador) § java (interpretador) § applet viewer (visualizador de Applets) . 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) Documentação das APIs (Application Programming Interface) AMBIENTE DE PROGRAMAÇÃO JAVA n Java 2 Standard Developers Kit (J2SDK) ØDisponível para download no Site Java da Sun (java.6.

o que fazem e como elas devem ser usadas nos programas.sun.AMBIENTE DE PROGRAMAÇÃO JAVA n Documentação das APIs (Application Programming Interface) ØDescreve quais são as classes definidas pela linguagem.com/docs/index. ØDisponível para download ou on-line no Site Java da Sun (http://java.html) AMBIENTE DE PROGRAMAÇÃO JAVA n Existem editores (IDEs) específicos para o desenvolvimento de Aplicativos Java vSUN NetBeans vBorland JBuilder vEclipse vBlueJ vJCreator .

6. Instalar o arquivo jdk-6u6-windows-i586-p. n Testar o ambiente • c:\java -version .0_06 Ø CLASSPATH:responsável por definir um caminho de pesquisa para as classes do J2SE = .JAVA_HOME Ø PATH: responsável por definir um caminho de pesquisa para arquivos executáveis.exe Incluir as seguintes variáveis de ambiente: Ø JAVA_HOME: apontará para o diretório onde o J2SDK foi instalado = C:\Arquivos programas\Java\jdk1. Se está variável não for configurada..INSTALAÇÃO n n n Fazer o download do J2SDK.0_06\bin INSTALAÇÃO n Criar um subdiretório onde estarão contidos todos os programas Java.0 JDK = C:\Arquivos programas\Java\jdk1.6. o processo de compilação dos programas feitos em Java somente poderá ser executado dentro da pasta “lib” do diretório de instalação do J2SE 6.

PRIMEIRO PROGRAMA JAVA Digite o programa “Hello. } } PRIMEIRO PROGRAMA JAVA Hello.java”apresentado abaixo. utilizando o Bloco de Notas /*** Primeiro Programa Java ***/ class Hello { public static void main(String arg[]) { System.println(“Hello World!”).out.java .

class) será criado.PRIMEIRO PROGRAMA JAVA n Compilar o Programa javac Hello. um novo arquivo (Hello. o programa java HelloWorldApp n Interpretar AMBIENTE DE PROGRAMAÇÃO JAVA .java n Se o programa foi compilado corretamente.

} n class é a palavra reservada que marca o início da declaração de uma classe.. Ø /* texto */ Ø // texto Ø /*** Primeiro Programa Java ***/ n O compilador ignora estas linhas n Os ANATOMIA DO PROGRAMA de Classe n É a unidade básica para uma linguagem OO como Java n class nome { . n Definição ..ANATOMIA DO PROGRAMA n Comentários comentários em Java seguem a mesma sintaxe de c.

exceto Applets e Servlets. } n O método main indica o início de execução de qualquer programa Java.out. public static void main (String args[ ]){ System. deve possuir o método main.) ANATOMIA DO PROGRAMA Método main n Toda aplicação java.println(”Hello World!"). .ANATOMIA DO PROGRAMA n Delimitação Ø um de Blocos bloco está sempre entre chaves { } Ø Em Java as instruções terminam em ponto-e-vírgula (.

println(“Hello World!”) üEscreve na tela o conteúdo nos parêntesis. String args[ ] . üChamada do método println para o atributo out da classe System. void . main .é um outro qualificador que especifica o método como sendo um método de classe. ANATOMIA DO PROGRAMA n System. static .out. üO argumento (“..indica que não existe retorno a este método.é o nome do método.é um qualificador do método que indica que este é acessível externamente a esta classe. ..”) é do tipo String.Armazena valores passados por linha de comando.ANATOMIA DO PROGRAMA Ø Ø Ø Ø Ø Argumentos do Método main public .

println(sequência de escape) § § § § § \n (nova linha) \t (tabulação horizontal) \r (retorno de carro) \\ (barra invertida) \” (aspas duplas) DETALHES IMPORTANTES fonte tem extensão ‘.out.class’ n A linguagem é “case-sensitive”.ANATOMIA DO PROGRAMA n System. letras maiúsculas são diferentes de letras minúsculas n Cada programa é uma classe n Programa .java’ n Programa compilado tem extensão ‘.

math As classes podem ser compactadas (zip ou jar) ESTRUTURAS DE PROGRAMAÇÃO n Identificadores ØNomeiam variáveis. classes e objetos ØPodem conter letras e/ou dígitos. “_” e “$” ØNão podem ser iniciados por dígito ØNão podem ser palavras reservadas ØNão tem tamanho máximo . funções. Exemplo: java. java.java’ Sintaxe similar a linguagem C/C++ As classes podem estar agrupadas em package Package é um subdiretório.awt.DETALHES IMPORTANTES n n n n n Nome da classe no programa tem que ser igual ao nome do arquivo físico ‘.

ESTRUTURAS DE PROGRAMAÇÃO VÁLIDOS n Nome n NumDepen n total_geral n NOME INVÁLIDOS n 1prova n total geral ESTRUTURAS DE PROGRAMAÇÃO .

ESTRUTURAS DE PROGRAMAÇÃO ESTRUTURAS DE PROGRAMAÇÃO n n Texto char: representa um caracter Unicode de 16 bits (exemplos: ‘a’. ‘\t’. ‘\u02B1’) – – – – – – – – retrocesso tab avanço de linha retorno de carro aspas apóstrofo barra invertida indica o caracter unicode em hexadecimal • \b • \t • \n • \r • \” • \’ • \\ • \u001B . ‘M’.

frase = “Ordem e Progresso”. ESTRUTURAS DE PROGRAMAÇÃO n Inteiro byte short int long 8 bits 16 bits 32 bits 64 bits 27…27-1 215... opcao = 'S'.263-1 .. opcao = 'N'.215-1 231.231-1 263.ESTRUTURAS DE PROGRAMAÇÃO n Texto n String: representa uma seqüência de caracteres char opcao. String frase.

14 6. ESTRUTURAS DE PROGRAMAÇÃO n Tipos Ponto Flutante (Real) • float 32 bits • double 64 bits n– Representações: 3.4E+306D • • • • float pi = 3. double pi = 3. .ESTRUTURAS DE PROGRAMAÇÃO n Inteiro byte index = 50.1415f.02E23 2.1415. short soma = 2000.718F 123. int num carros = 5. _ long valor = 0XDADAL.

float z = 3. y.144f. boolean verdade = true. double w = 3. c = 'A'. ESTRUTURAS DE PROGRAMAÇÃO n Variáveis n Inicialização padrão Java • variáveis numéricas com zero • variáveis booleanas com false • outras variáveis com null . char c. y = 1000.ESTRUTURAS DE PROGRAMAÇÃO n Declarações e atribuições de variáveis • As declarações podem ser exibidas em qualquer posição do código-fonte.1415. d. int x. d = '\u0013'. x = 6.

> e > • Junção de expressões: &. || • Comparação de objetos: instanceof() OPERADORES n Aritméticos • • • • • Soma ( + ) Subtração ( . &&. !=.) Multiplicação ( * ) Divisão ( / ) Resto ( % ) .OPERADORES n Lógicos • Comparação de valor: = = . |. !.

logo os operadores relacionais e lógicos NÃO geram inteiros • Não há conversões automáticas (por ex.OPERADORES n Considere um operador @ qualquer n Expressões do tipo X = X @ Z podem ser substituídas por X @= Z x=x+3 x += 3 x=x*(9+y) x *= ( 9 + y ) OPERADORES n Atenção (programadores C/C++): • O operador + não é apenas aritmético (por ex. pode ser utilizado para inicialização e concatenação de strings) • Existe o tipo booleano. real para inteiro) .

// OK! CONTROLE DE FLUXO n Estrutura de Decisão .println(“Ok !”). // ERADO! i = (int) r / j.Println(“Erro !!!”).If / Else if (expressão booleana) { instrução ou bloco de comandos } else { instrução ou bloco de comandos } if (cont >= 0) { System. } else { System.out. i = r / j.OPERADORES n Atenção (programadores C/C++): • • • • int i. } . float r. j.out.

switch switch (cor) n n A instrução break (opcional) impede que o fluxo de execução continue pelas opções seguintes A cláusula default é opcional . break.switch switch (expressão short. default: setBackground(Color.white). byte ou char) { case expressão2: comandos. break. } Estrutura de Decisão . break. break.CONTROLE DE FLUXO n Estrutura de Decisão . default: comandos. case expressão3: comandos. break. break. case 2: setBackground(Color.red). } CONTROLE DE FLUXO n { case 0: setBackground(Color.black). int.

out. expr_increm) { bloco de comandos } for (int x=0. x++) { System.while while (expr_booleana) { bloco de comandos } int cont = 0 while (cont < 100) { System.println(" Valor do X : " + x).CONTROLE DE FLUXO n Estrutura de Repetição – for for (expr_inicial.println(" contando " + cont). } . } CONTROLE DE FLUXO n Estrutura de Repetição . cont++. x<10. expr_booleana.out.

s[2] = ‘C’. do { x++. VETORES(Arrays) n n n n n n Declaração Podem ser declarados arrays de quaisquer dos tipos através dos símbolos “[” e “]”. não aloca memória. Isso é feito pela instrução new (arrays são objetos em Java). char s[ ]. // Criação s[0] = ‘A’.do while do { bloco de comandos } while (expr_booleana) int x = 0. A declaração não cria o array. // declaração s = new char[3]. isto é. } while (x <10).CONTROLE DE FLUXO n Estrutura de Repetição . s[1] = ‘B’. // atribuição .

criação e incialização n Em Java array é um objeto. Apenas a declaração não cria o objeto. // declaração. Point p[ ] = new Point[5]. üchar [ ]s. VETORES(Arrays) n Declarando. 'C'}. criando e iniciando um array char s[ ] = {'A'.VETORES(Arrays) n Declaração • Os colchetes podem ser usados antes ou depois da variável. p[1] = new Point(). p[0] = new Point(). mesmo quando é composto por tipos primitivos. . 'B'. sendo necessário o uso da palavra reservada new. • Exemplo: üchar s[ ].

//ERRADO! .VETORES(Arrays) n Alocação de Memória n Quando um array é criado. vector[0] = 4. //ERRADO! n Arrays não podem ser utilizados sem a criação: int vector[]. todos os seus elementos são inicializados. VETORES(Arrays) n Arrays não podem ser dimensionados na definição: int vector[5].

matriz [0][0] = 300.VETORES(Arrays) n Para determinarmos o seu tamanho podemos usar o método length: int lista [] = new int [10]. int matriz [][] = new int [4][5]. for (int j = 0.println(lista[j]).length. } VETORES(Matrizes) n Multi-dimensionais int lista [] = new int [10].out. matriz [1][3] = 600. j++) { System. j < lista. .

Nov. Out. Pra que eu quero isso ??” n Enumerações simplificam o trabalho de criar certos domínios que não precisam estar em banco de dados. . como por exemplo constantes que definem mensagens do sistema. mas.. Jul. Mai.” • Exemplo üenum Meses { Jan.. Abr. Dez }. Ago. entre outros. Enumerações n “Tá. status de objetos. Jun. Mar.Enumerações n enum • Permitem criar um novo tipo de dado parecido com um primitivo que recebe um conjunto de constantes ordenadas e separadas por “. Set. Fev.

ele até flutua na água ! . n Exemplo: • if ( mes == Meses. o próprio nome da constante definida é utilizado..Enumerações usamos enumerações não precisamos comparar com números inteiros. n Quando Enumerações n Mas não é só isso ! Em Java você ainda recebe uma incrível forma de criar enumerações com objetos ! É isso mesmo! Com direito a atributos e métodos! n Ligando agora você ainda recebe esse incrível kit compilador..Jan) .

Jun(“Junho”. String num) { nome = n. “04”). “03”). private final String numero. “02”). “05”).Enumerações public enum Mes { Jan(“Janeiro”.getNome() + “ ” + m. } } } nMas que for é esse ?? . Fev(“Fevereiro”.println(m + “ ” + m. } public String getNome() { return nome. “06”). “01”). numero = num. Abr(“Abril”. private final String nome. } public String getNumero() { return numero. } } Enumerações public class TestaMes { public static void main(String args[]) { for (Mes m : Mes.values()) { System.out. Mar(“Março” . Mes(String n.getNumero()). Mai(“Maio”.

4. for (int i : a) { System. e pegamos a lista a percorrer Pra usar o for com array public class TestaFor { public static void main(String args[]) { int a[] = {4.2.5.3.println(i). } } } .6.1}.out.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.

substring(0. n Pode ser criado com ou sem a palavra new.3). São seqüências de caracteres. // tamanho = 11 .STRINGS string não é um tipo primitivo. // uma string vazia alo = "Alo Pessoal". n Uma STRINGS n Operações com String new. tudo Ok ? ". nome = new String("Antonio"). // Concatenação String nova = alo + ". // "Alo" // Verificando tamanho int tam = alo. "Sou nova". é uma classe pré-definida do Java. String String String nova = String e = "". // Edição String substr = alo.length(). nova.

Blocos finally são *sempre* executados. . resultsets e conexões a banco. Tratamento de Exceções n n n Os blocos try/catch são complementados pelos blocos finally (que são opcionais).Tratamento de Exceções n n n O tratamento de exceções é uma importante etapa do desenvolvimento de software.exit() pode impedir um bloco finally de executar. Em Java usamos um bloco try/catch que “tenta” executar um conjunto de instruções e caso aconteça uma exceção ele a “pega” e provê o tratamento adequado. Em outras linguagens esse mecanismo é complexo e/ou confuso. somente uma instrução System. Usamos blocos finally para executar instruções de “limpeza” tal como fechar statements.

} catch (NumberFormatException e) { System.println(“esta e a ultima parte”).Sc. } return i.out. i = -1. M.Tratamento de Exceções public int getInteiro() { int i = 0. } finally { System. Giuliano Prado de Morais Giglio.out. i = Integer.parseInt(str). try { String str = JOptionPane. .println(“string nao pode ser convertida”). } A Plataforma Java Programação Orientada a Objetos em Java Java e Orientação a Objetos .showInputDialog (“digite um numero”).Conceitos Principais Prof.

Orientação a Objetos nHistória da OO • Programação sob demanda • Programação estruturada • Orientação a Objetos nDiversos avanços foram realizados na área acadêmica ainda na década de 70 nA partir da década de 80 começou a ser adotada tomando seu espaço nos anos 90 Orientação a Objetos nO paradigma estruturado trata de funções e procedimentos aplicados a dados n O paradigma orientado a objetos trata de dados e comportamentos Paradigma Estruturado dados funções Paradigma OO funções dados .

Dentro dos métodos (que definem o comportamento de um objeto) usamos a programação estruturada. n Podemos pensar na Classe como a forma da peça ou do bolo. . E mantém uma relação muito próxima entre si.Orientação a Objetos PCuidado ! Orientação a Objetos não elimina a programação estruturada. e nos objetos como peças prontas feitas de matéria prima. Orientação a Objetos n Classes e Objetos – constituem a unidade de representação de dados para esse paradigma.

n Um objeto é uma instância de uma classe. um exemplar do conjunto de objetos que seguem os moldes daquela classe n Classes . tal como structs de C ou registers de Pascal.Orientação a Objetos Orientação a Objetos definem novos tipos de dados. n A partir de novos tipos de dados torna-se mais fácil organizar a aplicação em questão. ou seja.

método pousar. n Métodos podem ter parâmetros de entrada e retorno .Orientação a Objetos n Atributos – são os “campos” que contém as informações daquela classe. n Exemplo: Classe Avião. etc. Ao conjunto de atributos preenchidos de um objeto damos o nome de “estado do objeto” n Existem atributos de classe e atributos de instância. método decolar... Orientação a Objetos n Métodos – definem o comportamento dos objetos definidos pela classe. n Por comportamento entendemos o conjunto de reações ou atividades que os objetos podem desempenhar.

suas associações. relacionamentos e heranças. ele pode ser comparado informalmente ao nível zero dos DFDs. n A grande importância dos casos de uso está na descrição textual detalhada do “caso de uso” J – exemplo no quadro nDiagrama de Classes – este diagrama representa as classes que usaremos no sistema. nTópicos importantes • composição versus agregação • classes de associação Principais Diagramas de UML .Principais Diagramas de UML n Casos de Uso – sem diagrama n Existe um diagrama para casos de uso. Apresenta uma visão de alto nível das interações do sistema.

Principais Diagramas de UML n Diagrama de Classes – exemplo Principais Diagramas de UML n Diagrama de Seqüência – a importância desse diagrama e mostrar o fluxo de mensagens entre as classes/objetos do sistema. n Uma boa prática de modelagem é criar os diagramas de seqüência para as interações mais complexas do sistema. .

n Diagrama

Principais Diagramas de UML
de Seqüência – exemplo

A Plataforma Java Programação Orientada a Objetos em Java

Java e Orientação a Objetos - Implementação Prof. Giuliano Prado de Morais Giglio, M.Sc.

DEFINIÇÃO DE UM OBJETO
n

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

DEFINIÇÃO DE UM OBJETO
n

Um cachorro possui um estado (nome, cor, raça) 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 protótipo que define as propriedades e métodos (comportamento) comuns a um conjunto de objetos. são “moldes” que definem as variáveis e os métodos comuns a todos os objetos de um determinado tipo.

n Classes

. n Usando a terminologia de orientação a objetos. CLASSES DE OBJETOS n Classes X Objetos Ø Uma classe é um “molde” a partir do qual vários objetos são criados. Por exemplo. o objeto sua bicicleta é uma instância da classe de objetos bicicleta. a sua bicicleta é uma das milhares que existem no mundo.CLASSES DE OBJETOS n No mundo real existem vários objetos do mesmo tipo.

o mesmo é eliminado através da “coleta automática de lixo”.ORIENTAÇÃO A OBJETOS EM JAVA n n n Programas em Java provavelmente irão criar diversos objetos de diversos tipos de classes. Após o objeto ter realizado o trabalho proposto. REPRESENTAÇÃO DE UMA CLASSE Classe Atributos Métodos . Os objetos interagem entre si através da troca de mensagens.

. int getDay() { … REFERÊNCIA A UMA CLASSE EM JAVA BirthDate myBirthDate. int month. int year.ESTRUTURA DE UMA CLASSE EM JAVA class BirthDate { int daya.

protected int potencia. . modelo.CLASSES EM JAVA Declaração: class Ponto { . } } . consumo..... // Métodos . placa.. } n Propriedades: dados que as instâncias da classe conterão: class Ponto { float x. y. } n CLASSES EM JAVA class Veiculo { // Propriedades private float velocidadeMaxima. ano. protected String marca.. protected float capacidadeTanque. cor. public float autonomia ( ) { return capacidadeTanque * consumo. public String chassis.

Date mayBirthDate = new Date(). .CLASSE = “Molde de Objetos” Tempo de Compilação Tempo de Execução Classe: Carro Esportivo Objeto Carro: Instância 3 CRIAÇÃO DE OBJETOS (INSTANCIAÇÃO) n Um objeto de uma classe é criado utilizando-se a palavra new.

EXEMPLO REFERÊNCIAS PARA OBJETOS n Alocação de memória: Ponto p1. // aloca memória e atribui // endereço à referência . // cria apenas a referência Ponto p1 = new Ponto().

). float. n A declaração de uma variável de classe não aloca memória. etc.DIFERENÇA COM TIPOS PRIMITIVOS n Quando se declara variáveis de qualquer tipo primitivo (int. o espaço na memória é alocado como parte da operação. char. somente quando a instrução new é chamada. DIFERENÇA COM TIPOS PRIMITIVOS .

p2.x = 10. // Ponto p2 = p2. p2 representa o ponto (3.) Ponto p1 = p1.x = 3.4) .y = 4.4) // p2 representa o ponto (10.x = 1. p1 representa o ponto (1. p1.2) new Ponto().REFERÊNCIA PARA OBJETOS n Alocação de memória Ponto p2 = p1. // new Ponto(). // p1 representa o ponto (10. // cria outra referência // para o mesmo objeto ATRIBUIÇÃO DE VALORES n As propriedades dos objetos podem ser manipuladas diretamente pelo operador de ponto (.y = 2.4) p1 = p2. p1.

x + ". // p1. MÉTODOS n n Definem o comportamento da classe. y.pritln("p1.").out. System.").OBTENÇÃO DE VALORES n Os valores das propriedades podem ser obtidos facilmente System.out. } } . int dy) x += dx. // p2. y += dy. void mover (int dx.x = " + p2.x + ". Declaração: class Ponto { int x.x = 10.x = " + p1.x = 10.pritln("p2.

MÉTODOS n Implementam as funções de uma classe n Possuem sintaxe semelhante à sintaxe de definição das funções de um programa procedural n Determinam o comportamento da classe e a troca de mensagens com outras classes MÉTODOS .

. . //Deslocou p1 dez unidades. p1.. .l0)..ASSINATURA DE UM MÉTODO O tipo de retorno pode ser void CHAMADAS DE MÉTODOS n n A troca de mensagens entre os objetos é realizada através da chamada de métodos com passagem de argumentos Exemplo .. nos dois eixos.mover(10.

EXEMPLO class ProgramaPrincipal { public static void main (String args[]) { Funcionario func. func = new Funcionario(“Juca”. func = new Funcionario(“Juca”.102). } } . } MÉTODO “Main” class ProgramaPrincipal { public static void main (String args[]) { Funcionario func.102).

x = x.y = y. } } PALAVRA RESERVADA “This” n Quando o método é chamado. y.PALAVRA RESERVADA “This” n n As vezes é necessário que o objeto se referencie. int y) { this. void mover (int x. a palavra-chave ‘this’ refere-se ao objeto classStartDate . Existe uma palavra reservada this que significa uma referência ao próprio objeto class Ponto { int x. this.

PASSAGEM DE ARGUMENTOS n Tipos de argumentos class Ponto { public int x. } . y. } public void teste (Ponto pt.PASSAGEM DE ARGUMENTOS n Tipos de argumentos n Objetos → passagem por referência. n Tipos primitivos → passagem por valor. • Originais são sujeitos a alterações dentro do método. this. pt.x = 3. i = 1.y = 4.y = y. int y) { this.x = x. int i) { pt. • Originais não são sujeitos a alterações dentro do método. Ponto (int x.

locais a um método ou a um bloco de operações. float calculaMedia(float p1.4) e i = 1. ponto. // Antes.2).2) e i = 2.. podem ser definidos outros tipos de variável.. public static void main (String args[]) { Ponto ponto = new Ponto(1.i). return media.teste(ponto.PASSAGEM DE ARGUMENTOS n Tipos de argumentos . float p2) { float media = (p1 + p2)/2. int i = 2. ponto=(1. ponto=(3. // Depois. } . } } VARIÁVEIS LOCAIS n Além das propriedades de um objeto.

float listaAprovados() { for (int i = 0.. System.VARIÁVEIS LOCAIS . } } 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 criação. i < alunos. String alunos[].out.i++) { String nome = alunos[i]. por exemplo) Usados na criação de um objeto através do comando new Possuem o mesmo nome da classe e não têm tipo de retorno! .length..println(i + ": " + nome).

int y.CONSTRUTOR PADRÃO n n A linguagem Java declara um construtor padrão. this. } } . int y) { this. vazio. esse construtor padrão deixa de existir e é substituído pelo novo construtor class Ponto { int x. int y. que podem servir para inicialização dos atributos da classe Uma classe pode ter vários construtores class Ponto { int x. Quando declaramos um novo construtor.x = x.y = y. Ponto (int x. que não recebe nenhum parâmetro Ponto p1 = new Ponto(). Ponto () { } } CONSTRUTORES n n Podem receber parâmetros.

p2 = new Ponto(3. Ponto p3 = new Ponto().2).CONSTRUTORES n Deve ser usado no momento da criação do objeto: Ponto p1 = new Ponto(1. Ponto p2. CONSTRUTORES .4).

Esses membros são chamados de “membros de classe”.CONSTRUTORES MEMBROS DE CLASSE n n Pode-se definir numa classe membros que sejam compartilhados por todas instâncias daquela classe. . Podem ser: • propriedades (variáveis) • métodos n Todo membro de classe deve usar o qualificador static.

. int id. } . } VARIÁVEIS DE CLASSE .VARIÁVEIS DE CLASSE n Exemplo: class Pessoa { static int numPessoas = 0.. numPessoas++. Pessoa () { id = numPessoas.

imprimindo (id) e (numPessoas).numPessoas = 2. // Próxima pessoa criada será 101 .id = 0. VARIÁVEIS DE CLASSE n Os membros de classe podem ser acessados diretamente.numPessoas = 100. // joao. Pessoa. Pessoa ana = new Pessoa(). // ana. n Fazer este exemplo. // ana.VARIÁVEIS DE CLASSE n Exemplo: Pessoa joao = new Pessoa (). sem necessidade da existência de um objeto.numPessoas = 1. // joao.id = 1.

ESCOPO DE VARIÁVEIS n Ao utilizar o nome de uma variável dentro de um método. } } § Exemplo: int value = "100"..v = " + new_value). int new_value = Example..out. Java procurará a sua definição na seguinte ordem: bloco bloco mais externo método variável de instância ou classe super-classe MÉTODOS DE CLASSE class Example { . static int multiply10(int value) { . .multiply10(value).println("n. System.

.CONSTANTES n Podem ser: • variáveis (de instância. } .. } . // Método constante private final static void main (String args[]) { . de classe ou locais) • métodos n São declaradas com a palavra reservada final CONSTANTES class Teste { // Variáveis constantes final int ESQUERDA = 0. final int DIREITA = 0.

n Protege os dados de um objeto contra uma modificação imprópria. . que é a capacidade de esconder do mundo exterior as estruturas internas de uma classe. O encapsulamento.ENCAPSULAMENTO Através dos métodos podemos atingir uma das principais características da orientação a objetos. n O encapsulamento define que os atributos só são acessados através de métodos o que evita o acoplamento n ENCAPSULAMENTO nÉ a forma de restringir o acesso aos métodos e propriedades de uma classe. n É necessário definir o controle de acesso aos métodos e propriedades de uma classe. de forma que não se interfira no seu funcionamento.

get e set) n Os CONTROLE DE ACESSO n Exemplo class Pessoa { private nome. Pessoa (String nome.out. } public imprimeNome() { System.println(“Nome: ” + nome). } } . private idade.nome = nome. public obs.CONTROLE DE ACESSO membros de uma classe podem ser protegidos de acessos indevidos n Métodos de acesso: public e private • public: membros podem ser acessados livremente • private: membros só podem ser acessados pela própria classe (necessário definir os accessor methods . int idade){ this.

número ou tipos de parâmetros diferentes. n Assinatura .nome = "Raul".CONTROLE DE ACESSO n Exemplo Pessoa p1 = new Pessoa("Joao".imprimeNome(). diferente pode ser: tipo de retorno.//ERRO DE COMPILAÇÃO! p1. //OK! // Nome: Joao SOBRECARGA DE MÉTODOS n Sobrecarregar um método significa definir dois ou mais métodos com o mesmo nome.obs = "bom garoto".10). //OK! p1. p1. porém com assinaturas diferentes.

em métodos que possuam a mesma funcionalidade.SOBRECARGA DE MÉTODOS nA sobrecarga pode ser feita igualmente aos métodos construtores boa prática é usar a sobrecarga. somente. n Uma SOBRECARGA DE MÉTODOS n Exemplo .

. } } SOBRECARGA DE CONSTRUTORES n Exemplo class Ponto { int x. } .sen(ang). raio*Math. } . void mover (int dx. y += dy. float ang) { raio*Math.SOBRECARGA DE MÉTODOS n Exemplo class Ponto { .. Ponto () { } Ponto (int x... this.x = x. int y. } void mover (int raio.cos(ang). int dy) { x += dx.y = y. int y) { this.

2) SOBRECARGA DE CONSTRUTORES n n n n Um construtor pode chamar outro construtor.2). Uma chamada a outro construtor deverá ser a primeira linha do construtor! . Para isto é necessário usar a palavra reservada this. //p1 está em (0.SOBRECARGA DE CONSTRUTORES n n A sobrecarga de construtores visa definir formas diferentes de criar um objeto Exemplo: Ponto p1 = new Ponto().0) Ponto p2 = new Ponto(1. //P2 está em (1. Isso se chama “encadeamento de construtores”.

Ponto () { this(0.SOBRECARGA DE CONSTRUTORES n Exemplo: class Ponto { int x=0. int y=0.y=y.0). int y) { this. } Ponto (int x. } } O QUE É HERANÇA? .

O QUE É HERANÇA? é um mecanismo que permite a uma classe herdar todo o comportamento e os atributos de outra classe. D e E são subclasses de B . n Uma classe que herda de outra classe é chamada subclasse e a classe que fornece a herança é chamada superclasse. n Herança O QUE É HERANÇA? 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.

implicitamente. Quando não declaramos que uma classe estende outra. estende Object n . mantendo o mesmo nome mas agindo de forma diferente. ela. Um método herdado de uma superclasse pode ser redefinido pela classe derivada.HERANÇA n As superclasses definem atributos e métodos genéricos que são herdados pelas classes derivadas. n n HERANÇA 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. Normalmente os atributos de um objeto só podem ser consultados ou modificados através dos seus métodos (accessor methods).

HERANÇA EM JAVA n Uma classe Java estende apenas uma outra classe (herança simples ou única) Para criar uma sub-classe. usamos a palavra reservada extends n HERANÇA EM JAVA n Como os métodos são organizados em uma hierarquia de classes: .

tipo de retorno e argumentos que um método definido em uma superclasse. HERANÇA EM JAVA .HERANÇA EM JAVA n Funcionamento quando uma subclasse define um método que possui o mesmo nome.

EXEMPLO DE HERANÇA EM JAVA SOBRECARGA E ANULAÇÃO n Sobrecarga de Métodos (overloading) • Definir mais de um método com mesmo nome mas com assinaturas (parâmetros) diferentes. n Métodos final não podem ser sobrepostos. n Anulação de Métodos (overriding) • Definir um novo método com mesmo nome e assinatura de outro de uma superclasse. .

EXEMPLO DE SOBRECARGA E ANULAÇÃO THIS e SUPER n Usados quando for necessário referenciar explicitamente a instância (this) ou a superclasse (super). .

CONTROLE DE ACESSO: ‘PROTECTED’ n n Java permite declararmos um membro (método ou atributo) que. é herdado por suas sub-classes Para isso usamos o modificador de controle de acesso protected RESUMO DE VISIBILIDADE n Resumindo: • private: membros que são vistos só pela própria classe e não são herdados por nenhuma outra • public: membros são vistos e herdados por qualquer classe • protected: membros que são vistos pelas classes do pacote e herdados por qualquer outra classe • package: membros que são vistos e herdados pelas classes do pacote . embora não seja acessível por outras classes.

“Capacidade que uma operação [método] assumir mais de uma implementação em classes diferentes” e B .“Capacidade de um determinado atributo referenciar objetos de diferentes tipos. assumindo assim várias formas” . As duas coisas podem acontecer simultaneamente POLIMORFISMO nPolimorfismo – as definições clássicas (e confusas) de polimorfismo são: A . sem ampliar sua interface Uma classe pode herdar de outra para estendê-la declarando novos métodos e.ESPECIALIZAÇÃO X EXTENSÃO n n n Uma classe pode herdar de outra para especializá-la redefinindo métodos. ampliando sua interface. dessa forma.

mas referenciando objetos das subclasses. . podemos ter um atributo (ou variável) do tipo base referenciado objetos das classes derivadas [B] e executaremos um método definido na classe base porém redefinido nas subclasses [A]. n A situação “B” significa que podemos ter um atributo (ou variável) definido como do tipo base.POLIMORFISMO nA situação “A” significa que se considerarmos uma hierarquia de classes as diferentes subclasses podem redefinir um determinado método da classe pai (ou base). POLIMORFISMO nA importância do polimorfismo está no fato de que. em determinadas circunstâncias.

POLIMORFISMO n É a capacidade de um objeto tomar várias formas A capacidade polimórfica decorre diretamente do mecanismo de herança Ao estendermos ou especializarmos uma classe. podemos usar um Automóvel. ou um Caminhão...} n Sempre que precisarmos de um Veículo.} • class Automovel extends Veiculo {.. ou Ônibus em seu lugar . não perdemos compatibilidade com a superclasse n n POLIMORFISMO n n Exemplo • Veículo é uma superclasse Automóvel é subclasse de veículo • class Veiculo{..

Este poderá conter Automóveis: Veiculo[ ] veiculos = new Veiculo[5]. (ERRADO) .} – Employee e = new Manager(). POLIMORFISMO n Exemplo: – public class Employee {} – public class Manager extends Employee – { private String department. Veiculos[0] = new Veiculo().department = “Financeiro”.POLIMORFISMO n Podemos criar um vetor de Veículos. (OK) – e. Veiculos[1] = new Automovel(“JKL5098”).

POLIMORFISMO n Polimorfismo é o nome formal para o fato de que. Esse fato pode ser bem entendido analisando-se a árvore de hierarquia de classes. // b = false . podemos usar uma versão mais especializada dele. quando precisamos de um objeto de determinado tipo. OPERADOR ‘INSTANCEOF’ n Java mantém informações de tipo em tempo de execução e nos permite consultá-las através do comando instanceof Veiculo vc = new Veiculo( ). boolean b = vc instanceof Automovel.

int num_int = Integer. . Float. float num_float = Float. VALOR NUMÉRICO ⇒ STRING String valor_str = Integer.parseInt(str).parseDouble(str).toString(num_double).toString(num_float). Double.parseFloat(str).OPERADOR ‘INSTANCEOF’ n Utilizado para saber o real tipo do objeto usado. CONVERSÃO DE TIPOS n Exemplos: STRING ⇒ VALOR NUMÉRICO String str = "34".toString(num_int). double num_double = Double.

Da mesma forma. n CLASSES ABSTRATAS EM JAVA n Java suporta o conceito de classes abstratas: podemos declarar uma classe abstrata usando o modificador abstract. um método que só subclasses saberão implementar. usamos o modificador abstract e omitimos a implementação desse método. n .CLASSES ABSTRATAS n Ao criarmos uma classe para ser estendida. às vezes. Uma classe deste tipo não pode ser instanciada pois sua funcionalidade está incompleta. Métodos podem ser declarados abstratos para que suas implementações sejam adiadas para as subclasses. Tal classe é dita abstrata. codificamos alguns métodos para os quais não sabemos dar uma implementação. ou seja.

CLASSES ABSTRATAS EM JAVA INTERFACES n n n n n Java não permite herança múltipla com herança de código Java implementa o conceito de interface É possível herdar múltiplas 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 não possui implementação, devemos notar que:
• seus campos devem ser públicos, estáticos e constantes • seus métodos devem ser públicos e abstratos

n

Como esses qualificadores são fixos, não precisamos declara-los (note o exemplo anterior)

Collections
um conjunto de classes e interfaces do pacote java.util que fornecem inúmeras facilidades para trabalhar com coleções de objetos n Existem vários algoritmos de ordenação e detalhes no uso de Collections. Vamos ver as principais características para o uso de coleções.

Collections
n Collections

é uma interface que conta com os seguintes métodos :
• isEmpty() – indica se a coleção está vazia • contains(Object o) – true/false para o caso da coleção conter o objeto • iterator() – retorna o objeto para iteração pela coleção

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 criação de um “Array” que funciona como uma lista. A grande vantagem é que pode aumentar o tamanho de forma automática, não é estático como os arrays tradicionais.

Object o) – adiciona o objeto na posição indicada. Além disso aceita null como chave.Collections – ArrayList n Principais métodos: • add(Object o) – adiciona o objeto passado • add(int i. Podemos incluir objetos com suas chaves e as chaves não serão repetidas. • clear() – limpa o arraylist • get(int i) – retorna o objeto na posição passada • remove(int i) – remove o objeto na posição indicada • size() – retorna o tamanho do arraylist Collections – HashMap n n n Permite criar um hash onde teremos pares de chave/valor. Permite retornar um iterator para percorrermos tanto chaves quanto valores. .

println("containsValue(segundo)" + hm.out.out.println("containsKey(primeiro)" + hm.Collections – HashMap n Principais métodos: • 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.keySet(). • values() – retorna uma Collection com os valores • keySet() – retorna um Set com as chaves (permite o iterator) Collections – percorrendo import java.values(). } } .containsValue("segundo")). Collection c2 = hm. 2).println("put(terceiro. 1).HashMap. hm. Collection c = hm. System.next()). while(i.Iterator.get("primeiro")). public class TesteHashMap { public static void main(String[] args) { HashMap hm = new HashMap().Collection.util. Object val) – insere na chave key o valor val.println(i. System.out.put("terceiro".out. import java.iterator(). percorre(c). 3)" + hm.3)).put("primeiro". import java. hm.out. } private static void percorre(Collection c) { Iterator i = c. System. System.util.put("segundo".containsKey("primeiro")).hasNext()) System.util.println("get(primeiro)" + hm. percorre(c2).

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master Your Semester with a Special Offer from Scribd & The New York Times

Cancel anytime.