Menu
Coddy logo textTech

요약 - Custom List

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

challenge icon

챌린지

쉬움

이 장에서 배운 모든 고급 기능들(연산자 오버로딩, 인덱서, ToString() 재정의, 확장 메서드)을 결합하여, 자연스럽고 직관적으로 사용할 수 있는 컬렉션인 CustomList 클래스를 만들어 봅시다.

코드는 다음 세 개의 파일로 구성됩니다:

  • CustomList.cs: 내부 정수 배열을 감싸고 직관적인 접근 패턴을 제공하는 CustomList 클래스를 Collections 네임스페이스 안에 생성하세요. 리스트는 다음을 포함해야 합니다:
    • 항목을 저장할 프라이빗 정수 배열과 저장된 항목의 수를 추적하는 Count 속성 (프라이빗 세터 포함)
    • 용량(정수)을 인자로 받아 내부 배열을 해당 크기로 초기화하는 생성자
    • 다음 사용 가능한 위치에 항목을 추가하는 Add(int item) 메서드 (공간이 있는 경우)
    • 위치별로 항목을 가져오고 설정할 수 있는 인덱서 this[int index]
    • 두 개의 CustomList를 결합하여 양쪽의 모든 항목을 포함하는 새로운 리스트를 만드는 오버로드된 + 연산자 (새 리스트의 용량은 두 리스트의 Count 합계여야 함)
    • 항목들을 [item1, item2, item3] 형식으로 반환하는 재정의된 ToString() 메서드 - 빈 슬롯이 아닌 Count까지의 항목만 포함해야 함
  • ListExtensions.cs: Collections 네임스페이스에 CustomList를 위한 확장 메서드를 가진 정적 클래스 ListExtensions를 생성하세요:
    • Sum() - 리스트에 있는 모든 항목의 합계(Count까지)를 반환합니다.
  • Program.cs: 메인 파일에서 두 개의 CustomList를 생성하고 각각에 항목을 추가한 다음, 모든 기능이 함께 작동하는 것을 보여주세요. 인덱서를 사용하여 항목에 접근하고, + 연산자로 리스트를 결합하고, ToString()을 사용하여 출력하고, 확장 메서드를 사용하여 합계를 계산하세요.

여섯 개의 입력을 받게 됩니다:

  • 첫 번째 리스트에 추가할 세 개의 정수
  • 두 번째 리스트에 추가할 세 개의 정수

첫 번째 리스트는 용량 5로, 두 번째 리스트는 용량 3으로 생성하세요. 각각의 리스트에 입력받은 세 개의 값을 추가하세요.

출력은 다음 형식을 따릅니다:

List 1: {ToString()}
List 2: {ToString()}
List 1[0]: {first item}
Combined: {ToString() of combined list}
Combined sum: {Sum()}

예를 들어, 입력값이 10, 20, 30, 5, 15, 25라면 출력은 다음과 같아야 합니다:

List 1: [10, 20, 30]
List 2: [5, 15, 25]
List 1[0]: 10
Combined: [10, 20, 30, 5, 15, 25]
Combined sum: 105

인덱서가 배열과 같은 접근을 제공하고, + 연산자가 리스트를 자연스럽게 결합하며, ToString()이 읽기 쉬운 출력을 제공하고, 확장 메서드가 유틸리티 기능을 추가하는 등 모든 요소가 어떻게 조화롭게 작동하는지 확인해 보세요. 이것이 바로 잘 설계된 클래스의 모습입니다!

직접 해보기

using System;
using Collections;

class Program
{
    public static void Main(string[] args)
    {
        // 6개의 정수를 읽습니다.
        int a1 = Convert.ToInt32(Console.ReadLine());
        int a2 = Convert.ToInt32(Console.ReadLine());
        int a3 = Convert.ToInt32(Console.ReadLine());
        int b1 = Convert.ToInt32(Console.ReadLine());
        int b2 = Convert.ToInt32(Console.ReadLine());
        int b3 = Convert.ToInt32(Console.ReadLine());

        // TODO: 용량이 5인 첫 번째 CustomList를 생성하세요.
        // TODO: 첫 번째 리스트에 a1, a2, a3를 추가하세요.

        // TODO: 용량이 3인 두 번째 CustomList를 생성하세요.
        // TODO: 두 번째 리스트에 b1, b2, b3를 추가하세요.

        // TODO: ToString()을 사용하여 리스트 1을 출력하세요.
        // TODO: ToString()을 사용하여 리스트 2을 출력하세요.
        // TODO: 인덱서를 사용하여 리스트 1[0]을 출력하세요.
        // TODO: + 연산자를 사용하여 리스트를 결합하고 결과를 출력하세요.
        // TODO: Sum() 확장 메서드를 사용하여 결합된 리스트의 합계를 출력하세요.
    }
}

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