Объекты и передача объектов между методами - PullRequest
0 голосов
/ 11 декабря 2018

Я изучаю Java довольно недавно, и я в основном на начальном уровне.Я работаю над небольшим проектом, совершенно бессмысленным, но только с целью изучения ООП.

Вот код, который я сделал ниже, и мои заметки.

public void main() {
    Notebook noteBook = new Notebook();  //I add notebook just to track my notes on the subject
    Konto kontobank = kontoErsteller();
    // So here it worked but I did not understand how and why
    // It might be the scope problem here. I did not even understand why
    // Konto Kontobank = bankKonto1 worked? (bankKonto1 is the returned
    // value)
    int x = start(kontobank); //so that funtion returns something.
}

/*
 * Here I create default 2 kontos. So that I can transfer money in between. Also in real life
 * in a bank when we habve thebankcard that means we already have an account.
 * I return an integer value back to track if things went ok
 */
public Konto kontoErsteller() {
    int kontoErstellerReturn = 0;
    Konto bankKonto1 = new Konto();
    Konto bankKonto2 = new Konto();
    return bankKonto1;
}

/*
* I will start with entrance but I should return to the owner of 
* account1 so I should be manupulating bankKonto1
 */
public int start(Konto bankKonto) {
    Konto bankKonto1 = bankKonto;
    Entrance neuEnterance = new Entrance();

    //KontoMenu kontoMenu=new KontoMenu(bankKonto.getUniqID());
    String[] statuse = neuEnterance.start();
    //System.out.println(statuse);

    if (statuse[0] == "True") {
        System.out.println("Entered");
        //Konto bankKonto=new Konto();
        System.out.println("Hello " + bankKonto1.getKontoOwner());
        System.out.println("Your current status is " + bankKonto1.getInitialGeld() + " €");
        double newValue = menuItem(Double.parseDouble(bankKonto1.getInitialGeld()));
        bankKonto1.setNewAmount(newValue);
        System.out.println("Your new status is " + bankKonto1.getInitialGeld() + " €");

        //KontoMenu kontoMenu=new KontoMenu(bankKonto.getUniqID());
        //kontoMenu.menuItem(bankKonto.getUniqID());
    }
    return 0;
}

Так что я фактически не хотел отправлять объект Konto, я хотел создать их в kontoErsteller, а затем использовать их всякий раз, когда я хочу, с их именами bankKonto1 и bankKonto2

Konto kontobank = kontoErsteller();
int x = start(kontobank);

Так что мойВопрос в том, чтобы здесь это работало, но я не понял, как и почему.Я даже не понял, почему Konto kontobank = bankKonto1 сработало?

1 Ответ

0 голосов
/ 11 декабря 2018

"Поэтому я на самом деле не хотел отправлять объект Konto, я хотел создать их в kontoErsteller, а затем использовать их всякий раз, когда я хочу, с их именами bankKonto1 и bankKonto2"

Вы не хотите, чтобы они были локальнымипеременные в методе kontoErsteller, но вместо членов класса.Чтобы это имело смысл, у вас, вероятно, должно быть два класса, класс Konto и один класс, который обрабатывает Konto объекты.Итак, давайте назовем этот класс KontoHandler

public class KontoHandler {
    Konto bankKonto1;
    Konto bankKonto2;

}

Тогда создание объектов можно сделать в конструкторе этого класса вместо kontoErsteller

 public class KontoHandler {
    Konto bankKonto1;
    Konto bankKonto2;

    public KontoHandler() {
         bankKonto1 = new Konto();
         bankKonto2 = new Konto();
    }
}

Если вы переместите метод startк этому классу вы можете получить доступ к bankKonto1 и bankKonto2 изнутри, без необходимости отправлять konto в качестве параметра

public int start() {
    Entrance neuEnterance = new Entrance();
    ...
}

Это всего лишь пример, но главное - провести различие между вашим объектом данных, Konto, иобработка этого объекта

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...