Конструктор задаёт данные книги, Read изначально false, MarkAsRead меняет только этот флаг. ToString формирует строку и условно добавляет отметку о прочтении.
Создание класса Book с основными полями и функциями
Конструктор задаёт данные книги, 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. Проверки непустого названия и допустимого года можно добавить, если они входят в требования.