[RESOLVIDO] Duvida Main + classe Computador [projeto de faculdade] [RESOLVIDO]

E ae pessoal,

vou colocar o código q eu fiz até agora

classe Main

package main;

import javax.swing.JOptionPane;
import java.util.*;

public class Main {

    public static void main(String[] args) {

        List<Computador> listaComputador = new ArrayList<Computador>(); // muito útil !

        int totalComp = Integer.parseInt(JOptionPane.showInputDialog("Bem vindo ao Software!\nGostaria de cadastrar quantos computadores? ", "número"));

        for (int i = 0; i < totalComp; i++){ // cadastra o total de computadores e armazena na listaComputador
            Computador computador = new Computador();
            computador.identificador = i;
            computador.disponibilidade = true;
            computador.estado = 0;
            listaComputador.add(computador);
        }

        for(int i = 0; i < listaComputador.size(); i++){ // percorre a listaComputador e mostra se está tudo ok
            Computador computador = listaComputador.get(i);
            JOptionPane.showMessageDialog(null, "Computador " +computador.identificador+ "\nDisponibilidade " +computador.disponibilidade);
        }

        for(int i = 0; i < listaComputador.size(); i++){ // percorre a listaComputador em busca de computadores livres 
            Computador computador = listaComputador.get(i);
            if(computador.disponibilidade == true){
                JOptionPane.showMessageDialog(null, "Computador " +computador.identificador+ "\nLivre");               
            }else{
                JOptionPane.showMessageDialog(null, "Todos os computadores estão ocupados");
            }
        }

    }
}

Classe Computador

package main;

public class Computador {

    int identificador;
    boolean disponibilidade;
    int estado;
    String observacao;  

    boolean alterarDisponibilidade(){
        if(this.disponibilidade == true){
            this.disponibilidade = false;
        } else {
            this.disponibilidade = true;
        }
        return this.disponibilidade;
    }
   
    void alterarEstado(){

    }

    /* void incluirMaquina(){

    }
                                    Precisa desses métodos?
    void excluirMaquina(){

    } */
}

Vamos as dúvidas…

1 - É assim q se programa OO?
2 - Na minha cabeça a variável “Estado” funciona da seguinte maneira, 0 - computador funcionando e 1 - computador não funcionando, ai eu pensei em colocar um Random na classe Main com sei lá 5% de chance do computador não funcionar assim q fosse ligado, o q vcs acham? alguma outra idéia pra simular uma possível falha?
3 - Na classe computador eu preciso dos métodos incluirMaquina() e excluirMaquina(), pelo List eu já faço isso, certo?

É isso…

Vlw pessoal
Abs

1)é função da classe Main ter aquela lista de computadores mesmo?
ou seria melhor ter um classe que tem uma lista de computadores, com os metodos que façam algo com essa lista?
2) estado poderia ser um boolean? true e false e poderia ter um metodo na classe computador isFuncionando() que retornado caso o computador esteja quebrado, assim vc esconde a implementação, o resto do sistema não precisa saber como que tu vai fazer pra fazer esse calculo, só quer saber se o pc tá funcionando
3) a 1) denovo
Poderia ser sei lá um classe pedido ou cadastro

abs

[quote=RafaFloripa]1)é função da classe Main ter aquela lista de computadores mesmo?
ou seria melhor ter um classe que tem uma lista de computadores, com os metodos que façam algo com essa lista?
2) estado poderia ser um boolean? true e false e poderia ter um metodo na classe computador isFuncionando() que retornado caso o computador esteja quebrado, assim vc esconde a implementação, o resto do sistema não precisa saber como que tu vai fazer pra fazer esse calculo, só quer saber se o pc tá funcionando
3) a 1) denovo
Poderia ser sei lá um classe pedido ou cadastro

abs[/quote]

E ae Rafa, vlw pelas dicas…

A 1) eu n entendi muito bem tem como vc elaborar?

quanto a parte 2) já estou corrigindo aqui… daqui a pouco eu posto como ficou

abs

Tambem sou iniciante, mas talvez possa te ajudar:
Cada bloco de instrução for que você fez na classe main, poderiam ser metodos
da classe computador, assim ficariam encapsulados. Este é um dos conceitos da POO.
Por exemplo: o primeiro bloco for da classe main, poderia ser um metodo chamado cadastraTotal()
na classe computador, assim como os outros dois blocos for, poderiam ser verificaComputador() e buscaComputadorLivre().

Depois na classe principal, você apenas instancia um Objeto
do tipo Computador e chama seus métodos:

Computador pc1=new Computador(); pc1.cadastraTotal(); pc1.verificaComputador(); pc1.buscaComputadorLivre();

os métodos ficam encapsulados na Classe computador e não na classe principal

Quanto ao JOptionPane com a opção, poderia ser feito na classe main, e mandando a variavel totalComp por parâmetro,
ou você poderia criar o JOptionPane dentro do metodo também.
a proposito, é convenção criar variaveis com letras minúsculas. (totalComp)
Utiliza-se a primeira letra minúscula, e segunda maiúscula em nome de método
isso vai facilitar a manutenção e correção do seu código depois
espero ter ajudado

[quote=Bruno Ferreira]Tambem sou iniciante, mas talvez possa te ajudar:
Cada bloco de instrução for que você fez na classe main, poderiam ser metodos
da classe computador, assim ficariam encapsulados. Este é um dos conceitos da POO.
Por exemplo: o primeiro bloco for da classe main, poderia ser um metodo chamado cadastraTotal()
na classe computador, assim como os outros dois blocos for, poderiam ser verificaComputador() e buscaComputadorLivre().

Depois na classe principal, você apenas instancia um Objeto
do tipo Computador e chama seus métodos:

Computador pc1=new Computador(); pc1.cadastraTotal(); pc1.verificaComputador(); pc1.buscaComputadorLivre();

os métodos ficam encapsulados na Classe computador e não na classe principal

Quanto ao JOptionPane com a opção, poderia ser feito na classe main, e mandando a variavel totalComp por parâmetro,
ou você poderia criar o JOptionPane dentro do metodo também.
a proposito, é convenção criar variaveis com letras minúsculas. (totalComp)
Utiliza-se a primeira letra minúscula, e segunda maiúscula em nome de método
isso vai facilitar a manutenção e correção do seu código depois
espero ter ajudado[/quote]

Boaaa :smiley:

Vlw Bruno agora entendi o esquema e já estou corrigindo… vamos ver se daqui a pouco eu termino e posto aqui…

Só q eu estou com uma dificuldade de fazer um contador para o identificador e putz deve ser uma coisa muito simples, mas n consegui descobrir ainda :? haha

Abs