Я изучаю ООП, разрабатывая программное обеспечение для управления музыкой на C #.До сих пор я изложил взаимодействие различных классов и объектов, как показано на этой диаграмме классов http://img811.imageshack.us/img811/7624/classdiagramh.png
Я, однако, очень растерян, пытаясь сделать свой дизайн более четким, поскольку нахожу несметное количество возможностей того, каквсе можно сделать, но я не хочу в конечном итоге с плохим дизайном.Основная проблема, с которой я сталкиваюсь, - обеспечить целостность данных между различными объектами. (Насколько я понимаю, я предполагаю, что в ООП, как и при проектировании баз данных, есть способ обеспечить точность, согласованность и надежность.хранения данных в другом объекте, как это делается при проектировании базы данных (например, использование ограничения внешнего ключа). Например, в моем приложении у меня есть объекты Artist, Song и Album, которые должны взаимодействовать вместе. Я не хочу, чтобыНапример, песня связана с неправильным альбомом по ошибке. Мне сказали, что я должен сделать что-то вроде:
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}
}
Однако это не работает для меня. Может кто-нибудь подсказать, как я могу это сделать?В частности, как я могу добавить новую песню с названием, альбомом и исполнителем и убедиться, что если по какой-то странной причине название альбома будет изменено, все треки все равно будут возвращать правильное название альбома, так как онивы получаете данные из самого альбома?
Также можноomeone предлагает лучший дизайн.Должен ли я использовать наследование или какой-либо полиморфизм, чтобы сделать мой дизайн надежным?