객체 지향 프로그래밍(OOP)

khundi·2022년 9월 21일
0
post-thumbnail

객체 지향 프로그래밍(OOP, Object Oriented Programming)

객체 지향 프로그래밍(OOP, Object Oriented Programming)이란 프로그램 설계방법론이자 개념의 일종이다.

객체 지향 프로그래밍 패러다임이 등장하기전 프로그래밍은 절차 지향 프로그래밍(POP, Procedure Oriented Programming)으로 코드의 흐름대로 실행 순서, 즉 절차가 중점이 되는 프로그래밍이 주로 사용되어 왔다.

객체 지향 프로그래밍의 주요 개념 4가지

- 캡슐화

캡슐화는 데이터와 기능을 하나의 단위로 묶는 것이다.

  • 은닉: 구현은 숨기고, 동작은 노출시킴
  • 느슨한 결합에 유리: 언제든 구현을 수정할 수 있음

은닉화의 장점으로 내부 데이터를 객체 외부의 함수가 내부 데이터를 변경할 수 없어 예상치 못한 side-effect를 줄일 수 있다.

- 추상화

추상화는 내부는 아주 복잡한데, 노출된 부분은 단순하게 만든다는 개념이다.

노트북을 예로 들면 우리가 노트북을 사용할 때 내부의 어떤 부품이 어떻게 전기적인 신호를 보내고 하는지 알지 않아도 되듯 단순히 노트북을 켜고 마우스와 키보드를 이용해서 원하는 작업을 하는 것으로 단순화할 수 있다.

필요하지 않은 기능들이 너무 많이 노출되지 않아서 예기치 못한 데이터의 변화가 일어나지 않도록 만들어준다.

불필요한 부분을 도려내가며 그린 추상화(?)

- 상속

상속을 함으로써 가장 크게 얻을 수 있는 것은 재사용성이다.

예를 들어 이미 잘 만들어진 노트북이라는 클래스가 있다. 추가적으로 맥북이라는 클래스를 만든다고 해보자. 앞서 잘 만들어진 노트북이라는 클래스를 맥북에 상속해주게 되면 꽤나 효율적으로 코드를 작성할 수 있다. 이제 맥북 클래스에 맥북만의 속성과 메서드만 코드를 작성하면 될 것이다!

- 다형성

다형성이란 같은 메서드를 가지고 각 객체마다 다양한 형태의 동작을 하는 것을 말한다.

예를 들어 성훈이라는 사람(성훈 인스턴스)에게 자기소개(자기소개 메서드 호출)를 해보라고 했을 때와 민수라는 사람에게 자기소개를 해보라고 했을 때 각자 다른 자기소개를 하듯이 자기소개라는 하나의 메서드로 다양한 형태의 자기소개가 나오는 것을 다형성이라고 볼 수 있다.

언어 자체에서 다형성을 제공하지 않는다면

if (type === '성훈') {
	성훈의자기소개()
} else if (type === '민수') {
  	민수의자기소개()
}

이처럼 각각의 자기소개를 만들어야 할 것이다.

동물들에게 말해보라고 하면 각자의 방식대로 말을 한다.

profile
안녕하세요. 웹 프론트엔드 개발자 전성훈입니다.

0개의 댓글