2011-11-23 52 views
0

以下類的創建,沒有接口/抽象類現在:Java:CD庫教程 - 存儲cd,藝術家和歌曲的數據類型?

  1. 測試 - 用於創建測試數據
  2. 音樂 - 應保存所有CD
  3. CD - 應儲存藝術家和CD標題+所有樂曲
  4. 藝術家 - 僅包含字符串名稱
  5. 歌 - 包含默認構造函數(藝術家anArtist,字符串SONGTITLE,字符串時間)
  6. 時間 - 這首歌durati上和後來的計算

我試過一個ArrayList,但它會被覆蓋,當我添加另一張CD。我需要一個數據類型來存儲數據和另一個數組的鏈接。例如:存儲藝術家和CD1的標題,並鏈接到另一個包含來自CD1的所有歌曲的陣列。從類測試

感謝

代碼:

Artist aArtist = new Artist("artist1"); 
     CD aCD = myMusic.addCD(aArtist, "CD1"); 
     aCD.addSong(aArtist, "song1", "1:00"); 

aArtist = new Artist("artist2"); 
     CD aCD = myMusic.addCD(aArtist, "CD2"); //Overwrites arraylist from CD1 
     aCD.addSong(aArtist, "song2", "2:00"); 

我改變了我的ArrayList類音樂和類CD ...我認爲這是解決該教程更簡單的方法,但這裏是代碼:(輸出所有保存的歌曲和CD標題)

類音樂:

import java.util.ArrayList; 

public class Music { 
    private ArrayList<CD> myCDs = new ArrayList<CD>(); 

    public CD addCD(Artist anArtist, String cdTitle) { 

     CD aCD = new CD(anArtist, cdTitle); 
     myCDs.add(aCD); 
     return aCD; 
    } 

    public void showData() { 

     for (int i = 0; i < myCDs.size(); i++) { 
      for (int j = 0; j < myCDs.get(i).getMyCD().size(); j++) { 

       System.out.println(myCDs.get(i).getMyCD().get(j).getSong()); 
      } 
     } 

    } 
} 

級CD:

import java.util.ArrayList; 

public class CD { 
    private String cdTitle; 
    private ArrayList<Song> myCD = new ArrayList<Song>(); 

    public CD(Artist aArtist, String cdTitle) { 
     setMyCD(aArtist, cdTitle); 
    } 

    public ArrayList<Song> getMyCD() { 
     return myCD; 
    } 

    public String getMyCDtitle() { 
     return cdTitle; 
    } 

    public void setMyCD(Artist anArtist, String cdTitle) { 
     this.cdTitle = anArtist.getName() + ": " + cdTitle; 
    } 

    public void addSong(Artist anArtist, String aTitle, String aDuration) { 

     myCD.add(new Song(anArtist, aTitle, aDuration)); 

    } 
} 

類歌曲:

public class Song { 
    private String song; 

    public String getSong() { 
     return song; 
    } 

    public void setSong(String song) { 
     this.song = song; 
    } 

    public Song(Artist anArtist, String songtitle, String aDuration) { 
     Duration songDuration = new Duration(aDuration); 
     setSong(anArtist.getName() + ": " + songtitle + " (" 
       + songDuration.getSongDuration() + ")"); 

    } 

} 

一般:你將如何解決這樣一個項目? 我將不勝感激每一個建議或uml圖。

+0

您需要提供一些代碼,我們能夠知道爲什麼光盤獲得「重寫」。 – aioobe

回答

1

這可能是aArtist = new Artist("artist2"); CD aCD = myMusic.addCD(aArtist, "CD2"); //Overwrites arraylist from CD1 aCD.addSong(aArtist, "song2", "2:00"); 問題您可以使用同一個藝術家的對象。如果您發佈addCD方法實施,它將對我們更加開放。

相關問題