요약 - Custom List
Coddy C# 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 70개 중 40번째.
챌린지
쉬움이 장에서 배운 모든 고급 기능들(연산자 오버로딩, 인덱서, 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() 확장 메서드를 사용하여 결합된 리스트의 합계를 출력하세요.
}
}