Classes e objetos Arrays e Sobrecarga P. O. O. Prof. Grace

Preview:

Citation preview

Classes e objetosArrays e Sobrecarga

P. O. O.

Prof. Grace

2

Exercício (para entregar)

1. Elabore o diagrama de classes para a

classe ContaCorrente;

2. Implemente a classe ContaCorrente– O valor inicial do saldo deve ser sempre maior

ou igual a 0;

– Não esqueça de validar os valores de saque e

depósito (não devem ser menores que zero).

3

Classe ContaCorrente

Atributos (variáveis de instância)– Número da conta

– Titular

– Saldo

Métodos (operações/ tarefas)– Construtor: inicializa titular, numero da conta e saldo (sempre

maior ou igual a zero);

– Depósito (atualizar saldo acrescido da quantia depositada);

– Saque (atualizar saldo decrescido da quantia sacada);

– Exibir dados da conta

4

UML

Modelagem mínima solicitada para ContaCorrente

Decisão de projeto

5

Implementação

Não apresenta tipo de retorno

Usa método set

Não possui método set

Não possui método set

6

Saque e deposito

7

verDados( ) e setTitular( )

8

Gets

9

O são Arrays?

Arrays ou vetores são objetos que contêm uma coleção de elementos do mesmo tipo

Cada elemento pode ser acessado ou referenciado individualmente por um índice numérico

Esse valor inteiro representa a posição do elemento dentro do vetor

Elementos podem ser de tipo primitivo, objetos ou outros arrays

10

Exemplo: Array de 12 elementos

11

Arrays

Índice:– Número da posição entre colchetes.– Deve ser inteiro positivo ou expressão de inteiro.– Primeiro elemento tem o índice zero:

a = 5;b = 6;c[ a + b ] += 2;

Adiciona 2 ao elemento c[ 11 ].

12

Cuidado com o tipo do índice

Utilizar um valor de tipo long como um índice

de array resulta em um erro de compilação.

Um índice deve ser um valor int ou um valor

de um tipo que possa ser convertido para int

— byte, short ou char, mas não long.

13

Declarando e criando arrays

São criados dinamicamente com a palavra-chave new

int c[] = new int[ 12 ];

Equivalente a:

int c[]; // declaraçãoc = new int[ 12 ]; // criação

Também podemos criar arrays de objetos:

String b[] = new String[ 100 ];

14

Erro comum de programação

Especificar o número de elementos entre os colchetes da declaração Ex. int c[ 12 ];// Erro

Múltiplas variáveis em única declaração:Ex.:

int[] a, b, c; // Um vetor e dois inteiros?

// Ou 3 vetores?

int a[], b, c; // Um vetor e dois inteiros

15

Exemplo: Criando um vetor

16

Definindo constantes

Também são chamadas

– constantes identificadas

– variáveis de leitura (read-only).

Tornam programas mais legíveis

– Ex.: constante TAM indica tamanho do vetor;

17

Uso de Constante eInicialização com valores calculados

18

Cuidados com constantes

Atribuir um valor a uma constante depois de

a variável ter sido inicializada é um erro de

compilação.

Tentar utilizar uma constante antes de ela

ser inicializada é um erro de compilação

19

Inicializando array com uma lista

Utiliza a lista inicializadora:– Itens entre chaves ({ }).– Itens em uma lista separada por vírgulas.

int n[] = { 10, 20, 30, 40, 50 }– Cria um array de cinco elementos.– Indexa valores de 0, 1, 2, 3, 4.

Não precisa da palavra-chave new.

20

Exemplo: Dias do mês

21

Criando a classe Data

22

Criando a classe Data (cont.)

23

Teste da Classe Data

24

Quantos construtores uma classe pode ter?

Nenhum (construtor padrão: não recomendável)

Apenas 1 construtor

Vários construtores!!!

Sobrecarga

25

Sobrecarga

O que é?– Recurso que permite que vários métodos, com

mesmo nome sejam definidos

– Obrigatório diferentes parâmetros: quantidade,

tipos e ordem dos argumentos

– Usada para definir vários construtores de acordo

com a necessidade

26

Construtores sobrecarregados - Classe Data

// construtor existentepublic Data (int d, int m, int a){

setData(d, m, a);}

// construtor com mês e anopublic Data (int m, int a){

setData(1, m, a);}

// construtor com apenas anopublic Data (int a){

setData(1, 1, a);}

27

Incluir métodos get

(...) // método público – obtém diapublic int getDia (){

return dia;}// método público – obtém mêspublic int getMes (){

return mes;}// método público – obtém anopublic int getAno (){

return ano;}

(...)

28

Teste Classe Data

public class TesteData { public static void main (String args[]){

Data data1, data2, data3;data1 = new Data(27, 04, 2009);data2 = new Data(2008);data3 = new Data(6, 2012);

System.out.println(“ Hoje é “ + data1.toString() +“ ingressei no segundo semestre de “ + data2.getAno() +“ e me formarei em “ + data3.getMes()

+”/”+data3.getAno());}

}

29

Atividade 1: Conta corrente

Altere a classe conta corrente considerando um novo

atributo: Limite

Considere este atributo no construtor da classe;

Durante a operação de saque atualize saldo

considerando que:– Só é permitido sacar se a quantia estiver dentro do saldo

mais limite do cliente;

– Caso a quantia não esteja coberta pelo limite, informe que

não foi possível realizar o saque por falta de recursos;

30

Atividade 1: Conta corrente

Sobrecarga:– Codifique um segundo construtor que receba

número da conta, titular e saldo. Neste caso, o

Limite padrão é de R$100,00.

– Codifique um terceiro construtor que receba

apenas o número da conta e titular. Neste caso,

saldo e limite devem ser inicializados com 0.

31

Atividade 2: Caixa Eletrônico

Escreva um programa em Java que utilize a classe conta

corrente para simular um caixa eletrônico.

A aplicação deve solicitar: número, titular, saldo e limite da

conta corrente para instanciar o objeto (abertura da conta).

Em seguida apresente um menu com as opções de Saque,

Deposito, Saldo e Sair.

Após a realização da operação selecionada, volte a exibir as

opções do menu até que seja selecionada a saída da

aplicação.

32

Exemplo (1ª parte do programa)

Sugestão: reescreva o método exibeDados( ) de modo a apresentar apenas numero da conta e titular;

Escreva um novo método verSaldo( ) que apresenta saldo e limite.

33

Exemplo (caixa eletrônico)

34

Atividade 3

Altere a classe Data incluindo o método

bissexto( ) que informa se o ano é bissexto

ou não (booleano);

Utilize este método para validar a quantidade

de dias de fevereiro;

Elabore o diagrama UML desta classe;