2014-10-28 2 views
0

У меня есть один основной класс Test и два других (класс Book, class Order), которые представляют некоторые конкретные объекты. Из моего класса Test я создаю 5 объектов Book. Теперь я хочу создать два объекта Order, которые используют методы из класса Order. Для конкретного использования setCustomerName(), SetCustomerAddress(), toString() getTotlaPrice() и addBook(). После того, как я установил геттеры и сеттеры для setCustomerName() и SetCustomerAddress(), у меня нет ошибок для них в тестовом классе. Мой вопрос заключается в том, как я могу создать 5 переменных экземпляра книги в классе Order, которые будут заполнены данными (или параметрами) объектов Book, созданными в классе Test, если они вызываются (из класса Test с addBook()), так что я могу использовать их в других методах в одном классе. Например, в классе Test, если я вызываю addBook (b1) метод addBook(), который находится в классе Order, должен инициализировать или заполнить одну из переменных экземпляра книги (я предполагаю, что это объект?), созданный в Order с данными члена из одной ссылки (с b # 1-5) в классе Test. Это два класса. Я не использовал класс Book, потому что он просто создает объект Book. Любая помощь очень ценится!Переменные экземпляра (объект из другого класса)

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class Test 
{ 
public static void main(String args[]) throws ParseException 
{ 
    SimpleDateFormat fmt = new SimpleDateFormat(Book.DATE_FORMAT); 

    // Creating Book-objects... 
    Book b1 = new Book(1, "Homo Faber", "Max Frisch", fmt.parse("01.01.1957"), -10); 
    Book b2 = new Book(2, "Harry Potter", "J.K. Rowling", fmt.parse("25.7.2000"), 45); 
    Book b3 = new Book(3, "Krieg und Frieden", "Leo Tolstoi", fmt.parse("24.01.1867"), 29); 
    Book b4 = new Book(4, "Freedom", "Jonathan Franzen", fmt.parse("08.06.2010"), 39); 
    Book b5 = new Book(5, "Goedel, Escher, Bach", "Douglas Hofstadter", fmt.parse("05.11.1979"),  42); 

    // Creating two orders containing theses books... 

    Order order = new Order(); 
    order.setCustomerName("Sophie Muster"); 
    order.setCustomerAddress("Mittelstrasse 10, 3011 Bern"); 
    order.addBook(b1);//Here i want to fill one of the Book instance variables (i guess this is  an object to?) created 
    order.addBook(b2);//in the Order class with the member data of the 
    order.addBook(b3);//Book objects referenced (with b#1-5) which i have created above. 
    order.addBook(b4); 
    order.addBook(b4); 
    order.addBook(b5); 
    System.out.println(order); 

    System.out.print("\n"); 

    Order order2 = new Order(); 
    order2.setCustomerName("Woody Allen"); 
    order2.setCustomerAddress("5th Avenue 7, 10001 New York"); 
    order2.addBook(b5); 
    System.out.println(order2); 
} 
} 

.

public class Order { 

private static int idCounter; 
private int id; 
private String customerName; 
private String customerAddress; 



// The Constructor 
public Order(int tmpId, String tmpCustomerName,String tmpCustomerAddress){ 
    if (idCounter == 1);{ 
     id = 1;} 
    if (idCounter == 2){ 
     id = 2;} 
    if (idCounter == 3);{ 
     id = 3;} 
    if (idCounter == 4){ 
     id = 4;} 
    if (idCounter == 5){ 
     id = 5;} 
    customerName = tmpCustomerName; 
    customerAddress = tmpCustomerAddress; 
    } 

public Order() { 
    id = 0; 
    customerName = "-"; 
    customerAddress = "-"; 
} 

// The methods 
public String toString() 
{ 
    return id + ", " + customerName + ", " + customerAddress; 
} 

public String addBook(){ 
    //HERE with this method i want to add some of the Book objects i have made in Test class 
    // ?? Book b1 = Test.b1(); ?? 

    return "0"; 

} 

public int getTotalPrice(){ 
    return 0; 

} 
public String getCustomerName() 
{ 
    return customerName; 
} 
public String setCustomerName(String tmpCustomerName){ 
    customerName = tmpCustomerName; 
    return customerName; 
} 
public String getCustomerAddress() 
{ 
    return customerAddress; 
} 
public String setCustomerAddress(String tmpCustomerAddress){ 
    customerAddress = tmpCustomerAddress; 
    return customerAddress; 
} 
} 
+2

Хит вводят иногда при написании вопроса. –

+0

Хорошо, извиняюсь, извините за это! – Kisos

+0

Но почему вы хотите заполнить данные в классе заказов или создать новые объекты книги в классе заказа? – conFusl

ответ

0

Вы можете добавить список в свой класс Заказать, что-то вроде

private List<Book> books = new ArrayList<Book>(); 

Ваш метод может выглядеть следующим образом:

public String addBook(Book book){ 
    books.add(book); 
    return "Book added"; 
} 

Таким образом, вы можете обрабатывать, добавлять, удалять, обновлять книги в вашем заказе!

+0

Первое: Конечно, я бы скопировал его ответ и разместил его <1 минута позже! Второе: это очевидное решение, поэтому мне интересно, есть ли только два ответа! Все, у кого есть знания Java, предложили бы это решение! Но если вы чувствуете себя лучше с нисходящим потоком, это нормально для меня, я могу показать вам тысячи сообщений с одинаковыми ответами, чтобы вы могли сфокусировать их всех! – conFusl

+0

Спасибо за ваш ответ. Наконец выяснилось. – Kisos

0

Вы должны просто добавьте List<Book> в Order и инициализировать его:

public class Order { 

    List<Book> books = new ArrayList<>(); 

    public String addBook(Book book){ 
     books.add(book); 
     return "0"; 
    } 

    ... 
} 

Тогда вы просто перебирать books в классе для того, чтобы получить общую цену, преобразовать в строку, ...

Смежные вопросы