Создать абстрактный класс PO с методами, позволяющими вывести на экран информацию о ПО - C#

Узнай цену своей работы

Формулировка задачи:

Задание: Создать абстрактный класс PO с методами, позволяющими вывести на экран информацию о программном обеспечении, а также определить соответствие возможности использования (на момент текущей даты). Создать производные классы: Свободное (название, производитель), Условно-бесплатное (название, производитель, дата установки, срок бесплатного использования), Коммерческое (название, производитель, цена, дата установки, срок использования) со своими методами вывода информации на экран, и определения возможности использования на текущую дату. Создать базу (массив) из n видов программного обеспечения, вывести полную информацию из базы на экран, а также организовать поиск программного обеспечения, которое допустимо использовать на текущую дату.
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();
        }
    }
}
Выскакивает ошибка: Ошибка 1 "Plam.Svobod" не реализует наследуемый абстрактный член "Plam.PO.Poisk(string)" Помогите,пожалуйста,ее исправить...

Решение задачи: «Создать абстрактный класс 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());
        }
 
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы