. Actividade
Esta aula tem os seguintes objectivos:
- Exemplificar a utilização de contentores e iteradores;
- Ordenação de contentores;
- 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.