Создать абстрактный класс 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()); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д