프로젝트 구조
Coddy C# 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 70개 중 62번째.
챌린지
쉬움도서관 시스템 프로젝트를 위한 기초를 세워봅시다! 앞으로의 레슨을 통해 완전한 도서관 관리 애플리케이션으로 성장할 기본적인 파일 구조를 만들 것입니다.
코드를 각각 특정 책임을 가진 네 개의 파일로 구성하게 됩니다:
Book.cs: 이 파일은 Book 모델을 담습니다. 우선,LibrarySystem네임스페이스에 세 개의 자동 구현 프로퍼티Title(string),Author(string),IsAvailable(bool, 기본값true)을 가진Book클래스를 생성하세요. 제목과 저자를 매개변수로 받는 생성자를 추가하세요.User.cs: 이 파일은 User 모델을 포함합니다. 동일한 네임스페이스에Name(string)과MemberId(int)라는 두 개의 프로퍼티를 가진User클래스를 생성하세요. 두 값을 모두 받는 생성자를 포함하세요.Library.cs: 이곳에 핵심 로직이 위치합니다.Name프로퍼티 (string)와 이를 설정하는 생성자를 가진Library클래스를 생성하세요."{Name} Library System Initialized"형식의 문자열을 반환하는GetInfo()메서드를 추가하세요.Program.cs: 여기서 모든 것을 하나로 합칩니다. 이곳은 클래스의 인스턴스를 생성하고 구조가 올바르게 작동하는지 확인하는 진입점(entry point)입니다.
세 개의 입력을 받게 됩니다:
- 도서관 이름
title|author형식의 도서 정보name|memberId형식의 사용자 정보
주어진 이름으로 Library 인스턴스를 생성하고, 제공된 제목과 저자로 Book을, 제공된 이름과 회원 ID로 User를 생성하세요. 그런 다음 세 줄을 출력하세요:
- 도서관 인스턴스에서
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();
// 도서 입력 파싱 (형식: title|author)
string[] bookParts = bookInput.Split('|');
string bookTitle = bookParts[0];
string bookAuthor = bookParts[1];
// 사용자 입력 파싱 (형식: name|memberId)
string[] userParts = userInput.Split('|');
string userName = userParts[0];
int memberId = Convert.ToInt32(userParts[1]);
// TODO: libraryName으로 Library 인스턴스 생성
// TODO: title과 author로 Book 인스턴스 생성
// TODO: name과 member ID로 User 인스턴스 생성
// TODO: GetInfo()를 사용하여 도서관 정보 출력
// TODO: 다음 형식으로 도서 정보 출력: Book: {Title} by {Author} - Available: {IsAvailable}
// TODO: 다음 형식으로 사용자 정보 출력: User: {Name} (ID: {MemberId})
}
}
}