Создать абстрактный класс PO с методами, позволяющими вывести на экран информацию о ПО - C#
Формулировка задачи:
Задание:
Создать абстрактный класс PO с методами, позволяющими вывести на экран информацию о программном обеспечении, а также определить соответствие возможности использования (на момент текущей даты).
Создать производные классы: Свободное (название, производитель), Условно-бесплатное (название, производитель, дата установки, срок бесплатного использования), Коммерческое (название, производитель, цена, дата установки, срок использования) со своими методами вывода информации на экран, и определения возможности использования на текущую дату.
Создать базу (массив) из n видов программного обеспечения, вывести полную информацию из базы на экран, а также организовать поиск программного обеспечения, которое допустимо использовать на текущую дату.
Выскакивает ошибка:
Ошибка 1 "Plam.Svobod" не реализует наследуемый абстрактный член "Plam.PO.Poisk(string)"
Помогите,пожалуйста,ее исправить...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Plam
{
abstract class PO
{
abstract public void Show();
abstract public void Poisk(string n);
}
class Svobod : PO
{
protected string Naz;
protected string Prz;
public Svobod(string Naz, string Prz)
{
this.Naz = Naz;
this.Prz = Prz;
}
public override void Show()
{
Console.WriteLine();
Console.WriteLine("Свободные:");
Console.WriteLine("Название: " + Naz);
Console.WriteLine("Производитель: " + Prz);
}
}
class Uslovno_besplat : Svobod
{
protected string sr;
protected string data;
public Uslovno_besplat(string Naz, string Prz)
: base
(Naz, Prz)
{
this.sr = sr;
this.data = data;
}
public override void Show()
{
Console.WriteLine();
Console.WriteLine("Условно-бесплатное: ");
Console.WriteLine("Название: " + Naz);
Console.WriteLine("Производитель: " + Prz);
Console.WriteLine("Дата установки: " + data);
Console.WriteLine("Срок использования: " + sr);
}
}
class Komercheskoe : Svobod
{
protected string price;
public Komercheskoe(string Naz, string Prz, string price, string data, string sr)
: base(Naz, Prz, data, sr)
{
this.price = price;
}
public override void Show()
{
Console.WriteLine();
Console.WriteLine("Коммерческое: ");
Console.WriteLine("Название: " + Naz);
Console.WriteLine("Производитель: " + Prz);
Console.WriteLine("Цена: " + price);
Console.WriteLine("Дата установки: " + data);
Console.WriteLine("Срок использования: " + sr);
}
public override void Poisk(string n)
{
if (this is Uslovno_besplat) if (n == this.Data)
this.Show();
else
if (this is Komercheskoe) if (n == (this as Komercheskoe).Data) this.Show();
}
}
}
namespace Plam
{
class Progam
{
static Svobod Svob()
{
Console.WriteLine();
Console.WriteLine("Свободные: ");
Console.Write("Название: ");
string s = Console.ReadLine();
Console.Write("Производитель: ");
string s1 = Console.ReadLine();
return new Svobod(s, s1);
}
static Uslovno_besplat YsBs()
{
Console.WriteLine();
Console.WriteLine("Условно-бесплатное: ");
Console.WriteLine("Название: ");
string s = Console.ReadLine();
Console.WriteLine("Производитель: ");
string s1 = Console.ReadLine();
Console.WriteLine("Дата установки: ");
string s2 = Console.ReadLine();
Console.WriteLine("Дата использования: ");
string s3 = Console.ReadLine();
return new Uslovno_besplat(s, s1, s2, s3);
}
static Komercheskoe Kom()
{
Console.WriteLine();
Console.WriteLine("Коммерческое: ");
Console.WriteLine("Название: ");
string s = Console.ReadLine();
Console.WriteLine("Производитель: ");
string s1 = Console.ReadLine();
Console.WriteLine("Цена: ");
string s2 = Console.ReadLine();
Console.WriteLine("Дата установки: ");
string s3 = Console.ReadLine();
Console.WriteLine("Дата использования: ");
string s4 = Console.ReadLine();
return new Komercheskoe(s, s1, s2, s3, s4);
}
static void Main(string[] args)
{
Console.Write("Введите количество комплект: ");
int n = int.Parse(Console.ReadLine());
PO[,] ob = new PO[n, 3];
for (int i = 0; i < n; i++)
{
ob[i, 0] = Svob();
ob[i, 1] = YsBs();
ob[i, 2] = Kom();
}
foreach (PO a in ob)
{
a.Show();
}
Console.WriteLine();
Console.Write("Введите дату для поиска: ");
string v = Console.ReadLine();
foreach (PO a in ob)
{
a.Poisk(v);
}
Console.ReadKey();
}
}
}Решение задачи: «Создать абстрактный класс PO с методами, позволяющими вывести на экран информацию о ПО»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication19
{
class Program
{
abstract class A //этот класс абстрактный. В нем можно объявлять абстрактные методы. Объект этого класса создать нельзя, но от него можно унаследоваться
{
public abstract string GetInfo();
}
class B:A
{
public override string GetInfo() { //класс B унаследован от класса A, поэтому должен реализовывать все абстрактные методы, имеющиеся в классе A.
return "I AM B";
}
}
class C : A
{
public override string GetInfo() //в этом классе то же самое, но метод реализован по-другому
{
return "I AM С " + DateTime.Now.ToShortDateString();
}
}
static void Main(string[] args)
{
ShowInfo(new B());
ShowInfo(new C());
Console.Read();
}
static void ShowInfo(A obj) //Вот этот метод принимает любого наследника класса A. Ему все равно, как реализован метод GetInfo у конкретного объекта, ему важно лишь знать, что такой метод у него есть и возвращает он string
{
Console.WriteLine(obj.GetInfo());
}
}
}