OOP란 무엇인가?
-OOP의 줄임말은 Object Oriented Programming의 줄임말로 각각의 뜻은 Object(객체), Oriented(지향), Programming(프로그래밍)으로 이루어져 있다.
객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 소프트웨어 개발(대규모 프로젝트)에 많이
사용된다. 또한, 프로그래밍을 더 배우기 쉽게 하고 소프트웨어 개발과 보수를 간편하게 하며, 직관적인 코드 분석을
가능하게 하는 장점이다.
OOP란 프로그램을 개발할때 직관적으로 코드를 분석하게끔 하며, 유지보수를 간편하게 해주기 위해 이루어진 것이다. |
OOP의 5가지 설계 원칙 (SOLID)
1. SRP (Single Responsibility Principle) : 단일 책임 원칙 |
2. OCP (Open-Closed Principle) : 개방 폐쇄 원칙 |
3. LSP (Liskov Substitution Principle) : 리스코프 치환 원칙 |
4. ISP (Interface Segragation Priciple) : 인터페이스 분리 원칙 |
5. DIP (Dependency Inversion Principle) : 의존관계 역전 원칙 |
1. SRP (Single Responsibility Principle) : 단일 책임 원칙
- 하나의 클래스(class)는 하나의 책임만 가진다.
- 하나의 클래스(class)에 너무 많은 책임을 부과하지 말자.
ex) SRP의 좋은(good) 예시
public class Person {
public static void cook() {
System.out.println("커피를 마신다.");
}
public static void shoot() {
System.out.println("자전거를 탄다.");
}
public static void drive() {
System.out.println("걸어 간다.");
}
}
ex) SRP의 좋지 않은(BAD) 예시
public class coffee {
public static void cook() {
System.out.println("커피를 마신다.");
}
public class bicycle {
public static void shoot() {
System.out.println("자전거를 탄다.");
}
}
public class walk {
public static void drive() {
System.out.println("걸어 간다.");
}
}
2. OCP (Open-Closed Principle) : 개방 폐쇄 원칙
- 확장에 대해서는 열려 있어야 하며, 수정에 대해서는 닫혀 있어야 한다.
- 부모 class에서 자식 class를 만들 때, 자식 class에서 기능을 추가/수정할 수 있지만,
자식 class를 위해 부모 class가 수정될 필요는 없다.
3. LSP(Liskov Substitution Principle); 리스 코프 치환 원칙
- 이 원칙은 부모 클래스의 자식인 클래스가 예기치 않은 동작 없이 부모 대신 사용할 수 있도록 한다.
즉, 부모 class의 위치에 자식 class로 넣어도 어떠한 문제가 없어야 하는 원칙이다.
4. ISP (Interface Segragation Priciple) : 인터페이스 분리 원칙
- 인터페이스를 클라이언트에 분리시키라는 설계 원칙이다.
- 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다.
- SRP 원칙과 밀접하다.
5. DIP (Dependency Inversion Principle) : 의존관계 역전 원칙
- 상위 모델은 하위 모델에 의존하면 안되며, 둘 다 추상화에 의존해야 한다.
- 추상화는 세부 사항에 의존하면 안 된다.

긴 글 읽어주셔서 감사합니다.
부족한 설명은 댓글로 달아주시면 추가하도록 하겠습니다.
감사합니다. :)