Класс домашняя библиотека. Перегрузка операций в классах - C#
Формулировка задачи:
Описать класс домашняя библиотека. Предусмотреть возможность работы с произвольным числом книг, поиска книги по какому-либо признаку, добавление книг в библиотеку, удаления книг из нее, доступа к книге по номеру.
Решение задачи: «Класс домашняя библиотека. Перегрузка операций в классах»
textual
Листинг программы
class Book : IEquatable<Book>
{
public readonly string Author, Name;
private Book() { }
public Book(string Author, string Name)
{
this.Author = Author;
this.Name = Name;
}
public bool Equals(Book other)
{
return this.Author.Equals(other.Author) && this.Name.Equals(other.Name);
}
public override string ToString()
{
return string.Format("{0}, {1}", this.Author, this.Name);
}
}
class Library : ICollection<Book>
{
List<Book> books = new List<Book>();
public Book this[int index]
{
get { return books[index]; }
}
public IEnumerable<Book> GetBooksByAuthor(string Author)
{
foreach (Book book in books)
{
if (book.Author.Equals(Author))
yield return book;
}
}
public IEnumerable<Book> GetBooksByName(string Name)
{
foreach (Book book in books)
{
if (book.Author.Equals(Name))
yield return book;
}
}
public void Add(Book book)
{
books.Add(book);
}
public void Clear()
{
books.Clear();
}
public bool Contains(Book book)
{
return books.Contains(book);
}
public void CopyTo(Book[] array, int arrayIndex)
{
books.CopyTo(array, arrayIndex);
}
public int Count
{
get { return books.Count; }
}
public bool IsReadOnly
{
get { return false; }
}
public bool Remove(Book book)
{
return books.Remove(book);
}
public IEnumerator<Book> GetEnumerator()
{
return books.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
}