관계(Relationships)의 프로그래밍

Eunjung-Cho·2021년 5월 29일
0

종속성 - 클래스A가 클래스B를 사용한다.

: 클래스 B의 객체 -> 클래스 A의 메쏘드 매개변수
=> 메쏘드(def) 내에서만 사용

class A:
	...
    def do_something(self, b): 
    ...

구성 - 클래스A가 클래스B를 가지고 있다. (종속성보다 더 오랫동안 보유 attribute니까)

: 클래스 B의 객체 -> 클래스 A의 속성값
=> 초기 생성자 attribute 값은 None -> setter에서

class A:
	def __init(self, ...):
    	self.__attr_b = None #처음에는 속성값을 None으로
    
    @attr_b.setter #위의 클래스B로 가지고온 속성값을 setter로
    def art_b(self, b):
    	self.__attr_b = b #매개변수 b는 B의 객체 -> 클래스 A의 attribute가 된다

포함 - 클래스A가 클래스B를 소유한다.

: 클래스 B의 객체 -> 클래스 A의 속성값으로 생성 및 저장
=> 생성자 단계에서 부터

class A:
	def __init__(self, ...):
    	self.__attr_b = B() #생성자에서 클래스B의 attribute를 갖는다.

일반화 - 클래스B는 클래스 A이다.

: 클래스A를 기본 클래스로 지정하여 클래스 B를 정의

class A:
	...
class B(A):
	...
profile
IT컨설팅 데이터 분석가

0개의 댓글