Sie sind auf Seite 1von 6

Grafos

boolean containsEdge(Vertex<V> v, Edge<E,V> e)


MyVertex vertex = checkVertex(v);
MyEdge edge = checkEdge(e);
if(edge.vertices()[0].equals(v) || edge.vertices()[1].equals(v))
return true
return false

boolean isIsolated(Vertex<V> v)
MyVertex vertex = checkVertex(v);
if(hasEdges(v))
return false
return true

List<Vertex<V>> adjacentVerticex(Vertex<V> v)
List<Vertex<V>> adjacentVerticex(Vertex<V> v)

List<Vertex<V>> list = new ArrayList<>();


for(Edge<E,V> edge: listEdges.values())
if(edge.vertices()[0].equals(v))
list.add(edge.vertices()[0].element)
else if(edge.vertices()[1].equals(v))
list.add(edge.vertices()[1].element)
return list;

Vertex<V> getMaxDegreeVertex()

int sumOfActiveEdges()
Int count = 0;
for(Edge<E,V> edge: listEdges.values())
count += e.vertices().length
return count;
removeVertex(Vertex<V> v)
checkVertex(v);

V element = v.element();
Iterable<Edge<E, V>> adjacentEdges = adjacentEdges(v);
for (Edge<E, V> edge : adjacentEdges) {
edges.remove(edge.element());
}

vertices.remove(v.element());

return element;

Padroes
1. Utiliza-se o padrão Singleton quando se pretendemos ter uma classe
Final?
Sim, pois quando queremos ter uma classe final quer dizer que queremos
ter apenas uma instância da classe, para tal usa-se o padrão Singleton.

2. Se a classe X é um Singleton, que implementa o método void y().


Como se pode invocar o método y?
Para tal temos que criar uma instância da classe X que é estática, e por sua
vez chamar o método.
AppSingletonConnector instance1= AppSingletonConnector.getInstance();
instance1.start();

3. Pretende-se que seja possível disponibilizar para o TAD Tree uma


forma de percorrer todos os seus elementos. Qual o padrão mais
adequado, para implementar essa funcionalidade?
O padrão indicado seria o iterator.
4. Pretende-se que a aplicação para gestão dos rankings passe a
apresentar o ranking dos 10 melhores alunos. No entanto pretende-se
que este o critério de seriação possa variar de ano para ano, e sendo
assim pretende-se contruir uma classe Ranking suficientemente flexível
para suportar diferentes critérios de seriação. Qual o padrão mais
adequado, para implementar essa funcionalidade?
Strategy.

5. No Padrão Adapter, o participante adaptee corresponde sempre a


uma interface?
Não, o adaptee pode também ser uma classe que necessita de ser
adaptada.

Tal como referido nos slides, para ser possível usar o foreach em java, a
coleção a percorrer tem que implementar a interface Iterable.
7. Considerando o código abaixo . Para cada um dos participantes do
padrão Command,
indique qual a classe/interface que lhe corresponde, preenchendo a
tabela abaixo.
Client TesteCommand
Command CommandLight
ConcreteCommand CommandOn CommandOff
Invoker Light
Reciever Button

8. Considere o padrão Memento e as classes definidas na Figura


seguinte.
A) Se a classe Linha for considerada como o Originator. Implemente o
construtor da classe Memento.
B) Considerando que tem o padrão Memento implementado para a
classe Linha, onde os participantes são as classes Memento, Linha e
CareTaker. Implemente no main, um conjunto de instruções que mostre
como pode salvar uma Linha, altera-la e recupera-la posteriormente.

A)
private Ponto mementop1,mementop2;
private Line mementoLine;
Public Memento(int p1, int p2, Line line){
mementop1 = p1;
mementop2 = p2;
mementoLine = new Line(line);
}
B)

REFACTORING
1.
A)
Replace conditional with polymorphism.
Como temos várias ações dependendo do tipo de um objeto, assim
conseguimos criar subclasses consoante a condição e agrupar o código.
B)
Extract Method
Tendo em conta que tínhamos dois fragmentos de código iguais, a solução
passa por o extrair para um novo método e substituir o código.
C)
Nenhuma das anteriores
D)
B. O refactoring influencia (e modifica) o comportamento externo de uma
classe.
Refactoring é a alteração de um programa de software, através da
melhoria da sua estrutura interna (desenho) sem alterar o seu
comportamento.
E)
C. Implementação de uma suite de testes.
O processo de refactoring recorre ao uso de testes unitários.
F)
C. Quando queremos separar a criação de um objeto da sua utilização.
O replace type code with strategy especifica que “You have a type code
that affects the behaviour of a class, but you
cannot use subclassing. Replace the type code with a state object.”
2.
A)
Duplicated Code 16 17 17 Empresa Código repetido
26 27 28 na mesma
classe
Data Clump 15 25 Empresa Métodos que
pertencem
noutra classe.

Das könnte Ihnen auch gefallen