简体   繁体   English

实例变量(来自另一个类的对象)

[英]Instance Variables (object from another class)

I have one main class Test and two others (class Book , class Order) that represent some specific objects. 我有一个主要的Test类,另外两个主要的类(Book,Order类)代表一些特定的对象。 From my class Test I create 5 Book objects. 在班级Test中,我创建了5个Book对象。 Now i want to create two Order objects that use methods from Order class. 现在,我想创建两个使用Order类中的方法的Order对象。 To be specific use setCustomerName(), SetCustomerAddress(), toString() getTotlaPrice() and addBook().After i set getters and setters for setCustomerName() and SetCustomerAddress() i have no errors for them in the Test Class. 具体来说,请使用setCustomerName(),SetCustomerAddress(),toString(),getTotlaPrice()和addBook()。在我为setCustomerName()和SetCustomerAddress()设置了吸气剂和吸气剂后,在测试类中没有错误。 My question is how can i create 5 Book instance variables in the Order class that will be filled with the member data (or parameters) of the Book objects created in the Test class if they are called(from Test class with addBook()), so that i can use them in the other methods in the same class.So for example in class Test if i call addBook(b1) the addBook() method which is in the Order class should initialize or fill one of the Book instance variables (i guess this is an object to?) created in Order with the member data of the one referenced (with b#1-5) in the Test class. 我的问题是,如何在Order类中创建5个Book实例变量,如果调用了它们(使用addBook()从Test类中),将用在Test类中创建的Book对象的成员数据(或参数)填充它们,因此我可以在同一个类的其他方法中使用它们。例如,在类Test中,如果我调用addBook(b1),则Order类中的addBook()方法应初始化或填充Book实例变量之一(我猜想这是一个对象?)是按顺序创建的,使用Test类中引用的成员数据(使用b#1-5)。 These are the two classes. 这是两个类。 I havent put the Book class because it just creates the Book object. 我没有把Book类放进去,因为它只是创建Book对象。 Any help is very much appreciated! 很感谢任何形式的帮助!

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;
}
}

You should simply add an List<Book> in Order and initialize it : 您只需在Order添加一个List<Book>并将其初始化:

public class Order {

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

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

    ...
}

Then you simply iterate books in the order class to get total price, convert to String, ... 然后,您只需在订单类中迭代books以获取总价,将其转换为String,...

You can add a List in the class Order, something like 您可以在Order类中添加一个List,类似

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

Your method could look like: 您的方法可能类似于:

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

So you can handle, add, remove, update books in your order! 这样您就可以按订单处理,添加,删除和更新图书!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM