Ошибка: Невозможно создать экземпляр абстрактного класса - 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-го февраля
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д