본문 바로가기

기타/CS (Computer Science)

IT기업 CS[Computer Science] 기술면접 - OOP

728x90

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) : 의존관계 역전 원칙

- 상위 모델은 하위 모델에 의존하면 안되며, 둘 다 추상화에 의존해야 한다.

- 추상화는 세부 사항에 의존하면 안 된다.

 

긴 글 읽어주셔서 감사합니다.

부족한 설명은 댓글로 달아주시면 추가하도록 하겠습니다.

감사합니다. :)

 

728x90