10. Criar novos tipos de dados

Relembre de novo que um tipo de dados não primitivo define:

A classe Math do pacote java.lang e a nossa classe UtilidadesIP onde fomos “guardando” os métodos úteis que fomos criando ao longo deste curso, são dois exemplos de classes que não definem tipos de dados.

Não faz sentido falar de objetos do tipo Math ou do tipo UtilidadesIP

 

Por outro lado, as classes String e StringBuilder do pacote java.lang e as classes Random e Scanner do pacote java.util são exemplos de tipos de dados não primitivos

Tal como os autores da biblioteca do Java criaram uma série de classes que definem tipos de dados, também nós podemos criar novos tipos de dados para representarmos a informação que queremos manipular nos nossos programas.

Classes que definem alunos, turmas, escolas, leilões, participantes em leilões, equipas de futebol, apostadores, jogos, jogadores, planetas, e muitas outras mais, dependendo dos dados que queremos manipular nos nossos programas.

 

Suponha que quer fazer um programa que trata informação sobre jogadores e jogos envolvendo jogadores que vão fazendo jogadas, acumulando pontos ao longo do jogo.

Suponha que a informação relevante acerca de um jogador é o seu nome, os pontos já acumulados e o número de pontos máximo ganho numa só jogada.

Uma abordagem pouco esperta seria criar três arrays com a informação sobre os vários jogadores participantes num jogo – um array de strings para guardar os nomes, um array de int que guardaria as pontuações dos vários jogadores e, finalmente, um outro array de int para guardar o máximo de cada um numa só jogada.

O problema com esta abordagem é que a informação de um dado jogador ficaria “espalhada” pelos três arrays. Uma mesma posição p em cada um dos três arrays teria que corresponder a informações acerca de um mesmo jogador, ou seja, se ordenássemos um dos arrays teríamos que ordenar também os outros para manter esta correspondência; se inseríssemos um novo jogador entre outros dois jogadores, teríamos que o fazer exatamente na mesma posição nos três arrays; se apagássemos um jogador teríamos que apagar exatamente a mesma posição dos três arrays. Este tipo de ações são geradoras de erros e, por isso, indesejáveis.

Vamos então ver qual a abordagem adequada para criar novos tipos de dados.

 


 

Anterior: 9.7. Arrays multi-dimensionais

Seguinte: 10.1. O tipo de dados Jogador