public class Controlador {
    private List<Clasificador> clasificadores;
    private Map<Integer, PuertoSalida> puertos;   //Clave: Id puerto
    private TablaEncaminamiento tabla;
}

public class Clasificador {
    private Map<Integer, ColaPaquete> colas;    //Clave: Clase servicio
}

public class PuertoSalida {
    private int identificador, velocidadBitsSec;
    private boolean idle;
    private Clasificador clasificador;
    private Planificador planificador;
}

public class TablaEncaminamiento {
    private Map<Integer, Integer> tablaRutas; //Clave: direccion destino
}

public class ColaPaquetes {
    private int calidadServicio, capacidadTotalBytes, capacidadOcupada;
    private List<Paquete> cola;
}

public class Paquete {
    private int calidadServicio, direccionDest, tamañoEnBytes;
}

public abstract class Planificador {
    protected PuertoSalida puerto;
    protected List<ColaPaquete> colas;
}

public class Aleatorio extends Planificador {
}

public class PrioridadEstricta extends Planificador {
}

public class RoundRobin extends Planificador {
    private ColaPaquetes siguiente;
}

