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

유슬기·2023년 1월 13일
0

프론트엔드

목록 보기
25/64
post-thumbnail

객체 지향 프로그래밍

객체 지향 프로그래밍(Object Oriented Programming, 이하 OOP)은,
단순히 별개의 변수와 함수로 순차적으로 작동하는 절차 지향 프로그래밍과 달리, 데이터의 접근과 데이터의 처리 과정에 대한 모형을 만들어 내 데이터와 기능이 별개로 취급되지 않고, 한 번에 묶여서 처리할 수 있게 되었다.

OOP의 모든 것은 객체로 그룹화되며, 한 번 만들고 나면 메모리상에서 반환되기 전까지 객체 내의 모든 것이 유지된다.

객체 지향 프로그래밍(OOP)의 주요 개념

1. 캡슐화(Encapsulation): 코드가 복잡하지 않게 만들고, 재사용성을 높임

  • 데이터(속성)와 기능(메서드)을 따로 정의하는 것이 아닌 하나의 객체 안에 넣어서 묶는 것으로, 데이터와 기능들이 느슨하게 결합되는 것
  • 느슨한 결합에 유리함
    • 느슨한 결합: 코드 실행 순서에 따라 절차적으로 코드를 작성하는 것이 아닌, 코드가 상징하는 실제 모습과 닮게 코드를 모아 결합하는 것으로, 코드만 보고도 인스턴스 객체의 기능을 상상할 수 있게 작성하는 것이 느슨한 결합을 추구하는 코드 작성법이다.
  • 은닉화
    • 내부 데이터나 내부 구현이 외부로 노출되지 않도록 만드는 것
    • 디테일한 구현이나 데이터는 숨기고, 객체 외부에서 필요한 동작(메서드)만 노출

2. 상속(Inheritance): 불필요한 코드를 줄여 재사용성을 높임

  • 기본 클래스(부모 클래스)의 특징을 파생 클래스(자식 클래스)가 물려받음

3. 추상화(Abstraction): 코드가 복잡하지 않게 만들고, 단순화된 사용으로 변화에 대한 영향을 최소화

  • 내부 구현은 아주 복합하지만, 실제로 노출되는 부분은 단순하게 만든다는 개념
  • 추상화를 통해 인터페이스를 단순화 시킬 수 있음
    • 인터페이스: 클래스 정의 시 메서드와 속성만 정의한 것을 의미함

4. 다형성(Polymorphism): 동일한 메서드에 대해 조건문을 사용하는 대신 객체의 특성에 맞게 달리 작성하는 것이 가능해짐

  • poly(많은) morph(형태), 즉 다양한 형태를 가질 수 있다는 의미
  • 동일한 메서드도 각 객체의 특성에 맞게 다른 방식으로 구현될 수 있음

추상화? 캡슐화? 두 가지 개념이 헷갈린다면,

  • 캡슐화는 코드나 데이터의 은닉에 포커스가 맞춰져 있음
  • 추상화는 클래스를 사용할 때, 필요하지 않은 메서드 등을 노출시키지 않고, 단순한 이름으로 정의하는 것에 포커스가 맞춰져 있음
profile
아무것도 모르는 코린이

0개의 댓글