Actividade

Esta aula tem os seguintes objectivos:

  1. Exemplificar a utilização de contentores e iteradores;
  2. Ordenação de contentores;
  3. Resolução do exercício EP4 a para avaliação.

Enunciado da Aula


1º Exercício


Considere editor gráfico descrito no 2º exercício da 4ª aula prática. Pretende-se agora adicionar as seguintes funcionalidade:
  • As formas criadas devem ser guardadas no editor preservando a ordem de inserção;
  • No entanto, deve ser possível alterar a ordem de uma forma inserida anteriormente e colocá-la no fim ou no início desta ordenação. A forma a reposicionar deve ser identificada pela sua referência. Note que reposicionar uma dada forma possivelmente implicará primeiro a sua remoção e depois a sua inserção na posição pretendida;
  • Deve ainda ser possível desenhar todas as formas existentes e remover uma forma existente;
  • Supondo a existência de um método em Form que indica se um dado ponto pertence à forma, concretize um método que remove todas as formas do editor que contenham um dado ponto.

Após ter feito o exercício, compare a sua solução com a solução proposta pelo corpo docente: editor.jar. Atenção, primeiro deve tentar realizar o exercício e só depois é que deve consultar a solução proposta.

2º Exercício


Uma empresa tem funcionários. Um funcionário tem um nome, um identificador único e um salário. Dois funcionários são iguais se tiverem o mesmo identificador Uma empresa deve ter as seguintes funcionalidades:
  • adicionar um funcionário à empresa mas não pode haver dois funcionários com o mesmo identificador. Caso o novo funcionário seja igual a um já existente, então não deve ser adicionado;
  • obter os funcionários que tenham um salário superior a um dado valor. Caso não exista nenhum funcionário nas condições indicadas então deve ser devolvida uma lista vazia;
  • remover os funcionários cujo nome começa com uma dada cadeia de caracteres (utilizar o método startsWith da classe String);
  • devolver uma colecção de funcionários ordenados por salário e nome.

3º Exercício


Um estojo serve para guardar lápis. Um lápis tem uma marca e uma cor. Dois lápis são iguais se tiverem a mesma marca e cor. A marca e a cor são representadas por uma cadeiade caracteres. Um estojo tem uma dada capacidade. A capacidade deve ser definida no momento da criação do estojo. O estojo deve ter a seguinte funcionalidade:
  • adição de um lápis;
  • obter todos os lápis iguais a um dado lápis. A colecção devolvida deve ter em conta a ordem pela qual os lápis foram inseridos no estojo;
  • remover um dado lápis;
  • remover todos os lápis que tenham uma dada cor;
  • obter a lista de lápis ordenados (alfabeticamente) de forma crescente por marca e cor. Note que esta ordenação não deve alterar a ordem pela qual os lápis são mantidos no estojo;
  • obter a lista de lápis do estojo pela ordem em que eles foram inseridos.

4º Exercício


Um navio tem tripulantes. Cada tripulante tem um nome, um ano de nascimento e um salário. Cada tripulante tem um identificador único no contexto do navio atribuído automaticamente pela aplicação. O navio tem que suportar a seguinte funcionalidade:
  • manter o conjunto de tripulantes do navio. Deve ser possível aceder rapidamente ao tripulante que tem um dado identificador;
  • obter o conjunto de tripulantes do navio que têm um salário inferior a um dado valor;
  • remover o tripulante um dado identificador. Deve ser devolvido se a operação teve sucesso ou não;
  • remover todos os tripulantes cujo ano de nascimento seja inferior a um dado valor.