OOP

ALTANIS·2021년 2월 26일
0

Object Oriented Programming(OOP)
객체 지향 프로그래밍 ?

  • 사전적 정의로는 프로그래밍의 설계 패러다임 중 하나로 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위 즉 객체들의 모임으로 파악하고자 하는 것이다.
  • 현실 세계를 프로그램 설계에 반영한다는 개념을 기반으로 접근하는 방법

쉽게 이야기 하자면 클래스를 이용하여 객체를 생성하는 방법 또는 프로토타입 기반 프로그래밍을 객체 지향 프로그래밍이라고 간단하게 이해하자 !
프로토타입은 따로 정리해서 작성하겠다!

👀 자바스크립트는 객체 지향 언어는 아니다. 하지만 객체 지향 패턴으로 작성할 수 있다.


객체 지향 프로그래밍에서 필요한 Class와 Instance는 따로 정리 해두었으니
넘어가고 객체 지향 프로그래밍의 특성에 대해서 정리해보겠다.

객체 지향 프로그래밍의 특성 ?

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

Encapsulation (캡슐화)

객체의 속성과 기능을 하나의 객체 안에 넣어서 묶고
실제 구현 내용 일부를 외부에 감추어 은닉한다.

쉽게 이야기 하면 특정 부분을 은닉화 해서 외부에서
내부데이터 혹은 동작에 접근할 수 없고 메소드들을 사용만 할 수 있다.

캡슐화의 장점

  • 재사용성 증가
    데이터가 바뀌어도 다른 객체에 영향을 주지 않아서 독립성이 유지된다.
  • 가독성 증가
  • 은닉화
    객체가 외부에 의해 변경되는 것을 막을 수 있다.

Inheritance (상속)

상위 객체의 데이터, 메소드들을 하위 객체에 물려주어서 하위 객체에서도 사용할 수 있게 하는 것

부모 클래스의 특징을 자식 클래스가 물려 받는 것이다.

상속의 장점

  • 반복된 코드들을 줄일 수 있어 효율적이다.
  • 자식 클래스를 빠르게 설계할 수 있다.
  • 유지보수가 용이하다.

Abstraction (추상화)

구체적인 것을 상세히 하지 않고 필요성에 의한 특성만을 가지고 구성하는 것

내부는 복잡하지만 사용자가 쓰기에는 간단하게 하는 것이다.

추상화 장점

  • 코드 중복 방지해주고 재사용성 증가
  • 중요한 세부 정보만 제공하기 때문에 보안 향상
  • 사용자에게 영향을 끼치지 않고 독립적으로 클래스의 내부 구현 변경이 가능하다.

Polymorphism (다형성)

특정 기능을 설계부분과 동작부분으로 분리한 후 동작부분을 다양한 방법으로 만들어 선택하여 사용할 수 있게 하는 기능

하나의 타입에 여러 객체를 대입해서 다양한 기능을 이용할 수 있도록 하는 것

다형성 장점

  • 객체를 부품화 시킬 수 있다.

나중에 특성 하나하나 예시를 작성해서 올리도록 하겠다.

0개의 댓글