• Nenhum resultado encontrado

Programação Orientada a Objetos em Java

N/A
N/A
Protected

Academic year: 2019

Share "Programação Orientada a Objetos em Java"

Copied!
164
0
0

Texto

(1)

Programação Orientada a Objetos

em Java

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

[email protected]

http://www.professorgiuliano.vai.la

A Plataforma Java

Programação Orientada a

Objetos em Java

OBJETIVOS DO CURSO

n Fornecer uma visão geral da linguagem Java e apresentar suas potencialidades.

n Capacitar os alunos a trabalhar com a linguagem de programação Java.

n Capacitar os alunos a trabalharem com os conceitos da Orientação a Objetos.

n Introduzir as principais fundamentos de

(2)

PLANO DE CURSO

1. Introdução a linguagem JAVA;

2. Estrutura da Linguagem; 3. Java e Orientação a Objetos; 4. Classes

Objetos (Instanciação) Atributos

Métodos Construtores Encapsulamento;

§ Sobrecarga de Métodos;

5. Herança

Sobrescrita de métodos Polimorfismo

Classes abstratas

6. Coleção de Objetos

7. Tratamento de Exceções

8. Classes especiais da API Java

Introdução a Linguagem Java

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

A Plataforma Java

(3)

CONCEITOS DO JAVA

Java é:

– Uma Linguagem de Programação

– Um Ambiente de Desenvlvimento – Um Ambiente de Aplicativos

CONCEITOS DO JAVA

n 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

(4)

INTRODUÇÃO AO JAVA

n Vantagens de Java como Linguagem

de Programação:

v Orientada a Objetos (O.O)

v código sem bugs: mais fácil em Java que em

C++

v desalocação manual de memória não existe

v independência de plataforma!

JAVA

n Simples

Sintaxe similar a C / C++

Não possui os recursos “perigosos”, 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)

(5)

COLETOR DE LIXO

n A Linguagem Java realiza a liberação de

memória, que antes era responsabilidade do programador.

JAVA

n Orientada a Objetos

Utiliza o paradigma atual de objetos

n Distribuída

(6)

JAVA

n Robusta

Possui checagem em tempo de compilação e execução.

Gerenciamento automático de memória (“garbage collector” ).

Ausência de recursos “perigosos”. Extensiva verificação do código

INDEPENDÊNCIA DE

PLATAFORMA

n Robusta e Interpretada

O fonte é compilado para um código intermediário (“bytecode”).

O interpretador funciona como uma Máquina Virtual Java (JVM).

(7)

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

(8)

AMBIENTE DE

PROGRAMAÇÃO 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)

Documentação das APIs (Application Programming Interface)

AMBIENTE DE

PROGRAMAÇÃO JAVA

n Java 2 Standard Developers Kit (J2SDK

ou simplesmente JDK)

Disponível para download no Site Java da Oracle (www.oracle.com/java/index.html) Versão atual (J2SDK 8.40)

Principais aplicativos:

§javac (compilador) §java (interpretador)

(9)

AMBIENTE DE

PROGRAMAÇÃO JAVA

n Documentação das APIs (Application

Programming Interface)

Descreve quais são as classes definidas pela linguagem, o que fazem e como elas devem ser usadas nos programas.

Disponível para download ou on-line no Site Java da Sun

(http://java.sun.com/docs/index.html)

AMBIENTE DE

PROGRAMAÇÃO JAVA

n Existem editores (IDEs) específicos

para o desenvolvimento de Aplicativos Java

v Oracle NetBeans v Eclipse

v BlueJ

v JCreator

v JDeveloper

(10)

INSTALAÇÃO

n Fazer o download do J2SDK.

n Instalar o arquivo jdk-8u40-windows-i586.exe

n Instalação no estilo “next > next > next”

n Somente após o passo seguinte que poderá ser

instalado a IDE de sua preferência (JCreator ou BlueJ, etc)

n Recomendado incluir as seguintes variáveis de ambiente, porém,

não obrigatório:

JAVA_HOME:apontará para o diretório onde o J2SDK foi instalado = C:\Arquivos programas\Java\jdk1.6.23

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. Se está variável não for configurada, 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.0 JDK =C:\Arquivos programas\Java\jdk1.6.23\bin

PRIMEIRO PROGRAMA

JAVA

Digite o programa “Teste.java”apresentado abaixo, utilizando o BlueJ

/*** Primeiro Programa Java ***/

class Teste {

public static void main(String arg[]) {

System.out.println(“Teste em Java”); }

(11)

PRIMEIRO PROGRAMA

JAVA

AMBIENTE DE

PROGRAMAÇÃO JAVA

Executar: Teste.class

(12)

DETALHES

IMPORTANTES

n Programa fonte tem extensão ‘.java’

n Programa compilado tem extensão

‘.class’

n A linguagem é “case-sensitive”, letras

maiúsculas são diferentes de letras minúsculas

n Cada programa é uma classe

DETALHES

IMPORTANTES

n Nome da classe no programa tem que ser

igual ao nome do arquivo físico ‘.java’

n Sintaxe similar a linguagem C/C++

n As classes podem estar agrupadas em

package

n Package é um subdiretório.

n As classes podem ser compactadas (zip

(13)

ANATOMIA DO

PROGRAMA

n Comentários

n Os comentários em Java seguem a

mesma sintaxe de c. /* texto */

// texto

/*** Primeiro Programa Java ***/

(JavaDocs)

n O compilador ignora estas linhas

ANATOMIA DO

PROGRAMA

n Definição de Classe

n É a unidade básica para uma

linguagem OO como Java

n class Nome {

... }

n class é a palavra reservada que marca

(14)

ANATOMIA DO

PROGRAMA

n Delimitação de Blocos

Um bloco está sempre entre chaves { }

Em Java as instruções terminam em ponto-evírgula (;)

ANATOMIA DO

PROGRAMA

Método main

n Toda aplicação Java, exceto Applets e

Servlets, deve possuir o método main.

public static void main (String args[ ]){

System.out.println("Teste em Java!"); }

n O método main indica o início de

(15)

ANATOMIA DO

PROGRAMA

Argumentos do Método main

public - é um qualificador do método que indica que este é acessível externamente a esta classe.

static - é um outro qualificador que especifica o método como sendo um método de classe.

void - indica que não existe retorno a este método.

main - é o nome do método.

String args[ ] - Armazena valores passados por linha de comando.

ANATOMIA DO

PROGRAMA

n System.out.println(“Teste em Java”);

Escreve na tela o conteúdo nos parêntesis.

Chamada do método println para o atributo out da classe System.

(16)

ANATOMIA DO

PROGRAMA

n System.out.println (sequência de

escape)

§ \n (nova linha)

§ \t (tabulação horizontal) § \r (retorno de carro)

§ \\ (barra invertida) § \” (aspas duplas)

ESTRUTURAS DE

PROGRAMAÇÃO

n Identificadores

Nomeiam variáveis, funções, classes e objetos

Podem conter letras e/ou dígitos, “_” e “$” Não podem ser iniciados por dígito

(17)

ESTRUTURAS DE

PROGRAMAÇÃO

VÁLIDOS

n Nome

n NumDepen

n total_geral

n NOME

INVÁLIDOS

n 1prova

n total geral

(18)

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

(19)

ESTRUTURAS DE

PROGRAMAÇÃO

n Inteiro

byte index = 50; short soma = 2000; int num carros = 5;

long valor = 0XDADAL;

ESTRUTURAS DE

PROGRAMAÇÃO

n Tipos Ponto Flutante (Real)

• float 32 bits

• double 64 bits

n – Representações:

• 3.14

• 6.02E23

• 2.718F

• 123.4E+306D

(20)

OPERADORES

n Atenção (programadores C/C++): • int i, j;

• float r;

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

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.

int x, y;

float z = 3.144f; double w = 3.1415;

boolean verdade = true; char c, d;

c = 'A';

d = '\u0013'; x = 6;

(21)

Exemplo de utilização de

floa t , double e int

Fazer o exercício 01 da lista:

Lista_Pratica_Intro_Java.pdf

disponível no site da disciplina.

TIPOS DE DADOS

Texto

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

– retrocesso – tab

– avanço de linha – retorno de carro – aspas

– apóstrofo – barra invertida

(22)

TIPOS DE DADOS

Texto

n String: representa uma seqüência de caracteres

String frase;

frase = “Ordem e Progresso”; char opcao;

opcao = 'S'; opcao = 'N';

TIPOS DE DADOS

n boolean: representa somente dois valores:

true (verdadeiro) e false (falso)

booolean achou;

(23)

OPERADORES

n Aritméticos

Soma ( + )

Subtração ( - )

Multiplicação ( * )

Divisão ( / )

Resto ( % )

n Relacionais

<

>

<=

>=

==

!=

!

OPERADORES

n Lógicos

• Junção de expressões: &, &&, |, ||

(24)

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, logo os operadores

relacionais e lógicos NÃO geram inteiros

• Não há conversões automáticas (por ex.

(25)

CONVERSÃO DE TIPOS

n Exemplos:

STRING VALOR NUMÉRICO

St ring st r = "3 4 ";

int num _ int = I nt e ge r .pa r se I nt( st r ) ; float num _ float = Floa t .par se Floa t( st r ) ;

double num _ double = D ouble .par se D ouble( st r ) ;

VALOR NUMÉRICO STRING

I nt e ge r .t oSt r ing( num _ int ) ; St ring valor_ st r = Floa t .t oSt r ing( num _ float ) ;

D ouble .t oSt r ing( num _ double) ;

Estruturas Condicionais

n Estrutura de Decisão - If / Else

if (expressão booleana)

{ instrução ou bloco de comandos } else

{ instrução ou bloco de comandos }

if (cont >= 0) {

System.out.println(“Erro !!!”);

} else {

System.out.println(“Ok !”);

(26)

Estruturas Condicionais

n Estrutura de Decisão - switch

switch (expressão short, int, byte ou char) {

case expressão2: comandos;

break;

case expressão3: comandos;

break;

default: comandos;

break; }

Estruturas Condicionais

n Estrutura de Decisão - switch

switch (opcao) {

case 0:

valor = a + b; break; case 2:

valor = (a * b) - c; break; default:

valor = a; break; }

n A instrução break (opcional) impede que o fluxo de execução continue pelas opções seguintes

(27)

Estruturas de Repetição

n Estrutura de Repetição – 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);

}

Estruturas de Repetição

n Estrutura de Repetição - while while (expr_booleana)

{ bloco de comandos }

int cont = 0

while (cont < 100) {

System.out.println(" contando " + cont); cont++;

(28)

Estruturas de Repetição

n Estrutura de Repetição - do while do

{ bloco de comandos } while (expr_booleana)

int x = 0; do {

x++;

} while (x <10);

VETORES(Arrays)

n Declaração

• Podem ser declarados arrays de quaisquer

dos tipos através dos símbolos “[” e “]”.

• A declaração não cria o array, isto é, não aloca memória. Isso é feito pela instrução new (arrays são objetos em Java).

char s[ ]; // declaração

s = new char[3]; // Criação

(29)

VETORES(Arrays)

n Declaração

Os colchetes podem ser usados antes ou depois da variável.

Exemplo:

char s[ ]; char [ ]s;

VETORES(Arrays)

n Declarando, criando e iniciando um array

n Em Java array é um objeto, mesmo quando é

composto por tipos primitivos. Apenas a

declaração não cria o objeto, sendo necessário o

uso da palavra reservada new.

char s[ ] = {'A', 'B', 'C'};

// declaração, criação e incialização

int p[ ] = new int[5]; p[0] = 25;

(30)

VETORES(Arrays)

n Arrays não podem ser dimensionados na

definição:

n Arrays não podem ser utilizados sem

a criação:

int vector[5]; //ERRADO!

int vector[];

vector[0] = 4; //ERRADO!

VETORES(Arrays)

n Para determinarmos o seu tamanho

podemos usar o método length:

int lista [] = new int [10];

for (int j = 0; j < lista.length; j++) {

(31)

VETORES(Matrizes)

n Multi-dimensionais

int lista [] = new int [10]; int matriz [][] = new int [4][5];

matriz [0][0] = 300; matriz [1][3] = 600;

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

(32)

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

} }

n Nesse exemplo, foi declarada uma variável de

controle do FOR ( i ) que receberá, cada elemento do vetor. Por isso ela foi criada inteira (pois os

elementos do vetor são inteiros)

n Perceba que foi dada a ela o vetor ( a ) que, em cada interação do FOR, dará um elemento à variável ( i ) n Nesse caso ( i ) não é o índice e sim o elemento!

Java e Orientação a Objetos

-

Conceitos Principais

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

A Plataforma Java

(33)

Orientação a Objetos

n

História da OO

Evolução a partir da Programação

Estruturada

Programação sob demanda Programação estruturada Orientação a Objetos

Orientação a Objetos

n

Paradigma Estruturado

• O foco era no processo;

• Os dados + rotinas eram “misturados”, ou

(34)

Exemplo do paradigma

estruturado

Cadastrar o cliente

Efetuar o login

Efetuar pedido Consultar produtos Calcular frete Confirmar pedido Efetuar Pagamento Efetuar compra Acompanhar Frete Emitir

Nota Fiscal

Confirmar recebimento

Emitir relatório de compras

Orientação a Objetos

n Paradigma da Orientação a Objetos

• O foco é achar as entidades do meu sistema,

ou seja, “as coisas” que devemos manipular;

• Essas entidades são elementos do sistema,

que fazem algo específico, ou seja,

possuem RESPONSABILIDADES!!!

(35)

Orientação a Objetos

n

No nosso exemplo, se formos

pensar OO, devemos descobrir os

objetos que precisamos programar

e iremos manipular em nosso

sistema;

n

Quais seriam?

Exemplo do paradigma

orientado a objetos

Cadastrar o Cliente

Efetuar o Login

Efetuar Pedido Consultar Produtos Calcular Frete Confirmar pedido Efetuar Pagamento Efetuar Compra Acompanhar Frete Emitir

Nota Fiscal

Confirmar recebimento

(36)

Descobrindo os Objetos

n No sistema do exemplo, quais são os

objetos?

n Cliente

n Produto

n Pedido

n Compra

n Nota Fiscal

n Pagamento

Como representamos cada objeto?

Quais são os dados de cada um?

O que cada objeto faz ou precisamos fazer?

Quais serviços cada objeto oferece?

Descobrindo os Objetos

n Cada objeto precisa ser pensado (ou

encontrado) como alguém que possua responsabilidades;

• Por exemplo, se tivermos o objeto Produto,

ele deverá fazer tudo que se espera de um produto no sistema.

• Devemos então pensar em:

Quais são os dados de todo produto?

Quais são as operações que produto precisa para manipular seus dados, ou gerar

(37)

Orientação a Objetos

n Na Orientação a objetos:

n Os dados de um objeto _ Atributos

n As suas operações _ Métodos

Estrutura de um Objeto

n Atributos

• Cada objeto precisa ser representado no

sistema, e será através de seus dados;

• Por exemplo, precisamos saber quais são os

dados que cada Produto precisa. Logo, teremos:

código de identificação, nome, fornecedor, tipo, preço unitário, medida, data de fabricação

(38)

Estrutura de um Objeto

n Métodos

• Precisamos programar as “responsabilidades” do objeto, ou seja, o que precisamos fazer com cada objeto, quais operações precisamos programar para “mexer” com um objeto?

• No caso do Produto, podemos ter:

Exibir seus dados;

Calcular o imposto, mediante uma taxa; Verificar se seu código é válido

Verificar se já passou da validade, mediante uma data fornecida;

• Os métodos são implementados como funções do objeto.

Estrutura de um Objeto

n Métodos – definem o comportamento dos

objetos definidos pela classe.

n Para construirmos um método, ele é como

uma função em C, podendo ter parâmetros de entrada e retorno

n Um método sempre estará manipulando os

(39)

Estrutura de um Objeto

n Repare que todos os objetos de

PRODUTO que eu tiver em meu sistema terá os mesmos atributos e os mesmos métodos;

n O que será diferente são os valores de

cada um dos produtos, ou seja, teremos produtos diferentes;

n Mas tudo é PRODUTO!

CLASSES

n Logo, iremos ter vááááários produtos em

meu sistema;

n Só que para cria-los, precisamos de

“projetar” como será cada produto;

n Esse “projeto” é a estrutura de um objeto,

ou seja, quais são os atributos DE

TODOS os Produtos e quais os métodos que cada um terá.

(40)

CLASSES DE OBJETOS

n Uma classe é um modelo ou protótipo

que define as propriedades (atributos) e métodos (comportamento) comuns a um conjunto de objetos.

n Classes são “moldes” que definem as

variáveis e os métodos comuns a todos os objetos de um determinado tipo.

(41)

CLASSES DE OBJETOS

(42)

CLASSES DE OBJETOS

n Classes X Objetos

Uma classe é um “molde” a partir do qual vários objetos são criados.

O que interessa a um software são os objetos!

São eles que se guardam, consultam, exclui, verifica, agrupa, etc.

Criando Objetos

n Mas para termos objetos, precisamos

cria-los a partir de sua classe.

• Para criarmos, precisamos definir “valores” para cada atributo do objeto e saber que ele terá os métodos implementados na classe

n A operação de criação de objetos

(43)

Criando Objetos

n Atributos – são os “campos” que contém

as informações 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

instância.

Classes e Objetos

n No mundo real existem vários

objetos do mesmo tipo. Por exemplo, a sua bicicleta é uma das milhares que existem no mundo.

n Usando a terminologia de orientação

(44)

Classes e Objetos

n Classes e Objetos: constituem a unidade

de representação de dados para esse

paradigma. E mantém uma relação muito próxima entre si.

n Podemos pensar na Classe como a forma

da peça ou do bolo, e nos objetos como peças prontas feitas de matéria prima.

Classes e Objetos

n Classes 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 fácil organizar a aplicação em questão.

n Um objeto é uma instância de uma classe,

(45)

Java e Orientação a Objetos

-

Implementação

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

A Plataforma Java

Programação Orientada a

Objetos em Java

ORIENTAÇÃO A

OBJETOS EM JAVA

n Programas em Java provavelmente irão

criar diversos objetos de diversos tipos de classes.

n Os objetos interagem entre si através

da troca de mensagens.

n Após o objeto ter realizado o trabalho

(46)

REPRESENTAÇÃO DE

UMA CLASSE

At ribut os

M é t odos Cla sse

(47)

ESTRUTURA DE UMA

CLASSE EM JAVA

class Produto

{

int codigo; String nome;

Date dataFabricacao; float preco;

void exibirProduto() {

}

float calcularImposto(int taxa) {

}

}

CLASSES EM JAVA

n Declaração:

class Produto{ ...

}

n Propriedades (atributos): dados que as

instâncias da classe conterão: class Produto {

int codigo; String nome;

Date dataFabricacao; float preco;

(48)

CLASSES EM JAVA

Outro exemplo:

class Veiculo {

// Propriedades

float velocidadeMaxima;

float capacidadeTanque, consumo;

protected int potencia, ano;

private String marca, modelo, cor;

public String chassis, placa; ...

// Métodos ...

public float autonomia ( ) {

return capacidadeTanque * consumo; }

}

CLASSE = “Molde de Objetos”

Objeto Carro: Instância 3 Classe:

Carro Esportivo

Tempo de Execução Tempo de

(49)

codigo nome

dataFabricacao fabricante

preco

ex ibir Fun cion ar io( ) calcu lar I m post o( t ax a) v er ificar Validade( dat a )

Produto prod1;

prod1

INSTANCIAÇÃO

codigo nome dataFabricacao fabricante preco 126798

“ Biscoit o”

12/ 05/ 2010

“ Mabel”

3. 50

ex ibir Fun cion ar io( ) calcu lar I m post o( t ax a) v er ificar Validade( dat a )

Produto prod1 = ne w Produt o();

prod1

(50)

Pr odu t o pr od1 = n e w Pr odu t o( )

EXEMPLO DE INSTANCIAÇÃO

Pr odu t o pr od2 = n e w Pr odu t o( )

Pr odu t o pr od3 = n e w Pr odu t o( )

pr od1

pr od2

pr od3

(51)

REFERÊNCIAS PARA

OBJETOS

n Alocação de memória:

Produt o p1 ;

// cria apenas a referência

Produt o p1 = new Produt o( ) ;

// aloca memória e atribui // endereço à referência

Diferença com Tipos

Primitivos

n Quando se declara variáveis de

qualquer tipo primitivo (int, float, char, etc.), o espaço na memória é alocado como parte da operação.

n A declaração de uma variável de classe

não aloca memória, somente quando a

(52)

Exemplo Prático

n Classe Retangulo

Atributos:

altura e base

Métodos:

exibir()

exibirArea()

exibirPerimetro()

n Classe TestaRetangulo

void main()

REFERÊNCIA PARA

OBJETOS

n Alocação de memória

n Cuidado com a cópia de objetos!

Produt o p2 = p1 ;

(53)

ATRIBUIÇÃO DE

VALORES

n As propriedades dos objetos podem ser manipuladas

diretamente pelo operador de ponto (.)

Produto p1 = new Produto();

p1.nome = "Biscoito Croc"; p1.preco = 3.50;

Produto p2 = new Produto();

p2.nome = "Arroz Padua"; p2.preco = 11.70;

p1 = p2;

p1.fabricante = "Mantimentos LTDA";

/ / p1 e p2 t erão o m esm o fabricant e, pois p1 e p2 est ão na m esm a área de m em ória ( p2 foi para p1 )

OBTENÇÃO DE

VALORES

n Os valores das propriedades podem ser

obtidos facilmente

System.out.pritln("Nome de 1 = " + p1.nome); System.out.pritln("Preco de 2 = " + p2.preco);

(54)

MÉTODOS

n Definem o comportamento da classe.

n Declaração:

class Ponto {

int x, y;

void mover (int dx, int dy) x += dx;

y += dy; }

}

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

(55)

MÉTODOS

Assinatura

Corpo

Retorno

ASSINATURA DE UM

MÉTODO

O tipo de retorno pode ser void

float calcularI m post o ( int t axa)

Tipo de

(56)

CHAMADAS DE

MÉTODOS

n A troca de mensagens entre os objetos é

realizada através da chamada de métodos com passagem de argumentos

n Exemplo

...

p1.calcularImposto(30);

//Calculou o imposto baseado na taxa de 30%

...

EXEMPLO

class ProgramaPrincipal {

public static void main (String args[]) {

Produto prod;

prod = new Produto(“Feijão”,7.60,…);

}

}

prod.calcularImposto(30); Executando

(57)

Método

m a in()

class ProgramaPrincipal {

public static void main (String args[])

{

Produto prod;

prod = new Produto(“Feijão”,7.60,…);

} }

PASSAGEM DE

ARGUMENTOS

n Tipos de argumentos

n Objetos → passagem por referência.

• Originais são sujeitos a alterações dentro do método.

n Tipos primitivos → passagem por valor.

(58)

VARIÁVEIS LOCAIS

n Além das propriedades de um objeto, podem

ser definidos outros tipos de variável, locais a um método ou a um bloco de operações.

float calculaMedia(float p1, float p2) {

float media = (p1 + p2)/2; return media;

}

VARIÁVEIS

GLOBAIS X LOCAIS

...

String alunos[]; //global ao método

float listaAprovados() {

for (int i = 0; i < alunos.length; i++) {

String nome = alunos[i];

System.out.println(i + ": " + nome); }

(59)

Java e Orientação a Objetos

-

Construtores

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

A Plataforma Java

Programação Orientada a

Objetos em Java

CONSTRUTORES

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, por exemplo)

n Usados na criação de um objeto através do

comando new

n Possuem o mesmo nome da classe e não

(60)

CONSTRUTOR PADRÃO

n A linguagem Java declara um construtor

padrão, vazio, que não recebe nenhum parâmetro

Ponto p1 = new Ponto();

n Quando declaramos um novo construtor,

esse construtor padrão deixa de existir e é substituído pelo novo construtor

class Ponto {

int x; int y; Ponto () { }

}

CONSTRUTORES

n Podem receber parâmetros, que podem

servir para inicialização dos atributos da classe

n Uma classe pode ter vários construtores

class Ponto { int x;

int y;

public Ponto (int x, int y) {

this.x = x; this.y = y; }

(61)

CONSTRUTORES

n Deve ser usado no momento da criação

do objeto:

Ponto p1 = new Ponto(1,2);

Ponto p2;

p2 = new Ponto(3,4);

Ponto p3 = new Ponto();

CONSTRUTORES

(62)

CONSTRUTORES

Chamada ao construtor

PALAVRA RESERVADA “This”

n As vezes é necessário que o objeto se

referencie;

n Muitas vezes, os nomes dos parâmetros não

são claros o bastante para sabermos “o que passar” para o método;

Logo, procuramos colocar os nomes dos

parâmetros iguais aos dos atributos;

n Existe uma palavra reservada this que

significa uma referência ao próprio objeto,

para diferenciar o que é “do objeto” (atributo) e

(63)

PALAVRA RESERVADA “This”

n Exemplo:

class Ponto {

int x, y;

void mover (int x, int y) {

this.x = x;

this.y = y; }

}

PALAVRA RESERVADA “This”

(64)

PALAVRA RESERVADA “This”

SOBRECARGA DE

MÉTODOS

n Sobrecarregar um método significa

definir dois ou mais métodos com o

mesmo nome, porém com

assinaturas diferentes.

n Assinatura diferente pode ser: tipo de

(65)

SOBRECARGA DE

MÉTODOS

n A sobrecarga pode ser feita igualmente

aos métodos construtores

n Uma boa prática é usar a sobrecarga,

somente, em métodos que possuam a mesma funcionalidade.

SOBRECARGA DE

MÉTODOS

(66)

SOBRECARGA DE

MÉTODOS

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 () { x = 20; y = 10; }

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

this.y = y; }

(67)

SOBRECARGA DE

CONSTRUTORES

n A sobrecarga de construtores visa definir

formas diferentes de criar um objeto

n Exemplo:

Ponto p1 = new Ponto(); //p1 está em (20,10)

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

SOBRECARGA DE

CONSTRUTORES

n Um construtor pode chamar outro

construtor.

n Isso se chama “encadeamento de

construtores”.

n Para isto é necessário usar a palavra

reservada this.

n Uma chamada a outro construtor deverá

(68)

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;

} }

Java e Orientação a Objetos

A API Java

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

A Plataforma Java

(69)

Classes da API

n Java apresenta várias classes “prontas”

com diversos recursos para serem usados pelos programadores.

n Para isso, você precisa:

• Saber onde encontrar a classe (pacote Java);

• Conhecer seu conteúdo (atributos + métodos);

• Descobrir na classe quais métodos possuem o que se deseja;

• Em caso de métodos, conhecer a sua assinatura, que define como usa-lo;

Acessando a API

n Saber onde achar as classes, basta

acessar o JavaDocs!

n JavaDocs é a documentação da API do

Java e pode ser acessada de 3 maneiras:

• Diretamente via site do Java

(http://docs.oracle.com/javase/6/docs/api/)

• Pela sua IDE, caso ela tenha instalado o JavaDocs;

(70)

JavaDocs

Descrição da classe

^ Pacotes de classes

^ Classes

(71)

STRINGS

n Uma string não é um tipo primitivo, é

uma classe pré-definida do Java. São seqüências de caracteres.

n Pode ser criado com ou sem a palavra

new.

String e = ""; // uma string vazia String alo = "Alo Pessoal";

String nova;

nova = "Sou nova";

String nome = new String("Antonio");

Classe String - Métodos

im port a nt e s

n String toLowerCase(): retorna a string de chamada

toda em minúscula

n String toUpperCase(): retorna a string de chamada

toda em maiúscula

n boolean endsWith(String s): verifica se a string de

chamada termina com a string s

n String startsWith(String s): verifica se a string de

chamada inicia com a string s

n String replace(char atual, char novo): troca todas

(72)

Classe String - Métodos

im port a nt e s

n int length(): retorna o tamanho da string;

n String trim(): retorna a string sem espaços em

brancos antes e depois da mesma;

n String substring(int idxInicial, int idxFinal+1):

retorna um pedaço da string de idxInicial até idxFinal

n boolean contains(String s): verifica se a string de

chamada possui a substring s;

n boolean isEmpty(): retorna se a string está ou não

vazia

STRINGS

n Operações com String new.

// Concatenação

String nova = alo + ", tudo Ok ? ";

// Edição

String substr = alo.substring(0,3); // "Alo"

// Verificando tamanho

(73)

Outras classes da API

n Outras classes da API são igualmente

importantes:

n Math: operações matemáticas

n Date e Calendar: manipulação de datas e

hora

n DecimalFormat: formatos de números

n Scanner: entrada de dados

n Integer, Float, Double: manipulação de cada

tipo de dados, como objeto

Classe Math

n Pesquisa sobre os métodos dessa

classe, particularmente: • abs()

sqrt()

random()pow()

max()min()round()

Observe suas assinaturas e qual o objetivo

(74)

Java e Orientação a Objetos

Entrada de dados

Classe Scanner

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

A Plataforma Java

Programação Orientada a

Objetos em Java

Entrada de Dados

n O Java possui várias classes para

que possamos realizar a entrada de dados de variáveis, tal como fazemos com o comando scanf na linguagem C

n Classes para leitura de dados da API

Java.

DataInputStream (Java 1 e superior)

Scanner (Java 5).

(75)

Entrada de Dados

n A classe mais “estável”, mais utilizada e

mais fácil de realizarmos a entrada de dados será a classe Scanner!

n Ela possui vários métodos para entrada

de dados, dentre eles:

next() ou nextLine(): entrada de string

nextInt(): entrada de nº inteiro

nextFloat(): entrada de nº float

nextDouble(): entrada de nº double

nextChar(): entrada de 1 caracter do tipo char

Como utilizarmos a classe

Sc a nne r

1. Inicialmente, devemos importar a classe

Scanner em nosso arquivo .java para podermos utiliza-la.

import java.util.Scanner;

n Exemplo

import java.util.Scanner;

class Produto {

(76)

Como utilizarmos a classe

Sc a nne r

2. Depois, quando precisarmos no código de

realizar a entrada de dados, precisamos criar um objeto da classe Scanner

Scanner sc = new Scanner (System.in);

• O nosso objeto chama-se ‘sc’ (nome da variável)

• Temos que passar o modo de leitura para o construtor do Scanner _ System.in

• Isso habilita o Scanner para realizar a leitura via tela (e não de outro modo, como leitura de arquivo, de imagem, ou outro qualquer)

Fazendo a leitura via Scanner

3. Agora só começar a usa-lo!

Exemplo:

int idade; float salario; String nome;

Scanner sc = new Scanner(System.in);

println("Digite sua idade: "); idade = sc.nextInt();

println("Digite seu salário: "); salario = sc.nextFloat();

(77)

Leitura de Strings

n Há uma diferença importante na leitura de strings

entre os métodos next() e nextLine()

n next(): faz a leitura de uma string, porém só atribui

até o 1º espaço em branco que encontrar, desconsiderando o resto da string digitada. Exemplo:

String nome;

Scanner sc = new Scanner(System.in);

println("Digite seu nome: "); nome = sc.next();

Se ele digitou "Pedro da Silva"

Irá atribuir somente "Pedro"

Leitura de Strings

n nextLine(): faz a leitura de uma string,

considerando toda a string digitada. Exemplo:

String nome;

Scanner sc = new Scanner(System.in);

println("Digite seu nome: "); nome = sc.nextLine();

Se ele digitou "Pedro da Silva"

Irá atribuir "Pedro da Silva"

(78)

Leitura de Strings

n Porém, há um problema ao usar o nextLine() !!!

n Quando uma digitação de um número

anteriormente, o ENTER que você dá para atribuir o valor é capturado pelo netxLine(), impedindo a entrada de dados de sua string.

n Logo, recomendamos usar um nextLine() sozinho

antes da atribuição da string na variável:

int idade; String nome;

println("Digite sua idade: "); idade = sc.nextInt();

println("Digite seu nome: ");

sc.nextLine();

nome = sc.nextLine();

Digitação de um inteiro antes e usando um nextLine() antes da digitação da string para pegar o ENTER

Digitação de um inteiro antes e usando um nextLine() antes da digitação da string para pegar o ENTER

Java e Orientação a Objetos

Encapsulamento

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

A Plataforma Java

(79)

ENCAPSULAMENTO

n Através dos métodos podemos atingir

uma das principais características da

orientação 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ó são acessados através de métodos o que evita o acoplamento

ENCAPSULAMENTO

n É a forma de restringir o acesso aos

métodos e propriedades de uma classe.

n Protege os dados de um objeto contra

uma modificação imprópria.

n É necessário definir o controle de

acesso aos métodos e propriedades de uma classe, de forma que não se

(80)

CONTROLE DE ACESSO

n Os 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 - get e set)

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

(81)

CONTROLE DE ACESSO

n Exemplo

Pessoa p1 = new Pessoa("Joao",10);

p1.nome = "Raul";//ERRO DE COMPILAÇÃO!

p1.obs = "bom garoto"; //OK!

p1.imprimeNome(); //OK! // Nome: Joao

(82)

Exemplo

n Da forma como está, podemos ter

acesso direto (público) nos atributos

cpfCorrentista e senha;

n Este acesso não poderá ser público,

pois há regras para se atribuir valores a estes atributos, bem como para

recupera-los

Exemplo

n senha - só poderá atribuir um valor se: • Tiver 8 dígitos no mínimo;

• Tiver pelo menos 1 letra maiúscula e um dígito;

A senha nunca poderá ser acessada;

n cpfCorrentista:

• Ter somente 11 dígitos;

• Não possuir pontos nem traço;

• O código verificador corresponder ao numero digitado;

(83)

Problemas de acesso

n Como a senha é pública, podemos:

Conta c1 = new Conta();

c1.senha = "sh1098";

System.out.println("Senha: " + c1.senha);

n Ou seja, temos acesso direto, sem passar

pelas regras para senha:

senha - só poderá atribuir um valor se:

» Tiver 8 dígitos no mínimo;

» Tiver pelo menos 1 letra maiúscula e um dígito; » A senha nunca poderá ser acessada;

Problemas de acesso

n Mesma coisa para CPF:

Conta c1 = new Conta();

c1.cpfCorrentista = "passarinho";

System.out.println("CPF: "+ c1.cpfCorrentista);

n Regras para CPF (violadas):

» Ter somente 11 dígitos;

» Não possuir pontos nem traço;

(84)

Restringindo o acesso

n senha - só poderá atribuir um valor se: • Tiver 8 dígitos no mínimo;

• Tiver pelo menos 1 letra maiúscula e um dígito;

A senha nunca poderá ser acessada;

n cpfCorrentista:

• Ter somente 11 dígitos;

• Não possuir pontos nem traço;

• O código verificador corresponder ao numero digitado;

Só será recuperado com os pontos e o traço;

class Conta {

private String numero;

private String cpfCorrentista; private String senha;

...

}

(85)

Acesso privado

n Desta forma, não se tem mais o acesso

DIRETO a senha ou cpf:

Conta c1 = new Conta();

c1.senha = "sh1098";

System.out.println("Senha: " + c1.senha);

c1.cpfCorrentista = "passarinho";

System.out.println("CPF: "+ c1.cpfCorrentista);

Métodos de acesso

n Para isso, criamos métodos de acesso

(accessor methods) para os atributos

privados:

n São os famosos métodos get e set

Método Get: para capturar, “pegar ” o valor

(86)

Método GET

n Formato:

tipodoatributo getXxxx()

{ ...

return valordoatributo; }

Xxxx: é o nome do atributo, com a primeira letra maiúscula (padrão da OO);

Exemplos:

String getSenha() int getNumero() float getSalario()

Método SET

n Formato:

void setXxxx(tipodoatributo novoValor)

{ ...

atributo = novoValor; }

Xxxx: é o nome do atributo, com a primeira letra maiúscula (padrão da OO);

Exemplos:

(87)

Aplicando GET/SET

n No exemplo de ContaBancaria, podemos

então fazer os métodos get/set para senha e cpf, colocando então as regras de atribuição e recuperação previstas, implementadas cada um deles;

n Desta forma, toda vez que se atribuir ou

recuperar os valores, como SEMPRE

passará pelo get/set, serão aplicadas as regras;

Aplicando GET/SET

n Para Senha:

String getSenha() {

//regras para preparar a saida da senha return this.senha;

}

void setSenha(String novaSenha) {

//regras para atribuição

(88)

Aplicando GET/SET

n Para Senha:

String getSenha() {

//regras para preparar a saida da senha return this.senha;

}

void setSenha(String novaSenha) {

//regras para atribuição

this.senha = novaSenha;

Podemos optar por não implementar a captura da senha caso de fato não há necessidade de acesso a mesma.

Aplicando GET/SET

n Para cpfCorrentista:

String getCpfCorrentista() {

//regras para preparar a saida do cpf return this.cpfCorrentista;

}

void setCpfCorrentista(String cpf)

{

//regras para atribuição

(89)

Usando métodos Get/Set

n Desta forma, usamos os get/set para

acesso à senha ou cpf:

Conta c1 = new Conta();

c1.setSenha("sh1098");

c1.setCpfCorrentista("passarinho"); System.out.println("CPF: "+

c1.getCpfCorrentista());

Observe que os dados passados serão invalidados, pois as regras estão implementadas em cada método e verifica a

integridade dos dados. No caso de dados válidos, serão atribuidos/recuperados de acordo com as mesmas regras.

(90)

Notas Práticas sobre

Ge t /Se t

n Se os atributos estão private e todo acesso

agora será feito por get/set, sempre que precisar de pegar os valores dos atributos, mesmo dentro de métodos públicos da classe

faça via get !

n A mesma coisa é para atribuir um valor, mesmo

dentro de métodos públicos (sobretudo

Construtores), faça via set !

n Salvo exceções onde, dentro dos métodos

públicos da classe você precisa do dado “bruto”, logo, acessa-se diretamente!

Exercício de Get/Set

n Utilizar os métodos Get/Set no classe

Cliente do exercício Aula_Strings.pdf

n Para isso, coloque todos os atributos

private e gere todos os get/set para eles na classe;

n Observe e aplique as regras de

atribuição/recuperação de algum

(91)

Java e Orientação a Objetos

Membros de Classe e Constantes

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

A Plataforma Java

Programação Orientada a

Objetos em Java

MEMBROS DE CLASSE

n Pode-se definir numa classe membros que

sejam compartilhados por todas instâncias daquela classe.

n Esses membros são chamados de “membros

de classe”. Podem ser: • propriedades (variáveis)

• métodos

n Todo membro de classe deve usar o

(92)

VARIÁVEIS DE CLASSE

n Exemplo:

class Pessoa {

static int numPessoas = 0; int id;

Pessoa () {

id = numPessoas; numPessoas++; }

... }

(93)

VARIÁVEIS DE CLASSE

n Exemplo:

Pessoa joao = new Pessoa (); // joao.id = 0;

// joao.numPessoas = 1;

Pessoa ana = new Pessoa(); // ana.id = 1;

// ana.numPessoas = 2;

n Fazer este exemplo, imprimindo (id) e

(numPessoas).

VARIÁVEIS DE CLASSE

n Os membros de classe podem ser

acessados diretamente, sem

necessidade da existência de um objeto.

Pessoa.numPessoas = 100;

(94)

ESCOPO DE VARIÁVEIS

n Ao utilizar o nome de uma variável

dentro de um método, Java procurará a sua definição na seguinte ordem:

bloc o

bloco mais externo m é t odo

variável de instância ou classe supe r-c la sse

MÉTODOS DE CLASSE

class ContaBancaria { ..

static float calcEmprestimo(int valor) {

... }

}

§ Exemplo:

int val = 5000;

float total = Example.calcEmprestimo(val);

(95)

Métodos de Classe

(e stát icos)

n Quando o método é de classe (static), a

própria classe chama o método;

n Logo, não se pode ter atributos de

objetos envolvidos no método;

n Caso tenha, o método É DO OBJETO e

não da classe - de todos! (tirar o static)

n São métodos extras, funções úteis que

não precisam de ter um objeto para executa-lo.

Métodos de Classe

(e stát icos)

(96)

Atributos de classe

class Funcionario

{

static int codigo; String nome;

static String cargo;

.... }

Atributos de classe

Funcionario f1 = new Funcionario();

Funcionario f2 = new Funcionario();

f1.codigo = 30;

System.out.println("Codigo = " + f2.codigo);

n >> Codigo = 30; //f1 e f2 tem o mesmo codigo

f2.codigo = 50;

System.out.println("Codigo = " + f1.codigo);

(97)

Atributos de Classe

n Nesse caso, como codigo é static, seu valor é

“compartilhado” a todos os objetos;

n Logo, não importa qual objeto modifica seu valor,

que mudará TODOS os demais.

n Sendo assim, a própria classe pode acessa-lo,

caracterizando a mudança para todos os membros:

Funcionario.codigo = 1467;

Métodos de classe

class Funcionario {

static int codigo; ...

static float fator; float salario;

public float calcularSalarioLiquido(int taxa) { float sal;

if(taxa < 15)

sal = salario – (salario*0.13f) – (salario*taxa/100); else

sal = salario – (salario*taxa) + (salario*0.03f); return sal;

}

public float calcularGratificacao(int numFilhos) { return numFilhos * 50 + (fator * 0.30);

} }

(98)

Métodos de Classe

n O método de calcularSalarioLiquido() possui um

atributo que é do objeto (salario), o qual cada objeto tem o seu (não é static);

n Logo, só se pode executa-lo por um objeto, NÃO

devendo ser static;

n O método calcularGratificacao() não possui

atributos de objetos, somente numFilhos (que é um parametro) e o fator, que é um atributo de classe (static);

n Logo, esse método PODERÁ ser static.

Métodos de Classe

Funcionario f1 = new Funcionario();

Funcionario f2 = new Funcionario();

f1.salario = 3000; f2.salario = 4000;

//cada funcionário tem seu próprio salário

float s1 = f1.calcularSalarioLiquido(30); float s2 = f2.calcularSalarioLiquido(30);

//logo, cada um terá seu próprio salario liq.

(99)

Métodos de Classe

Funcionario f1 = new Funcionario();

Funcionario f2 = new Funcionario();

Funcionario.fator = 200;

//logo o fator 200 é para todos, pois é static

float g1 = f1.calcularGratificacao(50); float g2 = f2.calcularGratificacao(50);

//TODOS tem a mesma gratificação

System.out.println("Gratificacao de f1 " + g1); System.out.println("Gratificacao de f2 " + g2);

Métodos de Classe

n Nesse caso, como calcularGratificacao() é

static e não depende de qualquer atributo de objeto, a própria classe pode chama-lo;

(100)

Exercícios

Avaliar e aplicar static na

classe Teclado

CONSTANTES

n Podem ser:

• variáveis (de instância, de classe ou locais)

• métodos

n São declaradas com a palavra

reservada final

n Como padrão da OO, são declaradas

(101)

CONSTANTES

class Teste {

// Variáveis constantes

final int ESQUERDA = 0;

final int DIREITA = 0;

// Método constante

private final static void main (String args[]) {

.. }

.. }

Java e Orientação a Objetos

Uso de Herança de Classes

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

A Plataforma Java

(102)

Herança de Classes

Herança de Classes

conta1

numero = “1020-7” agencia = “025-2” saldo = 1500,00 valorTaxa = 23,00 limiteCheque = 500,00

(103)

Herança de Classes

Representando as contas Poupança

Herança de Classes

conta1

numero = “1020-7” agencia = “025-2” saldo = 1500,00 valorTaxa = 23,00 limiteCheque = 500,00 taxaRendimento = 0

emitirExtrato() emitirSaldo() aplicarTaxa() alterarLimite() aplicarRendimento() conta2

numero = “2140-8” agencia = “353-0” saldo = 2000,00 valorTaxa = 0 limiteCheque = 0 taxaRendimento = 1,5%

(104)

Herança de Classes

Herança de Classes

conta1

numero = “1020-7” agencia = “025-2” saldo = 1500,00 valorTaxa = 23,00 limiteCheque = 500,00

emitirExtrato() emitirSaldo() aplicarTaxa() alterarLimite()

conta2

numero = “2140-8” agencia = “353-0” saldo = 2000,00

taxaRendimento = 1,5%

(105)

Herança de Classes

?

?

???

(106)

Definindo a Herança

Definindo a Herança

(107)

Definindo a Herança

(108)

O QUE É HERANÇA?

n Herança é 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 herança é chamada

superclasse.

O QUE É HERANÇA?

n A classe A é a superclasse de B

n A classe B é uma subclasse de A

n A classe B é a superclasse de C, D e E

(109)

HERANÇA

n As superclasses definem atributos e métodos

genéricos que são herdados pelas classes derivadas.

n Um método herdado de uma superclasse pode

ser redefinido pela classe derivada, mantendo o mesmo nome mas agindo de forma diferente.

n 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 Java adota o modelo de árvore

n A classe Object é a raiz da hierarquia de

classes à qual todas as classes existentes pertencem;

n Quando não declaramos que uma classe

estende outra, ela, implicitamente, estende

(110)

HERANÇA EM JAVA

n Uma classe Java estende apenas uma

outra classe (herança simples ou única)

n Para criar uma sub-classe, usamos a

palavra reservada extends

HERANÇA EM JAVA

class ContaCorrente extends ContaBancaria

{

.... }

class ContaPoupanca extends ContaBancaria

{

Referências

Documentos relacionados

novas artes da vida (e da morte): qualidade de vida, nova era, biomímese.. The

Portanto, todos os negócios devem ser informados de suas falhas, pois são manchas para a religião, pois não devemos ser assim neste ou naquele

• Apresentação do Painel de controlo fácil • Apresentação do ecrã de controlo de CD/MP3/WMA/Carregador de discos • Apresentação do ecrã de menu de CD/MP3/WMA/Carregador

Para iniciar uma análise deste ponto, deve-se conectá-lo a outro que lhe dá suporte, qual seja, &#34;a crença religiosa popular, partilhada tanto por organizações seculares

estudantes e crie um método que calcule e retorne a somatória das notas de todos os estudantes. Imprima o valor no console... 2) Crie um outro método no programa que liste as notas

• Algumas classes são utilizadas para representar tipos primitivos sob forma de objeto, estas são denominadas classes Wrappers.... Tipos Primitivos

• Existem tags específicas que podem ser colocadas dentro dos

– Não precisa saber como a classe foi escrita, apenas quais seus métodos, quais os parâmetros (quantidade, ordem e tipo) e os valores que são retornados.. – Usa apenas a