Eu tenho uma classe Circuito, que possui duas malhas. Eu tenho o método getCircuito que chama getMalha que chama getRamo. E é nesse getRamo que eu pergunto qual dispositivo a pessoa quer inserir de um ponto a ou b. Nesse esquema:
0----1----2
|---- |--- |
|---- |--- |
| ----|--- |
3----4----5
Note que ai em cima eu tenho duas malhas, cada uma formada por 4 ramos. Eu limitei no programa que cada malha teria só 1 dispositivo, por isso declarei ramo como ramo[1][4]. Na mein eu só chamo setCircuito que inicializa o circuito preenchendo devidamente a malha, que por sua vez inicializa o vetor ramo. E é nesse ramo que há problema, pois ramo é Dipositivo que insere as subclasses de Dispositivo. Pra fazer a função leiDasMalhas eu precisa saber qual dispositivo está em ramo[j], porque é a partir dessa informação que eu preencherei eqLinear e por sua vez sistemaLinear.
Muitos métodos não estão implementados, pois estou fazendo por partes.
class Circuito {
private char[][] circuito;
private Malha[] malha;
private int[][] sistemaLinear;
private int qntMalha;
public Circuito(){
qntMalha = 2; // impede que o usuário aumente o número de malhas
malha = new Malha[2]; // aloca espaço para as malhas;
malha[0] = new Malha();
malha[1] = new Malha();
sistemaLinear = new int[2][3];
circuito = new char[5][11];
int cont = 0; // variável de ajuda
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 11; j++) {
if (( i==0) || (i==4)) {
if ((j == 0)||(j == 5)||(j == 10)){
circuito[i][j] = (char) (cont+48); // tabela ascii
cont++;
}
else
circuito[i][j] = '-';
}
else
if ((j == 0)||(j == 5)||(j == 10))
circuito[i][j] = '|';
else
circuito[i][j] = ' ';
}
}
}
public void setCircuito(){
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 11; j++)
System.out.printf ("%c", circuito[i][j]);
System.out.printf ("\n");
}
}
public void getCircuito(){
System.out.print ("Preenchendo Malhas: \n\n");
System.out.print ("Fim - 0\n");
System.out.print ("Diodo - 1\n");
System.out.print ("Indutor - 2\n");
System.out.print ("Resistor - 3\n");
System.out.print ("Capacitor - 4\n");
System.out.print ("Fonte de Tensao - 5\n");
System.out.print ("Fonte de Corrente - 6\n");
System.out.print ("Malha 1\n");
malha[0].getMalha(1,2,5,4);
System.out.print ("Malha 2\n");
malha[1].getMalha(2,3,6,5);
}
public void determinantes(int sistemaLinear[][], int corrente1[], int corrente2[]){
}
public void resolverSistemaLinear(){
int[] corrente1, corrente2;
corrente1 = new int[1];
corrente2 = new int[1];
malha[0].leiDasMalhas();
malha[1].leiDasMalhas();
determinantes(sistemaLinear, corrente1, corrente2);
}
}
class Malha {
Scanner input = new Scanner(System.in);
private int corrente;
private Dispositivo[][] ramo;
private int[] eqLinear;
public Malha(){
corrente = 0;
eqLinear = new int[3];
ramo = new Dispositivo[1][4];
}
public void getMalha(int a, int b, int c, int d){
getRamo(a,b,0);
getRamo(b,c,1);
getRamo(c,d,2);
getRamo(d,a,3);
}
void realoqueDispositivo(Dispositivo p, int tipo){
int util;
switch (tipo) {
case 1:
System.out.println("Declarei um DIODO\n");
p = new Diodo();
break;
case 2:
System.out.println("Digite o valor da resistencia:");
util = input.nextInt();
p = new Resistor(util);
break;
case 3:
p = new Indutor();
break;
case 4:
p = new Capacitor();
break;
case 5:
p = new FonteDeCorrente();
break;
case 6:
p = new FonteDeTensao();
break;
}
}
public void getRamo(int a, int b, int cont){
int aux;
int tam;
System.out.printf("Dispositivos do ponto %d ao ponto %d\n", a, B);
System.out.printf("\tDigite o numero referente ao dispositivo desejado: \n");
aux = input.nextInt();
realoqueDispositivo(ramo[0][cont], aux);
}
public void leiDasMalhas(){
System.out.println("VAMOS TESTAR");
for(int j=0; j<4; j++){
if(ramo[0][j] instanceof Resistor)
System.out.println("resistor");
if (ramo[0][j] instanceof Diodo)
System.out.println("diodo");
}
}
}
abstract class Dispositivo {
protected int corrente;
protected int tensao;
protected int malha;
public Dispositivo() {
corrente = 0;
tensao = 0;
malha = 0;
}
public void setDispositivo(){
}
public void getTensao(){
}
public void getCorrente(){
}
public void setMalha(){
}
public void getMalha(){
}
}
public class Main {
public static void main(String[] args) {
Circuito circuito = new Circuito();
circuito.setCircuito();
circuito.getCircuito();
}
}
Pergunta
Zkizo
Eu tenho uma classe Circuito, que possui duas malhas. Eu tenho o método getCircuito que chama getMalha que chama getRamo. E é nesse getRamo que eu pergunto qual dispositivo a pessoa quer inserir de um ponto a ou b. Nesse esquema:
0----1----2
|---- |--- |
|---- |--- |
| ----|--- |
3----4----5
Note que ai em cima eu tenho duas malhas, cada uma formada por 4 ramos. Eu limitei no programa que cada malha teria só 1 dispositivo, por isso declarei ramo como ramo[1][4]. Na mein eu só chamo setCircuito que inicializa o circuito preenchendo devidamente a malha, que por sua vez inicializa o vetor ramo. E é nesse ramo que há problema, pois ramo é Dipositivo que insere as subclasses de Dispositivo. Pra fazer a função leiDasMalhas eu precisa saber qual dispositivo está em ramo[j], porque é a partir dessa informação que eu preencherei eqLinear e por sua vez sistemaLinear.
Muitos métodos não estão implementados, pois estou fazendo por partes.
Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.