sayu.day
Backend/DevOps

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

OOP 핵심 개념과 실무에서 객체 모델을 설계할 때 확인해야 할 기준을 정리합니다.

발행 2025년 12월 27일2208

같은 주제에서 이어 읽기

데코레이터 (Decorator)

Backend/DevOps 안에서 이어지는 글

OOP의 4가지 핵심

  1. 추상화: 도메인의 본질만 모델링
  2. 캡슐화: 상태 변경 경로를 제한
  3. 상속: 공통 동작 재사용
  4. 다형성: 같은 인터페이스로 다른 구현 사용

실무에서 중요한 포인트

OOP 자체보다 "상태 일관성"이 더 중요합니다.

  • 필드 직접 노출보다 메서드로 불변 조건을 강제
  • 생성 시점에 유효한 상태를 보장
  • 책임이 큰 객체는 애그리거트 분리

간단 예시: BankAccount

public class BankAccount {
  public string Number { get; }
  public string Owner { get; private set; }
  public decimal Balance { get; private set; }

  public BankAccount(string owner, decimal initialBalance) {
    if (initialBalance < 0) throw new ArgumentException();
    Number = Guid.NewGuid().ToString("N");
    Owner = owner;
    Balance = initialBalance;
  }

  public void Deposit(decimal amount) {
    if (amount <= 0) throw new ArgumentException();
    Balance += amount;
  }

  public void Withdraw(decimal amount) {
    if (amount <= 0) throw new ArgumentException();
    if (Balance < amount) throw new InvalidOperationException();
    Balance -= amount;
  }
}

핵심은 메서드가 비즈니스 규칙을 보호한다는 점입니다.

자주 하는 실수

  • getter/setter만 많은 빈약한 도메인 모델
  • 상속 계층이 깊어져 변경 비용 폭증
  • 상태 변경을 여러 서비스에서 임의로 수행

요약

OOP는 패턴 암기가 아니라 모델 경계 설계입니다. 상태 변경 규칙을 객체 안에 모으면 버그와 결합도가 함께 줄어듭니다.

다음 읽기

이 생각이 이어지는 방향

Backend/DevOps 더 보기
공유

읽은 뒤의 대화

읽은 뒤의 생각을 이어갑니다

질문, 반론, 조용한 후속 메모를 이 글 아래에 남길 수 있습니다.

sayu.day는 생각과 작업의 흔적을 천천히 정리하는 개인 출판물입니다.
직접 겪고 검토한 내용, 다시 읽을 만한 아이디어, 작업하며 남긴 메모를 모읍니다.
시간이 지난 글은 현재의 판단과 다를 수 있어 업데이트 맥락을 함께 남깁니다.

© 2026 sayu.day