객체지향 방법론
객체지향 방법론
개체지향 방법론 vs. 구조지향 방법론
| 비교 항목 | 개체지향 방법론 (OOP) | 구조지향 방법론 (Procedural) |
|---|---|---|
| 개념 | 객체(Object)와 클래스를 중심으로 설계 | 절차(Procedure)와 함수를 중심으로 설계 |
| 주요 특징 | 캡슐화, 상속, 다형성 | 모듈화, 순차적 흐름 |
| 데이터 접근 방식 | 데이터와 함수를 객체 내부에 묶음 (Encapsulation) | 데이터와 함수를 분리하여 접근 |
| 코드 재사용성 | 상속과 다형성을 통해 높은 재사용성 | 함수 단위의 코드 재사용이 가능하지만 OOP보다 제한적 |
| 유지보수 | 코드 수정이 용이하고 확장성이 뛰어남 | 코드가 길어질수록 유지보수가 어려움 |
| 대표적인 언어 | Java, C++, Python, C# 등 | C, Pascal, COBOL 등 |
| 적용 분야 | 대규모 소프트웨어, 게임 개발, GUI 애플리케이션 등 | 시스템 프로그래밍, 임베디드 시스템 등 |
요약
- 객체지향 방법론(OOP): 객체 중심 설계, 유지보수 및 확장성 우수
- 구조지향 방법론: 절차 중심 설계, 작은 프로젝트에 적합
객체지향 방법론
객체지향 방법론의 4대 방법론
- Booch 법
- Coad.Yourdon법
- Shlaer/Mellor 법
- OMT법
객체지향 방법론 표기법 통일의 필요성
- 레셔널사는 표기법 통일을 위해 UML 제안
- UML 사용 장점:
- 다른 방법론으로 분석/설계해도 이해 용이
- 부분적 다른 방법론 사용 가능
객체지향 방법론에 따른 표기법의 차이
핵심 개념 요약
- 방법론: UML을 통한 표기법 통일
- 객체지향: 객체, 클래스, 캡슐화, 데이터 은닉, 상속, 조합, 다형성
- 모델링 도구:
- 정적 모델링: 클래스 다이어그램
- 동적 모델링: 유스케이스 다이어그램, 시퀀스 다이어그램
객체지향 프로세스 특성 (★★★)
1. 반복적 프로세스
- 구조적 방법론(폭포수 모형 : 요구사항 분석 - 설계 - 구현 -테스트 -유지보수)
- 객체지향(반복적 개발 : 소프트웨어 생명주기를 반복하여 적용하도록 제안)
.png)
- 고객 요구변화 대응 용이
2. 솔기 없는(Seamless) 프로세스
- 프로세스를 구성하는 각 단계 경계 불분명
- 분석, 설계, 구현 단계에 걸쳐 실세계의 객체를 프로그램의 객체로 표현하면 그 단계간의 구분이 불명확하기 때문
3. 상향식 프로세스(Bottom Up)
구조적 방법론 : 하향식 프로세스를 사용
객체지향 방법론 : 상향식 프로세스를 사용
- 하향식 프로세스 : 어떤 문제를 큰 덩어리로 인식한 후 그것을 작은 덩어리로 잘라서 문제를 하결하는 구조
- 상향식 프로세스 : 작은 덩어리의 문제들을 해결한 후 그 덩어리들을 뭉쳐서 좀 더 큰문제를 해결해 나가는 방식
4. 재사용(Reuse) 고려
이미 구현되어 있는 클래스들을 다시 사용하여 다시 리팩토링 할 수 있습니다.
구조적 방법론 : 성공적인 소프트웨어 산물을 만들고자 하는 개발 공정에 치중합니다.
객체지향 방법론 : 재사용이 고려되어 프로세스가 진행됩니다.
객체지향 핵심 개념
객체 (Object)
- 정의: 데이터(속성) + 행위(메서드)
- 4가지 관점:
- 모델링 관점: 명확한 의미의 대상/개념
- 프로그래머 관점: 클래스에서 생성된 변수
- 소프트웨어 개발 관점: 데이터+메서드 형태의 모듈
- 객체지향 프로그래밍 관점: 속성과 메서드
클래스 (Class) vs 인스턴스
| 구분 | 설명 | 예시 |
|---|---|---|
| 클래스 | 객체의 추상적 청사진 | 자동차, 교수 |
| 객체 | 클래스의 구체적 실체 | 소나타, 김교수 |
| 인스턴스화 | 클래스 → 객체 생성 과정 | new Car() |
인스턴스 : 같은 클래스에 속하는 개개의 객체로, 하나의 클래스에서 생성된 객체입니다. 클래스가 구체화되어, 클래스에서 정의된 속성과 성질을 가진 실제적인 객체로 표현된 것 입니다.
여기서 인스턴스화는 추상적인 개념인 클래스에서 실제 객체를 생성하는 것 입니다. 예제는 아래 그림과 같습니다.
.png)
상속 (Inheritance) (★★★)
- is-a 관계:
A 교수 is a 교수 - 장점:
- 재사용성 ↑
- 유지보수, 확장, 이해 용이
- 계층적 구조 표현
- 추상화 가능
캡슐화 vs 데이터 은닉
| 개념 | 설명 | 예시 |
|---|---|---|
| 캡슐화 | 데이터 + 메서드 통합 | class BankAccount { ... } |
| 데이터 은닉 | 외부 접근 제한 (private) | private int balance; |
캡슐화 장점
- 데이터 보호
- 추상화 용이
- 제공자와 이용자를 명확히 분리
- 이용자에게 편리성 제공
- 사용법이 쉬움
- 변화에 대한 국지적 영향
- 객체 간의 독립성 보장
- 변경 용이성과 재사용성 증대
** 데이터 은닉 장점**
- 독립성 향상, 수정 용이, 이해도 증진, 확장성 증가
다형성 (Polymorphism)
: 서로 다른 객체가 동일한 메시지에 대하여 서로 다른 방법으로 응답할 수 있는 기능
조합 (Composition)
: 다른 객체를 사용하여 객체를 구성하는 것 입니다. 다른 클래스를 사용하여 보다 복잡한 클래스를 만드는 일종의 조립
- has-a 관계:
자동차 has a 엔진 - 집합 vs 연관:
- 집합: 필수 구성 요소 (예: 자동차 ↔ 엔진)
- 연관: 선택적 관계 (예: 학생 ↔ 동아리)
UML 주요 다이어그램
| 정적 모델링 | 동적 모델링 |
|---|---|
| 클래스 다이어그램 | 유스케이스 다이어그램 |
| 객체 다이어그램 | 시퀀스 다이어그램 |
| 컴포넌트 다이어그램 | 상태 다이어그램 |
💡 시험 핵심 체크
- 4대 방법론 이름 암기
- UML의 목적과 장점
- 객체지향 4대 특성(반복적, 솔기없음, 상향식, 재사용)
- 클래스/객체/인스턴스 관계
- 캡슐화 vs 데이터 은닉 차이
- is-a/has-a 관계 구분
이어서
This post is licensed under CC BY 4.0 by the author.

.png)
.png)
.png)