객체 지향 개념 정리

3000·2021년 9월 18일
0

객체 지향 프로그래밍

프로그램을 서로 관련이 있는 Object로 묶어서 프로그래밍하는 것을 말합니다. 객체 지향 프로그래밍은 사람이 세상을 보고 이해하는 방법과 유사합니다. 코드를 추상화하여 직관적으로 생각할 수 있습니다.

객체 지향 프로그래밍은 오브젝트 단위로 만들어 나가기 때문에 어느 한 곳에서 문제가 발생했을 경우, 해당하는 부분만 수정할 수 있습니다. 또, 재사용성이 뛰어나고 확장성이 높아 코드를 작성하는 데에 큰 도움을 줄 수 있습니다.

즉, 생산성이 증가하고, 더 높은 퀄리티로 코드를 빠르게 작성할 수 있습니다.

클래스와 인스턴스

클래스라고 부르는 데이터 모델의 청사진을 사용해, 새로운 객체를 붕어빵처럼 생성할 수 있습니다.

  • 클래스는 constructor를 포함합니다.
class Cat{
   constructor(name,age){
     this.name = name;
     this.age = age;
   }
}

인스턴스 객체, 줄여서 인스턴스라 부르며 클래스를 통해 만들어진 객체를 말합니다.

const cat = new Cat('navi',3);

중요 컨셉

1. Encapsulation 캡슐화

  • 서로 관련있는 데이터와 메소드를 하나의 객체 안에 넣어서 묶는 것으로, 느슨하게 결합하는 것을 말합니다. 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라 실제 모습에 가깝게 코드를 작성하는 것을 의미합니다.
  • 내부 데이터나 내부 구현이 외부로 노출되지 않도록 하기 위함입니다.

2. Inheritance 상속

  • 부모 클래스의 특징을 자식 클래스에게 물려주는 것을 말합니다.

예를들어, 다음과 같이 사람 그리고 학생이라는 클래스가 있다고 가정해봅시다.

// 사람
class Human{
  name
  age
  sleep()
}

// 학생
class Student{
  name 
  age 
  score
  sleep()
  learn()
}

Student 클래스는 Human 클래스와 공통된 특성을 가지고 있습니다.
학생의 본질은 결국 사람이므로 학생 클래스를 재구현 하지 않고, 사람 클래스로부터 속성과 메소드를 상속받을 수 있습니다.

3. Abstraction 추상화

  • 내부 구현은 복잡하지만 실제 노출되는 부분은 단순하게 만드는 것을 말합니다.

예를들어, 우리가 휴대폰을 사용할 때 내부 구현 사항은 모르더라도 전화를 걸거나 인터넷 서치를 할 수 있습니다. 이처럼 추상화를 통해 외부에서 보이는 인터페이스, 즉 함수를 이용해 쉽게 사용할 수 있습니다.

4. Polymorphism 다형성

  • 같은 메소드라 하더라도 다양한 방식으로 구현될 수 있습니다. 말하다라는 메소드가 있을 때 사람과 동물들이 말하는 방식과 제각각의 소리를 내는 것처럼 다양한 형태를 가질 수 있습니다.

0개의 댓글