Структура проекта
Часть раздела Объектно-ориентированное программирование путешествия по C# на Coddy — урок 62 из 70.
Задание
ЛегкоДавайте заложим основу для вашего проекта Библиотечной системы! Вы создадите базовую структуру файлов, которая в ходе последующих уроков превратится в полноценное приложение для управления библиотекой.
Вы организуете свой код в четырех файлах, каждый из которых отвечает за определенную задачу:
Book.cs: Этот файл будет содержать вашу модель книги. Пока что создайте классBookв пространстве именLibrarySystemс тремя автоматически реализуемыми свойствами:Title(string),Author(string) иIsAvailable(bool, по умолчаниюtrue). Добавьте конструктор, который принимает название и автора в качестве параметров.User.cs: Этот файл будет содержать вашу модель пользователя. Создайте классUserв том же пространстве имен с двумя свойствами:Name(string) иMemberId(int). Включите конструктор, который принимает оба значения.Library.cs: Здесь будет находиться ваша основная логика. Создайте классLibraryсо свойствомName(string) и конструктором для его установки. Добавьте методGetInfo(), который возвращает строку в формате"{Name} Library System Initialized".Program.cs: Объедините все здесь. Это ваша точка входа, где вы будете создавать экземпляры своих классов и проверять правильность работы структуры.
Вы получите три входных значения:
- Название библиотеки
- Запись о книге в формате
title|author - Запись о пользователе в формате
name|memberId
Создайте экземпляр Library с заданным именем, Book с указанным названием и автором, и User с указанным именем и ID участника. Затем выведите три строки:
- Результат вызова
GetInfo()для вашей библиотеки - Информацию о книге в формате
Book: {Title} by {Author} - Available: {IsAvailable} - Информацию о пользователе в формате
User: {Name} (ID: {MemberId})
Например, если входные данные:
City Central
The Great Gatsby|F. Scott Fitzgerald
Alice Johnson|1001Вывод должен быть следующим:
City Central Library System Initialized
Book: The Great Gatsby by F. Scott Fitzgerald - Available: True
User: Alice Johnson (ID: 1001)Эта структура следует принципу единственной ответственности (Single Responsibility Principle) — каждый файл отвечает за одну конкретную задачу. В следующих уроках вы расширите эти классы логикой заимствования, функционалом поиска и полноценным консольным интерфейсом!
Попробуйте сами
using System;
namespace LibrarySystem
{
class Program
{
public static void Main(string[] args)
{
// Чтение входных данных
string libraryName = Console.ReadLine();
string bookInput = Console.ReadLine();
string userInput = Console.ReadLine();
// Разбор данных о книге (формат: название|автор)
string[] bookParts = bookInput.Split('|');
string bookTitle = bookParts[0];
string bookAuthor = bookParts[1];
// Разбор данных о пользователе (формат: имя|ID участника)
string[] userParts = userInput.Split('|');
string userName = userParts[0];
int memberId = Convert.ToInt32(userParts[1]);
// TODO: Создать экземпляр Library с названием библиотеки
// TODO: Создать экземпляр Book с названием и автором
// TODO: Создать экземпляр User с именем и ID участника
// TODO: Вывести информацию о библиотеке, используя GetInfo()
// TODO: Вывести информацию о книге в формате: Book: {Title} by {Author} - Available: {IsAvailable}
// TODO: Вывести информацию о пользователе в формате: User: {Name} (ID: {MemberId})
}
}
}
Все уроки раздела Объектно-ориентированное программирование
1Основы ООП
Внешние файлыПространства имен и директивыВведение в классы и объектыКлючевое слово 'this'Методы и параметрыПоля и свойстваКонструкторыИнициализаторы объектовИтоги — Простой калькулятор4Наследование
Основы синтаксиса наследования (:)Ключевое слово 'base'Ключевые слова Virtual и OverrideЗапечатанные классыБазовый класс 'object'Итоги — Иерархия сотрудников7Продвинутые возможности
Перегрузка операторовИндексаторы (this[])Переопределение ToString()Методы расширенияПовторение — Пользовательский список10Паттерны проектирования. Часть 1
Введение в паттерны проектированияПотокобезопасный SingletonПаттерн FactoryПаттерн Observer (События)Паттерн Strategy13Финальные испытания
Платформа для онлайн-обученияКомпонент игрового персонажаСервис аренды транспорта2Свойства и статические члены
Автоматически реализуемые свойстваСвойства только для чтения и записиСтатические поля и методыСтатические классыЧлены в виде выражений5Полиморфизм и интерфейсы
Полиморфизм: компиляция vs выполнениеИнтерфейс vs абстрактный классМножественные интерфейсыЯвные интерфейсыUpcasting и DowncastingИтоги: Калькулятор фигур8Продвинутые концепции ООП
Композиция вместо наследованияGenerics (классы и методы)Делегаты и событияАтрибуты и рефлексияIDisposable и оператор usingОсновы Dependency Injection11Паттерны проектирования. Часть 2
Паттерн КомандаПаттерн АдаптерПаттерн ДекораторПаттерн Шаблонный методПаттерн СостояниеПаттерн Компоновщик3Архитектура классов
Экземплярные и статические данныеКлючевые слова 'readonly' и 'const'Опорные поляПовторение — Менеджер банковских счетов6Инкапсуляция
Модификаторы доступаСвойства для инкапсуляцииРеализация скрытия данныхПаттерны неизменяемостиИтоги — Записи студентов9Переменное количество аргументов
Ключевое слово 'params'Необязательные параметрыИменованные аргументыПерегрузка методов12Проект: Система библиотеки
Структура проектаМодели книг и пользователей