본문 바로가기
javaScript

객체지향 프로그래밍 특징 (캡슐화, 상속, 추상화, 다형성)

by mooyou 2023. 12. 4.
728x90
300x250

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

소프트웨어를 객체(Object)들의 잡합으로 바라보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍 하는 패러다임이다.

 

1. 캡슐화(Encapsulation):

  • 객체 내부의 상세한 구현을 외부에 감추는 것을 의미한다.
  • 데이터와 해당 데이터를 처리하는 메서드(함수)를 하나의 단위로 묶어 캡슐화함으로써 정보 은닉을 실현한다.
  • 객체 내부 상태를 직접 조작하는 것이 아니라, 공개된 인터페이스를 통해 간접적으로 상호작용한다.
  • 세탁기를 예로들면 세탁 기능 중 사용자에게는 세탁 명령과 진행정보만 제공해주고 그 외의 일반사용자에게 제공할 필요 없는 기능은 감춰져있다.

2. 상속(Inheritance):

  • 기존 클래스(부모 클래스 또는 슈퍼 클래스)의 특성을 새로운 클래스(자식 클래스 또는 서브 클래스)가 상속받아 재사용할 수 있다.
  • 코드 재사용성을 높이고, 계층적 구조를 통해 일관성 있는 설계를 가능케 한다.
  • 다중 상속(하나의 클래스가 여러 개의 클래스로부터 상속 받는 것)이 지원되는 경우와 그렇지 않은 경우가 있다.

3. 다형성(Polymorphism):

  • 같은 이름의 메서드나 연산자가 다양한 형태로 동작할 수 있도록 하는 특정이다.
  • 메서드 오버로딩(하나의 클래스 내에서 동일한 이름의 메서드가 여러 개 적의되는 것)과 메서드 오버라이딩(하위 클래스에서 상위 클래스의 메서드를 재정의하는 것)이 다형성을 구현하는 방법 중 일부이다.
  • 다형성은 코드의 우연성을 높이고, 확장성을 강조한다.
  • 일종의 플러그인을 만든다고 볼 수 있다.

4. 추상화(Abstraction):

  • 객체지향 프로그래밍에서는 현실 세계의 개념을 모델링해서 필요한 부분만을 추출하는 추상화가 중요하다
  • 클래스와 인터페이스를 통해 추상화를 구현하고, 이는 복잡한 시스템을 단순화하고 사용자가 핵심적인 부분에 집중할 수 있도록 돕는다.
  • 프로퍼티와 메서드의 이름을 작성하는 선언 부분만 만들고 구현 소스는 구현하지 않는다.

5. 클래스와 객체(Class and Object):

  • 클래스는 객체를 생성하기 위한 설계도이며, 객체는 클래스의 인스턴스이다.
  • 클래스는 속성(멤버 변수)과 동작(메서드)를 포함하고, 이를 토대로 여러 객체체를 생성할 수 있다.
728x90
반응형

댓글