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