Создать абстрактный класс Triad (тройка) с виртуальными методами увеличения на 1. На его основе реализовать классы Date (дата) и Time (время). Создать класс Memories, содержащий массив/параметризованную коллекцию пар (дата-время) объектов этих классов в динамической памяти. Предусмотреть возможность вывода характеристик объектов списка и выборки самого раннего и самого позднего событий. Написать демонстрационную программу, в которой будут использоваться все методы классов. Дополнительное задание: дополнить класс методами сортировки по некоторому критерию, вывода в файл и считывания из файла.

belovomp belovomp    2   18.04.2020 03:44    28

Ответы
ekaterinasolda ekaterinasolda  26.01.2024 21:06
Хорошо, давайте разберем пошаговое решение этой задачи.

1. Создание абстрактного класса Triad:
- Создадим класс Triad и объявим его абстрактным с использованием ключевого слова abstract.
- Добавим в него защищенные целочисленные поля (день, месяц, год) и защищенный метод вывода значений этих полей.
- Создадим виртуальный метод для увеличения тройки на 1 и объявим его виртуальным с использованием ключевого слова virtual.
- Добавим виртуальный метод, который будет выводить характеристики объекта класса Triad.

Пример кода для класса Triad:

```ruby
abstract class Triad
{
protected int day;
protected int month;
protected int year;

protected Triad(int day, int month, int year)
{
this.day = day;
this.month = month;
this.year = year;
}

protected void Display()
{
Console.WriteLine($"Date: {day}/{month}/{year}");
}

public virtual void Increase()
{
day++;
month++;
year++;
}

public abstract void ShowCharacteristics();
}
```

2. Реализация классов Date и Time:
- Создадим класс Date, который будет наследоваться от класса Triad.
- В классе Date добавим конструктор, который будет вызывать конструктор базового класса и инициализировать значения полей даты.
- Переопределим виртуальный метод Increase для класса Date, чтобы увеличивать только день.
- Реализуем метод ShowCharacteristics в классе Date для вывода характеристик объекта этого класса.

Пример кода для класса Date:

```ruby
class Date : Triad
{
public Date(int day, int month, int year)
: base(day, month, year)
{
}

public override void Increase()
{
day++;
}

public override void ShowCharacteristics()
{
Console.WriteLine($"Date: {day}/{month}/{year}");
}
}
```

3. Реализация класса Memories:
- Создадим класс Memories, который будет содержать массив/коллекцию пар объектов классов Date и Time.
- Добавим методы для добавления пары (дата-время) и вывода всех характеристик объектов.
- Реализуем методы для поиска самого раннего и самого позднего событий.
- Добавим методы для сортировки по критерию, вывода в файл и считывания из файла.

Пример кода для класса Memories:

```ruby
class Memories
{
private List<(Date date, Time time)> events = new List<(Date, Time)>();

public void AddEvent(Date date, Time time)
{
events.Add((date, time));
}

public void DisplayAllEvents()
{
foreach (var (date, time) in events)
{
date.Display();
time.Display();
}
}

public void FindEarliestEvent()
{
var earliestEvent = events.MinBy(e => e.date);
earliestEvent.date.Display();
earliestEvent.time.Display();
}

public void FindLatestEvent()
{
var latestEvent = events.MaxBy(e => e.date);
latestEvent.date.Display();
latestEvent.time.Display();
}

public void SortByDate()
{
events.Sort((e1, e2) => e1.date.CompareTo(e2.date));
}

public void SortByTime()
{
events.Sort((e1, e2) => e1.time.CompareTo(e2.time));
}

public void ExportToFile(string fileName)
{
// код для экспорта в файл
}

public void ImportFromFile(string fileName)
{
// код для импорта из файла
}
}
```

4. Демонстрационная программа:
- Создадим объекты классов Date и Time и добавим их в объект класса Memories.
- Вызовем различные методы для демонстрации работы программы.

Пример кода для демонстрационной программы:

```ruby
class Program
{
static void Main(string[] args)
{
Memories memories = new Memories();

Date date1 = new Date(1, 1, 2022);
Time time1 = new Time(10, 30, 0);
memories.AddEvent(date1, time1);

Date date2 = new Date(2, 1, 2022);
Time time2 = new Time(12, 0, 0);
memories.AddEvent(date2, time2);

memories.DisplayAllEvents();

Console.WriteLine("Earliest event:");
memories.FindEarliestEvent();

Console.WriteLine("Latest event:");
memories.FindLatestEvent();

memories.SortByDate();
Console.WriteLine("Events sorted by date:");
memories.DisplayAllEvents();

memories.ExportToFile("events.txt");
memories.ImportFromFile("events.txt");
}
}
```

В данной программе мы создаем два объекта класса Date и Time, добавляем их в список событий в классе Memories, а затем демонстрируем различные методы для работы с этими событиями.

Обратите внимание, что в коде используется C# и стандартная библиотека .NET. Если вы планируете использовать другой язык программирования, то вам придется адаптировать примеры кода под выбранный язык и его библиотеки.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Математика