我正在通过开发C#音乐管理软件,学习OOP。 至今,我阐述了不同类别和物体的相互作用,如本类图所示:。
然而,我对使我的设计坚固感到非常困惑,因为我正在找到能够做事情的多种可能性,但我不想最后搞坏设计。 我的主要问题是确保我执行不同目标之间的数据完整性(我的理解是,我假定,在欧佩组织,如同数据库设计一样,可以提供不同用途的数据储存的准确性、一致性和可靠性(例如,使用外国关键制约因素)。 例如,在我的申请中,我有艺术家、歌唱家和影像器,这些物体应相互交流。 举例来说,我不想错过错的画像。 我被告知,我应该做这样的事情:
class Album
{
public String Name{ get; set;}
List<Track> tracks;
public void AddTrack(Track t)
{
tracks.Add(t);
t.Album = this;
}
}
class Track
{
public Album Album{ get; set;}
public String AlbumName
{
get{ return this.Album.Name}
}
public String ArtistName{ get; set}
}
然而,这不利于我。 有些人可以建议我如何实际开展这项工作。 具体来说,我如何能够增加一首新歌曲,标题、名谱和艺术家,并确保如果由于某种奇怪的原因,“册”的名称会发生变化,那么所有轨道仍将退回正确的名称,因为它们将数据从“册”本身重新获得?
而且,有人可以提出更好的设计。 我是否应该利用继承或任何多变性来使我的设计变得有力?