테마
객체지향 개념과 분석
객체지향(object-oriented)은 프로그램을 데이터와 그 데이터를 다루는 연산을 묶은 **객체(object)**들의 협력으로 보는 방식이다. 현실의 사물처럼 책임을 나눠 가지므로 변경이 한곳에 모이고 재사용이 쉬워진다. 시험은 클래스(class)·메시지(message)·캡슐화(encapsulation) 같은 기본 용어의 정의, OOA(Object-Oriented Analysis, 객체지향 분석)의 방법론 이름, 특히 럼바우의 세 모델링을 묻는다.
기본 구성 요소
| 용어 | 뜻 |
|---|---|
| 객체(object) | 속성(데이터)과 메서드(연산)를 함께 가진 실체 |
| 클래스(class) | 공통 속성·연산을 가진 객체들의 틀 |
| 인스턴스(instance) | 클래스로 만든 각각의 객체 |
| 메시지(message) | 객체에게 연산을 수행하라고 보내는 외부 요구 |
객체끼리는 메시지로만 일을 부탁하고, 메시지를 받은 객체는 해당 메서드를 실행해 결과를 돌려준다.
네 가지 특징
캡슐화(encapsulation) 는 데이터와 연산을 하나로 묶고 인터페이스를 뺀 세부는 감추는 것이다. 바깥은 공개된 메서드만 쓰므로 내부를 바꿔도 파급 효과가 적고, 객체 사이의 결합도(coupling)가 낮아진다. 모듈의 세부를 감추는 정보 은닉(information hiding) 원칙을 객체 단위에서 실천하는 방법이 캡슐화다.
상속(inheritance) 은 상위 클래스의 속성과 연산을 하위 클래스가 물려받는 것이다. 공통 부분을 한 번만 작성하면 되므로 재사용성이 높아진다. 하위 클래스는 물려받은 것에 자기만의 것을 더하거나 바꿀 수 있다.
다형성(polymorphism) 은 같은 메시지에 객체마다 다르게 반응하는 성질이다. draw()를 보내면 원은 원을, 사각형은 사각형을 그린다. 그래서 새 종류를 추가해도 호출 코드를 고치지 않는다. 하위 클래스가 상위 메서드를 다시 정의하는 오버라이딩(overriding)과, 한 클래스에 이름은 같고 매개변수가 다른 메서드를 여럿 두는 오버로딩(overloading)이 대표 수단이다. 공통된 핵심만 뽑아 추상 클래스(abstract class)나 인터페이스로 정의하는 추상화(abstraction) 도 함께 꼽는다.
객체지향 분석 방법론
객체지향 분석은 요구사항에서 객체·속성·연산·관계를 찾아 모델로 만드는 작업이며, 핵심 목적은 클래스를 식별하는 것이다. 시험에 나오는 방법론은 다섯 가지이고, 아래 특징은 시험에서 쓰는 요약이다. 제이콥슨의 방법은 OOSE(Object-Oriented Software Engineering, 객체지향 소프트웨어 공학), 워프스브록의 방법은 책임 주도 설계(responsibility-driven design)라는 이름으로도 알려져 있다.
| 방법론 | 시험에서 쓰는 특징 |
|---|---|
| 럼바우(Rumbaugh) | 객체·동적·기능 모델링, 그래픽 표기 |
| 부치(Booch) | 미시적·거시적 개발 프로세스를 함께 사용 |
| 제이콥슨(Jacobson) | 유스케이스(use case)를 강조 |
| 코드·요던(Coad·Yourdon) | E-R(Entity-Relationship, 개체-관계) 다이어그램으로 객체 행위 모델링 |
| 워프스브록(Wirfs-Brock) | 분석과 설계의 구분 없이 연속 수행 |
럼바우의 세 모델링
럼바우의 방법은 OMT(Object-Modeling Technique, 객체 모델링 기법)라고 부르며 1991년 무렵 정리됐다. 뒤에 UML(Unified Modeling Language, 통합 모델링 언어)의 바탕이 됐다. 시스템을 세 관점으로 나눠 객체 → 동적 → 기능 순서로 모델링한다. 세 모델은 쓰는 도표로 구분하면 헷갈리지 않는다.
| 모델링 | 무엇을 표현하나 | 쓰는 도표 |
|---|---|---|
| 객체 모델링 | 객체와 그 관계, 정적 구조 | 객체 다이어그램(클래스) |
| 동적 모델링 | 시간 흐름에 따른 상태 변화·제어 흐름 | 상태 다이어그램 |
| 기능 모델링 | 입력이 출력으로 바뀌는 처리 과정 | 자료 흐름도(DFD, Data Flow Diagram) |
객체 모델링은 정보 모델링이라고도 한다.
시험 포인트
- "공통 속성과 연산을 갖는 객체의 집합" → 클래스. "객체에 동작을 일으키는 외부 요구" → 메시지.
- "인터페이스를 뺀 세부를 감춘다, 결합도가 낮아진다" → 캡슐화.
- "같은 메시지에 다르게 반응" → 다형성.
- 럼바우 순서: 객체 모델링 → 동적 모델링 → 기능 모델링. 상태 다이어그램 = 동적, DFD = 기능.
- "유스케이스 강조" → 제이콥슨. "분석과 설계 구분 없음" → 워프스브록.
