Programming134 6장. 객체와 자료 구조 자료 추상화 아래 두 클래스를 살펴보자. public class Rectangle { public double width; public double height; } ///////////////////////// public interface Rectangle { double getWidth(); double getHeight(); void setRectangle(double width, double height); double getLength(); void setSquare(double length); } 위 클래스는 가로, 세로 값을 별개로 설정해야하고 별개로 읽어야한다. 아래 클래스는 가로, 세로 값을 동시에 설정해야하고, 별개로 읽어야한다. 구체 클래스인 Rectangle은 내부를 완전히 노출하.. 2023. 11. 30. Pull Request 000 - 시작하기에 앞서 프로젝트를 진행하면서 프론트엔드 팀원들과 소통할 때마다 '내가 저 코드를 좀 알아볼 수 있었으면 더 좋았겠다'싶은 생각이 종종 들었다. 그래서 언젠가는 간단하게나마 풀스택으로 프로젝트를 하나 진행해봐야겠다고 막연한 생각만 하고 있었다. 그런데 막상 자바스크립트를 공부하자니 너무 재미없어보였다. 처음 자바를 공부할 때 어땠는가, 진짜 너무 재미없었다. '그럼 나는 왜 지금 개발이 재밌다고 느끼지?' 생각하니 우아한테크코스에 지원하고 프리코스 미션들을 직접 구현하는 과정에서 개발에 재미를 붙였던 것이 생각났다. 이렇게 생각하니, 자바스크립트 문법 내용을 하나하나 보고 있는게 무슨 의미가 있나 싶었다. 자바도 완전 기초도 모르는 단계에서 직접 구현하며 배웠더니 훨씬 빨리 늘었다. 주변 친구들에게 프로그래밍으로.. 2023. 11. 29. Pull Request 017. 자유 게시글 여러 개 조회 기능 TDD로 구현하기 자유 게시글과 관련해서 남은 기능은 크게 2개다. 하나는 페이지 전체 조회 기능이고, 하나는 검색 기능이 되시겠다. 우선은 페이지 조회 기능을 구현해보고자 한다. 페이지 조회 기능의 로직은 다음과 같다. 게시글 페이지 조회 urn은 /free-board?page="pageNumber"의 형태다. FreeBoardController#getFreeBoardPage(@RequestParameter(value = "page")int page) 메서드를 통해 get 요청을 받는다. 해당 메서드는 FreeBoardService#getFreeBoardPage(int page) 메서드를 호출하고 받은 결과값을 반환한다. 이 때 HTTP 상태 코드는 200 OK다. FreeBoardService#getFreeBoardP.. 2023. 11. 29. 9장. LSP: 리스코프 치환 원칙 리스코프 치환 원칙 S 타입의 객체 o1 각각에 대응하는 T 타입 객체 o2가 있고, T 타입을 이용해서 정의한 모든 프로그램 P에서 o2의 자리에 o1을 치환하더라도 P의 행위가 변하지 않는다면, S는 T의 하위타입이다. 뭔 소리야 쉽게 설명하면 다음과 같다. 프로그램 P에서 상위 타입 객체 T를 사용하고 있다면, T를 T의 하위타입 객체인 S로 대체해도 제대로 프로그램이 돌아가야한다. 상속을 사용하도록 가이드하기 알림 전송 애플리케이션을 사용한다고 해보자. 애플리케이션에서는 Notifier 객체를 사용한다. 그런데, 카카오톡으로 알림을 보내야 할 때도 있고, 이메일로 보내야 할 때도 있고, 문자로 보내야 할 때도 있다. 이 때, KakaoNotifier, EmailNotifier, SMSNotifie.. 2023. 11. 29. Pull Request 016. Base Entity를 통해 데이터 생성일 / 수정일 설정하기 - 제어하기 어려운 코드 개선, static 메서드 mocking 테스트 해당 기능을 넣을까말까 고민을 많이 했다. 그런데 아무리 생각해도 결국에는 필요한 기능이 아닐까 싶어서 넣기로 했다. 문제는 향로님의 글을 보며 시간에 대한 테스트를 어떻게 해야할까에 대한 고민이 남아있었다는 것이다. 그런데 향로님이 아예 예시 코드를 남겨주시기까지 했는데 못 할 것 있나? 싶은 생각에 빠르게 돌입했다. 이번 포스팅에 앞서 이번 구현만큼은 TDD 방식으로 구현하지 못했음을 미리 알린다. 아예 새롭게 시도해보는 방법이었고, static메서드의 테스트도 처음 도전해보는 부분이라 거의 다른 분들의 코드를 따라하는 수준이었다. 참고한 글들은 글 말미에 남긴다. 데이터 생성일과 수정일은 모든 엔티티에 적용되어야 한다. 따라서 모든 엔티티의 상위 엔티티가 될 Base Entity를 먼저 만들었다... 2023. 11. 28. 이전 1 ··· 7 8 9 10 11 12 13 ··· 27 다음 반응형