Задание объектов в качестве партнеров в одном классе в java - PullRequest
0 голосов
/ 22 февраля 2020

В качестве задачи в моем курсе для начинающих по объектно-ориентированному программированию я должен установить два объекта в моем классе Partner как «женатые».

Это моя попытка начать:

public class Partner {

  String name;
  String partner;



  public Partner(String name, String partner) {
    super();
    this.name = name;
    this.partner = partner;
  }

  public String getPartner() {
    return partner;
  }

  public void setPartner(Partner()) { //think i need the object here?
    this.partner = partner;         //however i don't know how
  }

  public String getName() {
    return name;
  }


  public static void main(String[] args) {
    Partner p1 = new Partner("Name1", idk);
    Partner p2 = new Partner("Name2", idk);

  }

}

Моя проблема в том, что я не знаю, как использовать объект в методе setPartner, если это даже правильный способ сделай это. Также должна быть возможность развестись с другим объектом, установив для одного из партнеров объекта значение null.

Также необходимо сделать так, чтобы партнеры автоматически регистрировались как состоящие в браке друг с другом, если один из их женат на другом. Например, если p1 установлен в качестве партнера p2, p2 также должен быть автоматически установлен как партнер для p1.

Ответы [ 3 ]

0 голосов
/ 22 февраля 2020
  1. Если вы намерены, чтобы объект Partner имел указатель на другой объект этого класса, вы должны изменить String partner на Partner partner.

  2. У вас не всегда будет инициализированный объект Partner для использования в конструкторе Partner, поэтому у вас есть 3 варианта:

    • добавить другой конструктор, который не требует аргумента типа Partner
    • изменить существующий конструктор
    • передать null в качестве аргумента. В любом случае вам придется инициализировать поле partner где-то еще.
  3. Вот где приходят сеттеры. Правильный синтаксис для вашей функции setPartner будет :

    public void setPartner(Partner partner) {
      this.partner = partner;
    }
    

    getPartner() Функция должна быть соответственно изменена, чтобы вернуть правильный тип.

  4. Ваш код в main() может быть примерно таким:

    Partner p1 = new Partner("Name1", null);
    Partner p2 = new Partner("Name2", p1);
    p1.setPartner(p2);
    
  5. Также необходимо иметь возможность развестись с другим объектом, установив для одного из партнеров объекта значение null.

    Это достигается с помощью p.setPartner(null), где p является объектом типа Partner. Вы также можете установить для обоих объектов partner s значение null вместо одного, чтобы упростить проверку.

0 голосов
/ 22 февраля 2020

Создайте два конструктора: один с просто name, а другой с name и partner (типа Partner), чтобы у вас была возможность инициализировать объект только именем, а затем установить его партнера. или инициализируйте имя и партнера (если партнер известен).

public class Partner {

    private String name;
    private Partner partner;

    public Partner(String name) {
        this.name = name;
    }

    public Partner(String name, Partner partner) {
        this.name = name;
        setPartner(partner);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setPartner(Partner partner) {
        partner.partner = this;
        this.partner = partner;
    }

    @Override
    public String toString() {
        String value;
        if (partner != null) {
            value = name + ", partner=" + partner.name;
        } else {
            value = name;
        }
        return value;
    }

    public static void main(String[] args) {
        // Example 1
        Partner p1 = new Partner("Name1");
        Partner p2 = new Partner("Name2");
        p1.setPartner(p2);
        System.out.println(p1);
        System.out.println(p2);

        // Example 2
        Partner p3 = new Partner("Name3");
        Partner p4 = new Partner("Name4", p3);
        System.out.println(p3);
        System.out.println(p4);
    }
}

Вывод:

Name1, partner=Name2
Name2, partner=Name1
Name3, partner=Name4
Name4, partner=Name3
0 голосов
/ 22 февраля 2020

Вы спрашиваете, как написать методы установки? Как то так

    public void setPartner(String partner) {
        this.partner= partner;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...