자격증/정보처리기사

[정보처리기사 필기 요약] #1-4. 객체지향 분석 방법론

개발자혜콩 2026. 5. 7. 15:18

1. 객체지향

1) 객체지향의 구성요소

객체 데이터와 이를 처리하는 함수를 묶어 놓은
하나의 모듈
특성
  1. 객체는 독립적으로 식별 가능한 이름을 가지고 있다.
  2. 객체가 가질 수 있는 조건을 상태 ( State )라고 하는데, 일반적인 상태는 시간에 따라 변한다.
  3. 객체와 객체는 상호 연관성에 의한 관계가 형성된다.
  4. 객체가 반응할 수 있는 메세지( Message )의 집합을 행위라고 하며 객체는 행위의 특징을 나타낸다.
  5. 객체는 일정한 기억장소를 가지고 있다.
클래스 공통된 속성연산을 갖는 객체의 집합 특징
  1. 클래스는 객체지향에서 데이터를 추상화하는 단계이다.
  2. 클래스에 속한 각각의 객체를 인스턴스( Instance )라 하며 클래스로 부터 새로운 객체를 생성하는 것을 인스턴스화 ( Instantication )라고 한다.
  3. 동일 Class에 속한 각각의 Instance들은 공통된 속성과 행위를 가지고 있으며, 그 속성에 대한 정보가 서로 달라서 동일 기능을 하는 여러가지 객체를 나타내게 된다.
  4. 최상위 클래스는 상위 클래스를 갖지 않는 클래스를 의미한다.
  5. Super Class는 특정 Class의 상위( 부모 )클래스이고, 서브 클래스( Sub Class )는 특정 클래스( 하위, 자식 클래스 )를 의미한다.
메세지 객체의 행위를 표현 객체들 간의 상호작용에 사용되는 수단으로,
객체의 동작이나 연산을 일으키는 외부의 요구사항

 

2) 객체지향의 특징

Encapsulation
(캡슐화)
데이터 속성과 관련된 연산
클래스 안에 묶어서 하나로 취급하는 것.
특징
  1. 캡슐화된 객체는 인터페이스를 제외한 세부 내용이 은폐( 정보은닉 )되어 외부의 접근이 제한적이다. 따라서 외부 모듈의 변경으로 인한 파급효과가 적다.
    • 시스템의 한 콤포넌트의 내부구현이 다른 콤포넌트에 의존하지 않는 것, 객체 내부의 구현을 client에게 보이지 않게 하는 것.
  2. 캡슐화된 객체들은 재사용이 용이하다.
  3. 객체들간에 메세지( Message )를 주고 받을 때, 상대 객체의 세부정보를 알 필요가 없으므로 Interface가 단순해지고, 결합도 또한 낮아진다.
Inheritance
(상속성)
상위 클래스의 모든 속성과 연산을 하위 클래스가 물려받는 것 특징
  1. 상속을 이용하면 상위 클래스와 속성과 연산을 자신의 클래스 내에서 다시 정의하지 않고 즉시 자신의 속성으로 사용할 수 있다.
  2. 하위 클래스는 상속받은 속성과 연산외에 새로운 속성과 연산을 첨가하여 사용할 수 있다.
  3. 객체와 클래스의 재사용, 즉 소프트웨어의 재사용을 높이는 중요한 개념이다.
  4. 다중 상속 ( Multiple Inheritance ) : 한 개의 클래스가 두 개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것을 말한다.
Polymorphism
(다형성)
하나의 메세지에 대해 각 객체가 갖고있는
고유한 방법대로 응답하는 것을 의미
오버로딩
오버라이
(연관성) 두 개 이상의 객체들이 상호 참조하는 관계
연관성의 종류
  1. is member of
    : 연관화
    : 2개 이상의 객체가 상호 관련되어 있음을 의미함
  2. is instance of
    : 분류화
    : 동일한 형의 특성을 갖는 객체들을 모두 모아 구성하는 것
  3. is part of
    : 관련 있는 객체들을 묶어 하나의 상위 객체를 구성하는 것
  4. is a
    : 일반화 - 공통적인 성질들로 추상화한 상위 객체를 구성하는 것
    : 특수화 / 상세화 - 상위 객체를 구체화하여 하위 객체를 구성하는 것
Information Hiding
(정보은닉)
캡슐화에서 가장 중요한 개념으로 다른 객체에 자신의 정보를 숨기는 것

연산만을 통해 접근
 
Abstraction
(추상화)
불필요한 부분을 생략, 객체 속성 중 가장 중요한 것에 중점을 두어 모델링함.

완전한 시스템 구축 전, 그 시스템과 유사한 모델을 만들어 여러 요인들을 테스트 할 수 있음.
 

 

- 미들웨어는 운영체제와 소프트웨어의 중간에서 조정과 중개의 역할을 해주는 소프트웨어다.
- 운영체제가 제공하는 서비스 이외에 추가적인 서비를 제공하며 클라이언트와 서버 간의 통신을 담당한다.

 

2. 객체 지향 설계 원칙(SOLID)

 SRP/단일 책임 원칙 (Single responsibility principle):
  • 한 클래스는 하나의 책임만 가져야 한다.
    ==> 클래스가 제공하는 모든 서비스는 하나의 책임을 수행하는데 집중
  • 결합도는 낮추고 응집도는 높여야한다
OCP/개방 폐쇄 원칙 (Open/closed principle)
  • 소프트웨어 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있으나 변경에는 닫혀 있어야 한다.
    ==> 기존 코드를 변경하지 않고 기능을 추가할 수 있어야 한다.
  • 공통적 인터페이스를 하나의 인페이스로 묶어 캡슐화한다.
 LSP/리스코프 치환(교쳬) 원칙
  • 프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 서브타입(하위클래스)은 어디서나 자신의 기반타입(상위클래스) 인스턴스로 바꿀 수 있어야 한다.
  1. 자식클래스는 최소한 부모클래스가 가능한 행위는 수행 할 수 있어야 한다.
  2. 자식클래스는 확장만 수행한다.
 ISP/인터페이스 분리 원칙 (Interface segregation principle):
  • 특정 클라이언트를 위한 인터페이스 여러 개가 범용 인터페이스 하나보다 낫다.
  • 자신이 사용하지 않는 인터페이스와 의존관계를 맺거나 영향을 받지 않아야 한다.
    ==> 한 클래스는 자신이 사용하지 않은 인터페이스를 구현하지 말아야 함
  • 인터페이스를 클라이언트에 특화되도록 분리시키는 설계 원칙.
  • 인터페이스가 갖는 하나의 원칙
의존관계 역전 원칙 (DIP, Dependency inversion principle):
  • 추상화에 의존해야지, 구체화에 의존하면 안된다.
    ==> 의존 관계를 맺을 떄 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것. 거의 변화가 없는 것에 의존하라는 것
  • 각 객체들이 의존단계가 성립될 때, 추상성이 낮은 클래스보다 추상성이 높은 클래스와 의존관계를 가져야 한다.

 

 

 

3. 객체 지향 분석 방법론

(1) Rumbaugh

모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법으로, 객체 모델링 기법(Object Modeling Technique) 라고도 한다. 분석활동은 객체모델링 -> 동적 모델링 -> 기능 모델링 순으로 통해 이루어진다

(2) Booch(부치) 방법

미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용하는 분석 방법으로, 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의한다.

(3) Jacobson 방법

Use Case를 강조하여 사용하는 분석 방법이다.

(4) Coad와 Yourdon 방법

E-R 다이어그램을 사용하여 객체의 행위를 모델링하며, 객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성하는 기법

(5) Wirfs-Brock 방법

분석과 설계 간의 구분이 없고, 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법


 

[22년03월05일 기출문제]

13.클래스 설계원칙에 대한 바른 설명은?
     
     1.단일 책임원칙 : 하나의 클래스만 변경 가능 해야한다.
     2.개방-폐쇄의 원칙 : 클래스는 확장에 대해 열려 있어야 하며 변경에 대해 닫혀 있어야 한다.
     3.리스코프 교체의 원칙 : 여러 개의 책임을 가진 클래스는 하나의 책임을 가진 클래스로 대체되어야 한다.
     4.의존관계 역전의 원칙 : 클라이언트는 자신이 사용하는 메소드와 의존관계를 갖지 않도록 해야 한다.
더보기

 정답 : 2

 해설 :

단일 책임원칙 : 하나의 객체는 하나의 동작만의 책임을 가짐
개방-폐쇄의 원칙 : 클래스는 확장에 대해 열려 있어야 하며 변경에 대해 닫혀 있어야 한다.
리스코프 교체의 원칙 : 특정 메소드가 상위 타입을 인자로 사용할 때, 그 타입의 하위 타입도 문제 없이 작동해야 함
의존관계 역전의 원칙 : 상위 계층이 하위 계층에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있음

 


18.객체지향 분석기법의 하나로 객체 모형, 동적 모형, 기능 모형의 3개 모형을 생성하는 방법은?
     
     1.Wirfs-Block Method
     2.Rumbaugh Method
     3.Booch Method
     4.Jacobson Method
더보기

정답 : 2

해설 : Rumbaugh(럼바우) 방법
모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법으로, 객체 모델링 기법라고도 한다.

분석활동은 객체모델링 -> 동적 모델링 -> 기능 모델링 순으로 통해 이루어진다

Booch(부치) 방법
미시적(Micro) 개발 프로세스와 거시적(Macro) 개발 프로세스를 모두 사용하는 분석 방법으로,

클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의한다.

Jacobson 방법
Use Case를 강조하여 사용하는 분석 방법이다.

Coad와 Yourdon 방법
E-R 다이어그램을 사용하여 객체의 행위를 모델링하며,

객체 식별, 구조 식별, 주제 정의, 속성과 인스턴스 연결 정의, 연산과 메시지 연결 정의 등의 과정으로 구성하는 기법

Wirfs-Brock 방법
분석과 설계 간의 구분이 없고, 고객 명세서를 평가해서 설계 작업까지 연속적으로 수행하는 기법

 

[22년 04월 24일 기출문제]


26.객체지향 개념을 활용한 소프트웨어 구현과 관련한 설명 중 틀린 것은?
     
     1.객체(Object)란 필요한 자료 구조와 수행되는 함수들을 가진 하나의 독립된 존재이다.
     2.JAVA에서 정보은닉(Information Hiding)을 표기할 때 private의 의미는 '공개'이다.
     3.상속(Inheritance)은 개별 클래스를 상속 관계로 묶음으로써 클래스 간의 체계화된 전체 구조를 파악하기 쉽다는 장점이 있다.
     4.같은 클래스에 속하는 개개의 객체이자 하나의 클래스에서 생성된 객체를 인스턴스(Instance)라고 한다.
더보기

정답 : 2

해설 : JAVA에서 정보은닉(InformationHiding)을 표기할 때 private의 의미는 외부에서 클래스 내부 정보에 접근하지 못하도록 하는 '접근금지'이다