Skip to content

Аудиториска вежба 3

AleksandarStojmenski edited this page Mar 7, 2018 · 2 revisions

Цели на вежбата

  • Пишување едноставни класи во C#
  • Имплементација и користење на својства (Properties)
  • Композиција со користење на List<T>

Пример задача

Да се развие класа за работа со песни и албуми од песни. За секоја песна се чува името на песната, должината (во секунди) и рејтинг. Албумот има име, година на издавање и листа со песни.

Во класата албум да се напишат следните методи:

  • addSong - за додавање нова песна во албумот
  • findSong - за пребарување песна во албумот (ако не се пронајде песната се фрла исклучок од тип SongNotFoundException)

Class Song

class Song
{
    public string Name { get ; set ; }
    public float Rating { get ; set ; }
    public int Duration { get ; set ; }
    public Song () { }
    public Song ( string name , float rating , int duration )
    {
        Name = name ;
        Rating = rating ;
        Duration = duration ;
    }
    public override string ToString ()
    {
        return string . Format ( " {0} - {1} " , Name , Duration ) ;
    }
}

Class Album

class Album
{
    public string Name { get; set; }

    public int Year { get; set; }

    public List<Song> Songs { get; set; }

    public Album(string name, int year)
    {
        Name = name;
        Year = year;
        Songs = new List<Song>();
    }

    public void AddSong(Song song)
    {
        Songs.Add(song);
    }

    public void AddSong(string name, int duration, float rating)
    {
        Song song = new Song(name, duration, rating);
        Songs.Add(song);
    }

    public Song FindSong(string name)
    {
        foreach (Song song in Songs)
        {
            if (song.Name.Equals(name, StringComparison.OrdinalIgnoreCase))
            {
                return song;
            }
        }
        throw new SongNotFoundException(name);
    }

    public override string ToString()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append(Name);
        sb.Append('\n');
        sb.Append(Year);
        sb.Append('\n');
        sb.Append("Songs:\n");
        int i = 1;
        foreach (Song song in Songs)
        {
            sb.Append(string.Format("{0}. ", i++));
            sb.Append(song);
            sb.Append('\n');
        }
        return sb.ToString();
    }
}

Изворен код на апликацијата