(→Código da Solução) |
(→Diagrama UML) |
||
(4 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
{{CollapsedCode|Diagrama UML| | {{CollapsedCode|Diagrama UML| | ||
− | [[image: | + | [[image:uml-cat-registry.png|500px]] |
}} | }} | ||
Line 15: | Line 15: | ||
<source lang="java"> | <source lang="java"> | ||
class DuplicateCatException extends Exception { | class DuplicateCatException extends Exception { | ||
− | public DuplicateCatException(String message) { | + | public DuplicateCatException(String message) { super(message); } |
− | |||
− | |||
} | } | ||
</source> | </source> | ||
Line 25: | Line 23: | ||
<source lang="java"> | <source lang="java"> | ||
class NoSuchCatException extends Exception { | class NoSuchCatException extends Exception { | ||
− | public NoSuchCatException(String message) { | + | public NoSuchCatException(String message) { super(message); } |
− | |||
− | |||
} | } | ||
</source> | </source> | ||
Line 38: | Line 34: | ||
public class CatRegistry { | public class CatRegistry { | ||
− | private Map<String, Cat> | + | private Map<String, Cat> cats = new HashMap<>(); |
− | |||
− | |||
− | |||
− | |||
public void put(Cat cat) throws DuplicateCatException { | public void put(Cat cat) throws DuplicateCatException { | ||
Line 64: | Line 56: | ||
A classe '''Cat''' (não pedida no exercício) poderia ser algo como se apresenta de seguida. | A classe '''Cat''' (não pedida no exercício) poderia ser algo como se apresenta de seguida. | ||
− | {{CollapsedCode|Classe | + | {{CollapsedCode|Classe Cat| |
<source lang="java"> | <source lang="java"> | ||
class Cat { | class Cat { |
Modele em UML (incluindo construtores) e implemente em Java uma classe CatRegistry cujas instâncias registam gatos (classe Cat). A classe CatRegistry deve manter um mapa de gatos, indexando-os pelos respectivos nomes. Não é necessário implementar a classe Cat. Considere que a classe Cat tem atributos idade (age) e nome (name). Considere ainda que o construtor de Cat aceita os valores para os atributos mencionados e que os métodos de acesso (getters e setters) estão definidos.
A interface da classe CatRegistry contém os métodos de inserção (put) e consulta (get). O primeiro (put) aceita um gato e regista-o (se o nome do gato já tiver sido usado – por um gato com esse nome já existir no mapa – deve lançar a excepção DuplicateCatException); o segundo (get) aceita o nome de um gato e devolve o gato com esse nome a partir do mapa, caso exista, ou lança uma excepção (NoSuchCatException), se não existir.
Diagrama UML |
---|
Classe DuplicateCatException |
---|
class DuplicateCatException extends Exception {
public DuplicateCatException(String message) { super(message); }
}
|
Classe NoSuchCatException |
---|
class NoSuchCatException extends Exception {
public NoSuchCatException(String message) { super(message); }
}
|
Classe CatRegistry |
---|
import java.util.HashMap;
import java.util.Map;
public class CatRegistry {
private Map<String, Cat> cats = new HashMap<>();
public void put(Cat cat) throws DuplicateCatException {
String name = cat.getName();
if (cats.containsKey(name)) {
throw new DuplicateCatException("A cat with the name " + name + " already exists.");
}
cats.put(name, cat);
}
public Cat get(String name) throws NoSuchCatException {
Cat cat = cats.get(name);
if (cat == null) {
throw new NoSuchCatException("No cat found with the name " + name + ".");
}
return cat;
}
}
|
A classe Cat (não pedida no exercício) poderia ser algo como se apresenta de seguida.
Classe Cat |
---|
class Cat {
private String name;
private int age;
public Cat(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
}
|