Below is a C# implementation of the library catalog system that includes Book and Author classes. This code has been created from scratch and meets the outlined specifications. using System; namespace LibraryCatalog { // Author class for defining an author public class Author { // Properties public string Name { get; set; } public DateTime Birthdate { get; set; } // Constructor to initialize properties public Author(string name, DateTime birthdate) { Name = name; Birthdate = birthdate; } } // Book class for defining a book public class Book { // Properties public string Title { get; set; } public string ISBN { get; set; } public Author Author { get; set; } public bool Availability { get; set; } // Constructor to initialize properties public Book(string title, string isbn, Author author) { Title = title; ISBN = isbn; Author = author; Availability = true; // By default, the book is available } // Method for checking out the book public void CheckOut() { if (Availability) { Availability = false; Console. WriteLine($"Book '{Title}' has been checked out. "); } else { Console. WriteLine($"Book '{Title}' is not available for checkout. "); } } // Method for returning the book public void Return() { if (! Availability) { Availability = true; Console. WriteLine($"Book '{Title}' has been returned. "); } else { Console. WriteLine($"Book '{Title}' is already available. "); } } } // Example usage of the classes class Program { static void Main(string[] args) { // Create an author Author author = new Author("J. K. Rowling", new DateTime(1965, 7, 31)); // Create a book Book book = new Book("Harry Potter and the Sorcerer's Stone", "978-0439708180", author); // Check out the book book. CheckOut(); // Attempt to check out the book again book. CheckOut(); // Return the book book. Return(); // Attempt to return the book again book. Return(); } } } Explanation: Author Class: Contains properties Name and Birthdate. A constructor initializes these properties. Book Class: Contains properties Title, ISBN, Author, and Availability. A constructor initializes these properties, setting Availability to true by default. CheckOut() method sets Availability to false if the book is currently available. Return() method sets Availability to true if the book has been checked out. Program Class: Demonstrates the functionality of the Author and Book classes by creating an author, a book, and performing check-out and return operations.