Open jsim27 opened 2 years ago
프로퍼티에 대한 접근을 메서드 측면에서 생각해 본적이 없는데 getter와 setter 메소드?에 메시지를 보낸다고 생각해 볼 수 있을 것 같아요😊
"해당 프로퍼티의 getter와 setter라는 메서드에 메시지 보내는 것" 이 부분을 잘 이해하지 못한 채로 아래의 문장에 대한 제 이해를 적어봅니다.
"메시지는 협력을 위해 한 객체가 다른 객체로 접근할 수 있는 유일한 방법."
과거 쥬스메이커 프로젝트할 때 쥬스 만드는 객체가 창고 객체의 프로퍼티에 직접 접근해서 과일의 재고를 수정하도록 코드를 짰었습니다. 과일 창고에 직접 접근해서 재고를 건들지 않고, 창고 객체에 과일 재고 변경을 메세지로 요청하는 방법을 사용하도록 리뷰 받았었고요. 저는 후자의 방법이 위 문장에서 이야기하고 싶은 것이 아닐까? 이해했어요.
저도 아직 getter와 setter를 완전히 이해하진 못했지만... 객체 내 프로퍼티의 경우 다른 타입에서 접근할 수 없도록 접근제어를 해주고, 함수를 호출해서 프로퍼티를 변경할 수 있도록 하는 것이 객체 간 메시지를 주고 받는 것이 아닌가 생각했어요!
이렇게 하면 객체의 프로퍼티에 직접 접근은 하지 않지만 변경을 요청할 수는 있지 않을까 생각했습니다!
A라는 객체에서 B라는 객체에게 요청(메시지를 보낸다)한다는 상황을 가정하에
제가 생각하기애는 일단 공개된 프로퍼티는 일단 지양해야 할거 같습니다!! public을 지양했다는 가정하에 B객체에서 값을 가져오거나 변경을 해야하는 상황이라면 B객체에서 별도의 메서드로 처리를 해줘야 한다고 생각합니다!
나무가 말한 프로퍼티에 대한 접근 방법과 메세지를 통한 방법은 다른 것이다라고 생각했습니다.
윗 분들이 말씀한 것 처럼 객체 내부 프로퍼티는 남이 굳이 알 필요없고, 건드리면 안되기에 은닉화를 진행하는데 이걸 공개시켜서 직접 접근하는 방법은 옳지않다 생각하고, 그렇기 떄문에 프로퍼티의 getter, setter도 탈 일이 없지 않나 라는 생각이 들었습니다.
메세지는 가능하면 메소드나, 옵저버 등을 통해 보내는 것이 맞다고 생각합니다.
메시지가 다른 객체에게 주어진 책임을 수행하도록 요청하는 것이라면, 프로퍼티의 접근(요청)에 따라 getter/setter가 적절한 값을 반환하거나 변경시켜주는 식으로 응답을 해주는 것이니 나무가 생각하신 바에 동의합니다!
p.117
객체가 다른 객체에게 메서드 호출 뿐만 아니라 공개된 프로퍼티 값을 가져오거나 변경할 수도 있으니까 위 문장이 처음엔 이해가 안됐는데
프로퍼티에 대한 접근을 "해당 프로퍼티의 getter와 setter라는 메서드에 메시지를 보내는 것"으로 이해하면 위의 문장이 (swift에서도) 성립하는 것이라고 생각해 봤어요.
이에 대한 여러분의 의견이 궁금합니다. 프로퍼티에 대한 접근은 getter / setter에 대한 메시지를 보내는 것이라고 이해하면 될까요?