카테고리 없음
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[] 배열에 새로운 기능을 추가하여 가독성과 재사용성을 높일 수 있습니다.