Interpretação faz parte do exercício.
Ele não fala que “computadores” possuem portas paralelas e usb. O exercício fala de um único computador em específico que tem portas paralela e USB. (Serial é antigão, ninguém mais vende ;)[/quote]
ta…a intenção era ajudar mesmo…achei que vc fosse entregar isso…
bom…de qualquer jeito eu vo tenta da meus 5 cents ao criador do tópico…
bom…somando ao que o tnaires falou, vc poderia cria uma classe computador…eu dexei um exemplo que eu acredito ser correto ai embaixo
[quote=marcio_gs]
Certo, agora eu tenho todas as portas dentro de uma coleção. Digamos que eu tenha adicionado 2 USB e 1 Paralela. Como eu faço para não deixar o usuário utilizar as 3 portas como USB/Paralelo?[/quote]
bom, se a sua duvida seria como verificar se o item adicionado no seu array, no seu list, ou seja la o q for é uma porta do tipo especifico, vc pode usar o operador instanceOf, para verificar se o objeto em questão é do tipo portaUSB ou do tipo portaParalela… veja o loop que eu fiz…
para não adicionar um dispositivo de tipo errado, vc pode coloca um metodo getTypePort no dispositivo, retornando porta paralela ou usb, ou o q for, uma string escrito o tipo por exemplo, e verificar isso no metodo conecta, se for do tipo diferente do da porta em que se tenta conectar, lance uma illegalArgumentException
veja o código abaixo:
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package testes;
//código do cara ali atras
import java.util.ArrayList;
/**
*
-
@author flavio
*/
class Computador {
private final ArrayList portas;
public Computador (ArrayList portas){
this.portas = portas;
}
public Porta getPort(int index){
return portas.get(index);
}
}
public class User{
public static void main(String args[]){
ArrayList<Porta> portas = new ArrayList<Porta>();
portas.add(new PortaUSB());
portas.add(new PortaParalela());
portas.add(new PortaUSB());
portas.add(new PortaParalela());
portas.add(new PortaUSB());
portas.add(new PortaParalela());
portas.add(new PortaUSB());
Computador c = new Computador(portas);
for (int i=0;i<portas.size();i++){
if (c.getPort(i) instanceof PortaUSB ){
System.out.println("usb");
}else if (c.getPort(i) instanceof PortaParalela){
System.out.println("paralela");
}else
System.out.println("porta desconhecida");
}
//agora vamos conectar um dispositivo na porta correta e um não pra testar
try{
portas.get(0).conectar(new Dispositivo("USB"));
System.out.println("chego aqui sem erros");
portas.get(0).conectar(new Dispositivo("paralela"));
}catch(IllegalArgumentException ile){
System.out.println("caiu aqui");
ile.printStackTrace();
}
}
}
//código do tnaires, com algumas poucas modificações que eu aconselharia
interface Porta {
// Um nome mais sugestivo do que addDisp
boolean conectar(Dispositivo d);
// Um nome mais sugestivo do que removeDisp
boolean desconectar();
}
class PortaUSB implements Porta {
public boolean conectar(Dispositivo d) {
// Código para conectar na porta USB
if (d.getType().equals(“USB”)){
//código que conecta
return true;
}else{
throw new IllegalArgumentException(“dispositivo não permitido nessa porta”);
}
}
public boolean desconectar() {
//esse jeito da esxceção poderia ser usado no conectar, bem como odo conectar aqui
//a seu criterio
try{
//tenta desconectar
return true;
}catch(Exception e){//crie uma exception e coloque aqui
return false;
}
}
}
class PortaParalela implements Porta {
public boolean conectar(Dispositivo d) {
// idem a usb
return true;
}
public boolean desconectar() {
// idem a usb
return true;
}
}
class Dispositivo{
private String type;
public Dispositivo(String type){
this.type = type;
}
public String getType(){
return type;
}
}
[/code]
>