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

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


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

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

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