Методы наследования классов - C#
Формулировка задачи:
Разработать класс OldPassport, являющийся наследником класса Passport, добавив следующие поля:
dateChange (дата обмена),
reason (причина обмена).
Предыдущее задание, на основе которого решается это (задание решено, программа работает):
Код программы для класса наследника
И моя попытка собрать код воедино, увы неудачная
Приношу извинения за возможное неправильное оформление кода программы, в программировании я увы не спец, но хочу разобраться с данным заданием и буду признателен за указания на ошибки и советы по решению.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class Passport { public string Who { get; set; } public DateTime Date { get; set; } public int Number { get; set; } public int Serial { get; set; } public Passport(int serial, int number, DateTime date, string who) { Serial = serial; Number = number; Date = date; Who = who; } public DateTime GetChangeTime() { return Date.AddYears(15); } public static bool operator >(Passport a, Passport b) { return a.Date < b.Date; } public static bool operator <(Passport a, Passport b) { return a.Date > b.Date; } public override string ToString() //Автоматически вызовется при вызове Console.Write() { return String.Format("Серия паспорта: {0}, Номер: {1}, Дата выдачи: {2}, Кем выдан: {3}, Дата обмена {4}", Serial, Number, Date, Who, GetChangeTime()); } } class Program { static void Main(string[] args) { const int PassportS_COUNT = 2; Passport[] passports = new Passport[PassportS_COUNT]; for (int i = 0; i < passports.Length; i++) { Console.WriteLine("Введите данные о {0} паспорте:", i + 1); Console.Write(" Серия: "); var serial = Convert.ToInt32(Console.ReadLine()); Console.Write(" Номер: "); var number = Convert.ToInt32(Console.ReadLine()); Console.Write(" Дата выдачи: "); var date = Convert.ToDateTime(Console.ReadLine()); Console.Write(" Кем выдан: "); var who = Console.ReadLine(); passports[i] = new Passport(serial, number, date, who); } PrintPassports(passports); } private static void PrintPassports(Passport[] passports) { Console.WriteLine("Список паспортов:"); foreach (Passport passport in passports) { Console.WriteLine(" {0}", passport); } Console.ReadKey(); } } }
public class OldPassport : Passport { private string Reason { get; set; } private DateTime DateChange { get; set; } public OldPassport(DateTime dateChange, string reason) { DateChange = dateChange; Reason = reason; } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class Passport { private string Who { get; set; } private DateTime Date { get; set; } private int Number { get; set; } private int Serial { get; set; } public Passport(int serial, int number, DateTime date, string who) { Serial = serial; Number = number; Date = date; Who = who; } public DateTime GetChangeTime() { return Date.AddYears(15); } public static bool operator >(Passport a, Passport b) { return a.Date < b.Date; } public static bool operator <(Passport a, Passport b) { return a.Date > b.Date; } public override string ToString() //Автоматически вызовется при вызове Console.Write() { return String.Format("Серия паспорта: {0}, Номер: {1}, Дата выдачи: {2}, Кем выдан: {3}, Дата обмена {4}", Serial, Number, Date, Who, GetChangeTime()); } } public class OldPassport : Passport { private string Reason { get; set; } private DateTime DateChange { get; set; } public OldPassport(DateTime dateChange, string reason) { DateChange = dateChange; Reason = reason; } } class Program { static void Main(string[] args) { Passport[] passports = new Passport[2]; for (int i = 0; i < passports.Length; i++) { Console.WriteLine("Введите данные о {0} паспорте:", i + 1); Console.Write(" Серия: "); var serial = Convert.ToInt32(Console.ReadLine()); Console.Write(" Номер: "); var number = Convert.ToInt32(Console.ReadLine()); Console.Write(" Дата выдачи: "); var date = Convert.ToDateTime(Console.ReadLine()); Console.Write(" Кем выдан: "); var who = Console.ReadLine(); passports[i] = new Passport(serial, number, date, who); } PrintPassports(passports); OldPassport[] OldPassport = new OldPassport[2]; for (int i = 0; i < passports.Length; i++) { Console.WriteLine("Введите данные о {0} старом паспорте:", i + 1); Console.Write(" Дата обмена: "); var dateChange = Convert.ToDateTime(Console.ReadLine()); Console.Write(" Причина обмена: "); var reason = Console.ReadLine(); OldPassport[i] = new OldPassport(dateChange, reason); } PrintOldPassport(OldPassport); } private static void PrintPassports(Passport[] passports) { Console.WriteLine("Список паспортов:"); foreach (Passport passport in passports) { Console.WriteLine(" {0}", passport); } } private static void PrintOldPassport(OldPassport[] OldPassport) { Console.WriteLine("Список паспортов:"); foreach (OldPassport OldPassport in OldPassport) { Console.WriteLine(" {0}", OldPassport); } Console.ReadKey(); } } }
Решение задачи: «Методы наследования классов»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { public class Passport { private string Who { get; set; } private DateTime Date { get; set; } private int Number { get; set; } private int Serial { get; set; } public Passport(int serial, int number, DateTime date, string who) { Serial = serial; Number = number; Date = date; Who = who; } public DateTime GetChangeTime() { return Date.AddYears(15); } public static bool operator >(Passport a, Passport b) { return a.Date < b.Date; } public static bool operator <(Passport a, Passport b) { return a.Date > b.Date; } public override string ToString() //Автоматически вызовется при вызове Console.Write() { return String.Format("Серия паспорта: {0}, Номер: {1}, Дата выдачи: {2}, Кем выдан: {3}, Дата обмена {4}", Serial, Number, Date, Who, GetChangeTime()); } } public class OldPassport : Passport { private string Reason { get; set; } private DateTime DateChange { get; set; } public OldPassport(DateTime dateChange, string reason, int serial, int number, DateTime date, string who): base (serial, number, date, who) { { DateChange = dateChange; Reason = reason; } } class Program { static void Main(string[] args) { Passport[] passports = new Passport[2]; for (int i = 0; i < passports.Length; i++) { Console.WriteLine("Введите данные о {0} паспорте:", i + 1); Console.Write(" Серия: "); var serial = Convert.ToInt32(Console.ReadLine()); Console.Write(" Номер: "); var number = Convert.ToInt32(Console.ReadLine()); Console.Write(" Дата выдачи: "); var date = Convert.ToDateTime(Console.ReadLine()); Console.Write(" Кем выдан: "); var who = Console.ReadLine(); passports[i] = new Passport(serial, number, date, who); } PrintPassports(passports); OldPassport[] OldPassport = new OldPassport[2]; for (int i = 0; i < passports.Length; i++) { Console.WriteLine("Введите данные о {0} старом паспорте:", i + 1); Console.Write(" Дата обмена: "); var dateChange = Convert.ToDateTime(Console.ReadLine()); Console.Write(" Причина обмена: "); var reason = Console.ReadLine(); Console.Write(" Серия: "); var serial = Convert.ToInt32(Console.ReadLine()); Console.Write(" Номер: "); var number = Convert.ToInt32(Console.ReadLine()); Console.Write(" Дата выдачи: "); var date = Convert.ToDateTime(Console.ReadLine()); Console.Write(" Кем выдан: "); var who = Console.ReadLine(); OldPassport[i] = new OldPassport(dateChange, reason, serial, number, date, who); } PrintOldPassport(OldPassport); } private static void PrintPassports(Passport[] passports) { Console.WriteLine("Список паспортов:"); foreach (Passport passport in passports) { Console.WriteLine(" {0}", passport); } } private static void PrintOldPassport(OldPassport[] OldPassport) { Console.WriteLine("Список старых паспортов:"); foreach (OldPassport Passport in OldPassport) { Console.WriteLine(" {0}", OldPassport); } Console.ReadKey(); } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д