객체 지향 프로그래밍
객체 지향 언어
JAVA
, C++
, C#
등..
(자바스크립트
는 객체 지향 언어는 아니지만, 객체 지향 패턴
으로 작성할 수 있다)
OOP의 특징
- 프로그램 설계 철학
- 객체로 그룹화된다. ex)클래스와 인스턴스
- 4가지의 주요 개념을 통해 재사용성을 얻을 수 있다.
캡슐화
, 상속
, 추상화
, 다형성
객체 지향 프로그래밍(Object Oriented Programming)
사람이 세계를 보고 이해하는 방법을 흉내 낸 방법론
단순히 별개의 변수와 함수로 순차적으로 작동하는 절차 지향 프로그래밍을 넘어서 데이터의 접근과 데이터의 처리 과정에 대한 모형을 만들어내는 방식이다.
데이터의 기능과 별개로 취급되지 않고, 한 번에 묶여서 처리할 수 있게 해준다.
캡슐화(Encapsulation)
- 데이터와 기능을 하나의 단위로 묶는 것
- 은닉(hiding): 구현은 숨기고, 동작은 노출시킨다
-내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
- 느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있다.
-코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미한다.
더 엄격한 클래스는 속성의 직접적인 접근을 막고, 설정하는 함수(setter), 불러오는 함수(getter)를 철저하게 나누기도 한다.
- 캡슐화는 코드나 데이터의
은닉
에 포커스가 맞춰져있다.
추상화(Inheritance)
- 내부 구현은 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념.
- 인터페이스의 단순화 ex)
전화
클래스를 사용하는 사람이 필요하지 않은 것을 노출시키지 않고
, 단순한 이름으로 정의
하는 것에 포커스가 맞춰져 있다.
- 클래스 정의 시, 메서드와 속성만 정의한 것을 인터페이스라고 부른다.
상속(Abstraction)
- 부모 클래스의 특징을 자식 클래스가 물려받는 것
기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다.
- 같은 메서드와 속성을 그대로 구현만 하는 것이 아니라, 다른 속성/메서드를 추가하여 사용한다.
다형성(Polymorphism)
- 부모 클래스에서 하나의 메서드를 만들어 자식 클래스에 다양한 속성을 한번에 작동하게 하는 것.
4가지의 주요 개념의 장점
- 캡슐화 : 코드를 복잡하지 않게 만들고,
재사용성
을 높인다.
- 추상화 : 코드를 복잡하지 않게 만들고, 단순화된 사용으로
변화에 대한 영향을 최소화
한다.
- 상속 : 불필요한 코드를 줄여 재사용성을 높인다.
- 다형성 : 동일한 메서드에 대해
if
/else if
와 같은 조건문 대신 객체의 특성에 맞게 달리 작성할수 있다.