Problema para criar classe

Olá
Estou tendo dificuldade em faze este exercicio.

Segue o exercicio

Descrição do problema

Você deverá simular uma pequena rede de computadores e as transferências de dados entre os hosts envolvidos no processo. Eis a topologia da rede a ser simulada:

• Roteador: roteadores são dispositivos que tem a funcionalidade de encaminhar os dados de um destino para um fim,

• Host: computadores ou servidores que geram ou demandam dados. Ex: seu computador doméstico, o servidor web da

• Enlace ou link : meio físico que é utilizado na conexão de computadores. Por si só, ele é apenas um cabo físico.

Além disso, existe um elemento “virtual”, que é a Conexão física entre dois computadores, que é definida pelo enlace utilizado e pelos Dispositivos de Rede “nas pontas” (ex: seu modem adsl e seu computador de casa, juntamente com o cabo “azul” , formam uma conexão).

Seu trabalho é modelar (UML) e implementar este sistema. O principal objetivo é permitir hosts questionarem aos roteadores que eles estão conectados se esses conseguem entregar dados para os destinos especificados. Por exemplo, o host ha pode perguntar ao roteador r1 se ele pode consegue enviar dados ao host hb.

Ele pode responder que não é possível , que é possível (de forma direta) ou que é possível de forma indireta. Impossível seria o caso em que r1 não pode entregar dados a um host hx (que não existe na figura). Diretamente seria o caso que o roteador r1 consegue entregar dados ao roteador r2 diretamente (ele tem uma conexão para o r2). Entrega indireta seria o caso onde r1 entrega os dados para hb, só que primeiramente deve passar por r2.

Obviamente a sua solução deve ser adaptável a novas topologias (ou seja, novos arranjos de rede). Desta forma, não desenvolva uma solução “hard coded”, válida apenas para este cenário.

A classe de teste a ser utilizada nesta atividade deve ser a seguinte: (próxima página)

public class TestNet {

public static void main (String[] args)

{

//cria roteadores, onde 2 é o número de interfaces (ou portas) que o roteador tem, e “r1” é o seu

//nome

Roteador r1 = new Roteador(2, “r1”);

Roteador r2 = new Roteador(2, “r2”);

//cria Hosts, onde “ha” é o nome do host

Host ha = new Host (“ha”);

Host hb = new Host (“hb”);

//cria enlaces

//cria Hosts, onde “ha” é o nome do host e 1000 é a largura de banda do enlace (1000 Mbit/s)

Enlace ea1 = new Enlace(1000, “ea1”);

Enlace e12 = new Enlace(1000,“e12”);

Enlace e2b = new Enlace(1000,“e2b”);

//Cria as conexões físicas para cada roteador. A primeira linha adiciona o enlace ea1, que

//interliga roteador r1 ao host ha (vide figura) ao roteador r1. A segunda linha adiciona o outro

//enlace (e12) ao mesmo roteador – vide figura.

r1.criaLink1(ea1,r1,ha);

r1.criaLink2(e12,r1, r2);

r2.criaLink1(e12,r2,r1);

r2.criaLink2(e2b,r2,hb);

//Cria conexões para os hosts, seguindo a mesma semântica dos Links para os enlaces

ha.criaLink1(ea1, ha, r1);

hb.criaLink1(e2b, hb, r2);

/**

Método transferir da classe Roteador ( o mais importante):

Verifica se o roteador r1 consegue entregar dados até hb(ou qualquer host/roteador). Essa avaliação

pode ter três resultados:

1 – o roteador consegue entregar, utilizando seus próprios links, diretamente (por exemplo, o o

roteador r1 consegue entregar dados ao host há e ao roteador r2 diretamente)

2 – o roteador consegue entregar, porém indiretamente, utilizando outro roteador (ex: o roteador

r1 consegue entregar dados ao host hb via o roteador r2

3 – o roteador não consegue entregar (por exemplo: r1 não consegue entregar dados para o host “hx”

*/

String transf = r1.transferir(“hb”);

System.out.println(transf);

}

}

Legal, mas esta faltando codigo… onde tem duvida?
Cade o método transferir ?
Classe Roteadores…