2012-03-15 225 views
0

我對Java很新,我想知道是否可以將對象分配給另一個對象。例如,假設我有一個名爲「課堂」的對象。在這個教室裏,我有椅子,桌子,桌子等。 椅子,桌子和桌子都是物體本身,它們有自己獨立的屬性,比如椅子腿的數量,桌腿的寬度等等。所以基本上,我有4班。現在我想分配椅子,桌子,棋盤作爲ClassRoom的屬性。我不知道如何去做這件事。將對象分配給對象Java

任何幫助,將不勝感激, 在此先感謝 酯

回答

0

我不是一個大java傢伙,但我懷疑它類似於在C++中這樣做...... 只要定義了類,就應該能夠將它們聲明爲另一個對象的屬性,就像你會用諸如String之類的東西。
只要確保每個對象都已定義,並且支持方法在該類中定義。
這可能不是完全語法正確,但它應該是這個樣子:

class classRoom { 
    Chair chair; 
    Table table; 
    Board board; 
    String name; 

    add_chair(); 
    add_table(); 
    remove_table(); 

} 

class Chair { 
    Leg leg1; 
    Leg leg2; 
} 

class Leg { 
    int height; 
    set_height(); 
    get_height(); 
} 

class Board { 
    int width; 
    int height; 
} 

現在,如果你要訪問的教室椅子你只是做這樣的事情:

classRoom room = new classRoom(); 
height = room.chair.leg.get_height(); 

雖然記這是不好的做法,你應該設置函數來獲取這些值,而不是直接訪問它們。

+0

這不會編譯,因爲方法沒有body和返回類型 - 而且教室通常有多個桌子或椅子 – 2012-03-15 14:37:27

+0

是的我意識到這一點,我引用「這可能不完全是語法正確,但它應該看起來像這樣:「 我認爲僞代碼在這種情況下更有用 – Prediluted 2012-03-15 14:43:48

+0

謝謝!對此,我真的非常感激 – Ester 2012-03-15 19:26:47

1

你需要讓課堂「複合」類,一說認爲,指的是你提到的其他類領域。例如,「課堂」可容納ArrayList<Furnature>(或稱爲 Furnature的ArrayList ),並且您的主席,表格和類似課程可以從抽象Furnature課程擴展而來。然後,您可以授予「課堂」方法,以允許您從ArrayList添加和移除Furnature項目。

+0

哦,並且當你看到他時盡我所能給莫底凱叔叔。 – 2012-03-15 14:28:37

0

我想一個簡單的方法是列出

class ClassRoom { 
    private List<Chair> chairs = new ArrayList<Chair>(); 
    private List<Table> tables = new ArrayList<Chair>(); 
    ... 

    void addChair(Chair chair) { 
     chairs.add(chair); 
    } 

    List<Chair> getChairs() { 
    .... 
1

編輯去:添加對象

public final class Classroom { 
    public Classroom() { 
    this.tables = new ArrayList<Table>; 
    this.chairs = new ArrayList<Chair>; 
    this.boards = new ArrayList<Board>; 
    } 

    public void addTable(final Table table) { 
    this.tables.add(table); 
    } 

    public void addChair(final Chair chair) { 
    this.chairs.add(chair); 
    } 

    public void addBoard(final Board board) { 
    this.boards.add(board); 
    } 


    private final List<Table> tables; 
    private final List<Chair> chairs; 
    private final List<Board> boards; 
} 

外,從主例如

Table table = new Table(param1, param2); 
Table anotherTable = new Table(param1, param2); 
Chair chair = new Chair(param1, param2); 
Board board = new Board(param1, param2); 

現在讓你的教室:

Classroom classroom = new Classroom(); 

// adding object 
classrooom.addTable(table); 
classroom.addChair(chair); 
classroom.addTable(anotherTable); 

// and so on... 
+0

真實世界的教室通常有多個桌子或椅子。 – 2012-03-15 14:35:04

+0

是的,我編輯模仿真實世界的教室:)。謝謝 – 2012-03-15 14:36:01

1

你有一個has-many教室和桌子之間的關係(例如)。基本設計如下:

public class Classroom { 
    List<Table> tables = new ArrayList<Table>(); 

    // you may want to add a table to the classroom 
    public void addTable(Table table) { 
    tables.add(table); 
    } 

    // you may want to remove one 
    public void removeTable(Table table) { 
    tables.remove(table); 
    } 

    // here we can replace (a broken) one 
    public void replaceTable(Table oldTable, Table newTable) { 
    tables.set(tables.indexOf(oldTable), newTable); 
    } 

    // and: the inventory 
    public List<Table> getTables() { 
    return tables; 
    } 
}