mojo's Blog

객체지향 패러다임 본문

Design Patterns

객체지향 패러다임

_mojo_ 2024. 5. 6. 22:02

※ 추상적 데이터 유형 (Abstract Data Type)

- 데이터 및 관련 작업을 하나의 구문 단위로 캡슐화

- 단일 구문 단위 : 프로그램 구성, 수정 가능성(데이터 구조와 관련된 모든 것) 및 별도의 컴파일을 향상

- 캡슐화 : 데이터 표현을 숨김으로써 사용자 코드가 유형 객체에 직접 접근하거나 표현에 의존할 수 없으므로

   사용자 코드에 영향을 주지 않고 표현 변경 가능

 

상속 (Inheritance)

클래스 Y가 클래스 X에 속하는 경우 (Y -> X)

- Y는 X의 모든 메서드를 상속함

- Y는 X로부터 모든 데이터를 상속받음

- 타입 X의 인스턴스가 예상되는 곳 어디서나 Y의 인스턴스를 사용할 수 있음

 

※ 다형성 (Polymorphism)

작업이 다른 클래스에서 다른 방식으로 수행될 수 있는 객체 지향 소프트웨어의 속성

- 동일한 이름의 메서드가 여러 개 있어야 함

- 실행할 객체의 선택은 변수에 있는 객체에 따라 달라짐

- 많은 if-else 문을 코딩하거나 전환할 필요성을 줄임

 

※ 메소드 오버로딩 (Method Overloading)

Class A {
	void method(int x) {
    	System.out.println("method:" + x);
    }
    void method(int x, int y) {
    	System.out.println("method:" + x + "/" + y);
    }
    double method(double x) {
    	System.out.println("method:" + x);
        return x;
    }
}

 

※ 메소드 오버라이딩 (Method Overriding)

public class A {
	public void method() { // Base class method
    	System.out.println("hello A");
    }
}

public class B extends A {
	public void method() { // Derived class method
    	System.out.println("hello B");
    }
}

 

※ 추상 클래스 및 추상 메서드

- 추상 메서드는 정의를 포함하지 않는 방법

- 추상 클래스는 객체화 할 수 없음

- 그러나, 추상 클래스 타입의 변수는 해당 자손의 객체를 참조할 수 있음

  ( Animal a = new Cat(); // 추상 클래스인 Animal과 해당 자손 클래스인 Cat )

 

인터페이스 (Interface)

- 인터페이스에 정의된 모든 메서드는 추상적이며, 구현이 포함될 수 없음

- 인터페이스에는 객체 변수를 포함할 수 없음

- public static final 변수를 포함할 수 있음

 

※ 클래스 관계 (Class Relationships)

 

- Dependency: 한 클래스의 객체가 다른 클래스의 객체와 잠시 작업할 때 사용

- Association: 한 클래스의 객체가 다른 클래스의 객체와 일정 시간 동안 작업할 때 사용

- Aggregation: 한 클래스가 소유하지만 다른 클래스의 객체에 대한 참조를 공유할 때 사용

- Composition: 한 클래스가 다른 클래스의 객체를 포함할 때 사용

- Inheritance: 한 클래스가 다른 클래스의 타입일 때 사용

 

※ 정보 은닉 (Information Hiding)

- 내부 설계 결정을 숨기기 위한 설계 원칙

- 내부 설계 결정이 변경될 가능성이 가장 높음

- 향후 설계의 유지 또는 수정에 따른 부작용을 줄이고 설계의 다른 모듈에 미치는 영향을 최소화

 

'Design Patterns' 카테고리의 다른 글

Template Method Pattern  (0) 2024.06.06
Observer Pattern  (1) 2024.06.06
Strategy Pattern  (0) 2024.06.06
GRASP  (1) 2024.05.15
SOLID 원칙  (0) 2024.05.06
Comments