Front-End

vsoghlv@naver.com

자바스크립트 객체지향 프로그래밍 oop

프로그래밍 언어를 공부하다보면 객체지향 프로그래밍이라는 말이 많이 나온다. 나도 항상 봐오기는 했는데 아직도 이런 느낌인가 정도만 알고 있다.

MDN 문서

객체 지향 프로그래밍(OOP) 에는 몇가지 특징이 있는데

  1. 상속
  2. 추상화
  3. 캡슐화
  4. 다형성

이 있다.

상속

상속은 부모클래스의 여러 속성들을 자식클래스에서 받는 것을 의미한다. 쉽게 생각해 사람이라는 클래스 속성에 걷는다, 먹는다, 잔다 등이 있으면 김oo 클래스는 따로 걷는다, 먹는다, 잔다 를 설정하는 것이 아닌 사람클래스를 상속받으면 된다. 이런 식으로 상속을 하는 이유는 코드의 중복을 없에 유지 보수를 조금 더 쉽게 하기 위함이다. 만약 위의 예에서 사람클래스가 없다면 우리는 하나의 클래스를 만들 때 마다 매번 공통되는 속성을 선언해줘야 한다.

추상화

객체를 만들 때 원리 및 구동 방식을 사용자로부터 추상화 시켜주는 작업을 말한다. 만든 객체를 사용자들이 조금 더 쉽게 사용해도록 도와준다.

캡슐화

외부에서 데이터를 접근할 수 없도록 만들거나, 데이터 구조등을 하나로 묶는 것을 의미한다. 쉽게 생각해 우리가 먹는 캡슐 알약에 여러 성분이 섞여있지만 먹는 우리는 캡슐만 닿게 되는데 이와 비슷한 느낌이다.

다형성

형태는 같지만 기능이 다른 것을 의미한다. 즉 오버라이딩을 말하는데 이는 부모클래스에서 물려받은 속성을 자식클래스에서 재정의 하는 것이다. 즉, 사람클래스의 걷다를 사람1 과 사람2 가 상속받았는데 사람1에서는 걷다의 속도를 빠르게, 사람2에서는 걷다의 속도를 느리게 재정의 하는 것이다.

아직 내가 완전히 이해가 안되서 정리가 덜 된 부분도 있다. 추후에 공부를 더하고 다시 한번 정리해야 될 것 같다.