[TIL] JavaScript 와 OOP

Newbiechobo·2021년 4월 9일
1
post-thumbnail

"코드스테이츠 이머시브 코스의 첫 시작 이후 첫 블로깅이다."

이번 주제는 객체 지향 프로그래밍
OOP(Object Oriented Programming)
이다

OOP란 무엇인가!?

초기 프로그래밍 언어인 C 나 포트란은 절차지향언어, (뭐 쉽게 말해서? 위에서 아래로 순차대로 진행되는 명령이라고 생각하면된다), 인데 반해 이후 트렌드는 객체지향언어가 인기를 끌었고 그로 인해 C# C++ JAVA 등 이후 언어들은 객체지향언어의 특성을 가졌다

객체 지향 프로그래밍의 가장 대표적인 장점은 재사용성이다.

객체지향언어의 가장 기본적인 특성 4가지는

  • Encapsulation (캡슐화)
  • Inheritance (상속)
  • Abstraction (추상화)
  • Polymorphism (다형성)

인데 이렇게 말해도 처음엔 전혀 감도 안온다. 이것도 컴퓨터 언어인가

우선 가장 먼저 캡슐화(Encapsulation)의 개념은
우리가 약국에서 처방받는 알약과도 같은데 외부에서 알약안에 정확히 뭐가 들어있는지는 보이지 않지만 그 알약이 어떤 약인지는 알아볼 수 있게 노출되어야 한다는 것이다. 이 같은 캡슐화의 특징을 '은닉화'라고 한다.
또, 그 장점은 느슨한 결합, 즉 캡슐알약을 열어서 내용물을 수정할 수 있다는 점이다.

다음 추상화(Abstraction) 는 속은 매우 복잡한데 노출되는 부분은 단순하게 한다는 개념으로 수많은 회로와 반도체로 이루어진 기기가 실제로 외부에서 사용하는 사람의 입장에선 명료하게 표현되어 사용이 수월하게 해놓은 점을 예를 들 수 있겠다. 뭐 더 간단히 설명하자면 인터페이스를 최대한 단순하고 직관적으로 표현하라는 의미다.

Inheritance (상속) 은 마치 부모님이 자식에게 무언가를 상속, 즉 물려주는? 개념과도 같다. 그저 그게 돈이나 재산보단 탈모나 신장 등 유전적인 것과 비슷할뿐. 인간이라는 클래스가 있을때, 학생이라는 클래스는 인간에 속하니까! 굳이 새롭게 속성을 구현하는게 아니라 인간의 속성(성별, 나이 등)을 물려받는다. 거기에 학생 고유의 특성/속성인 공부하다 같은 메소드를 추가해주면 효율적인 프로그래밍이 된다.

마지막 다형성(Polymorphism) 은 많은 poly 와 형태 morph라는 뜻인 만큼 다양한 형태를 가진다는 뜻이다.
예를 들어 동물이라는 클래스가 각각 개라는 클래스와 사자라는 클래스의 부모로써 짖다() 라는 메소드를 상속해준다면, 개와 사자는 모두 짖다()라는 메소드를 가지고 있지만 그 형태는 멍멍이나 어흥 등으로 다른 형태를 지닌다는 점이다.

객체지향 프로그래밍은 이처럼 같은 행동을 반복하기보다 작은 수정등을 통해 객체를 재사용하기 편리하다는 점이 장점이다. 하지만 간단한 프로그램까지 객체화에 집중하다보면 프로그램이 쓸데없이 무거워질 수도 있다! 절차지향과 객체지향 모두 장단점이 있다!

이상이다!

profile
code_lover wanna be code_master

0개의 댓글