Методы наследования классов - C#

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

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

Разработать класс OldPassport, являющийся наследником класса Passport, добавив следующие поля: dateChange (дата обмена), reason (причина обмена). Предыдущее задание, на основе которого решается это (задание решено, программа работает):
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleApplication1
  6. {
  7. public class Passport
  8. {
  9. public string Who { get; set; }
  10. public DateTime Date { get; set; }
  11. public int Number { get; set; }
  12. public int Serial { get; set; }
  13. public Passport(int serial, int number, DateTime date, string who)
  14. {
  15. Serial = serial;
  16. Number = number;
  17. Date = date;
  18. Who = who;
  19. }
  20. public DateTime GetChangeTime()
  21. {
  22. return Date.AddYears(15);
  23. }
  24. public static bool operator >(Passport a, Passport b)
  25. {
  26. return a.Date < b.Date;
  27. }
  28. public static bool operator <(Passport a, Passport b)
  29. {
  30. return a.Date > b.Date;
  31. }
  32. public override string ToString() //Автоматически вызовется при вызове Console.Write()
  33. {
  34. return String.Format("Серия паспорта: {0}, Номер: {1}, Дата выдачи: {2}, Кем выдан: {3}, Дата обмена {4}", Serial, Number, Date, Who, GetChangeTime());
  35. }
  36. }
  37.  
  38. class Program
  39. {
  40. static void Main(string[] args)
  41. {
  42. const int PassportS_COUNT = 2;
  43. Passport[] passports = new Passport[PassportS_COUNT];
  44. for (int i = 0; i < passports.Length; i++)
  45. {
  46. Console.WriteLine("Введите данные о {0} паспорте:", i + 1);
  47. Console.Write(" Серия: ");
  48. var serial = Convert.ToInt32(Console.ReadLine());
  49. Console.Write(" Номер: ");
  50. var number = Convert.ToInt32(Console.ReadLine());
  51. Console.Write(" Дата выдачи: ");
  52. var date = Convert.ToDateTime(Console.ReadLine());
  53. Console.Write(" Кем выдан: ");
  54. var who = Console.ReadLine();
  55. passports[i] = new Passport(serial, number, date, who);
  56. }
  57. PrintPassports(passports);
  58. }
  59.  
  60. private static void PrintPassports(Passport[] passports)
  61. {
  62. Console.WriteLine("Список паспортов:");
  63. foreach (Passport passport in passports)
  64. {
  65. Console.WriteLine(" {0}", passport);
  66. }
  67. Console.ReadKey();
  68. }
  69.  
  70. }
  71. }
Код программы для класса наследника
Листинг программы
  1. public class OldPassport : Passport
  2. {
  3. private string Reason { get; set; }
  4. private DateTime DateChange { get; set; }
  5. public OldPassport(DateTime dateChange, string reason)
  6. {
  7. DateChange = dateChange;
  8. Reason = reason;
  9. }
  10. }
И моя попытка собрать код воедино, увы неудачная
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace ConsoleApplication1
  6. {
  7. public class Passport
  8. {
  9. private string Who { get; set; }
  10. private DateTime Date { get; set; }
  11. private int Number { get; set; }
  12. private int Serial { get; set; }
  13. public Passport(int serial, int number, DateTime date, string who)
  14. {
  15. Serial = serial;
  16. Number = number;
  17. Date = date;
  18. Who = who;
  19. }
  20. public DateTime GetChangeTime()
  21. {
  22. return Date.AddYears(15);
  23. }
  24. public static bool operator >(Passport a, Passport b)
  25. {
  26. return a.Date < b.Date;
  27. }
  28. public static bool operator <(Passport a, Passport b)
  29. {
  30. return a.Date > b.Date;
  31. }
  32. public override string ToString() //Автоматически вызовется при вызове Console.Write()
  33. {
  34. return String.Format("Серия паспорта: {0}, Номер: {1}, Дата выдачи: {2}, Кем выдан: {3}, Дата обмена {4}", Serial, Number, Date, Who, GetChangeTime());
  35. }
  36. }
  37. public class OldPassport : Passport
  38. {
  39. private string Reason { get; set; }
  40. private DateTime DateChange { get; set; }
  41. public OldPassport(DateTime dateChange, string reason)
  42. {
  43. DateChange = dateChange;
  44. Reason = reason;
  45. }
  46. }
  47. class Program
  48. {
  49. static void Main(string[] args)
  50. {
  51. Passport[] passports = new Passport[2];
  52. for (int i = 0; i < passports.Length; i++)
  53. {
  54. Console.WriteLine("Введите данные о {0} паспорте:", i + 1);
  55. Console.Write(" Серия: ");
  56. var serial = Convert.ToInt32(Console.ReadLine());
  57. Console.Write(" Номер: ");
  58. var number = Convert.ToInt32(Console.ReadLine());
  59. Console.Write(" Дата выдачи: ");
  60. var date = Convert.ToDateTime(Console.ReadLine());
  61. Console.Write(" Кем выдан: ");
  62. var who = Console.ReadLine();
  63. passports[i] = new Passport(serial, number, date, who);
  64. }
  65. PrintPassports(passports);
  66. OldPassport[] OldPassport = new OldPassport[2];
  67. for (int i = 0; i < passports.Length; i++)
  68. {
  69. Console.WriteLine("Введите данные о {0} старом паспорте:", i + 1);
  70.  
  71. Console.Write(" Дата обмена: ");
  72. var dateChange = Convert.ToDateTime(Console.ReadLine());
  73. Console.Write(" Причина обмена: ");
  74. var reason = Console.ReadLine();
  75. OldPassport[i] = new OldPassport(dateChange, reason);
  76. }
  77. PrintOldPassport(OldPassport);
  78. }
  79.  
  80. private static void PrintPassports(Passport[] passports)
  81. {
  82. Console.WriteLine("Список паспортов:");
  83. foreach (Passport passport in passports)
  84. {
  85. Console.WriteLine(" {0}", passport);
  86. }
  87. }
  88. private static void PrintOldPassport(OldPassport[] OldPassport)
  89. {
  90. Console.WriteLine("Список паспортов:");
  91. foreach (OldPassport OldPassport in OldPassport)
  92. {
  93. Console.WriteLine(" {0}", OldPassport);
  94. }
  95. Console.ReadKey();
  96. }
  97. }
  98. }
Приношу извинения за возможное неправильное оформление кода программы, в программировании я увы не спец, но хочу разобраться с данным заданием и буду признателен за указания на ошибки и советы по решению.

Решение задачи: «Методы наследования классов»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ConsoleApplication1
  7. {
  8.     public class Passport
  9.     {
  10.         private string Who { get; set; }
  11.         private DateTime Date { get; set; }
  12.         private int Number { get; set; }
  13.         private int Serial { get; set; }
  14.  
  15.         public Passport(int serial, int number, DateTime date, string who)
  16.         {
  17.             Serial = serial;
  18.             Number = number;
  19.             Date = date;
  20.             Who = who;
  21.         }
  22.  
  23.         public DateTime GetChangeTime()
  24.         {
  25.             return Date.AddYears(15);
  26.         }
  27.  
  28.         public static bool operator >(Passport a, Passport b)
  29.         {
  30.             return a.Date < b.Date;
  31.         }
  32.  
  33.         public static bool operator <(Passport a, Passport b)
  34.         {
  35.             return a.Date > b.Date;
  36.         }
  37.  
  38.         public override string ToString() //Автоматически вызовется при вызове Console.Write()
  39.         {
  40.             return String.Format("Серия паспорта: {0}, Номер: {1}, Дата выдачи: {2}, Кем выдан: {3}, Дата обмена {4}", Serial, Number, Date, Who, GetChangeTime());
  41.         }
  42.     }
  43.  
  44.         public class OldPassport : Passport
  45.     {
  46.         private string Reason { get; set; }
  47.         private DateTime DateChange { get; set; }
  48.  
  49.         public OldPassport(DateTime dateChange, string reason, int serial, int number, DateTime date, string who): base (serial, number, date, who)
  50. {
  51.     {
  52.         DateChange = dateChange;
  53.         Reason = reason;
  54.     }
  55.     }
  56.  
  57.         class Program
  58.         {
  59.             static void Main(string[] args)
  60.             {
  61.  
  62.                 Passport[] passports = new Passport[2];
  63.                 for (int i = 0; i < passports.Length; i++)
  64.                 {
  65.                     Console.WriteLine("Введите данные о {0} паспорте:", i + 1);
  66.  
  67.                     Console.Write("    Серия: ");
  68.                     var serial = Convert.ToInt32(Console.ReadLine());
  69.  
  70.                     Console.Write("    Номер: ");
  71.                     var number = Convert.ToInt32(Console.ReadLine());
  72.  
  73.                     Console.Write("    Дата выдачи: ");
  74.                     var date = Convert.ToDateTime(Console.ReadLine());
  75.  
  76.                     Console.Write("    Кем выдан: ");
  77.                     var who = Console.ReadLine();
  78.  
  79.                     passports[i] = new Passport(serial, number, date, who);
  80.                 }
  81.  
  82.                 PrintPassports(passports);
  83.  
  84.                 OldPassport[] OldPassport = new OldPassport[2];
  85.                 for (int i = 0; i < passports.Length; i++)
  86.                 {
  87.                     Console.WriteLine("Введите данные о {0} старом паспорте:", i + 1);
  88.  
  89.  
  90.                     Console.Write("    Дата обмена: ");
  91.                     var dateChange = Convert.ToDateTime(Console.ReadLine());
  92.  
  93.                     Console.Write("    Причина обмена: ");
  94.                     var reason = Console.ReadLine();
  95.  
  96.                     Console.Write("    Серия: ");
  97.                     var serial = Convert.ToInt32(Console.ReadLine());
  98.  
  99.                     Console.Write("    Номер: ");
  100.                     var number = Convert.ToInt32(Console.ReadLine());
  101.  
  102.                     Console.Write("    Дата выдачи: ");
  103.                     var date = Convert.ToDateTime(Console.ReadLine());
  104.  
  105.                     Console.Write("    Кем выдан: ");
  106.                     var who = Console.ReadLine();
  107.  
  108.                     OldPassport[i] = new OldPassport(dateChange, reason, serial, number, date, who);
  109.                 }
  110.  
  111.                 PrintOldPassport(OldPassport);
  112.             }
  113.  
  114.  
  115.             private static void PrintPassports(Passport[] passports)
  116.             {
  117.                 Console.WriteLine("Список паспортов:");
  118.                 foreach (Passport passport in passports)
  119.                 {
  120.                     Console.WriteLine("    {0}", passport);
  121.                 }
  122.  
  123.             }
  124.  
  125.             private static void PrintOldPassport(OldPassport[] OldPassport)
  126.             {
  127.                 Console.WriteLine("Список старых паспортов:");
  128.                 foreach (OldPassport Passport in OldPassport)
  129.                 {
  130.                     Console.WriteLine("    {0}", OldPassport);
  131.                 }
  132.                 Console.ReadKey();
  133.  
  134.             }
  135.             }
  136.  
  137.     }
  138. }

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


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

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

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

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

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

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