[ 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
'개발자 기술 면접 준비 > 정리' 카테고리의 다른 글
클래스/인스턴스란? (0) | 2021.05.21 |
---|---|
객체란? (0) | 2021.05.21 |
AOP란? (0) | 2021.05.20 |
함수형 프로그래밍이란? (0) | 2021.05.20 |
절차지향 프로그래밍 VS 객체지향 프로그래밍 (0) | 2021.05.19 |