본문 바로가기

프로그램을 객체들의 세상으로 보다 | 정보처리의 흐름 FLOW 04 | K-BOOKS

FLOW 04 · INFORMATION PROCESSING
DIRECTION 04 · 정보를 찾아가는 방향 · C · Java · Python · OOP

프로그램을 객체들의 세상으로 보다

C · Java · Python · OOP

QUESTION · 질문에서 시작합니다

예약 서비스 안에는 회원, 예약, 결제, 알림 같은 역할이 있다.

각각이 자기 데이터와 기능을 가지고 서로 요청을 주고받는 구조를 떠올려 보자.

회원 객체 → 예약 객체에게 예약 요청
예약 객체 → 결제 객체에게 결제 요청

객체지향 프로그램은 객체 하나가 모든 일을 처리하는 구조가 아니다. 회원은 자신의 정보와 행동을 맡고, 예약은 예약 규칙을 맡으며, 결제는 결제 상태를 맡는다. 각 객체는 필요한 순간 서로에게 요청을 보낸다.

따라서 객체 문제를 읽을 때는 클래스 이름만 외우기보다 ‘이 객체는 어떤 책임을 갖는가’와 ‘누구에게 무엇을 요청하는가’를 먼저 보는 편이 이해가 빠르다.

설계도와 실제 객체

먼저 회원이 어떤 정보를 가지고 어떤 행동을 할 수 있는지 정의한다.

class Member { String name; int point; void reserve() { // 예약 기능 } }

이 정의를 바탕으로 실제 회원 객체를 만들 수 있다.

기술 이름 객체를 만들기 위한 설계도를 클래스(Class), 그 설계도로 만들어진 실제 대상을 객체(Object) 또는 인스턴스라고 한다.
OBJECT MAP클래스는 설계도, 객체는 그 설계도로 만들어진 실제 대상이다

Reservation 클래스

date

status

confirm()

cancel()

→
reservationAdate = 09/20status = confirmed
reservationBdate = 09/21status = waiting
같은 클래스에서 여러 객체를 만들 수 있고, 각 객체는 서로 다른 상태값을 가질 수 있다.

내부는 감추고 필요한 기능만 보여 준다

자동차를 운전할 때 엔진 내부의 폭발 과정을 몰라도 가속페달과 브레이크를 사용할 수 있다.

객체도 마찬가지다. 내부 구현은 감추고 필요한 기능만 외부에 제공할 수 있다.

캡슐화(Encapsulation) 데이터와 기능을 하나로 묶고, 외부에서 불필요하게 내부 상태에 직접 접근하지 못하도록 보호한다.

공통된 특성을 물려받다

일반 회원과 VIP 회원이 있다고 하자.

이름, 회원번호, 로그인 기능은 공통이고 VIP 회원만 추가 할인 기능을 가진다.

상속(Inheritance) 기존 클래스의 속성과 기능을 새로운 클래스가 물려받아 확장하는 개념이다.
ILLUST C | DROP-02 | Member -> VIPMember 상속 관계 | 코드와 UML 화살표만으로 충분

같은 이름, 다른 동작

알림이라는 같은 기능도 문자 알림, 이메일 알림, 앱 알림은 실제 동작이 다를 수 있다.

다형성(Polymorphism) 같은 요청이나 인터페이스가 객체의 종류에 따라 서로 다른 방식으로 동작할 수 있는 성질이다.

호출하는 쪽은 구체적인 내부 구현을 몰라도 같은 방식으로 기능을 요청할 수 있다.

필요한 특징만 남겨 본질을 본다

예약 객체를 만들 때 실제 세상의 모든 특징을 표현할 필요는 없다.

예약번호, 시간, 상태처럼 시스템에 필요한 특징만 골라 표현하면 된다.

추상화(Abstraction) 복잡한 대상에서 필요한 핵심 특징만 뽑아 모델링하는 과정이다.
더 찾아보고 싶다면846면 학습 아카이브에서 검색하세요.
K-BOOKS Q&A이 내용이 헷갈리나요?

공부하던 페이지를 자동으로 연결해 질문할 수 있습니다.

RELATED STUDY MATERIALS

이 개념과 이어서 볼 정보처리 자료

학습자료실 65개 →

CONTINUE · INFORMATION PROCESSING ENGINEER 2027C에서 시험 학습으로 이어가기
이야기형 개념 설명은 그대로 두고, 필요한 시험 요약·문제·실습으로 연결합니다.