"객체지향 사실과 오해" 스터디 회고

김태현·2023년 7월 2일
0

들어가면서

객체지향의 사실과 오해 스터디는 제가 F-LAB에서 처음 참여하게 된 스터디였습니다. 해당 스터디는 F-LAB 백엔드 개발자신 하비님께서 리드하셨고, 인성과 실력 모두 좋은 동기들을 만날수 있었습니다. 팀원분들 모두 열정이 넘치셨고, 저 역시 공부에 대한 의욕과 성장욕구를 다시 한 번 얻는 계기가 되었습니다.

스터디에 참여한 이유

가장 첫 번째 이유는 제가 알고 있는 내용을 다른 사람들에게 정확하게 설명하는 훈련을 하고 싶었습니다. 개발자는 다른 사람들의 설명을 이해하고, 내가 아는 내용을 설명 해야할 상황이 많다고 생각합니다. 스터디를 통해 팀원들과 의견을 자유롭게 주고받으면서 커뮤니케이션 역량을 성장시키고 싶었습니다.

두 번째로 “객체”의 의미를 스스로 정리하고 싶었습니다. 객체라는 단어 자체만 보고 의미를 정의하기 힘들었고, 특히 이론적인 의미가 강하다고 생각합니다. 즉 다양한 사람들과 “객체”라는 개념에 대해 토론하게 되면 이론적으로 이해하고 있던 개념을 더욱 구체화 시킬수 있을 것이라고 생각했습니다.

스터디 진행방식

  1. 일주일 동안 읽어야할 책의 분량을 정합니다. (스터디 리더인 하비님께서 정해주셨습니다.)
  2. 다음주 발표자 정하기
  3. 발표자는 읽은 분량에 대한 내용을 정리합니다. 해당 챕터의 주요내용, 중요한 포인트, 자신의 이해와 해석 등을 포함하여 스터디원들에게 잘 전달할 수 있도록 준비합니다.
  4. 발표자가 정리한 내용 발표 이후 각자 토론하고 싶은 아젠다를 자유롭게 토론합니다.
    • 객체들이 소통하는 수단은 메시지라고 하는데 자바를 기준으로 생각해봤을 때 메시지는 객체의 메소드를 호출하는 것을 의미하는 건가?
    • 자율성이 높은 객체의 의미는 무엇이고 이것을 실제 적용할 때 어떻게 적용하면 좋을까?

객체지향 사실과 오해 REVIEW

저는 4장 “역할, 책임, 협력”과 관련된 내용의 발표를 맡았습니다.

해당 챕터에서, 각 객체는 역할을 맡은 책임을 다하기 위해 서로 협력하여 애플리케이션의 기능을 제공해야 한다고 설명합니다. 즉 역할, 책임, 협력은 이 책에서 가장 중요하게 여기는 개념입니다. 객체는 책임을 가지고, 그 책임에 따라 역할이 부여됩니다. 자신의 책임을 다하기 위해서는 메시지를 다른 객체와 주고 받으며 협력해야한다는 내용을 1~5장 까지 설명합니다.

이런 개념적인 내용이 이어지다가 6장에서는 설계에 대한 방법을 설명하고 7장에서는 자바 소스코드를 제공해줍니다.

실제 프로젝트에 적용 시도

특히 6장은 도메인모델과 유스케이스에 대한 내용을 설명합니다. DDD와 어느정도 관련있는 내용이라고 느꼈던 만큼, 조금은 겁이 나기도 했고 어렵게 느껴졌습니다. 집에서 책을 한 번 읽고, 스터디에 참여하여 토론해보며 책에서 설명하는 개념을 이해할 수 있었습니다.

책을 통해 이해한 유스케이스의 개념

"객체지향의 사실과 오해"에서는 유스케이스를 사용하여 사용자의 요구사항을 파악하고 시스템이 제공해야 하는 기능을 명세화하는 방법을 설명합니다. 유스케이스는 사용자와 시스템 간의 상호작용을 통해 시스템의 행위를 기술하며, 사용자 관점에서 시스템이 어떻게 동작하는지를 쉽게 표현합니다.

유스케이스 설계 적용하기

스터디에서 배운 내용을 실제 프로젝트 적용해보며 유스케이스에 대한 내용을 심화시킬 수 있었습니다. 이 단계에서 책을 통해 학습한 개념들이 큰 도움이 되었습니다. 각 유스케이스를 하나의 시나리오로 표현하여 사용자의 요구사항을 파악할 수 있았습니다.

또한 프로젝트 기능 구현이 완성되면, UML 유스케이스 다이어그램을 그려보며 객체간 인터렉션을 설계해볼 예정입니다.

스터디에 참여해서 좋았던점

저는 어떤 책을 읽기 시작하거나 공부를 시작할 때마다 첫 시작은 항상 의욕을 갖고 시작하지만 시간이 지날수록 의욕은 점점 떨어질 때가 있습니다. 하지만 스터디에 참여하고 동료들과 의견을 주고받으며 성장에 대한 동기부여가 되었던 시간이었습니다.

또한 객체지향 이외에도 다양한 내용 또는 기술들 배워볼 수 있었습니다. 자바의 높은 피처와 코틀린을 사용하시는 팀원의 코드를 통해 해당 피처의 특징들을 간단하게 살펴볼 수 있었고, 레이어드 아키텍처를 적용하여 페어 형식으로 숫자야구 게임을 설계해보는 등의 경험을 통해 객체지향을 이해할 수 있는 시간이 되었습니다.

무엇보다 스스로 파악하지 못했던 부족한 부분을 채워나가고, 팀원들의 피드백을 통해 더 깊은 성장이 가능했던것 같습니다.

profile
안녕하세요. Java&Spring 기반 백엔드 개발자 김태현입니다.

0개의 댓글