본문 바로가기
언어의 기초/자바스크립트(Javascript)

Object Oriental Programming

by 지에스정 2020. 5. 8.

Object Oriental Programming 이란 무엇인가?

 

  Object Oriental Programming(객체 지향 프로그래밍)이란 컴퓨터의 언어 작동원리 중 하나이다.

 

초기 컴퓨터의 언어의 역사는 0,1 로 이루어진 2진법 언어만을 사용해왔다. 이 언어를 Machine Langage라고 한다. 

 

Machine Langage는 초기 컴퓨터가 만들어 지면서 부터 현재까지 모든 컴퓨터의 기초 작동 원리로 작동되고 있으며,

 

여담이지만 0, 1을 동시에 연산할 수 있는 컴퓨터가 양자컴퓨터이다.

 

하지만 이진법으로 이루어진  Machine Langage는 사람들이 접근하기에는 굉장히 어려운 언어였다,

 

그렇게 해서 만들어진 언어가 assembly language이다. 컴퓨터가 발전하면서 프로그래밍도 복잡해지면서,

 

사람들은 프로그래밍을 하기위해 사람들이 이해하고 다루기 쉬운 언어인 assembly language를 만들어 냈다.

 

assembly language의 특징은 사용되는 소수의 명령어를 통해 컴퓨터를 프로그래밍 할 수 있다는 것이다.

 

이를 바탕으로 우리가 흔히 아는 C언어가 탄생하였다.

 

하지만, 컴퓨터가 해를 거듭할 수록 발전하면서 더많고 복잡한 연산을 할 수 있게 되고,

 

사람들은 좀더 우리의 언어와 비슷한 체계를 이용하여 쉽게 이해할 수 있는 언어를 만들기를 원하였다.

 

바로 이 언어가 High-Level language이다. 

 

High-Level language는 다양한 명령어를 사용할 수 있어서 복잡한 연산이 가능하며, 프로그래밍을 하는 데도 이해가 쉽게 만들어 져있다.

 

High-Level language가 만들어 지면서 이제까지는 절차적 프로그래밍을 통해 단순하고 순차적인 프로그램을 만들었으나,

 

이제는 여러개의 독림 단위로써 객체를 파악해 서로 데이터를 주고받는 형식을 취하면서 유연하게 프로그래밍을 할 수 있게 만들어 주었다,

 

 

 


OOP의 장점

 

  • 객체 지향 프로그램은 유연하고 변경하기 쉽다보니 대규모 프로젝트에서 자주 사용된
  • 프로그래밍을 배우기 쉬우며, 소프트웨어 개발과 보수를 용이하게 함
  • 직관적인 코드 분석이 가능

 

 

OOP의 단점

  • High-level langauge로 절차가 느리다
  • 설계하는데 오래 걸릴 수 있다.

 


OOP의 기본 구성요소

 

  • class    :   집단의 속성과 행위를 정의하한 것으로 하나의 틀이나 청사진으로 생각 하면 된다.
  • Object  :  클래스의 인스턴스이며, 클래스에서 정의한 것을 공유한다고 보면된다. 하나의 완성하고자 하는 제품이다.
  • method  :  클래스와 객체를 연결하는 것으로 클래스에서 생성된 객체를 사용할 수 있게 한다. 즉, 청사진에 맞추어 객체를 만들어 낸다.

 


OOP의 특징

 

객체지향프로그래밍에는 크게 4가지 특징을 가지고 있다.

 

  • 자료추상화(Abstraction) - 불필요한 행위는 숨기고 중요한 정보만 나타낸다.
  • 상속(Inheritence) - 부모에게서 자식에게 상속받는 것으로, 기존 클래스(부모)에 수정을 하여 사용가능하다.
  • 다형성(Ploymorphism) - 한 요소에 여러개의 개념을 넣는 것을 의미한다.
  • 캡슐화(Ecapsulation) - 속성과 행위를 하나로 묶는다.

 

 

참고:https://developer.mozilla.org/ko/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

        https://en.wikipedia.org/wiki/Object-oriented_programming

'언어의 기초 > 자바스크립트(Javascript)' 카테고리의 다른 글

[Javascript]Object.create() & ES6  (0) 2020.05.12
Object Prototypes  (0) 2020.05.10
[Javascript] Scope  (0) 2020.05.01
git workflow & conflict 해결  (1) 2020.04.29
[Javascript] 재귀함수 (알고리즘)  (0) 2020.04.23