Как мне изменить значение класса с другого - PullRequest
0 голосов
/ 25 апреля 2018

Я учусь программировать на Java, и я хочу знать, является ли хорошей идеей ОО-программирования изменение значения составного класса из другого составного класса. Как это:

public class X{
    public void x(Y y){
        y.setY(0);
    }
}

A simple example of the structure 1

Или я должен обратиться в основной класс? Как это:

public class X{
    public void x(Main m){
        m.modifyY(0);
    }
}

public class Main{
    private Y y;
    private X x;

    public void modifyY(Main m){
        y.modifyY(0);
    }
}

A simple example of the structure 2

PS: я тоже изучаю UML, поэтому извините, если я делаю это неправильно.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Как правило, вы хотите, чтобы ваши классы были максимально расшифрованы, поэтому вы хотите изменить значение класса, вы просите сам класс изменить его. так что если единственной целью вашего класса является изменение значения другого, то в этом нет необходимости, вам нужно просто вызвать y.setY(0); из метода, который использует y

0 голосов
/ 25 апреля 2018

Вы можете изменить, как это,

public class X{
    public X(Y y){
        y.setY(0);
    }
}

public class Y{
   public int val=0;
   public void setY(int p_val){
       val=p_val;
   }
}

public class Main{
    public void modifyY(){
         new X(new y());
    }
}
...