Ошибка: Невозможно создать экземпляр абстрактного класса - C#
Формулировка задачи:
class Program { static void Main(string[] args) { List<Prog> listSoft = new List<Prog>(); //массив программ Console.Clear(); //Очистка экрана //Задаем название окна консоли Console.Title = "Контрольная работа 2. Вариант 0. Классы."; //заполняем: // 1 listSoft.Add( new Prog()); //добавляем без параметров // 2 FreeProg freeSoft = new FreeProg(); freeSoft.SoftName = "Графический редактор"; freeSoft.SoftVendor = "ООО Скорпион"; freeSoft.InstallDate = new DateTime(2016, 2, 10); //10-го февраля listSoft.Add(freeSoft); // 3 ShareProg shareSoft = new ShareProg(); shareSoft.SoftName = "Текстовый редактор"; shareSoft.SoftVendor = "ООО Скорпион"; shareSoft.InstallDate = new DateTime(2016, 2, 10); //10-го февраля shareSoft.ShareDays = 50; listSoft.Add(shareSoft); // 4 PropProg propSoft = new PropProg(); propSoft.SoftName = "САПР"; propSoft.SoftVendor = "ООО Скорпион"; propSoft.InstallDate = new DateTime(2016, 2, 10); //10-го февраля propSoft.Price = 300; propSoft.ExpireDate = new DateTime(2016, 4, 1); //1-го апреля listSoft.Add(propSoft); //выводим общий список: Console.WriteLine("---------------------------------------------------------"); foreach (Prog soft in listSoft) { soft.PrintInfo(); } //выводим с те, что можно использовать: Console.WriteLine("Можно использовать следующие программы:"); foreach (Prog soft in listSoft) { if (soft.isWorking()) soft.PrintInfo(); } Console.WriteLine("Нажмите любую клавишу..."); Console.ReadKey(); //ожидание нажатия клавиши } } enum eSoftType { Unknown, Freeware, Shareware, Propware } abstract class Prog //БАЗОВЫЙ КЛАСС { protected string m_SoftName; //название программы, protected string m_SoftVendor; //производитель программы, protected eSoftType m_SoftType; //тип программы, protected DateTime m_InstallDate; //дата установки, //конструктор без параметров public Prog() { m_SoftName = "Неизвествная программа"; m_SoftVendor = "Неизвестный производитель"; m_SoftType = eSoftType.Unknown; m_InstallDate = DateTime.Now; } //конструктор c параметррами public Prog(string softName, string softVendor, eSoftType softType, DateTime installDate) { m_SoftName = softName; m_SoftVendor = softVendor; m_SoftType = softType; m_InstallDate = installDate; } //=========== СВОЙСТВА ============ public string SoftName { get { return m_SoftName; } set { m_SoftName = value; } } public string SoftVendor { get { return m_SoftVendor; } set { m_SoftVendor = value; } } public eSoftType SoftType { get { return m_SoftType; } set { m_SoftType = value; } } public DateTime InstallDate { get { return m_InstallDate; } set { m_InstallDate = value; } } //вывод информации на экран: public virtual void PrintInfo() { Console.WriteLine("Программа: '{0}', производитель: '{1}', тип: '{2}', дата установки: {3}'", m_SoftName, m_SoftVendor, m_SoftType, m_InstallDate); } public virtual bool isWorking() //возможность использования { return true; } } class FreeProg : Prog //Свободное { public new eSoftType SoftType { get { return eSoftType.Freeware; } } //вывод информации на экран: public override void PrintInfo() { Console.WriteLine("Программа: '{0}', производитель: '{1}', тип: 'Бесплатная', дата установки: {2}'", m_SoftName, m_SoftVendor, m_InstallDate); } public override bool isWorking() //возможность использования { return true; } } class ShareProg : Prog // Условно-беспладное { private int m_ShareDays; //срок условного использования (дни) public new eSoftType SoftType { get { return eSoftType.Shareware; } } public int ShareDays { get { return m_ShareDays; } set { m_ShareDays = value; } } //вывод информации на экран: public override void PrintInfo() { Console.WriteLine("Программа: '{0}', производитель: '{1}', тип: 'Усл-Бесплатная', дата установки: {2}'", m_SoftName, m_SoftVendor, m_InstallDate); } public override bool isWorking() //возможность использования { return (m_InstallDate.AddDays(m_ShareDays) >= DateTime.Now); } } class PropProg : Prog // Коммерческое { private int m_Price; //цена private DateTime m_ExpireDate; //дата использования по лицензии public new eSoftType SoftType { get { return eSoftType.Propware; } } public int Price { get { return m_Price; } set { m_Price = value; } } public DateTime ExpireDate { get { return m_ExpireDate; } set { m_ExpireDate = value; } } //вывод информации на экран: public override void PrintInfo() { Console.WriteLine("Программа: '{0}', производитель: '{1}', тип: 'Коммерческая' (цена: ${2}), дата установки: {3}'", m_SoftName, m_SoftVendor, m_Price, m_InstallDate); } public override bool isWorking() //возможность использования { return (m_ExpireDate >= DateTime.Now); } } }
listSoft.Add( new Prog());
Решение задачи: «Ошибка: Невозможно создать экземпляр абстрактного класса»
textual
Листинг программы
FreeProg freeSoft = new FreeProg(); freeSoft.SoftName = "Графический редактор"; freeSoft.SoftVendor = "ООО Скорпион"; freeSoft.InstallDate = new DateTime(2016, 2, 10); //10-го февраля
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д