객체 지향 프로그래밍(OOP)

여동희·2023년 1월 13일
0

객체 지향 프로그래밍

객체 지향 언어

JAVA, C++, C# 등..
(자바스크립트는 객체 지향 언어는 아니지만, 객체 지향 패턴으로 작성할 수 있다)

OOP의 특징

  • 프로그램 설계 철학
  • 객체로 그룹화된다. ex)클래스와 인스턴스
  • 4가지의 주요 개념을 통해 재사용성을 얻을 수 있다. 캡슐화, 상속, 추상화, 다형성

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

사람이 세계를 보고 이해하는 방법을 흉내 낸 방법론

단순히 별개의 변수와 함수로 순차적으로 작동하는 절차 지향 프로그래밍을 넘어서 데이터의 접근과 데이터의 처리 과정에 대한 모형을 만들어내는 방식이다.
데이터의 기능과 별개로 취급되지 않고, 한 번에 묶여서 처리할 수 있게 해준다.

캡슐화(Encapsulation)

  • 데이터와 기능을 하나의 단위로 묶는 것
  • 은닉(hiding): 구현은 숨기고, 동작은 노출시킨다
    -내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
  • 느슨한 결합(Loose Coupling)에 유리: 언제든 구현을 수정할 수 있다.
    -코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아니라, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것을 의미한다.

    더 엄격한 클래스는 속성의 직접적인 접근을 막고, 설정하는 함수(setter), 불러오는 함수(getter)를 철저하게 나누기도 한다.

  • 캡슐화는 코드나 데이터의 은닉에 포커스가 맞춰져있다.

추상화(Inheritance)

  • 내부 구현은 복잡한데, 실제로 노출되는 부분은 단순하게 만든다는 개념.
  • 인터페이스의 단순화 ex) 전화
  • 클래스를 사용하는 사람이 필요하지 않은 것을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있다.
  • 클래스 정의 시, 메서드와 속성만 정의한 것을 인터페이스라고 부른다.

상속(Abstraction)

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

    기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다.

  • 같은 메서드와 속성을 그대로 구현만 하는 것이 아니라, 다른 속성/메서드를 추가하여 사용한다.

다형성(Polymorphism)

  • 부모 클래스에서 하나의 메서드를 만들어 자식 클래스에 다양한 속성을 한번에 작동하게 하는 것.

4가지의 주요 개념의 장점

  • 캡슐화 : 코드를 복잡하지 않게 만들고, 재사용성을 높인다.
  • 추상화 : 코드를 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화한다.
  • 상속 : 불필요한 코드를 줄여 재사용성을 높인다.
  • 다형성 : 동일한 메서드에 대해 if/else if와 같은 조건문 대신 객체의 특성에 맞게 달리 작성할수 있다.
profile
프론트엔드 개발자 준비생

0개의 댓글