POCU COMP2500 개체지향 프로그래밍 및 설계 (Java) 후기

수강 목적

이번에는 개체지향 프로그래밍 및 설계 강의를 들었다.

본인은 이미 백엔드 개발자이기 때문에 자바에는 익숙한 상태였다.

 

하지만 비전공자로서 늘 기초 지식에 대해서 깊게 배우는 것에 대한 갈망이 남아있고, POCU 의 모든 과정을 듣기로 결심했다. 

 

개체지향을 어느정도는 알고 있었지만, 관련 실습, 과제들이 어떻게 나오는지 궁금하기도 했고, 포프 선생님이 생각하는 개체지향에 대한 내용을 알고 싶었다.

강의 내용

이번 개체지향 강의는 다른 과목들과 달리 추상적인 내용이 많았다. OOP 의 필요성부터 OOP의 4대 특성까지 예시를 들어가며 설명해주셔서 더 잘 이해할 수 있었다.

 

또 개체지향 '설계' 를 위해 상속을 이해하기 위한 방법, 개체 모델링등을 실 생활 예제를 통해 설명해주셔서 어느 상황에 적절하게 상속을 써야하는지 알 수 있었다. 설계에 정답은 없지만, 포프님이 하나씩 설계해나가는 모습을 보면서 어떤식의 사고를 해야하는지 알 수 있었다.

 

그리고 항상 상속과 컴포지션을 어느 상황에서 사용하는 것이 옳은지 헷갈리곤했는데, 각각이 어떤 케이스에 유리한지 경우를 자세하게 소개해주셔서 더욱 개념을 잘 적립하고, 어떻게 써먹어야할지 감을 잡을 수 있었다. 특히, has-a, is-a 관계에 대해서 명확하게 이해할 수 있었다.

 

중간고사 이후에는 개체지향 설계에서 꽃이라고 볼 수 있는 다형성에 대해서 학습했는데, 이때 늦은 바인딩, 이른 바인딩에 대한 키워드를 이해할 수 있었고 인터페이스를 통해 다형성을 어떤식으로 구현하는지 이해할 수 있었다.

 

이외에도 결합도가 강하다, 느리다의 개념과 디자인 패턴, SOLID 설계 정신을 학습하면서 각각의 상황이 의미하는바와 적절한 설계를 어느 상황에 적용하는 것이 좋은지 학습할 수 있었다.

 

강의 실습 & 과제

개체지향 프로그래밍 설계의 실습 과제는 앞선 과목과 다르게 '설계'의 관점에서 채점을 진행했다.

적절한 개체의 캡슐화, 상속관계를 지키지 않으면 감점을 받았다.

 

실습, 과제의 명세를 명확하게 이해하지 않고, 오직 구현을 위한 프로그래밍을 한다면 점수를 온전히 획득할 수 없었다.

특히 모든 과제는 유저 스토리 기반으로 어떤 개체를 만들고 개체간의 관계를 상속으로 할지, 메서드는 어느 개체에게 책임을 지울지 많은 고민을 할 수 있었다.

 

특히 과제3은 명세도 엄청 복잡하고 개체간의 책임 및 구현을 명확하게 설계하지 않으면 절대로 통과할 수 없었다. 과제3을 통해서 개체 지향 설계의 쓴맛을 제대로 맛볼 수 있었다.. 그러나 그만큼 설계에 대해서 많은 고민을하고 내가 이해한 명세와 수업시간에 배운 내용을 토대로 설계하고자 노력하면서 한층 더 성장할 수 있었다. 

 

중간 & 기말 시험

기존 과목과 시험의 유형은 비슷한 부분도 있었지만 '설계' 과목답게 특정 상황에 대한 설계를 하는 문제도 있었다. 최대한 실습,과제를 기반으로 시험에 녹여내려고 했다. 약간 아쉬운점은 다른 과목과 달리 '설계' 의 관점이다보니 감점이 된 포인트에서 어느 부분이 문제인지 알고 싶었는데, 이를 알지 못해서 아쉬웠다.

 

점수는..?

자바 수업도 재수강을 했다.. 아깝게 84%로 떨어졌다.. 지난 학기에 들었지만, 현업과 같이하면서 기말고사 준비를 많이 준비하지 못했다 ㅠㅠ

 

하지만 다시 들으면서 좀더 개체지향 설계에서 간과했던 포인트들을 다시 정리하면서 중간, 기말고사도 더 잘 볼 수 있엇다. 하지만 설계의 포인트에서 어느 부분이 문제인지 피드백을 받지 못한 점은 아직 아쉽다..

 

느낀점

 

개체지향 프로그래밍 수업을 들으면서 개체를 어떤 기준으로 분리하면 좋을지 머릿속에 적립이 되었다. 실생활의 어떤 상황을 개체로 모델링하고, 적절하게 개체의 멤버 변수를 설계하고 상속을 어느 시점에하면 좋을지, 이럴때는 컴포지션이 더 좋고 등등 이런 내용들이 익숙해질 수 있었다.

 

이제는 컴퓨터의 동작원리를 넘어서서 개체지향 설계 관점에서 더나은 시스템을 만들어나갈 수 있겠다는 자신감도 얻을 수 있었다. 실습과 과제도 그렇고 이론까지 상당히 추상적인 부분이 많아서 각 모델링 방법의 장단점들이 상당히 많고 소수설, 다수설 등 정답이 존재하지 않는 부분이 많았다. 이러한 부분들은 두고두고 필요할 때마다 다시한번씩 수업때 배웠던 내용을 다시 한번 보면서 내 것으로 체화해야 겠다는 생각을 했다.

 

이제 POCU 수업의 4/(7 to 12) 을 들었다. 개체지향 설계 과목과 함께 C++ 언매니지드 프로그래밍도 같이 들으면서 과정을 소화했는데, 확실히 시험 기간에 엄청난 부담이 되었다. 다음에는 재수강을 절 때 하지 않겠다는 생각으로 이번 학기는 둘다 열심히 했던 것 같다.. 개체지향 설계는 앞으로 실무에서도 많이 쓸 것이기 때문에 이번 강의를 계기로 기반을 다지고 더 나은 설계를 하는데 자신감을 가지고 소통할 수 있겠다는 생각이 들었다.

 

댓글

Designed by JB FACTORY