Создать абстрактный класс "Программное обеспечение" с методами - C#
Формулировка задачи:
ПОМОГИТЕ ПОЖАЛУЙСТА ИСПРАВИТЬ ОШИБКИ!!!!!!
Задание:
1) Создать абстрактный класс Программное_обеспечение с методами, позволяющими вывести на экран
информацию о программном обеспечении, а также определить соответствие возможности использования (на момент текущей даты).
2) Создать производные классы: Свободное (название, производитель), Условно-бесплатное (название, производитель, дата установки, срок бесплатного использования), Коммерческое (название, производитель, цена, дата установки, срок использования) со своими методами вывода информации на экран, и определения возможности использования на текущую дату.
3) Создать базу (массив) из n видов программного обеспечения, вывести полную информацию из базы на экран, а также организовать поиск программного обеспечения, которое допустимо использовать на текущую дату.
Исходник:
Решение задачи: «Создать абстрактный класс "Программное обеспечение" с методами»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//1) Создать абстрактный класс Программное_обеспечение с методами, позволяющими вывести на экран
//информацию о программном обеспечении, а также определить соответствие возможности использования (на момент текущей даты).
//2) Создать производные классы: Свободное (название, производитель), Условно-бесплатное (название, производитель, дата установки, срок бесплатного использования),
//(название, производитель, цена, дата установки, срок использования) со своими методами вывода информации на экран, и определения возможности использования на текущую дату.
//3) Создать базу (массив) из n видов программного обеспечения, вывести полную информацию из базы на экран, а также организовать поиск программного обеспечения,
//которое допустимо использовать на текущую дату.
class Program
{
static void Main(string[] args)
{
PO[] soft = new PO[]{new Free ("word", "tba"),
new Shareware("excel", "microsoft", "12.03.1989", 50, 100),
new Shareware("notepad", "net", "05.05.1990", 30, 20),
new Commercial("NFS most wonted", "EArts", "27.09.2008", 50, 200, 3650),
new Free("paint", "microsoft")};
Console.WriteLine("~~~~ Весь список ПО:");
foreach (PO p in soft)
p.Info();
Console.WriteLine("~~~~ Список ПО, которое можно использовать на сегодняшний день: ");
foreach (PO p in soft)
if (p.ItIsAWorks())Console.WriteLine(p.ProgramName);
Console.ReadLine();
}
}
abstract class PO
{
protected string name;
protected string company;
protected DateTime dateOfInstall;
protected byte demo_preiod;
protected int cost;
public PO(string name, string company, string date, byte demo_period, int cost)
{
this.name = name;
this.company = company;
this.dateOfInstall = DateTime.Parse(date);
this.demo_preiod = demo_period;
this.cost = cost;
}
public virtual void Info()
{
Console.WriteLine("\nИмя продукта: " + name + " Производитель: "
+ company + " дата установки ПО: " + dateOfInstall
+ "Период бесплатного использования: " + demo_preiod
+ " стоимость продукта: " + cost+"\n");
}
public virtual bool ItIsAWorks()
{
if (dateOfInstall.AddDays(demo_preiod) >= DateTime.Now) return true;
return false;
}
public string ProgramName
{
get { return name; }
}
}
class Free : PO
{
public Free(string name, string company): base(name, company, "01.01.2000", 0, 0)
{ }
public override void Info()
{
Console.WriteLine("Имя продукта: " + name + "\nПроизводитель: "
+ company+"\n");
}
public override bool ItIsAWorks()
{
return true;
}
}
class Shareware : PO
{
public Shareware(string name, string company, string date, byte demo_period, int cost)
: base(name, company, date, demo_period, cost)
{ }
public override void Info()
{
Console.WriteLine("Имя продукта: " + name + "\nПроизводитель: "
+ company + "\nДата установки ПО: " + dateOfInstall.ToShortDateString()
+ "\nПериод бесплатного использования: " + demo_preiod
+ "\nCтоимость продукта: "+cost+"euro\n");
}
public override bool ItIsAWorks()
{
if (dateOfInstall.AddDays(demo_preiod) >= DateTime.Now) return true;
return false;
}
}
class Commercial : PO
{
int period;
public Commercial(string name, string company, string date, byte demo_period, int cost, int period)
: base(name, company, date, 0, cost)
{ this.period = period; }
public override void Info()
{
Console.WriteLine("Имя продукта: " + name + "\nПроизводитель: "
+ company + "\nДата установки ПО: " + dateOfInstall.ToShortDateString()
+ "\nСтоимость продукта: " + cost + "euro \nПериод использования: " + period + "\n");
}
public override bool ItIsAWorks()
{
if (dateOfInstall.AddDays(period) >= DateTime.Now) return true;
return false;
}
}