개발은 재밌어야 한다
article thumbnail
SOLID 원칙 5 - DIP: 의존성 역전 원칙 (Dependency Inversion)

DIP 객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 마지막 다섯번째 원칙인 DIP(Dependency Inversion Principle)에 대해 알아보겠습니다. 의존관계 역전 원칙 (Dependency inversion principle) 객체 지향 프로그래밍에서 의존관계 역전 원칙은 소프트웨어 모듈들을 분리하는 특정 형식을 지칭한다. 이 원칙을 따르면, 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다. 이 원칙은 다음과 같은 내용을 담고 있다. 첫째, 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야..

article thumbnail
SOLID 원칙 4 - ISP: 인터페이스 분리 원칙 (Interface Segregation Principle)

객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 네번째 원칙인 ISP(Interface Segregation Principle)에 대해 알아보겠습니다. ISP(인터페이스 분리 원칙)은 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙이다. - 위키백과- 우선 여기서 말하는 인터페이스의 개념에 대해 잠깐 알아보자 인터페이스란? 동일한 목적 하에 동일한 기능을 수행하게끔 강제하는 것이 인터페이스의 역할이자 개념이다. 어떤 클래스가 있고 그 클래스가 특정한 인터페이스를 사용하여 구현된다면 그 클래스는 반드시 그 인터페이스에 포함되어 있는 메소드를 구현하도록 강제하는 것이다. 즉, 자바의 다형성을 극대화하여 개발 코드 수정을 줄이고 프로그램 ..

article thumbnail
SOLID 원칙 3 - LSP: 리스코프 치환 원칙 (Liskov Substitution Principle)

객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 세번째 원칙인 LSP(Liskov Substitution Principle)에 대해 알아보겠습니다. 치환성(영어: substitutability)은 객체 지향 프로그래밍 원칙이다. 컴퓨터 프로그램에서 자료형 {\displaystyle S}S가 자료형 {\displaystyle T}T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 {\displaystyle T}T의 객체를 자료형 {\displaystyle S}S의 객체로 교체(치환)할 수 있어야 한다는 원칙이다. 리스코프 치환 원칙(영어: Liskov substitution principle, LSP)은 바바라 리스코프가..

article thumbnail
SOLID 원칙 2 - OCP: 개방-폐쇄 원칙 (Open-Closed Principle)

SOLID 객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 두번째 원칙인 ORP(Open-Closed Principle)에 대해 알아보겠습니다. Open-Closed Principle라는 뜻을 한국말 그대로 받아들이면 열려있으면서 닫힌 원칙이라는 말이 됩니다. 열려있으면서도 닫혀있다는게 무슨 소리인거지.. 어렵게 생각할 수도 있지만 간단하게 생각하면 OCP는 매우 명확한 의미를 가집니다. OCP에서의 Open은 확장에 대해서, Closed는 변경에 대해서 의미합니다. 즉, "확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다."라는 뜻입니다. 개발적인 의미로는 기존의 코드를 변경하지 않으면서 기능을 추가할 수 있도록 설계가 되어야 한다는 뜻을 가지는 원..

article thumbnail
SOLID 원칙 1 - SRP: 단일 책임 원칙 (Single Responsibility Principle)

객체 지향 프로그래밍 및 설계에서 5가지 기본원칙(SRP, OCP, LSP, ISP, DIP)의 앞글자를 따서 SOLID 원칙이라고 합니다. '원칙이란 무엇일까?' 원칙을 이렇게 정의합니다 "많은 경우에 적용되는 기본적인 규칙이나 법칙." SOLID 원칙은 객체 지향 프로그래밍 및 설계에서 많은 경우에 적용되는 규칙이나 법칙입니다. '그럼 SOLID를 적용하는 이유는 뭘까?' 시스템에 예상하지 못한 변경사항이 발생하더라도, 유연하게 대처하고 이후에 확장성이 있는 시스템 구조를 설계하기 위해서입니다. 간단하게 말해서 '유지보수성과 확장성'을 위해서이다. SOILD는 객체 지향 프로그래밍에서 변경사항이 있을때 자기 클래스안에 응집도는 높이고, 다른 클래스 사이의 결합도는 낮추는 High Cohesion - ..