본문 바로가기
  • Let's study

java58

[Java] 명언 게시판 - TDD 적용하기 이번에는 이미 구현했던 명언 게시판을 TDD(Test Driven Development) 방식으로 다시 구현해보았다.기능 구현 자체보다 테스트를 먼저 작성하고, 테스트를 통과시키는 방식으로 개발하는 과정에 집중하였다.세부 코드는 각 커밋을 참고하면 된다.AssertJ 추가테스트 코드에서 검증을 편하게 하기 위해 AssertJ를 사용하였다.build.gradle.ktstestImplementation("org.assertj:assertj-core:3.26.3") AssertJ는 assertThat()을 이용하여 가독성 좋은 테스트 코드를 작성할 수 있다.🔗 관련 커밋assertj 의존성 추가TestUtil 작성콘솔 프로그램은 입력과 출력이 콘솔에 의존하기 때문에 테스트하기가 어렵다.이를 해결하기 위해 .. 2026. 7. 23.
[Java] 오버로딩(Overloading) 오버로딩은 같은 이름의 메서드나 생성자를 여러 개 정의하는 것이다.단, 매개변수의 개수나 타입이 달라야 한다.메서드 오버로딩introduce()라는 같은 이름의 메서드를 여러 형태로 정의하였다. public void introduce() { System.out.println("안녕하세요");}public void introduce(String name) { System.out.println("안녕하세요 %s입니다.".formatted(name));}public void introduce(int age) { System.out.println("안녕하세요 %d세입니다.".formatted(age));}public void introduce(String name, int age) { Sy.. 2026. 7. 23.
[Java] Scanner와 System.out 입출력 대체하기 테스트를 위한 입력과 출력 변경코드를 테스트하려면 매번 키보드로 입력하고 콘솔 출력을 확인하는 것은 번거롭다.자바에서는 Scanner 입력을 문자열로 변경하고, System.out 출력을 문자열로 받아 자동으로 테스트해볼 수 있다.Scanner의 입력을 문자열로 변경기존에는 키보드 입력을 사용했지만 테스트에서는 미리 준비한 문자열을 입력으로 사용할 수 있다. String input = """ 등록 너 자신을 알라 """;Scanner sc = new Scanner(input); 이렇게 하면 nextLine()을 호출할 때마다 문자열을 한 줄씩 읽는다.System.out의 출력을 문자열로 변경기존에는 모든 출력이 모니터(콘솔)로 전달되지만 테스트에서는 출력 결과를 문자.. 2026. 7. 23.
[프로그래머스 Lv.0] 숨어있는 숫자의 덧셈(2)(Java) 문제https://school.programmers.co.kr/learn/courses/30/lessons/120864 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이문자열을 처음부터 끝까지 순회하면서 숫자가 연속으로 등장하면 하나의 숫자로 이어 붙인다.숫자인 경우에는 straight 문자열에 계속 추가하고, 문자를 만나면 지금까지 모아둔 숫자를 Integer.parseInt()로 정수로 변환하여 answer에 더한 뒤 straight를 비운다.if (c >= '0' && c 여기서 c >= '0' && c 한다. 숫자가 연속해서 등장하면 straight에 계속 이어 붙이므로 "123"과 같은 문자열도 하나.. 2026. 7. 23.
[Java] 명언 게시판 만들기 - 레이어드 아키텍처 & 리팩토링 레이어드 아키텍처 적용기존에는 App 클래스가 사용자 입력, 명언 등록, 수정, 삭제, 목록 조회 등 모든 기능을 담당했다.하지만 기능이 많아질수록 하나의 클래스에 책임이 집중되어 유지보수가 어려워진다.이를 해결하기 위해 레이어드 아키텍처(Layered Architecture)를 적용하여 역할에 따라 클래스를 분리하였다.구조 변경기존 구조 App ├─ 등록 ├─ 목록 ├─ 삭제 └─ 수정 변경 후 구조 App ↓WiseSayingController ↓WiseSayingService ↓WiseSayingRepository 각 클래스는 자신의 역할만 담당하도록 변경하였다.AppApp은 사용자의 명령을 입력받고, 어떤 기능을 실행할지만 결정한다.기존처럼 등록, 삭제, 수정 로직을 직접 처리하지.. 2026. 7. 22.
[프로그래머스 Lv.0] 모스부호(1)(Java) 문제https://school.programmers.co.kr/learn/courses/30/lessons/120838 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이알파벳 a부터 z까지의 모스부호를 순서대로 배열에 저장한다.입력 문자열은 각 모스부호가 공백으로 구분되어 있으므로 split(" ")을 이용해 모스부호를 하나씩 분리한다. 이후 분리한 모스부호를 배열에서 찾아 해당하는 인덱스를 구하고, 인덱스를 알파벳으로 변환하여 결과 문자열에 이어 붙인다.모스부호 배열의 인덱스는 a부터 z의 순서와 동일하므로 인덱스에 'a'의 아스키 코드인 97을 더하면 해당 알파벳으로 변환할 수 있다.answer += (ch.. 2026. 7. 22.