설계패턴 2. OOP(2)

LSDrug·2024년 6월 7일

설계패턴(完)

목록 보기
2/26

객체지향 프로그래밍: 클래스

클래스를 사용하여 특정 객체를 표현할 수 있다.

  • 클래스는 속성과 행동을 포함하는 객체를 정의한다.
  • 속성데이터의 요소이고 함수특정 작업을 수행한다.
  • 클래스에는 객체의 초기 상태를 설정하는 생성자가 존재한다.
  • 클래스는 템플릿으로 쉽게 재사용할 수 있다.

객체지향 프로그래밍: 메소드(함수)

객체지향 프로그래밍에서 메소드의 역할

  • 객체의 행위를 나타낸다.
  • 속성을 이용하고 조작하여 task를 수행한다.

OOP의 주요 기능: 캡슐화

  • 객체의 기능과 상태 정보를 외부로부터 은닉
  • 사용자는 객체의 내부 구조 및 상태를 직접 수정할 수 없고 대신 수정을 요청할 수 있다.
  • 요청의 종류에 따라 객체는 getter, setter와 같은 특수 함수를 사용하여 내부 상태를 변경
  • 파이썬에는 캡슐화에 필요한 접근 제어 키워드(public, private, protected)가 없기 때문에 캡슐화의 개념이 존재하지 않는다.
  • 함수나 변수 앞에 __를 붙여 접근 제어 권한을 부여할 수 있다.

OOP의 주요 기능: 상속

상속이란

  • 어떤 클래스의 기능이 부모 클래스로부터 파생되는 것을 의미한다.
  • 부모 클래스에서 정의된 함수를 재사용할 수 있고, 기본기능을 확장할 수 있다.
  • 파이썬에서는 다중 상속을 지원한다.
  • 클래스간 계층 구조 형성
  • 코드의 재사용이 가능하기 때문에 효율성이 증대된다.

OOP의 주요 기능: 추상화

  • 공통적인 속성을 묶어서 정의 하는 것
  • 공통적인 속성 즉, 상위의 개념에서 추상화가 주로 사용
  • 상위 개념을 추상화로 정의하고 의존되는 속성을 다른 클래스로 정의하는 것이 주요한 사용 중 하나.

(위 사진에서 알 수 있듯, 개념적인 '장비'를 추상화 시켜 기본적인 뼈대를 구성하고, 구체적인 기계(장비의 종류)를 클래스를 이용해 하는 방식으로 사용.)


OOP의 주요 기능: 컴포지션

  • 객체나 클래스를 더 복잡한 자료 구조나 모듈로 묶는 행위
  • 컴포지션을 통해 특정ㅇ 객체는 다른 모듈의 함수를 호출 할 숫 있다.
  • 즉, 상속 없이 외부 기능을 사용할 수 있다.
  • Loose Coupling(느슨한 결합): 시스템 내 여러 부분이 독립적으로 존재하며, 변경사항이 한부분에 영향을 미치지 않는다.

has-a와 is-a 관계
해당 관계는 다음과 같이 비교, 정의할 수 있다.


profile
마약같은 코딩, 마약같은 코딩러

0개의 댓글