Правильно-ли реализована агрегация?

220
03 марта 2018, 20:01
public class Sim {
    private String operator;
    public  Sim(String opera){
        setOperator(opera);
    }
    public String getOperator() {
        return operator;
    }
    public void setOperator(String opera) {
        operator = opera;
    }
    public void Print(){
        System.out.println("Название оператора:"+getOperator());
    }
}
public class Battery {
    private int power;
    public  Battery(int pow) {
        setPower(pow);
    }
    public int getPower() {
        return power;
    }
    public void setPower(int pow) {
        power = pow;
    }
    public void Print(){
        System.out.println("Мощность батареи:"+getPower());
    }
}
public class Smartphone {
    private Sim smartphoneSim;
    private Battery smartphoneBattery;
    private String model;
    public void Smartphone(Sim s1, Battery b1) {
        setSmartphone(b1);
        setSmartphone(s1);
    }
    public void setSmartphone(Sim s1) {
        smartphoneSim = s1;
    }
    public void setSmartphone(Battery b1) {
        smartphoneBattery = b1;
    }
    public Sim getSmartphone() {
        return smartphoneSim;
    }
    public Battery getSmartphoneBattery() {
        return smartphoneBattery;
    }
    public static void main(String[] args) {
        Battery b1 = new Battery(1000);
        Sim s1 = new Sim("МТС");
        b1.Print();
        s1.Print();
    }
}

Правильно-ли я создал агрегацию? В методе main я передаю значения как class Sim, так class Battery и вызываю метод print. А могу ли я так передать их, но через class Smartphone и так же вывести все это?

        public class Smartphone {
        private Sim smartphoneSim;
        private Battery smartphoneBattery;
        private String model;

        public Smartphone(String model){
            this.model=model;
        }
        public String getModel() {
            return model;
        }
        public void setModel(String model) {
            this.model = model;
        }
        public Smartphone(String operator, int power ){
            smartphoneSim = new Sim(operator);
            smartphoneSim.setOperator(operator);
            smartphoneBattery = new Battery(power);
            smartphoneBattery.setPower(power);
        }
        public void printl(){
            System.out.println("Модель : " + getModel());
    //        smartphoneSim.Print();
    //        smartphoneBattery.Print();
        }
    }
    public class TestClass {
    public static void main(String[] args) {
        Battery battery = new Battery(1500);
        Smartphone smartphone = new Smartphone("Samsung");
        smartphone.printl();
        Sim sim = new Sim("Beeline");
        sim.print();
        battery.print();
    }
}

в class Smartphone не получается вызвать метод print class Sim,аналогично с методом print class Buttery.Вызвал его отдельно через class TestClass.Работает.Но как-то некрасиво.

Answer 1

Ну так реализуйте метод print у Smartphone и в нем вызовите print для и Sim Battery

public class Smartphone {
    private Sim smartphoneSim;
    private Battery smartphoneBattery;
    private String model;
    ..........
    public void print() {
      System.out.println("Модель: " + model);
      smartphoneSim.print();
      smartphoneBattery.print();
    }
}
READ ALSO
Не работает переключатель для radio

Не работает переключатель для radio

Приветствую, товарищи! Есть вот такая разметка:

212
CKEditor 4 fileUploadResponse получить созданную ссылку

CKEditor 4 fileUploadResponse получить созданную ссылку

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

198
Символ “$” в JavaScripty. JQuery. Как расшифровать код?

Символ “$” в JavaScripty. JQuery. Как расшифровать код?

Здравствуйте, помогите понять код, я не изучал нигде js и прочее

219
$(…).autoсomplete is not a function

$(…).autoсomplete is not a function

Всем привет! Не понимаю в чем проблемаПодключен JS и библиотека автокомплит

231