Page tree
Skip to end of metadata
Go to start of metadata

스터디 내용

  • 자바-8주차 - 클래스 재설계에 설계한 내용에 대한 구현 소스 코드를 리뷰하는 과정을 거쳤다.
  • 선진이의 첫번째 리뷰를 통해 인터페이스 기반 구조로 개발했을 때 확장 가능한 구조가 가능함을 느꼈다.
  • 영남이의 두번째 리뷰
    • 자바의 abstract 키워드를 활용해 중복을 제거할 수 있다.
    • 상속을 통해 재사용성에 대한 논의 있었다. => 스터디 전날에 interface만 사용하지 않고 abstract를 통해 중복을 제거할 것을 요청했다. 이 부분이 이 날의 토론을 활성화하는데 큰 역할을 했다.
    • abstract 클래스가 interface를 implements하도록 했다.
  • 각 클래스간의 구조를 파악하는 과정 중 다음과 같은 질문이 나왔다.
    • A라는 인터페이스가 있고 B, C, D 구현 클래스가 있을 때 B 구현체에 abc()라는 추가 기능 구현을 위한 메소드가 추가되면 A 인터페이스에 abc() 메소드가 추가되면서 C, D에 구현할 필요가 없는 abc() 메소드를 구현해야 하는 것이 아닌가?
    • 상속 구조로 구현할 때의 단점에 대해 이슈 제기를 한 것이다.
    • 이 질문을 통해 상속의 단점에 대해 공유하고 이에 대한 단점을 보완하기 위해 조합(composition)을 활용해 해결해 가능 과정을 공유했다.
  • 이 과정을 구현해 가면서 interface, abstract, concrete class, 상속, 조합 등 OOP 핵심과 관련된 모든 내용을 학생들이 이해할 수 있는 시간이 되었다.

스터디 최종 회고

스터디를 하면서 가장 큰 영감을 얻은 시점은 언제였으며, 어떤 영감을 얻었는가?

  • 학생 A
    • boundary condition을 제거하기 위해 Dummy Node를 추가하면서 객체의 역할이 명확해 졌을 때 즐거웠다. 
    • 설계하고 논리하는 과정
    • 의외성으로부터의 배움
    • 복잡한 논리를 인터페이스와 추상화 개념을 통해 풀어가는 것
  • 학생 B
    • Position 클래스 만들기, 인터페이스 활용 등 설계가 코드의 간결함과 명확함을 향상시키는데 큰 도움이 된다는 사실을 깨달았을 때
  • 학생 C
    • hashcode()와 equals()의 역할과 동작 방식을 이해했을 때. 메모리 참조에 대한 내용이 머릿 속에서 자연스럽게 도식화가 일어나고 있었던 점에 스스로 놀랐다.
    • 인터페이스와 추상 클래스 이야기가 나왔을 때, 대충 그런 것이 있고 어떻게 동작한다는 것만 어렴풋이 기억하고 있었다.
    • 그런데 프로그램 작성시에 전체 구조를 효과적으로 만들기 위해 어떻게 응용하는지 약간이나마 단서를 잡은 것 같다.
    • 앞으로 무엇을 더 공부해야할지 방향을 찾는 듯한 느낌이다.
  • 학생 D
    • 다른 사람과 다른 생각이 같은 문제를 다른 시각, 다른 방법으로 보게 해 줄 때
    • New Logic, Position, OOP

더 좋은 스터디를 하기 위해 개선해야 할 부분은 무엇인가?

  • 학생 A
    • 과제에 대한 압박이 조금 더 높으면 좋겠다.
    • 작은 것이라도 직접 해봐야 더 많은 이야기를 할 수 있겠다.
  • 학생 B
    • 이번은 자율적인 참여 기반의 스터디였기에 스터디 후 그냥 지나가는 일도 종종 있었다.
    • 하지만 스터디에서 다룬 내용에 대한 정리, 구현이 꼭 수반되어야 할 것 같다.
  • 학생 C
    • 없음
  • 학생 D
    • 학생에게 적당한 높이의 허들과 과제를 해결해 나가는 것에 대한 즐거움 공유

NEXT 수업을 우리가 진행한 자바 스터디와 같이 진행할 경우 적합한 부분과 우려되는 점은 무엇인가?

  • 학생 A
    • 장점은 기억에 오래 남는다. 아하! 하는 경우가 많다.
    • 우려는 수업마다 배움의 정도와 양의 차이가 심하다.
  • 학생 B
    • 기본 프로그래밍 소양 - 조건문, 반복문 등의 사용이 자유로워야 이번과 같은 설계에 대한 논의가 가능할 듯
    • 동기부여 정도의 차이 - 이번 스터디는 다들 동기부여가 잘 되어서 시너지가 잘 일어났지만 그렇지 않은 경우가 생기면 점점 허송세월하는 시간이 늘어날 수도
  • 학생 C
    • 좋은 점
      • Programming Language(이하 PL)에서 다루는 이론, 철학적인 내용들이 실제로 프로그래밍 구현에서 어떤 역할을 하는지, 어떤 효과가 있는지 직접 경험하는 기회가 될 것 같다.
      • 이와 같은 이론적 접근이 어쩌다 생겨났는지를 단편적으로나마 생각해 보면서 컴퓨터 프로그램이 어떻게 동작하는지를 생각해 보게 되지 않을까?
    • 우려되는 점은 초반에 기초적인 문법을 익히기까지 시간이 꽤 들지 않을까?
  • 학생 D
    • 학생들의 과제에 대해 느끼는 난이도가 달라서 포기 또는 재미없어 할 수 있다. 과제 자체가 전체 수업에 주는 영향이 커짐

NEXT 수업과 자바 스터디에서 차이점이 있다면 무엇일까?

  • 학생 A
    • 자유롭게 이이기할 수 있었다. -> 의외의 아이디어가 많이 나옴 -> 쉼(쉬는 것 == 배우는 것)
    • 즉, 자유롭게 이야기고 토론하면서 창의적인 아이디어가 나오는 경험을 했다.
  • 학생 B
    • 큰 차이점은 없는 것 같다. 스터디라서 강제성이 없다는 정도? 자바 수업을 많이 듣지는 못했고...
  • 학생 C
    • 스터디 쪽이 위에서 앞에서 말한 좋을 것 같은 부분을 더 충족시켜주는 것 같다.
  • 학생 D
    • 동기의 차이
    • 스터디는 내가 필요하고 배우기 위해 스스로 찾아나선 것
    • 수업은 그것보다는 수동적이게 되는 경향이 있다.

자바 스터디에 대한 전체 회고를 한다면...

  • 학생 A
    • 배움으로 봤을 때 높낮이가 있었지만 마지막에 느낀 배움은 앞으로 잊지 않고 계속 써먹을 만큼 강렬했다.
    • 자유로움에서 오는 즐거움, '노는 것 == 즐거움 == 배움' 느낌
  • 학생 B
    • 뒤늦게 참여했지만 짧은 시간 동안 정말 많이 배웠다.
    • 열정적이고 능력있는 동료들과 함께 자유롭게 상상하고 토론할 수 있는 환경에서 많은 성장이 일어난다는 사실을 체험했다.
  • 학생 C
    • 코딩 자체는 작년 이맘때보다 늘기는 한 것 같은데 뭘 더 해나가야 할지 갈피를 잡지 못하고 있었다. 
    • 그런데 이 스터디를 통해 앞으로 더 학습해야 할 부분이 무엇인지 감을 잡게 되었다.
  • 학생 D
    • 즐거웠다. 계속 이어나갔으면 좋겠다.
  • No labels