[WIL] 항해99 2주차

woonie·2022년 1월 23일
0

WIL

목록 보기
2/12
post-thumbnail

항해 2주차 마무리

1. 알고리즘

https://github.com/kyungwoon/programmers
https://github.com/kyungwoon/Baekjoon
알고리즘 문제 풀이 기간으로 40문제를 다 풀어보려고 했다.
사실 알고리즘이 많이 약하다고 해서 다시 처음부터 차근차근 해보자는 생각이었다.
팀원들과 같이 소통해가며 다른 팀원들이 풀이한 방법도 보고 내가 직접 코드 하나하나를 설명해주니 혼자 했을때 보다 더 기억에 많이 남았다.
알고리즘 주차를 마무리 하고 본격적으로 Spring을 배우게 되었다.

2. 객체 지향 프로그래밍이란?

문제를 여러 개의 객체 단위로 나누고 추상시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상화작용을 통해 구성하는 프로그래밍 방법이다.
상태와 행위를 가진 객체들을 하나하나 모두 모아서 하나의 프로그램을 만드는 것을 객체 지향 프로그래밍이다.
협업이 중요한 대형 프로젝트에 적합함.

2.-1 객체 지향 프로그래밍의 장,단점

  • 장점
    • 코드 재사용이 용이
      => 기존에 만들어졌거나 다른사람이 만든 클래스를 재사용할 수 있고 상속을 통해 확장 가능
    • 유지 보수가 편리
      => 절차 지향 프로그래밍에서는 코드를 수정해야할 때 일일이 찾아 수정해야하는 반면 객체 지향 프로그래밍에서는 수정해야 할 부분이 클래스 내부에 멤버 변수혹은 메서드로 존재하기 때문에 해당 부분만 수정하면 된다.
  • 단점
    • 처리속도가 상대적으로 느림
    • 객체가 많으면 용량이 커짐
    • 설계시 많은 시간과 노력이 필요

3. JVM?

자바 바이트코드를 해석하고 실행하는 JVM(Java Virtual Machine) 가상 머신이다.
자바 애플리케이션을 클래스 로더를 통해 읽고 자바 API와 함께 실행한다.
JVM은 JAVA와 OS사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하도록 해준다.

4. Controller?

  • 클라이언트의 요청을 받음
  • 요청에 대한 처리는 서비스에게 전담
  • 클라이언트에게 응답

5. Service?

  • 사용자의 요구사항 처리
  • DB 정보가 필요할 때는 Repository에게 전담

6. Repository?

DB 관리(연결, 해제, 자원 관리)
DB CRUD 작업 처리

Controller와 Service를 구분하는 이유
중복되는 코드가 생기기 때문이다. 비즈니스 로직 코드가 컨트롤러에 구현되어 있는 경우 다른 컨트롤러의 핸들러 메소드에서 똑같은 로직 코드를 구현해야 하므로 중복코드가 발생하고 재사용성이 줄어든다.
결론적으로, controller와 service를 구분하면 확장성과 재사용성이 좋아지고 중복코드를 제거할 수 있다는 장점이 있다.

5. 회고...

알고리즘도 다시 오랜만에 풀어보니 생각이 안나는 부분도 있었다. 역시 알고리즘은 매일 풀어야 겠다고 느꼈다...
처음으로 Spring을 배워봤는데 처음에는 java같으면서도 아닌거 같고 아닌거 같으면서도 맞는거 같다고 생각이 들었다. 너무 헷갈렸고 어려웠다. 혼자서 이것저것 만져보기도 하고 오류도 내보고 하니 조금 거부감은 없어졌다. 오히려 재밌기도? 하다. 아직 하루 공부를 해봤기에 조금 더 알아보고 싶고 프로젝트를 만들어보고 싶다는 생각이 조금씩 조금씩 생겨난다.

profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.

0개의 댓글