개발자 기술 면접 준비/정리

OOP란?

ucong 2021. 5. 3. 21:37

[ OOP(Object Oriented Programming)란? ]

- 객체지향 프로그래밍

- 현실 세계를 프로그래밍으로 옮겨와 현실 세계의 사물들을 객체로 보고, 그 객체로부터 개발하고자 하는 특징과 기능을 뽑아와 프로그래밍 하는 기법

- 하나의 클래스를 바탕으로 서로 다른 상태의 인스턴스를  만들면서 다른 행동들을 하게 할 수 있음.

- 사람의 사고와 가장 비슷하게 프로그래밍 가능

- 코드의 재사용(재활용성)과 유지보수에 용이

 

[ OOP의 특성 ]

캡슐화

- 데이터와 데이터를 처리하는 함수를 하나로 묶는 것 의미

추상화

- 데이터의 공통된 성질을 추출하여 슈퍼 클래스를 선정하는 개념

상속성

- 이미 정의된 상위클래스의 모든 속성과 연산을 하위클래스가 물려받는 것

다형성

- 하나의 클래스나 함수가 다양한 방식으로 동작 가능 한 것.

- 쉽게말해 같은 동작이지만 다른 결과물이 나오는 개념

- 오버라이딩과 오버로딩을 통해 다형성 구현 가능

ex ) 게임 > 다양한 캐릭터들에 대해서 동일한 버튼 클릭해 다른 스킬을 사용하게 하는 것                                                                                                                                                                                                                                        

 

[ OOP의 5가지 설계 원칙 ]

SRP(Single Responsibility Principle, 단일 책임 원칙) 

- 클래스는 단 하나의 목적을 가져야 하며, 클래스를 변경하는 이유는 단 하나의 이유여야 한다.

OCP(Open-Closed Principle, 개방 폐쇠 원칙)

- 클래스는 확장에는 열려 있고, 변경에는 닫혀 있어야 한다.

LSP(Liskov Substitution Principle, 리스코프 치환 원칙)

- 상위 타입의 객체를 하위 타입으로 바꾸어도 프로그램은 일관되게 동작해야 한다.

ISP(Interface Segregation Principle, 인터페이스 분리 원칙)

- 클리이언트는 이용하지 않는 메소드에 의존하지 않도록 인터페이스를 분리해야 한다.

DIP(Dependency Inversion Principle, 의존 역전 법칙)

- 클라이언트는 추상화(인터페이스)에 의존해야 하며, 구체화(구현된 클래스)에 의존해선 안된다.

 

 

[참고사이트]

https://limkydev.tistory.com/30

https://minchoi0912.tistory.com/93

https://mangkyu.tistory.com/88

'개발자 기술 면접 준비 > 정리' 카테고리의 다른 글

클래스/인스턴스란?  (0) 2021.05.21
객체란?  (0) 2021.05.21
AOP란?  (0) 2021.05.20
함수형 프로그래밍이란?  (0) 2021.05.20
절차지향 프로그래밍 VS 객체지향 프로그래밍  (0) 2021.05.19