Skip to content
난이도 문제은행 5

객체지향 개념과 분석 ​

객체지향(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 = 기능.
  • "유스케이스 강조" → 제이콥슨. "분석과 설계 구분 없음" → 워프스브록.

관련 문서