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

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

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

Задание: Создать абстрактный класс PO с методами, позволяющими вывести на экран информацию о программном обеспечении, а также определить соответствие возможности использования (на момент текущей даты). Создать производные классы: Свободное (название, производитель), Условно-бесплатное (название, производитель, дата установки, срок бесплатного использования), Коммерческое (название, производитель, цена, дата установки, срок использования) со своими методами вывода информации на экран, и определения возможности использования на текущую дату. Создать базу (массив) из n видов программного обеспечения, вывести полную информацию из базы на экран, а также организовать поиск программного обеспечения, которое допустимо использовать на текущую дату.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Plam
  6. {
  7. abstract class PO
  8. {
  9. abstract public void Show();
  10. abstract public void Poisk(string n);
  11. }
  12. class Svobod : PO
  13. {
  14. protected string Naz;
  15. protected string Prz;
  16. public Svobod(string Naz, string Prz)
  17. {
  18. this.Naz = Naz;
  19. this.Prz = Prz;
  20. }
  21. public override void Show()
  22. {
  23. Console.WriteLine();
  24. Console.WriteLine("Свободные:");
  25. Console.WriteLine("Название: " + Naz);
  26. Console.WriteLine("Производитель: " + Prz);
  27. }
  28. }
  29. class Uslovno_besplat : Svobod
  30. {
  31. protected string sr;
  32. protected string data;
  33. public Uslovno_besplat(string Naz, string Prz)
  34. : base
  35. (Naz, Prz)
  36. {
  37. this.sr = sr;
  38. this.data = data;
  39. }
  40. public override void Show()
  41. {
  42. Console.WriteLine();
  43. Console.WriteLine("Условно-бесплатное: ");
  44. Console.WriteLine("Название: " + Naz);
  45. Console.WriteLine("Производитель: " + Prz);
  46. Console.WriteLine("Дата установки: " + data);
  47. Console.WriteLine("Срок использования: " + sr);
  48. }
  49. }
  50. class Komercheskoe : Svobod
  51. {
  52. protected string price;
  53. public Komercheskoe(string Naz, string Prz, string price, string data, string sr)
  54. : base(Naz, Prz, data, sr)
  55. {
  56. this.price = price;
  57. }
  58. public override void Show()
  59. {
  60. Console.WriteLine();
  61. Console.WriteLine("Коммерческое: ");
  62. Console.WriteLine("Название: " + Naz);
  63. Console.WriteLine("Производитель: " + Prz);
  64. Console.WriteLine("Цена: " + price);
  65. Console.WriteLine("Дата установки: " + data);
  66. Console.WriteLine("Срок использования: " + sr);
  67. }
  68. public override void Poisk(string n)
  69. {
  70. if (this is Uslovno_besplat) if (n == this.Data)
  71. this.Show();
  72. else
  73. if (this is Komercheskoe) if (n == (this as Komercheskoe).Data) this.Show();
  74. }
  75. }
  76. }
  77. namespace Plam
  78. {
  79. class Progam
  80. {
  81. static Svobod Svob()
  82. {
  83. Console.WriteLine();
  84. Console.WriteLine("Свободные: ");
  85. Console.Write("Название: ");
  86. string s = Console.ReadLine();
  87. Console.Write("Производитель: ");
  88. string s1 = Console.ReadLine();
  89. return new Svobod(s, s1);
  90. }
  91. static Uslovno_besplat YsBs()
  92. {
  93. Console.WriteLine();
  94. Console.WriteLine("Условно-бесплатное: ");
  95. Console.WriteLine("Название: ");
  96. string s = Console.ReadLine();
  97. Console.WriteLine("Производитель: ");
  98. string s1 = Console.ReadLine();
  99. Console.WriteLine("Дата установки: ");
  100. string s2 = Console.ReadLine();
  101. Console.WriteLine("Дата использования: ");
  102. string s3 = Console.ReadLine();
  103. return new Uslovno_besplat(s, s1, s2, s3);
  104. }
  105. static Komercheskoe Kom()
  106. {
  107. Console.WriteLine();
  108. Console.WriteLine("Коммерческое: ");
  109. Console.WriteLine("Название: ");
  110. string s = Console.ReadLine();
  111. Console.WriteLine("Производитель: ");
  112. string s1 = Console.ReadLine();
  113. Console.WriteLine("Цена: ");
  114. string s2 = Console.ReadLine();
  115. Console.WriteLine("Дата установки: ");
  116. string s3 = Console.ReadLine();
  117. Console.WriteLine("Дата использования: ");
  118. string s4 = Console.ReadLine();
  119. return new Komercheskoe(s, s1, s2, s3, s4);
  120. }
  121. static void Main(string[] args)
  122. {
  123. Console.Write("Введите количество комплект: ");
  124. int n = int.Parse(Console.ReadLine());
  125. PO[,] ob = new PO[n, 3];
  126. for (int i = 0; i < n; i++)
  127. {
  128. ob[i, 0] = Svob();
  129. ob[i, 1] = YsBs();
  130. ob[i, 2] = Kom();
  131. }
  132. foreach (PO a in ob)
  133. {
  134. a.Show();
  135. }
  136. Console.WriteLine();
  137. Console.Write("Введите дату для поиска: ");
  138. string v = Console.ReadLine();
  139. foreach (PO a in ob)
  140. {
  141. a.Poisk(v);
  142. }
  143. Console.ReadKey();
  144. }
  145. }
  146. }
Выскакивает ошибка: Ошибка 1 "Plam.Svobod" не реализует наследуемый абстрактный член "Plam.PO.Poisk(string)" Помогите,пожалуйста,ее исправить...

Решение задачи: «Создать абстрактный класс PO с методами, позволяющими вывести на экран информацию о ПО»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication19
  8. {
  9.     class Program
  10.     {
  11.         abstract class A //этот класс абстрактный. В нем можно объявлять абстрактные методы. Объект этого класса создать нельзя, но от него можно унаследоваться
  12.         {
  13.             public abstract string GetInfo();
  14.         }
  15.         class B:A
  16.         {
  17.             public override string GetInfo() { //класс B унаследован от класса A, поэтому должен реализовывать все абстрактные методы, имеющиеся в классе A.
  18.                 return "I AM B";
  19.             }
  20.         }
  21.         class C : A
  22.         {
  23.             public override string GetInfo() //в этом классе то же самое, но метод реализован по-другому
  24.             {
  25.                 return "I AM С " + DateTime.Now.ToShortDateString();
  26.             }
  27.         }
  28.         static void Main(string[] args)
  29.         {
  30.             ShowInfo(new B());
  31.             ShowInfo(new C());
  32.             Console.Read();
  33.         }
  34.         static void ShowInfo(A obj) //Вот этот метод принимает любого наследника класса A. Ему все равно, как реализован метод GetInfo у конкретного объекта, ему важно лишь знать, что такой метод у него есть и возвращает он string
  35.         {
  36.             Console.WriteLine(obj.GetInfo());
  37.         }
  38.  
  39.     }
  40. }

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


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

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы