IT지식창고/Javascript

JS > OOP의 특징과 개념 & 객체지향 vs 절차지향

Hanliang38 2020. 7. 29. 18:06
  • OOP란?(Object Oriented Programing)
    • '객체지향프로그래밍'이라는 뜻이다.
    • 컴퓨터 프로그램 언어는 크게 3가지 타입이 있는데 Machine lang, Assembly lang, High-level lang 이 있다.
      • Machine Languages(기계어)
        - 컴퓨터만 알아듣는 저차원 언어이다.(차원이 낮을 수록 인간의 언어로부터 멀어지고 컴퓨터와 가까워진다.)
        - 0과 1로만 이루어져 있다.
      • Assembly Languages(프로세스 언어)
        - 저수준 프로그램어로 어셈블리코드능 어셈블러를 사용하여 기계코드로 변환할 수 있다.
        - 경우에 따라 프로그램을 미세하게 조정가능하다.
        - 변수가 얼마없고 기능이 적다.(ex. mov, add, sub, push, pop, jmp,int)
      • High-level Languages(고차원언어)
        - 우리가 자주쓰는 프로그램 언어이다. (Java, Javascript, c++, c#, python, PHP, Ruby ...)
        - 고차원언어라 인간의 언어에 가깝고 작성이 쉽다.
        - 버전에 유연하다.
        - Assembly언어로 함수를 미리 만들어 사용하기 쉽도록 만든 언어이다.
        - 이 언어에서도 두 가지로 타입이 나뉜다. (절차지향, 객체지향)
    • OOP의 특징 및 장점
      • 캡슐화 (Encapsulation)
        - class 객체에 기능과 속성을 넣어놓고 언제든 가져와서 쓸 수 있게 만드는 것
                        ※ class : 설계도, 청사진, 기능들을 캡슐화,객체화를 시켜 코드를 간단하게 만들어 준다.
                        ※ method : 특정작업을 사용하기 위한 명령문의 집합
                        ※ instance : 선언된 해당 class의 객체, 메모리에 할당 된 객체
                        ※ class로부터 객체를 선언하는 과정 = 클래스의 인스턴스화
      • 상속(Inheritation)
        - 부모의 속성과 기능을 자식이 똑같이 갖는 것. 
        - 이미 작성된 클래스를 이어받아 새로운 클래스를 생성하는 것을 말한다.(기존의 코드 재사용)
      • 추상화(Abstraction)
        - 사용자가 모든 기능을 알지 않아도 간단한 인터페이스를 
      • 다형성(Polymorphism)
  • 절차지향(Procedural Programing) vs 객체지향 (Object Oriented Programing)
    • 절차지향 : 컴퓨터의 처리방식과 유사함. 순차처리가 중시됨(C언어)
      - 데이터 중심 함수 구현
      - 장점 : 처리속도가 객체지향에 비해 더 빠름
      - 단점 : 유지보수가 어려움, 실행순서가 정해져서 코드가 바뀌면 동일한 결과가 나오지 않을 수 있음, 디버깅이 어려움
    • 객체지향 : 사람이 생각하는 방식과 유사함. (Java, Javascript, C++, C#, Visual basic.NET)
      - 기능 중심 메서드 구현
      - 장점 : 코드의 재활용이 쉬움, 절차지향보다 간편함, 디버깅이 쉬움
      - 단점 : 처리속도가 절차지향에 비해 느림