using System;
public class CatalogItem
{
private string name;
private string code;
private string category;
private double size;
public CatalogItem(string name, string code, string category, double size)
{
this.name = name;
this.code = code;
this.category = category;
this.size = size;
}
public virtual void Play()
{
Console.WriteLine("Playing item...");
}
public virtual void RetrieveInformation()
{
Console.WriteLine("Retrieving information...");
}
public string GetName() => name;
public string GetCode() => code;
public string GetCategory() => category;
public double GetSize() => size;
}
public class Music : CatalogItem
{
private string singer;
private double length;
public Music(string name, string code, string category, double size, string singer, double length)
: base(name, code, category, size)
{
this.singer = singer;
this.length = length;
}
public override void Play()
{
Console.WriteLine($"Playing music by {singer} for {length} seconds...");
}
public override void RetrieveInformation()
{
Console.WriteLine($"Retrieving information about the music by {singer}...");
}
public string GetSinger() => singer;
public double GetLength() => length;
}
public class Film : CatalogItem
{
private string director;
private string mainActor;
private string mainActress;
public Film(string name, string code, string category, double size, string director, string mainActor, string mainActress)
: base(name, code, category, size)
{
this.director = director;
this.mainActor = mainActor;
this.mainActress = mainActress;
}
public override void Play()
{
Console.WriteLine($"Playing film directed by {director} with {mainActor} and {mainActress}...");
}
public override void RetrieveInformation()
{
Console.WriteLine($"Retrieving information about the film directed by {director}...");
}
public string GetDirector() => director;
public string GetMainActor() => mainActor;
public string GetMainActress() => mainActress;
}
public class ComputerProgram : CatalogItem
{
public ComputerProgram(string name, string code, string category, double size)
: base(name, code, category, size)
{
}
public override void RetrieveInformation()
{
Console.WriteLine($"Retrieving information about the computer program...");
}
}
public class Program
{
public static void Main()
{
Music[] musicItems = new Music[2]
{
new Music("Song1", "M001", "Music", 5.2, "Singer1", 200),
new Music("Song2", "M002", "Music", 4.8, "Singer2", 180)
};
Film[] filmItems = new Film[2]
{
new Film("Film1", "F001", "Film", 700, "Director1", "Actor1", "Actress1"),
new Film("Film2", "F002", "Film", 800, "Director2", "Actor2", "Actress2")
};
ComputerProgram[] programItems = new ComputerProgram[2]
{
new ComputerProgram("Program1", "P001", "Program", 150),
new ComputerProgram("Program2", "P002", "Program", 200)
};
foreach (var music in musicItems)
{
Console.WriteLine($"{music.GetName()} - {music.GetCategory()}");
music.Play();
music.RetrieveInformation();
}
foreach (var film in filmItems)
{
Console.WriteLine($"{film.GetName()} - {film.GetCategory()}");
film.Play();
film.RetrieveInformation();
}
foreach (var program in programItems)
{
Console.WriteLine($"{program.GetName()} - {program.GetCategory()}");
program.RetrieveInformation();
}
}
}