ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OOP Desig
    DSP/Lecture 2024. 6. 14. 06:31

    애플리케이션 도메인과 솔루션 도메인

    1. 애플리케이션 도메인(Application Domain):
      • 애플리케이션 도메인은 현실 세계의 구체적인 엔티티들을 포함합니다.
      • 이 도메인에서는 우리가 모델링하고자 하는 실체(entity)들이 존재합니다.
    2. 솔루션 도메인(Solution Domain):
      • 솔루션 도메인은 애플리케이션 도메인의 엔티티들을 소프트웨어에서 객체로 표현하는 영역입니다.
      • 이 도메인에서는 실체들을 객체로 표현하고, 객체지향 프로그래밍을 통해 구현합니다.

    타입과 클래스의 추상화 과정

    1. 타입 분류:
      • 현실 세계의 실체들을 타입으로 분류합니다. 이 과정은 추상화(abstraction) 과정으로, 실체의 모든 세부 사항을 포함하지 않고, 모델링하고자 하는 중요한 속성만을 포함합니다.
      • 예를 들어, "자동차"라는 타입은 다양한 자동차의 공통 속성만을 포함합니다.
    2. 타입과 클래스의 매핑:
      • 타입을 클래스와 매핑합니다. 이 과정에서 타입은 하나의 클래스가 아니라 여러 클래스가 될 수 있습니다.
      • 클래스는 타입의 구체적인 구현으로, 동일한 타입을 여러 클래스로 구현할 수 있습니다.
      • 예를 들어, "자동차"라는 타입을 "승용차", "트럭", "SUV" 등의 클래스로 구현할 수 있습니다.

    타입과 클래스의 차이점

    • 타입(Type):
      • 타입은 실체의 추상적인 개념입니다.
      • 동일한 타입은 여러 클래스에 의해 구현될 수 있습니다.
    • 클래스(Class):
      • 클래스는 타입의 구체적인 구현입니다.
      • 클래스는 객체를 생성하는 설계도(청사진) 역할을 합니다.

    객체 지향 프로그래밍과 셰이프 드로잉

    교수님께서 설명하신 내용은 객체 지향 프로그래밍(OOP)의 기본 개념과 이를 사용하여 도형을 그리는 애플리케이션을 구축하는 방법을 다룹니다.

    객체 지향 프로그래밍의 기본 개념

    1. 객체 지향 프로그래밍(OOP):
      • OOP는 프로그램을 객체의 집합으로 구성하는 프로그래밍 패러다임입니다.
      • 객체는 데이터(속성)와 메서드(함수)를 포함하며, 이러한 객체들은 서로 상호작용합니다.
    2. 객체와 클래스:
      • 객체(Object): 실제로 동작하는 개체로, 클래스의 인스턴스입니다.
      • 클래스(Class): 객체를 생성하기 위한 설계도(청사진)입니다. 클래스는 객체의 속성과 행동을 정의합니다.

    도형 드로잉 애플리케이션

    교수님께서는 도형 드로잉 애플리케이션을 예로 들어 설명하셨습니다.

    1. 도형의 우주(Universe of Shapes):
      • 도형 드로잉 애플리케이션은 다양한 도형을 포함합니다. 예를 들어, 사각형(Rectangle), 삼각형(Triangle), 원(Circle), 다각형(Polygon) 등이 있습니다.
      • 이 모든 도형들은 draw 메서드를 가지고 있어 자신을 그릴 수 있습니다.
    2. 도형 클래스의 계층 구조:
      • 추상 클래스(Abstract Class) Shape:
        • 모든 도형의 공통 속성과 메서드를 정의합니다. draw 메서드는 순수 가상 함수(pure virtual function)로 선언됩니다.
        • 예를 들어, Shape 클래스는 다음과 같이 정의될 수 있습니다.
    class Shape {
    public:
        virtual void draw() const = 0;  // 순수 가상 함수
    };
    • 구체 클래스(Concrete Class):
      • Shape 클래스를 상속받아 구체적인 도형을 구현합니다. 각 도형 클래스는 draw 메서드를 구현합니다.
      • 예를 들어, Rectangle, Triangle, Circle, Polygon 클래스는 각각 다음과 같이 정의될 수 있습니다.
    class Rectangle : public Shape {
    public:
        void draw() const override {
            // 사각형을 그리는 코드
        }
    };
    
    class Triangle : public Shape {
    public:
        void draw() const override {
            // 삼각형을 그리는 코드
        }
    };
    
    class Circle : public Shape {
    public:
        void draw() const override {
            // 원을 그리는 코드
        }
    };
    
    class Polygon : public Shape {
    public:
        void draw() const override {
            // 다각형을 그리는 코드
        }
    };

    객체가 스스로를 그리는 방식

    객체 지향 프로그래밍의 흥미로운 점 중 하나는 객체가 스스로를 그릴 수 있다는 것입니다. 이는 각 도형 객체가 자신을 그리는 방법을 알고 있고, 이를 수행하는 draw 메서드를 구현하기 때문입니다.

    예를 들어, Rectangle 객체는 자신이 사각형임을 알고 있으며, draw 메서드를 호출하면 스스로를 그릴 수 있습니다. 이는 다음과 같은 코드로 구현될 수 있습니다:

     

    int main() {
        Rectangle rect;
        Triangle tri;
        Circle cir;
        Polygon poly;
    
        rect.draw();  // 사각형을 그림
        tri.draw();   // 삼각형을 그림
        cir.draw();   // 원을 그림
        poly.draw();  // 다각형을 그림
    
        return 0;
    }

    'DSP > Lecture' 카테고리의 다른 글

    Lecture3 FRIENDS  (0) 2024.05.23
    Lecture3 Vector Input Operator <<  (0) 2024.05.23
    Lecture3 Vector2D 입력 연산자 >>  (0) 2024.05.23
    Lecture 2 - 정적 캐스트(static_cast)  (0) 2024.04.25
    Lecture 2 - Operator, Overloading and Vector  (1) 2024.04.25
Designed by Tistory.