Ficha Nº7
Exercício Nº1
2004.05.07

Herança


No Departamento de Informática da Universidade do Minho, utiliza-se um sistema interessante para gerir o software que é instalado e utilizado nas máquinas laboratoriais. Há um servidor para cada laboratório onde são instaladas várias imagens de possíveis sistemas (uma imagem é constituída por um sistema operativo base e vários pacotes de software). No início de cada utilização, o utilizador escolhe a imagem que quer carregar. No fim da sua sessão, quando o utilizador desliga a sua máquina, o conteúdo desta é apagado para na sessão seguinte carregar uma nova imagem. Desta maneira, garante-se que quando um utilizador selecciona uma dada imagem esta é-lhe oferecida tal como foi criada originalmente.

Com a adopção desta tecnologia por parte de quase todo o corpo docente, o número de imagens proliferou tornando necessária a criação de uma ferramenta de gestão das várias imagens. Pretende-se que a informação sobre as imagens seja mantida num formato XML.

Para o efeito, pretende-se que seja realizado o seguinte conjunto de tarefas:
  1. Especificação de um Schema para o registo de imagens, atendendo às seguintes considerações:
    • As várias imagens formam uma ou mais hierarquias em árvore.
    • Uma imagem é constituída por uma descrição onde poderão constar vários atributos como por exemplo o espaço ocupado pela imagem ou o autor da imagem, a indicação do sistema operativo de base, a indicação dos vários pacotes de software instalados (cada um pode ter a ele associadas uma ou mais notas -- versão instalada, acessórios, ...), e as imagens filhas.
    • Uma imagem filha difere da imagem pai por ter mais uns pacotes de software instalados a sua estrutura é, portanto, igual.
    • Esta estrutura hierárquica de imagens pressupõe um mecanismo de herança relativamente aos pacotes de software instalados, i. e., se quiser saber qual o software instalado na imagem X, terei de juntar à lista de componentes dessa imagem os componentes da sua imagem pai, da sua imagem avô, ...
  2. Especificação de uma stylesheet XSL que recebendo uma instância do tipo de documento definido, produz uma página HTML com o seguinte conteúdo:
    • No início a página contém um índice remissivo de imagens.
    • Cada imagem aparece individualizada das restantes (linhas horizontais, tipo de letra diferente, ...).
    • Para cada imagem, é mostrada a descrição com os vários atributos e a lista de componentes de \ti{software} que a compõem dividida em duas partes: os componentes próprios e os herdados.
    • Cada componente deverá apresentar uma sublista com as notas que lhe estão associadas.
    • Cada componente herdado deverá ter a ele associado a sua origem (numa segunda versão poderia conter um link para o seu owner).