1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Ajuda] Interacção entre Classes - Java

Discussão em 'Programação' iniciada por metRo_, 2 de Agosto de 2009. (Respostas: 9; Visualizações: 1575)

  1. metRo_

    metRo_ Power Member

    Olá,
    Estou a usar o NetBeans IDE.

    Criei o seguinte:

    1 - "Java Class Lybrary" com o nome Figure e tem o seguinte código:

    Código:
    public class Figure {
        int area = 0;
        public int getArea(){
            return(area);
        }
    }
    2 - "Java Class Lybrary" com o nome Square e tem o seguinte código:

    Código:
    public class Square {
        int side = 0;
        public int getSide(){
            return(side);
        }
        public void setSide(int value){
            side = value;
            area = side * side;
        }
    }
    3 - "Java Application" com o nome SquareInfo e tem o seguinte código:
    Código:
    package squareinfo;
    
    /**
     *
     * @author Zé
     */
    public class SquareInfo {
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            Square sq = new Square();
            sq.setSide(250);
            System.out.println("Side of square: "+ sq.getSide());
            System.out.println("Area of square: "+ sq.getArea());
            Square sq2 = new Square();
            sq2.setSide(17);
            System.out.println("Side of square: "+ sq.getSide());
            System.out.println("Area of square: "+ sq.getArea());
        }
    
    }
    Logo no ponto 2 dá erro porque a variável área esta na outra classe e eu suponho que ele não a está a encontrar. No projecto Square fui a libraries e fiz adicionar projecto e adicionei o projecto Figure às libraries do Square mas continua com o mesmo erro.
    No ponto 3 o erro é igual em relação aos métodos das duas classes.

    EDIT: Isto é de um exemplo.
     
    Última edição: 2 de Agosto de 2009
  2. addicted

    addicted Power Member

    Dá erro e tá correcto. Não podes aceder à variável area a partir da classe Square, desta forma. Pelo código parece-me um exemplo de herança, mas tu não estás a usar herança. Isto é, a classe Square deveria ser uma subclasse da classe Figure, e dessa forma, e com os construtores definidos, poderias fazer isso, mas só nesse caso. Dá uma vista de olhos nisto: Java Subclasses
     
  3. tri2bal

    tri2bal Power Member

    Eu uso o Eclipse para programar em Java e de lado tens os projectos, e dentro do projectos tens os pacotes.
    Para aceder à classes de diferentes pacotes, tenho de fazer import.pacote2 ( exemplo ).

    EDIT: tendo em conta a resposta do addicted, programação correcta era usares herança. ( x2 )
     
    Última edição: 2 de Agosto de 2009
  4. PJTuga

    PJTuga Power Member

    Código:
    public class Figure {
        private int area = 0;
        public int getArea(){
            return(area);
        }
       public void setArea(int area)
       {
           this.area=area;
       }
    }
    Código:
    import Figure.*;
    
    public class Square extends Figure{
        int side = 0;
        public int getSide(){
            return(side);
        }
        public void setSide(int value){
            side = value;
            setArea(side*side);
        }
    }
    Código:
    public static void main(String[] args) {
            Square sq = new Square();
            sq.setSide(250);
            System.out.println("Side of square: "+ sq.getSide());
            System.out.println("Area of square: "+ sq.getArea());
            Square sq2 = new Square();
            sq2.setSide(17);
            System.out.println("Side of square: "+ [B]sq2[/B].getSide());
            System.out.println("Area of square: "+ [B]sq2[/B].getArea());
        }
     
  5. metRo_

    metRo_ Power Member

    Está aqui um printscreen para ajudar.

    [​IMG]

    Outra coisa neste tutorial para ligar uma classe a um projecto http://www.netbeans.org/kb/docs/java/javase-intro.html a certa altura ele diz para colocar "type org.me.mylib in the Package field" e eu na altura quando fiz o tutorial até vim aqui ao forum perguntar e até percebia alguma coisa simplesmente agora ao fazer o meu como não sabia o que colocar não coloquei nada.
     
    Última edição: 2 de Agosto de 2009
  6. metRo_

    metRo_ Power Member

    Código:
    import Figure.*;
    
    public class Square extends Figure{
        int side = 0;
        public int getSide(){
            return(side);
        }
        public void setSide(int value){
            side = value;
            setArea(side*side);
        }
    }
    Erro sobre a primeira linha -> "Package Figure does not exist"
     
  7. PJTuga

    PJTuga Power Member

    Fiz o exemplo no netbeans.
    Isso depende do nome que tu deste quando criaste o projecto Figure.
    No netbeans tens Projecto->package->nomedaclasse;

    tens de fazer import package.nomedaclasse ou * para fazer import de todas as classes
     
  8. metRo_

    metRo_ Power Member

    Não funciona nem "import import package.Figure;" nem "import import package.*;"
     
  9. Rexobias

    Rexobias Power Member

    Antes demais não sei porque usaste as "Java Class Library" ... confesso que nunca as utilizei, e para este exercicio não precisas delas. Depois, deves utilizar uma herança, como já foi dito anteriormente. Dá para afzer o pretendido sem herança, mas com ela além do programa ter mais lógica, ficas com tudo mais facilitado.

    Resolvi o teu problema e aqui fica a solução ... só antes fica aqui uma breve explicação de como organizei isto. Crias uma "Java Application", e metes como class main a tua 3ª ("SquareInfo"). Depois adicionas duas "Java Class" com os nomes das outras duas.

    Aplica este código de seguida:

    Figure.java
    Código:
    public class Figure {
        int area = 0;
     
        public int getArea(){
            return(area);
        }
     
        public void setArea(int area){
            this.area = area;
        }
    }
    
    Square.java
    Código:
    public class Square extends Figure{
        int lado = 0;
     
        public int getLado(){
            return(lado);
        }
     
        public void setLado(int lado){
            this.lado = lado;
            this.area = lado * lado;
        }
    }
     
    
    SquareInfo.java
    Código:
    public class SquareInfo {
     
        public static void main(String[] args) {
            Square sq = new Square();
            Square sq2 = new Square();
     
            sq.setLado(250);
            sq2.setLado(17);
     
            System.out.println("-----Informações do 1º Quadrado-----");
            System.out.println("Lado: "+ sq.getLado());
            System.out.println("Área: "+ sq.getArea());
            System.out.println();
            System.out.println("-----Informações do 2º Quadrado-----");
            System.out.println("Lado: "+ sq2.getLado());
            System.out.println("Área: "+ sq2.getArea());
        }
    }
    
    A herança é utilizada quando utilizo o "extends". Isto faz com que a classe "Square" herde todos os campos e métodos da classe "Figure". Assim quando crias um Square, este objecto terá os campos area e lado, e os métodos set's e get's destas duas variáveis.

    Podes também organizar as classes por pacotes (por exemplo colocar as classes "Figure" e "Square" num pacote separado). Se o fizeres terás que inserir um "import.'nome do pacote'.*;" na classe main ("SquareInfo").
     
    Última edição: 2 de Agosto de 2009
  10. metRo_

    metRo_ Power Member

    Muito obrigado, deu para perceber bem o funcionamento :)
     

Partilhar esta Página