Tópicos
- Tipos de dados abstractos em C e em C++.
- Comparação entre estruturas de dados C e estruturas de dados C++.
- Tipos de dados abstractos e objectos.
- Reutilização de conceitos.
Exercício 1: Animal simples
Modele e implemente em C (ficheiros .h e .c) uma estrutura de dados que represente uma versão simples do conceito "animal". Um animal tem como características o nome ( _name), a idade ( _age) e o peso ( _weight). Implemente a função newAnimal que reserva memória suficiente para representar um animal e permite inicializar os seus campos (através dos argumentos da função). Por simplicidade, assuma que o campo _name tem comprimento fixo máximo de 16 caracteres (incluindo o terminador). Implemente também a função destroyAnimal, que liberta os recursos associados ao animal.
- Implemente a função de comparação - equalsAnimal -, por forma a considerar que dois animais são iguais se as suas características forem iguais.
- Implemente funções de acesso às variáveis de um animal: getAnimalName, getAnimalAge, getAnimalWeight (dado um animal, retornam um dos seus campos).
- Implemente a função printAnimal que, quando aplicada a um animal, apresenta os seus dados (use printf para apresentar cada campo do animal).
- Implemente um programa - main - que ilustre a utilização das funções anteriores.
[ resolução: procurar resolver antes de consultar ]
Exercício 2: Gato simples
Modele e implemente em C (ficheiros .h e .c) uma estrutura de dados que represente uma versão simples do conceito "gato". Um gato tem como características o nome ( _name), a idade ( _age), o peso ( _weight), o volume do ronronar ( _purrLevel) e o grau de suavidade do pêlo ( _fluffiness). Implemente a função newCat que reserva memória suficiente para representar um gato e permite inicializar os seus campos (através dos argumentos da função). Por simplicidade, assuma que o campo _name tem comprimento fixo máximo de 16 caracteres (incluindo o terminador). Implemente também a função destroyCat, que liberta os recursos associados ao gato.
- Implemente a função de comparação - equalsCat -, por forma a considerar que dois gatos são iguais se as suas características forem iguais.
- Implemente funções de acesso às variáveis de um gato: getCatName, getCatAge, getCatWeight, getCatPurrLevel, getCatFluffiness (dado um gato, retornam um dos seus campos).
- Implemente a função printCat que, quando aplicada a um gato, apresenta os seus dados (use printf para apresentar cada campo do gato).
- Implemente um programa - main - que ilustre a utilização das funções anteriores.
[ resolução: procurar resolver antes de consultar ]
Exercício 3: Gato menos simples
Modele e implemente em C (ficheiros .h e .c) uma estrutura de dados que represente uma nova versão do conceito "gato". Um gato é um animal caracterizado pelo volume do ronronar ( _purrLevel) e pelo grau de suavidade do pêlo ( _fluffiness). Implemente a função newCat que reserva memória suficiente para representar um gato e permite inicializar os seus campos (através dos argumentos da função). Implemente também a função destroyCat, que liberta os recursos associados ao gato.
- Implemente a função de comparação - equalsCat -, por forma a considerar que dois gatos são iguais se as suas características forem iguais.
- Implemente funções de acesso às variáveis internas de um gato: getCatName, getCatAge, getCatWeight, getCatPurrLevel, getCatFluffiness (dado um gato, retornam um dos seus campos). Note que algumas destas características são fornecidas pelo conceito "animal".
- Implemente a função printCat que, quando aplicada a um gato, apresenta os seus dados (use printf para apresentar cada campo do gato).
- Implemente um programa - main - que ilustre a utilização das funções anteriores.
Reutilize os resultados do Exercício 1 na resolução deste exercício.
[ resolução: procurar resolver antes de consultar ]
Exercício 4: Discussão
Compare e discuta os resultados obtidos em 2. e 3.