[Q&A] 객체지향이란 무엇일까 with GPT

굴착드릴·2025년 4월 15일

Drilling

목록 보기
6/12

GPT와의 대화를 요약했습니다.


❓ 절차지향에서도 함수를 나눌 수 있는데 왜 객체지향이 등장한 것?

함수 쪼갠다고 해서 책임이 나눠지진 않음
→ 데이터는 여전히 함수 외부에 있고, 함수끼리 뒤엉켜서 조작함
→ 누가 뭘 책임지고 있는지 명확하지 않음
→ 그래서 구조가 커지면 종속성 복잡해지고 유지보수가 어려워짐
→ 객체라는 단위로 데이터 + 행동을 묶어 책임 주체를 명확히 하자는 철학이 등장함 = 객체지향


❓ "애매한 종속성"이란 도대체 어떤 상태를 말하는 것?

여러 함수가 같은 데이터에 의존하거나 조작
→ 데이터의 변경 책임이 명확하지 않음
→ 하나 수정하면 어디서 터질지 예측이 안 됨
→ 의존성이 겉으로 드러나지 않아 추적 어려움
→ 그 상태가 바로 "애매한 종속성"임


❓ 그럼 객체지향은 이걸 어떻게 해결한 거?

객체가 자기 데이터를 스스로 다룸
→ 외부는 객체의 기능만 호출 (캡슐화)
→ 데이터에 접근하는 경로가 한정됨
→ 책임 주체가 명확해지고 종속성이 구조적으로 줄어듦
→ 테스트와 유지보수 용이


❓ 함수 자체가 문제는 아니잖아? 그런데 왜 객체에 넣어서 쓰는 거임?

함수는 절차 나누는 도구일 뿐
→ 절차지향에서는 데이터와 분리된 함수가 전역 데이터를 조작함
→ 객체지향에서는 데이터와 함수가 같은 객체 안에 있음
→ 내부 상태는 객체만 바꾸도록 제한
→ 책임, 변경 범위가 명확해짐


❓ 객체지향의 핵심 특성들(캡슐화, 상속, 추상화, 다형성)은 왜 필요하게 된 거?

철학만 있어선 현실 구현이 안 됨
→ 객체지향 철학을 실제 언어로 구현하려면 기술이 필요
→ 그래서 등장한 게 4대 특성

특성목적
캡슐화외부 접근 제한 → 내부 구현 보호
상속코드 재사용 + 구조적 확장
추상화공통 개념 표현 + 복잡성 제거
다형성유연한 확장 + 메시지 다양 반응

❓ 그럼 SOLID는 이 4가지 특성을 잘 쓰기 위한 법칙인 거임?

정확함
→ 캡/상/추/다는 기술적 특성
→ SOLID는 그 특성들을 현실에서 유지보수 가능하게 잘 사용하는 법칙


❓ 정리하면 전체 구조는 어떻게 되는 거임?

객체지향 철학: 모든 것을 객체로 모델링하자
   ↓
기술적 특성: 캡슐화 / 상속 / 추상화 / 다형성
   ↓
설계 원칙: SOLID (OOP를 잘 구현하기 위한 가이드)
profile
두두두두..

0개의 댓글