본문 바로가기
게임 개발 일지/내일배움캠프 TIL

[C#] SOLID 원칙과 상속의 특징

by 빛하_ 2024. 2. 8.
기술면접 대비하기 #10

 

 

Q. SOLID 원칙이란 무엇인가?

객체지향 설계에서 지켜야 할 5개의 소프트웨어 개발 원칙.

 

1) SRP : 단일 책임 원칙

한 클래스는 하나의 책임(기능)만 가져야 한다.

= 기능을 하나만 가지고 있을 때, 기능 수정이 필요할 때 코드를 변경하기 쉽기 때문. (유지보수성 상향)

 

2) OCP : 개방 폐쇄 원칙

확장에는 열림(Open) / 수정에는 닫힘(Closed)

즉, 기능 추가를 위해 클래스 확장을 하되 수정을 최소화하는 방식이다.

상속을 통한 클래스 구축, 추상화 사용의 이점 극대화.

 

3) LSP : 리스코프 치환 원칙

부모 클래스로 객체를 선언해 자식 클래스의 인스턴스를 받으면, 부모의 메서드를 사용해도 정상적으로 작동해야 한다.

오버라이딩 시 주의해야할 원칙이며, 다형성 원리를 이용하기 위한 원칙.

 

4) ISP : 인터페이스 분리 원칙

인터페이스를 사용에 맞게 잘 분리시켜야 한다. (인터페이스의 단일 책임)

하나의 인터페이스보다 기능에 맞게 분리된 여러 개의 인터페이스가 낫다.

여기서 인터페이스는 클라이언트의 목적과 용도를 기준으로 분리한다.

(주의사항 : 인터페이스는 한 번 구성하면 다시 바꾸지 않는 것이 좋다.)

 

5) DIP : 의존 역전 원칙

특정 클래스를 참조할 때, 직접 참조가 아닌 대상의 상위요소(추상 클래스, 인터페이스 등)로 참조하라.

즉, 참조할 때 대상이 변화에 취약하지 않은 것을 선택하라는 것이다. (수정이 거의 필요하지 않은 쪽으로)

이 원칙의 의의는 각 클래스 간의 결합도를 낮춤으로써 객체지향의 추상화를 실현하는 것이다.

 

 

 

Q. 상속이란 무엇인가?

새로운 클래스가 기존 클래스의 자료와 연산을 이용할 수 있게 하는 기능이다. 상속을 받는 새로운 클래스는 파생 클래스, 하위 클래스, 자식 클래스라고 하며 상속을 주는 기존의 클래스를 기반 클래스, 상위 클래스, 부모 클래스라고 한다. 상위 클래스의 특성과 기능을 그대로 물려받음으로써, 하위 클래스를 이용해 프로그램의 요구에 맞추어 클래스를 수정 가능하고 클래스 간의 종속 관계를 형성함으로써 객체를 조직화할 수 있다. 캡슐화 및 재사용이 용이하도록 해준다.

 

상속은 클래스 간 공유될 수 있는 속성과 기능들을 상위 클래스로 추상화 시켜 해당 상위 클래스로부터 확장된 여러 개의 하위 클래스들이 모두 상위 클래스의 속성과 기능들을 간편하게 사용할 수 있도록 한다. 클래스 간 공유하는 속성과 기능들을 반복적으로 정의할 필요 없이 딱 한 번만 정의해두고 간편하게 재사용할 수 있어 반복적인 코드를 최소화하고 공유하는 속성과 기능에 간편하게 접근하여 사용할 수 있도록 한다.

 

 

댓글