Методы наследования классов - 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();
}
}
}
}