7.1. Tipos de dados não primitivos

No Capítulo 3 dissemos que um tipo de dados é definido por:

Quando pensamos no tipo int, por exemplo, e no que podemos fazer com valores desse tipo, estamos na verdade a abstrair uma série de pormenores de implementação como, por exemplo, a forma como esses valores são guardados em memória, a forma como são feitas as operações sobre esses valores, etc.

Relembre que os tipos de dados int, double e boolean que usámos até agora são o que se chama de tipos de dados primitivos no Java porque estão incluídos na própria linguagem.

Podemos pensar em tipos de dados mais complexos, não só em termos dos valores que representam, mas também em termos das operações que podemos usar sobre esses valores.

Por exemplo, podemos pensar no conceito de aluno como um tipo de dados a que poderíamos chamar Aluno. Para isso, deveríamos definir:

O tipo de dados Aluno seria um tipo de dados não primitivo, pois não está definido de base na linguagem Java. Ele seria definido através de uma classe de nome Aluno, onde se descreveria o conjunto de valores e de operações que se poderiam realizar sobre esses valores.

Quando, num programa, precisássemos de trabalhar com informações sobre alunos, poderíamos, por exemplo, criar uma variável do tipo Aluno, definir o seu valor ou estado (qual o seu nome, o seu número e as notas obtidas). Poderíamos de seguida aplicar sobre esse aluno todas as operações definidas no tipo de dados Aluno. Seríamos aquilo a que se chama clientes do tipo de dados Aluno porque o nosso código Java usaria esse tipo de dados.

A ideia é que os clientes de um dado tipo de dados usam-no sem precisarem de conhecer os pormenores de implementação desse tipo de dados, ou seja, abstraindo esses pormenores.

Por isso usamos a expressão abstração de dados para nos referirmos à separação entre

Um tipo de dados não primitivo

Prosseguindo a metáfora do “cliente”, podemos dizer que os objetos são fornecedores e as suas operações são os serviços que eles fornecem aos seus clientes.

 

 


 

Anterior: 7. Abstração de dados

Seguinte: 7.2. Revisitando o tipo String