1. SOLID 원칙
SOLID 원칙은 객체지향 프로그래밍의 5가지 설계 원칙으로, 유지 보수 및 확장성을 위한 방법을 제공한다.
단일 책임 원칙 (SRP : Single Responsibility Principle)
= 각 클래스는 하나의 역할만 가지고 있어야 한다.
개방-폐쇄 원칙 (OCP : Open-Closed Principle)
= 확장에 열려있고, 변경에 닫혀 있어야 한다.
= 새로운 기능을 추가하는 경우, 기존 코드를 변경하지 않고 확장할 수 있어야 한다.
리스코프 치환 원칙 (LSP : Liskov Substitution Principle)
= 하위 클래스는 상위 클래스를 대체할 수 있어야 한다.
= 자식 클래스는 부모 클래스의 필드 및 메서드를 사용할 수 있어야 한다.
인터페이스 분리 원칙 (ISP : Interface Segregation Principle)
= 인터페이스는 최소한의 기능만을 제공해야 한다.
의존 역전 원칙 (DIP : Dependency Inversion Principle)
= 상위 모듈은 하위 모듈에 의존해서는 안되며, 양쪽 모두 추상화에 의존해야 한다.
= 하위 모듈의 변경이 상위 모듈에 영향을 주지 않기 위해 인터페이스나 추상 클래스에 의존해야 한다.
2. 다형성
다형성은 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다.
이를 통해 코드의 재사용성, 유연성, 유지보수성을 향상시킬 수 있다.
보통 override, overload, interface를 통해 구현한다.
3. override, overload
override
= 같은 메서드 이름 및 같은 매개변수 목록으로 상위 클래스의 메서드를 재정의하는 기법
class A
{
public virtual void show()
{
Console.WriteLine("A");
}
}
class B : A
{
public override void show()
{
//base.show();
Console.WriteLine("B");
}
}
override를 하기 위해서는 부모 클래스에서 virtual 키워드를 추가해야 한다.
base.show()를 사용하면 상위 클래스의 메서드를 그대로 가져올 수 있다.
overload
= 같은 메서드 이름 및 다른 매개변수 목록으로 메서드를 중복 정의하는 기법
class A
{
public void show()
{
Console.WriteLine("A");
}
public void show(int num)
{
Console.WriteLine(num);
}
public void show(string str)
{
Console.WriteLine(str);
}
}
4. 확장 메서드
확장 메서드
= 기존 클래스의 메서드를 확장하는 기법 ( 코드 재사용성, 유지 보수성 ↑ )
= 외부 클래스에서 기존 클래스의 메서드처럼 사용할 수 있는 새로운 메서드를 만드는 기법
public static class ExtensionMethod
{
public static int CountTarget(this string str, char ch)
{
int ret = 0;
foreach (char c in str)
{
if (c == ch)
{
ret++;
}
}
return ret;
}
}
class Program
{
static void Main(string[] args)
{
string str = "hello world";
Console.WriteLine(str.CountTarget('l'));
// 3
}
}
this 바로 뒤에 확장하려는 클래스를 넣고, 원하는 매개변수를 넣으면 된다.
string 처럼 기존에 존재하는 클래스에서 손쉽게 새로운 메서드를 만들 수 있다.
'CS > C#' 카테고리의 다른 글
[ C# ] 상속, 인터페이스, 추상 클래스 (1) | 2024.11.05 |
---|---|
[ C# ] 값 형식, 참조 형식 (0) | 2024.09.26 |
[ C# ] Callback, Delegate, Event (0) | 2024.08.09 |
[ C# ] 객체와 한정자 (0) | 2024.07.26 |