카테고리 없음

C#의 주요 개념들

이황충 2024. 7. 2. 20:58

유니티 게임개발캠프 TIL 48일차

 

1. SOLID 원칙

SOLID 원칙은 객체지향 설계에서 유지보수성과 확장성을 높이는 다섯 가지 기본 원칙을 의미합니다.

  • Single Responsibility Principle (SRP): 클래스는 하나의 책임만 가져야 합니다.
  • Open/Closed Principle (OCP): 소프트웨어 구성 요소는 확장에는 열려 있고, 수정에는 닫혀 있어야 합니다.
  • Liskov Substitution Principle (LSP): 서브 타입은 언제나 자신의 기반 타입으로 교체할 수 있어야 합니다.
  • Interface Segregation Principle (ISP): 클라이언트는 자신이 이용하지 않는 메서드에 의존하지 않아야 합니다.
  • Dependency Inversion Principle (DIP): 고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 추상화에 의존해야 합니다.

2. 객체지향 프로그래밍의 속성 중 하나인 다형성과 이를 활용한 설계의 장점

**다형성(Polymorphism)**은 동일한 인터페이스 또는 부모 클래스를 통해 다양한 객체를 다룰 수 있는 능력입니다.

다형성의 장점:

  • 유연성: 다양한 객체를 동일한 방식으로 다룰 수 있어 코드의 유연성이 높아집니다.
  • 확장성: 새로운 클래스가 추가되더라도 기존 코드를 수정하지 않고 기능을 확장할 수 있습니다.
  • 유지보수성: 코드의 변경이 최소화되어 유지보수가 용이합니다.

3. override와 overload

Override(오버라이드):

  • 정의: 부모 클래스의 메서드를 자식 클래스에서 재정의하는 것.
public class Parent
{
    public virtual void Display()
    {
        Console.WriteLine("Parent Display");
    }
}

public class Child : Parent
{
    public override void Display()
    {
        Console.WriteLine("Child Display");
    }
}

Overload(오버로드):

  • 정의: 같은 이름의 메서드를 매개변수의 타입이나 개수를 다르게 하여 여러 개 정의하는 것.
public class Calculator
{
    public int Add(int a, int b)
    {
        return a + b;
    }

    public double Add(double a, double b)
    {
        return a + b;
    }
}

 

4. 확장 메서드

**확장 메서드(Extension Method)**는 기존 클래스에 새로운 메서드를 추가하여 클래스의 코드를 수정하지 않고도 인스턴스 메서드처럼 사용할 수 있게 해주는 기능입니다.

예시:

예를 들어, int[] 타입의 배열에 CalculateAverage라는 확장 메서드를 추가하여 배열의 평균값을 계산할 수 있습니다.

 

using System;

namespace ArrayExtensions
{
    public static class ArrayExtension
    {
        public static double CalculateAverage(this int[] array)
        {
            // 배열이 비어 있는 경우 0을 반환합니다.
            if (array == null || array.Length == 0)
            {
                return 0;
            }

            double sum = 0;
            foreach (int number in array)
            {
                sum += number;
            }

            // 평균값을 계산합니다.
            return sum / array.Length;
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            int[] numbers = { 1, 2, 3, 4, 5 };
            
            // 확장 메서드를 사용하여 배열의 평균값을 계산하고 출력
            double average = numbers.CalculateAverage();
            Console.WriteLine($"The average is: {average}");
        }
    }
}

활용:

이 확장 메서드를 통해 배열의 평균값을 손쉽게 계산할 수 있으며, int[] 배열에 새로운 기능을 추가하여 가독성과 재사용성을 높일 수 있습니다.