Post

객체지향 방법론

객체지향 방법론

개체지향 방법론 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 사용 장점:
    • 다른 방법론으로 분석/설계해도 이해 용이
    • 부분적 다른 방법론 사용 가능

image

객체지향 방법론에 따른 표기법의 차이


객체지향 학습 로드맵 image

핵심 개념 요약

  • 방법론: UML을 통한 표기법 통일
  • 객체지향: 객체, 클래스, 캡슐화, 데이터 은닉, 상속, 조합, 다형성
  • 모델링 도구:
    • 정적 모델링: 클래스 다이어그램
    • 동적 모델링: 유스케이스 다이어그램, 시퀀스 다이어그램

객체지향 프로세스 특성 (★★★)

1. 반복적 프로세스

  • 구조적 방법론(폭포수 모형 : 요구사항 분석 - 설계 - 구현 -테스트 -유지보수)
  • 객체지향(반복적 개발 : 소프트웨어 생명주기를 반복하여 적용하도록 제안)
    image
  • 고객 요구변화 대응 용이

2. 솔기 없는(Seamless) 프로세스

image

  • 프로세스를 구성하는 각 단계 경계 불분명
  • 분석, 설계, 구현 단계에 걸쳐 실세계의 객체를 프로그램의 객체로 표현하면 그 단계간의 구분이 불명확하기 때문

3. 상향식 프로세스(Bottom Up)

구조적 방법론 : 하향식 프로세스를 사용
객체지향 방법론 : 상향식 프로세스를 사용
- 하향식 프로세스 : 어떤 문제를 큰 덩어리로 인식한 후 그것을 작은 덩어리로 잘라서 문제를 하결하는 구조
- 상향식 프로세스 : 작은 덩어리의 문제들을 해결한 후 그 덩어리들을 뭉쳐서 좀 더 큰문제를 해결해 나가는 방식

4. 재사용(Reuse) 고려

이미 구현되어 있는 클래스들을 다시 사용하여 다시 리팩토링 할 수 있습니다.
구조적 방법론 : 성공적인 소프트웨어 산물을 만들고자 하는 개발 공정에 치중합니다.
객체지향 방법론 : 재사용이 고려되어 프로세스가 진행됩니다.


객체지향 핵심 개념

객체 (Object)

  • 정의: 데이터(속성) + 행위(메서드)
  • 4가지 관점:
    1. 모델링 관점: 명확한 의미의 대상/개념
    2. 프로그래머 관점: 클래스에서 생성된 변수
    3. 소프트웨어 개발 관점: 데이터+메서드 형태의 모듈
    4. 객체지향 프로그래밍 관점: 속성과 메서드

클래스 (Class) vs 인스턴스

구분설명예시
클래스객체의 추상적 청사진자동차, 교수
객체클래스의 구체적 실체소나타, 김교수
인스턴스화클래스 → 객체 생성 과정new Car()

인스턴스 : 같은 클래스에 속하는 개개의 객체로, 하나의 클래스에서 생성된 객체입니다. 클래스가 구체화되어, 클래스에서 정의된 속성과 성질을 가진 실제적인 객체로 표현된 것 입니다.
여기서 인스턴스화는 추상적인 개념인 클래스에서 실제 객체를 생성하는 것 입니다. 예제는 아래 그림과 같습니다.
image

상속 (Inheritance) (★★★)

  • is-a 관계: A 교수 is a 교수
  • 장점:
    • 재사용성 ↑
    • 유지보수, 확장, 이해 용이
    • 계층적 구조 표현
    • 추상화 가능

캡슐화 vs 데이터 은닉

개념설명예시
캡슐화데이터 + 메서드 통합class BankAccount { ... }
데이터 은닉외부 접근 제한 (private)private int balance;

캡슐화 장점

  • 데이터 보호
  • 추상화 용이
  • 제공자와 이용자를 명확히 분리
  • 이용자에게 편리성 제공
  • 사용법이 쉬움
  • 변화에 대한 국지적 영향
  • 객체 간의 독립성 보장
  • 변경 용이성과 재사용성 증대

** 데이터 은닉 장점**

  • 독립성 향상, 수정 용이, 이해도 증진, 확장성 증가

다형성 (Polymorphism)

: 서로 다른 객체가 동일한 메시지에 대하여 서로 다른 방법으로 응답할 수 있는 기능

  • 예시:
    image
    • draw() 메서드 → 도형별 다른 구현

조합 (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.