Enunciado

Concretize o conceito Caneta com Tinta que extende o conceito Caneta. Uma caneta com tinta tem um comportamento semelhante a uma caneta mas tem uma característica adicional que é o facto de ter uma quantidade limitada de tinta. Além de suportar as funcionalidades do conceito Caneta,  o novo conceito Caneta com Tinta, deve suportar as seguintes novas funcionalidades:
  • Uma caneta com tinta tem um repositório de tinta. A capacidade máxima deste repositório é 1000 unidades de tinta;
  • Quando se cria uma caneta com tinta deve ser indicado qual a quantidade inicial de tinta da caneta criada;
  • Duas canetas com tinta são iguais se todos os seus campos forem iguais (o que inclui agora a comparar a quantidade de tinta). 
  • Cada vez que uma caneta com tinta escreve uma cadeia de caracteres, a quantidade de tinta é decrementada de uma unidade. Se a quantidade de tinta for inferior a 1, então não é escrito nada. 
  • Apresentar o valor dos campos de uma caneta com tinta inclui apresentar a quantidade de tinta.
  • Deve ser possível saber a quantidade de tinta de uma caneta com tinta e recarregar uma caneta com tinta com uma determinada quantidade de tinta.
A sua solução deve reaproveitar a funcionalidade Caneta já concretizada nos ficheiros Pen.h e Pen.c. Não é necessário submeter estes ficheiros.

Concretize o conceito Caneta com Tinta criando os ficheiros PenWithInk.h e PenWithInk.c.

  • A entrega do código realizado é feita de forma electrónica, via Fénix.

Prazo de Entrega

Este exercício de programação pode ser entregue até ao início da aula de laboratório da 2ª semana.

Procedimento de Submissão

Uma vez que tenha concretizado o código com a funcionalidade indicada no enunciado deste exercício de programação, crie o ficheiro arquivo ap.jar que deverá conter apenas o código fonte que concretiza a funcionalidade requerida Supondo que o código realizado está no directório ep1, e que está no directório pai de ep1, então a criação do ficheiro a submeter pode ser realizada utilizando o seguinte comando (versão UNIX) na linha de comandos:

 jar cvf ep.jar ep1/*.[ch]

De seguida, deve entregar, via electrónica, o ficheiro ep.jar. A entrega deste ficheiro deve ser feita via Fénix, na secção Avaliação da disciplina e escolhendo a submissão a submissão respeitante ao seu turno de laboratório e ao exercício de programação nº 1. O trabalho pode ser entregue várias vezes, até à data limite de entrega, sendo considerada apenas a última versão.