Java Script 란?
  • Java Scipt는 객체지향 프로그래밍 언어로 주로 프론트엔드 쪽에서 HTML 과 CSS와 같이 사용되는 언어이다.

 

그렇다면 객체지향 프로그래밍 언어는 무엇일까.
  • 객체지향 언어는 말그대로 객체를 지향하는 언어이다. 더 자세히 풀어보면 객체란 우리 주변에 있는 물건들, 즉 유리잔이나 핸드폰과같이 독립적으로 존재하는 것을 객체라 한다. 이러한 객체를 지향한다는 뜻은 프로그래밍을 할때 코드, 함수들을 사용해 하나의 객체로서 상호작용하게 한다는것이다. 우리주변에서 흔히 볼수 있는 예시로는 컴퓨터가 있다. 컴퓨터는 그래픽카드,CPU 등의 제품들이 각각 독립적으로 존재하지만 이들은 서로 상호작용을 하여 컴퓨터를 작동시킨다.이처럼 프로그래밍을 할때 다수의 객체를 만들고 이들의 상호작용으로서 원하는 결과를 도출하도록 하는 방식이 객체지향 프로그래밍 언어이다.

 

그렇다면 객체지향 언어의 특징에는 무엇이 있을까.
  • 객체지향 언어에는 크게 4가지의 특징이 있다. 
  1. 캡슐화
  2. 상속
  3. 다형성
  4. 추상화

 

캡슐화란?
  • 캡슐의 정의는 '가루나 액체, 그 외 기타 등등 내용물을 고체를 이용해 포장한 형태' 이다. 그리고 캡슐화의 정의는 '객체의 속성(data fields)과 행위(메서드, methods)를 하나로 묶고,실제 구현 내용 일부를 내부에 감추어 은닉한다.' 이다.'  이를 해석하면 하나의 객체를 생성할때 기본정보를 선언해두고 이러한 정보들을 외부로부터 감춘다는 뜻이다.예를 들면 고객객체를 생성한다 했을때 고객의 정보인 ID,PW,고객번호등의 정보를 선언해두고 이러한 정보를 내부에 감춘다는 것이다. 이러한 캡슐화를 쓰는 이유는 우리가 여러개의 객체를 사용할때 코드의 중복을 피하고 내부에서 데이터를 처리하기 위해서 이다. 캡슐화를 썼을때의 장점과 자세한 설명은 추후에 예제와 함께 다시 자세히다루고자 한다.

 

 

상속이란?
  • 우리는 보통 태어날때 부모님의 유전자를 물려받는다. 유전자에는 신체적 특징이 담겨져있는데 이 개념과 동일하다. 부모클래스로부터 어떠한 규격,특징을 물려받는것을 상속이라 한다. 이러한 상속을 쓰는 이유는 코드의 재사용에 있다. 예를 들면 내가 고양이 클래스와 강아지 클래스를 만들고자 할때, 이둘의 공통점인 다리의 개수와 눈,코,입의 유무들을 하나의 클래스로 만들어놓고 고양이클래스와 강아지 클래스는 이를 상속받고 값만 수정하는것으로 쉽게 코드를 작성할 수 있다. 보기엔 번거로워보일지 몰라도 만들고자하는 동물의 개수가 많으면 많을수록 이 상속의 개념은 빛을 발할것이다. 이와 관련한 예제와 자세한 설명은 추후에 다시 다루고자 한다.

 

 

다형성이란?
  • 다형성의 정의는 ' 프로그램 언어 각 요소들(상수, 변수, 식, 객체, 메소드 등)이 다양한 자료형(type)에 속하는 것이 허가되는 성질을 가리킨다.' 이다. 이를 쉽게 말하면 하나의 객체가 여러개의 객체로 재구성되는것이다. 예시로 내가 고양이클래스와 강아지클래스를 만들어 각각 울음소리를 내는 함수를 구현하고자 할때, 그저 울음소리내는 함수를 상속받으면되는거 아닌가 생각할 수 있다. 하지만 동물들마다 울음소리가 각각 다 다르기 때문에 함수를 하나로 통일하지 못한다. 이때 울음소리 함수를 상속받고 각각 클래스에서 그 값만 수정해준다면 얘기는 달라진다. 이처럼 하나의 객체로 여러개의 객체에서 사용할수있도록 한것이 다형성이다. 이와 관련한 예제와 자세한 설명은 추후에 다시 다루고자 한다.

 

 

추상화란?
  • 추상화는 간단히 말해 여러가지 사물이나 객체에 관해서 공통적인 특성이나 속성을 추출하는 것이다. 예시를 들면 고양이와 강아지의 공통점으로는 4족보행과 눈,코,입 등을 추출하는것이다. 이와 관련한 예제와 자세한 설명은 추후에 다시 다루고자 한다.

 

 

끝으로 객체지향 언어의 장점과 단점을 소개하면서 첫글을 마무리하려한다.

 

 

장점
  1. 상속을 통해 코드를 재사용할 수 있다.
  2. 오류가 났을때 객체별로 수정해주면 되기때문에 유지보수가 좋다.

 

단점
  1. 개발속도가 느리다.
  2. 실행속도가 느리다.
  3. 각 객체에대해 이해해야하기 때문에 난이도가 높다.

 

 

 

 

 

 

+ Recent posts