본문 바로가기

카테고리 없음

[OOAD] 1. 객체지향 프로그래밍 OOP (Object-Oriented Programming)

객체 지향 핵심 5개 요소

  1. 추상화(Abstraction):
    • 복잡한 시스템을 단순화하여 중요한 부분만을 다루고, 불필요한 세부 사항은 무시하는 과정.
    • 예시: 자동차를 운전할 때, 내부 엔진의 작동 원리를 알 필요 없이 운전 방법만 알면 됨.
  2. 캡슐화(Encapsulation):
    • 내부 구현을 숨기고, 필요한 인터페이스만 외부에 제공하여 객체의 상태를 보호하는 방법.
    • 예시: 자동차의 내부 메커니즘을 숨기고, 운전자가 조작할 수 있는 페달과 핸들만 제공.
  3. 상속(Inheritance):
    • 부모 클래스의 속성과 메서드를 자식 클래스가 물려받아 재사용하는 방법.
    • "is a kind of" 관계를 나타냄.
    • 예시: Vehicle 클래스에서 Car 클래스가 상속받아 사용.
  4. 다형성(Polymorphism):
    • 동일한 인터페이스를 통해 서로 다른 구현을 사용할 수 있는 능력.
    • 예시: 여러 클래스가 각각 다른 방식으로 output 메서드를 구현하여, 같은 메서드 호출이 각기 다른 동작을 수행.
  5. 구성(Composition):
    • 객체 간의 "has_a" 관계를 나타내며, 객체가 다른 객체를 포함하는 방식.
    • 런타임에 동적으로 정의되며, 객체는 인터페이스를 통해서만 접근.
    • 예시: Car 클래스가 Engine 객체를 포함하여 사용.

---

절차적 프로그래밍(Procedural Programming) vs. 객체 지향 프로그래밍(Object-Oriented Programming)

프로그램 조직 절차(프로시저)로 구성 객체로 구성
중심 요소 함수와 변수 객체(데이터 + 메서드)
초점 데이터 구조, 알고리즘, 단계 순서 객체와 객체 간의 통신
코드 재사용 함수 재사용 상속 및 구성
데이터 접근 전역 변수나 매개변수로 데이터 전달 캡슐화를 통해 데이터 보호 및 객체 내부에서만 접근 가능
설계 방법론 구조적 분석 및 설계(SASD) 객체 지향 분석 및 설계(OOAD)
예시 C, FORTRAN Java, Python, C++

절차적 프로그래밍

  • 프로그램 조직: 절차와 함수로 구성.
  • 초점: 데이터 구조, 알고리즘, 단계 순서.
  • 설계 방법론: SASD(Structured Analysis and Structured Design).
    • Top-Down Divide and Conquer: 큰 문제를 작은 문제로 나누어 해결.
    • 기능적 관점: DFD(Data Flow Diagram)를 사용하여 기능적 관점에서 문제 분석.

객체 지향 프로그래밍

  • 프로그램 조직: 객체로 구성.
  • 초점: 객체와 객체 간의 통신.
  • 설계 방법론: OOAD(Object-Oriented Analysis and Design).
    • 객체 지향 분석(OOA): 도메인의 객체와 요구 사항 식별.
    • 객체 지향 설계(OOD): 소프트웨어 객체와 이들의 협력 방식 정의.

핵심 비교 요약

항목절차적 프로그래밍객체 지향 프로그래밍

조직 함수 객체
초점 알고리즘과 데이터 구조 객체와 통신
설계 방법론 구조적 분석 및 설계(SASD) 객체 지향 분석 및 설계(OOAD)

 

---