Java: учебник CD Library - какой тип данных для хранения CD, исполнителей и песен? - PullRequest
0 голосов
/ 23 ноября 2011

Созданы следующие классы, на данный момент нет интерфейса / абстрактного класса:

  1. Test - для создания тестовых данных
  2. Music - должны храниться все CD
  3. CD- должен хранить Исполнитель и название CD + все песни
  4. Исполнитель - содержит только имя строки
  5. Песня - содержит конструктор по умолчанию с (Artist anArtist, String songtitle, String Duration)
  6. Duration - для продолжительности песни и последующих вычислений

Я попробовал ArrayList, но он перезаписывается при добавлении другого CD.Мне нужен тип данных, который хранит данные со ссылкой на другой массив.например: сохранить исполнителя и название CD1 и ссылку на другой массив, содержащий все песни с CD1.

спасибо

код из класса Test:

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");

я изменилмои ArrayLists в классе Music и CD класса ... я думаю, что есть более простой способ решить этот урок, но вот код: (выводит все сохраненные песни и название CD)

class Music:

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

    }
}

класс Song:

 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.

1 Ответ

1 голос
/ 23 ноября 2011

Это может быть проблема с aArtist = new Artist("artist2"); CD aCD = myMusic.addCD(aArtist, "CD2"); //Overwrites arraylist from CD1 aCD.addSong(aArtist, "song2", "2:00"); Вы используете тот же объект Artist. Если вы опубликуете реализацию метода addCD, она будет более открытой для нас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...