Menu
Coddy logo textTech

프로젝트 구조

Coddy C# 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 70개 중 62번째.

challenge icon

챌린지

쉬움

도서관 시스템 프로젝트를 위한 기초를 세워봅시다! 앞으로의 레슨을 통해 완전한 도서관 관리 애플리케이션으로 성장할 기본적인 파일 구조를 만들 것입니다.

코드를 각각 특정 책임을 가진 네 개의 파일로 구성하게 됩니다:

  • 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를 생성하세요. 그런 다음 세 줄을 출력하세요:

  1. 도서관 인스턴스에서 GetInfo()를 호출한 결과
  2. Book: {Title} by {Author} - Available: {IsAvailable} 형식의 도서 정보
  3. 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})
        }
    }
}

객체 지향 프로그래밍의 모든 레슨