객체 지향 프로그래밍

도현수·2022년 7월 22일
0

javascript

목록 보기
20/20

객체 지향 프로그래밍

  • 단순히 변수와 함수의 순차적인 작동이 아닌, 데이터 접근과 처리과정에 대한 모형을 만들어냄
  • 데이터와 기능을 한번에 묶어서 처리가 가능토록 함
  • '클래스'라고 부르는 데이터 모델의 청사진을 이용해 코드를 작성

객체 지향 프로그래밍은 프로그램 설계 철학이다.

  • OOP에선 모든 것을 객체로 그룹화 한다
  • 이 객체는 한번 생성된 후, 메모리 상에서 반환되기 전 까지는 내부가 그대로 유지된다.
  • 이 객체는 위에서 언급한 '데이터와 기능을 한번에 묶는다'라는 원칙에 따라 메서드와 속성(어트리뷰트, 프로퍼티)가 존재한다.
  • 클래스는 일종의 원형으로, 객체를 생성하기 위한 아이디어 혹은 청사진으로 이해한다. 여기에는 아직 세부적인 속성이 들어가있지 않은데, 세부사항을 넣는다면 인스턴스가 되는 것이다. 이 때, 세부사항을 넣어주는 역할을 하는 것이 constructor 함수이다.
class Polygon {
  constructor() {  //constructor를 통해 name: 'Polygon'을 넣어준다
    this.name = 'Polygon';
  }     
}
const poly1 = new Polygon();

OOP의 4가지 특징

1. 캡슐화

  • 캡슐화란 객체 안에 속성(데이터)과 메서드(기능)를 정의하는 것을 말한다.
  • 느슨한 결합(절차적인 코드 작성이 아니라 코드가 실제 상징하는 모습과 비슷하게 코드를 모아 결합하는 것)을 추구해 코드만 보고도 인스턴스의 기능을 상상할 수 있다.
  • 캡슐화는 은닉화의 특징도 포함한다. 따라서 내부 데이터와 구현이 외부로 노출되지 않도록 하며, 객체 내부의 어트리뷰트만 수정하고 코드의 전체적 흐름은 방해하지 않을 수 있다.

코드를 복잡하지 않게 하고, 재사용성을 높인다.

2. 추상화

  • 내부는 아주 복잡하게, 외부(노출되는 부분)은 아주 간단히 만드는 것. 사람이 필요하지 않은 메서드는 감춘다.
  • 즉, UI는 매우 간단해지기 때문에 예기치 못한 사용상의 변화를 막는다.

코드를 복잡하지 않게 하고, 사용을 단순화해서 변화에 대한 영향을 최소화한다.

3. 상속

  • 부모(기본) 클래스의 속성을 자식(파생) 클래스가 상속하는 것

불필요한 코드를 줄여 재사용성을 높인다.

4. 다향성

  • 다양한 형식을 가지는 것
  • 즉, 같은 메서드라도 조금씩 다르게 구현되는 것

동일한 메서드에 if/else if 문을 사용하지 않고 객체에 특성에 맞게 작성하는 것이 가능하다.

0개의 댓글