簡體   English   中英

實例變量(來自另一個類的對象)

[英]Instance Variables (object from another class)

我有一個主要的Test類,另外兩個主要的類(Book,Order類)代表一些特定的對象。 在班級Test中,我創建了5個Book對象。 現在,我想創建兩個使用Order類中的方法的Order對象。 具體來說,請使用setCustomerName(),SetCustomerAddress(),toString(),getTotlaPrice()和addBook()。在我為setCustomerName()和SetCustomerAddress()設置了吸氣劑和吸氣劑后,在測試類中沒有錯誤。 我的問題是,如何在Order類中創建5個Book實例變量,如果調用了它們(使用addBook()從Test類中),將用在Test類中創建的Book對象的成員數據(或參數)填充它們,因此我可以在同一個類的其他方法中使用它們。例如,在類Test中,如果我調用addBook(b1),則Order類中的addBook()方法應初始化或填充Book實例變量之一(我猜想這是一個對象?)是按順序創建的,使用Test類中引用的成員數據(使用b#1-5)。 這是兩個類。 我沒有把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;
}
}

您只需在Order添加一個List<Book>並將其初始化:

public class Order {

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

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

    ...
}

然后,您只需在訂單類中迭代books以獲取總價,將其轉換為String,...

您可以在Order類中添加一個List,類似

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

您的方法可能類似於:

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

這樣您就可以按訂單處理,添加,刪除和更新圖書!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM