Создание класса Book с основными полями и функциями

Конструктор задаёт данные книги, Read изначально false, MarkAsRead меняет только этот флаг. ToString формирует строку и условно добавляет отметку о прочтении.

Короткий ответ

Что ответить на собеседовании

Конструктор задаёт данные книги, Read изначально false, MarkAsRead меняет только этот флаг. ToString формирует строку и условно добавляет отметку о прочтении.

Подробный разбор

Ответ с пояснениями

Условие

Разработайте простой класс "Book" со следующими атрибутами:

Свойства:

  • Name (String) — название книги
  • Writer (String) — автор
  • YearPublished (int) — год издания
  • Read (bool, по умолчанию false) — флаг, указывающий, прочитана ли книга

Методы:

  • Конструктор, принимающий название, автора и год публикации и инициализирующий соответствующие свойства.
  • Функция MarkAsRead(), которая меняет значение свойства Read на true.
  • Переопределённый метод ToString(), возвращающий строку в виде: "Name Writer (YearPublished)". Если книга уже прочитана, к строке следует добавить суффикс " - Прочитано".

Ответ

Конструктор задаёт данные книги, Read изначально false, MarkAsRead меняет только этот флаг. ToString формирует строку и условно добавляет отметку о прочтении.

public sealed class Book
{
    public string Name { get; }
    public string Writer { get; }
    public int YearPublished { get; }
    public bool Read { get; private set; }

    public Book(string name, string writer, int yearPublished)
    {
        Name = name;
        Writer = writer;
        YearPublished = yearPublished;
    }
    public void MarkAsRead() => Read = true;
    public override string ToString() =>
        $"{Name} {Writer} ({YearPublished})" + (Read ? " - Прочитано" : "");
}

Закрытый сеттер не позволяет сбрасывать флаг произвольным внешним кодом. bool автоматически получает false. Проверки непустого названия и допустимого года можно добавить, если они входят в требования.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее