꾸준하게

누가 개발블로그에 이런 거까지 쓰냐에서 '누'를 담당하고 있습니다:)

Steadily

IT/[ GDSC ] 객체지향의 사실과 오해

[ 객체지향 사실과 오해 스터디 ] Day2_이상한 나라의 객체

고구마개발자_인선 2023. 11. 5. 09:49

귀여운 책표지

오늘은 드디어 객체지향 스터디의 Day 2이다!

Day1은 워크샵 이슈로 참여하지 못했지만..시험이 금요일날 끝나서 이번 스터디에는 참여할 수 있게 되었다!

앞으로,,,내가 무수한 팀플들을 잘 뿌셔나가면서 스터디도 끝까지 잘 해봤으면 좋겠다!

그럼 객터디 day2 레쭈고

 


2과 < 이상한 나라의 객체 >

 

Intro)
객체지향 프로그래밍이란, 상태와 행동을 가진 객체들이 서로 상호작용하여 복잡한 문제를 해결하는 프로그래밍 패러다임입니다. 

그러나 이 책에서 강조하는 것은, 객체지향에 처음 입문하는 사람들이 쉽게 빠질 수 있는 함정, 즉 '상태'를 중심으로 객체를 바라보는 것이 아니라 '행동'에 주목해야 한다는 점입니다.

 

 

 

 

 

1) 객체의 적합성

 

객체 :

1. 구별 가능한 식별자

2. 특징적인 행동

3. 그리고 변경 가능한 상태

 

책에 의하면, 객체는 위의 3가지로 구성됩니다.

그 중에서도 행동이 상태를 결정하고 변경한다는 점이 인상 깊었습니다. 이는 객체의 적합성은 상태가 아닌 행동에 의해 결정된다는 사실을 깨닫게 해주었습니다.

또한 책에서는 객체의 행동이 먼저 결정되어야 하며, 이후에 상태를 결정하도록 권장합니다.

 

'상태'를 먼저 결정하고 '행동'을 나중에 결정하는 방법

=객체지향 설계에서 나쁜 영향을 미칠 수 있다는 점

=협력에 참여하는 훌륭한 객체 시민을 양성하기 위한 가장 중요한 덕목은 상태가 아니라 행동에 초점을 맞추는 것

 

이라는 메시지를 책을 통해서 알 수 있었습니다. 

 

 

 

 

 

2) 수업시간에도,,시험에도 나왔었던 캡슐화의 중요성

캡슐화

= 객체의 상태를 외부에 노출하지 않으면서

+ 행동을 외부로 노출하게 함으로써 -> 객체의 자율성을 높이고 + 협력에 참여하는 객체들의 지능을 향상

 

캡슐화는 최종적으로  협력을 더 유연하고 간결하게 만들어주는 큰 장점으로 작용합니다.

캡슐화는 외부로부터 은닉이 포인트!

 

그렇다면 구체적으로 정보 은닉의 장점은 뭘까?

 

1. 외부에서 특정 객체의 데이터 및 함수를 직접 접근을 막음으로써 변경을 못하게 하는 것이 가능함

2. 유지보수나 확장시 오류의 범위를 최소화 가능
3. 객체내 정보손상, 오용을 방지함

4. 조작법이 바뀌어도 사용방법 자체는 바뀌지 않고, 데이터가 변경되어도 다른 객체에 영향을 주지 않기 때문에 독립성이 좋음 ( 저희 시험에 나왔답니다!! 아주 중요한 장점!! )

5. 객체를 모듈화 할 수있어 새로운 시스템의 구성에 하나의 모듈처럼 사용이 가능함

 

정보 은닉의 장점을 알아야 왜 캡슐화를 하는지에 대한 의문이 풀렸던 것으로 기억나,,책에는 없지만 첨부해봤습니당

 

 

3)의문점

'부수 효과(Side effect)'라는 개념에 대해 궁금증이 생겼습니다. 

부수 효과는 함수나 메소드가 외부 상태를 변경하거나 예상치 못한 방식으로 상호작용하는 것을 의미합니다.

그런데,,실제 개발 환경에서 발생한 부수효과의 사례가 궁금해지더라고요?

물론 구글링을 통해서도 알 수 있겠지만, 스터디원들의 풍부한 개발 경험을 저는 믿으니까 

이 부분은 스터디를 갔다오고 나서 적겠습니당ㅎㅎ

 

 


이번 챕터에서 가장 인상 깊었던 점은 객체지향이 단순히 현실 세계를 모방하는 것이 아니라는 사실이었습니다. 

특히  '상태보다는 행동에 초점을 맞추어 설계하는 '책임 주도 설계'의 중요성을 배울 수 있었습니다.

책임 주도의 설계란 뭘까..나는 항상 책임감을 가지고 코드 짤 때마다 주석도 열심히 달기는 하는데,,책임 완전 주도한거 아닌가..?

라는 의문을 가지면서 이번 스터디글을 마치도록 하겠습니다!

반응형