TIL : OOP in JavaScript

영아·2021년 4월 9일
0


객체지향 프로그래밍....?
이름부터 너무 생소하고 어렵게 느껴진다 ..
자바스크립트는 객체지향 언어라고 하는데 늘 새로운 용어를 볼 때마다 한국어지만 이해할 수 없다.
오늘 배운 OOP(객체 지향 프로그래밍)에 대해 한번 정리하면서 다시 한번 생각해봐야겠다..
역시 한 번만 봐서는 절대 이해할 수 없지...😭 😭 😭


1. 절차지향 언어

PP(Procedural Programming) 이란 무엇인가??

객체 지향 프로그래밍에 앞서 그 이전 절차 언어가 있었다고 한다. (이것은 또 무엇인가 ..)

초기의 프로그래밍 언어? (C,포트란 등) 이것도모름 .. ㅎ

모든 것을 절차로 생각한 언어 -> 함수로 이동하는것이 전부였다. (객체지향의 개념X)

어찌 되었든 무슨말인지 모르겠음 .... ㅜㅜ

그래서 이 아이의 장단점이 뭘까?? 한번 찾아보았음

장점

  • 컴퓨터의 처리 구조와 유사해 실행속도가 빠르다!

단점

  • 유지보수가 어렵다.
  • 실행순서가 정해져있어서 코드의 순서를 변경하면 동일한 결과를 보장하기 어렵다.
  • 디버깅이 어렵다.
여기저기 찾아보고 느낀 결과!

절차적언어는 정해진 문법에 따라 순서대로 진행되는 언어라고 이해했다.

(데이터를 중심으로 함수를 만들어 쓰는 편)

그리고 객체지향 프로그래밍의 반대개념은 아니라고 한다! (차이가 있을뿐 정반대의 개념은 아님 ㅎ)


2. 객체지향 언어

OOP(Object Oriented Programming) 이란 무엇인가??

객체지향 언어는 이전의 언어와는 달리 단순히 함수로 순차적으로 작동하는것이 아니라 데이터와 기능을 별개로

두지 않고 한번에 묶어서 처리! (????????)

컴퓨터 부품을 사서 컴퓨터를 조립하는 것과 같은 방식이라고 함!!


클래스와 인스턴스

클래스(Class)

  • 세부사항(속성)이 들어가지 않은 청사진 - 세부사항만 넣는다면 객체가 됨

인스턴스(instance)

  • 클래스를 통해 만들어진 객체를 인스턴스라고 함

세부사항은 어떻게 넣어줘야야 하나? 그것은 생성자를 통해서 넣어준다.
(함수에 인자를 넣듯 속성을 넣을수 있음)

쉽게 설명 하면

example1)

클래스는 붕어빵틀 ==> 팥, 슈크림, 반죽 (속성,데이터) ==> 팥붕어빵, 슈크림 붕어빵(인스턴스)
세부 사항만 전달 하여 넣은 객체!!

example2)

클래스는 자동차 (속성:색상,가격,속력) (기능:후진,전진,멈춤) ==> BMW mini, Benz s class (인스턴스)
기능도 포함


OPP Basic Concepts

Encapsulation (캡슐화)

  • 데이터와 데이터를 처리하는 함수를 묶는것!
  • 은닉화(내부데이터와 내부동작을 숨기는것)
  • 캡슐화되면 외부사항이 변경되도 오류 사항이 줄어든다! (내부는 숨겨놨으니)
  • 캡슐화된 객체는 재사용에 용이하다

Abstraction (추상화)

  • 실제로 노출 되는 부분을 단순하게 만드는 개념
    (전화기라는 객체 내에는 다양한 부품들이 존재하지만 우리는 단순하게 보이는 수화기와 버튼을 사용)

Inheritance (상속)

  • 부모클래스의 특징을 자식클래스가 물려받는 것 (공통된것은 부모클래스로)
    '사람이라는 큰 부모클래스' ==> '학생이라는 자식클래스'
    공통된 속성이나 메소드를 새롭게 생긴 클래스에 계속 똑같이 작성하면 아주 비효율적
    그래서 상속을 이용해서 새롭게 생긴 클래스에는 필요한 속성이나 메소드만 추가!!

Polymorphism (다형성)

  • 하나의 메소드나 클래스가 있을 때, 동일하게 작동하는것이 아니라 다양하게 작동하는것!
    '터치한다.' ==> 스마트폰의 조작방법은 동일하게 터치하는 것이지만
    어디에 무엇을 터치하느냐에 따라 동작의 목적이 달라진다.

그래서 객체지향 언어의 장단점은??

장점

  • 코드의 재사용이 용이하다!
  • 디버깅이 쉽다!
  • 코딩이 절차지향 프로그래밍보다 간편하다!

단점

  • 절차지향적 프로그래밍보다 속도가 느리다,
  • 코딩 설계에 있어서 많은 시간이 요구된다.

3. JavaScript에서 Prototype이란?

  • 자바스크립트는 객체지향언어이지만 클래스(Class)의 개념이 없다!
  • 자바스크립트의 모든 객체는 부모역할을 하는 객체와 연결되어있다.
    클래스의 상속 개념과 같이 부모객체의 속성이나 메소드를 상속받아서 사용이 가능하다.
  • 이러한 부모객체를 프로토타입이라라고 한다!

마무리..

객체지향 프로그래밍을 정리하면서 느낀점은 아직도 이해가 잘 되지 않는다는 점이다 ㅠ....
내가 정리한 개념도 정확한것인지 모르겠으며 ㅎ..
일단 계속 공부를 하면서 이 개념에대해 이해하고 나중에 다시한번 정리하는 시간을 가져봐야 할 것같다.
늘 새롭고 짜릿한 코딩공부 ㅎㅎ

열정🔥 열정🔥 열정🔥

profile
코딩 배우는 아이

0개의 댓글