1. 정렬알고리즘
0. 알아야할 사항
1.
Swap 자리바꾸기
2.
중첩 for문 다루기
3.
맨 앞에서부터 작은 수를 채워가는 알고리즘(버블정렬과 선택정렬의 중간)
1. 알고리즘 생각해보기
•
[7,2,3,9,28,11]이라는 배열이 있다.
1) 첫번째 루프
•
첫번째 루프에서 배열의 0번자리 원소와 그 이후 원소들을 비교하면서 가장작은수가 0번자리에 오게된다.
2) 두번째 루프
•
두번째 루프에서는 1번자리 원소와 그 이후 원소들을 비교하면서 두번째로 작은 숫자가 1번자리에 오게된다.
3) 그 후
•
위와 같은 과정을 반복하면 배열의길이-1 만큼 루프를 돌게 된다.
2. 코드 작성
1) 첫번째 루프돌기
코드
•
정렬의 0번자리 원소와 그 이후 원소들을 비교하며 작은 원소가 0번자리로 가게한다.
2) 매개변수 추가
코드
•
sort메소드에 몇번자리부터 비교할지 num이라는 매개변수를 추가했다.
3) 이중 for문 적용
코드
•
위 1~2번을 바탕으로 sort메소드에 이중 for문을 작성하여 num이라는 매개변수를 받지 않고도 알아서 루프를 돌수 있게했다.
4) Swap메소드 추가
코드
•
swap 메소드를 추가해서 swap 메소드에서 원소들을 바꿀수 있도록 했다.
2. Gradle 사용해서 parsing 하기
1. Gradle
1) Gradle(maven)빌드를 사용한 이유
•
다음과 같이 Gradle 빌드를 사용하면 test case를 작성하고 실행하기 좋다.
•
TDD를 하기 위해서 사용한다.
2) TDD란?
•
Test Driven Development의 약자로 테스트 주도 개발이라고 한다.
•
기존 방식: 요구사항 분석 -> 설계 -> 코드 개발 -> 테스트 케이스 작성
•
TDD: 요구사항 분석 -> 테스트 케이스 작성 -> 코드 개발 -> 리펙토링
•
단점: 테스트 코드 개발 + 실제 개발을 같이하기 때문에 오래 걸린다.
3) 테스트의 종류
•
Unit Test(유닛 테스트), Integration Test(통합 테스트), Functional Test(기능 테스트)가 있다.
◦
Unit Test: 함수 하나하나와 같이 코드의 작은 부분을 테스트
◦
Integration Test: 서로 다른 시스템들의 상호작용이 잘 이루어지는지 테스트, 배포하기 전에 한다.
◦
Functional Test: 사용자와 어플리케이션의 상호작용이 원활하게 이루어지는지 테스트
•
Unit Test < Integration Test < Functional Test 순으로 테스트 케이스의 개수가 많다.
4) Test Class 만들기
•
test case를 만들고 싶은 class에 alt+enter > Create Test
•
원하는 이름을 설정한 후 OK
•
다음과 같이 test폴더에 test class가 생성된다.
5) 코드 작성
1) Gradble 빌드로 병원 정보 parser 만들기
Hospital.java
HospitalParser.java
LineReader.java
Main.java
Parser.java
HospitalParserTest.java
Annotation
•
JDK 1.5버전 이상에서 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 보통 @기호를 앞에 붙여서 사용한다.
1.
컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다.
2.
소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.
3.
실행시(런타임시)특정 기능을 실행하도록 정보를 제공한다.
•
용도
1.
컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공한다.
2.
소프트웨어 개발툴이 빌드나 배치시 코드를 자동으로 생성할 수 있도록 정보를 제공한다.
3.
실행시(런타임시)특정 기능을 실행하도록 정보를 제공한다.
2) test class에 address 추가
Hospital.java
HospitalParser.java
HospitalParserTest.java
3) test class에 district 추가
Hospital.java
HospitalParser.java
HospitalParserTest.java
4) test class에 category,emergencyRoom,name 추가
Hospital.java
HospitalParser.java
HospitalParserTest.java
5) test class에 subdivision 추가
Hospital.java
HospitalParser.java
HospitalParserTest.java
6) SqlInsertQuery 메소드 추가 후 테스트
Hospital.java
Main.java
HospitalParserTest.java
3. Reference
•
테스트 케이스 참고: https://cjwoov.tistory.com/9
•
어노테이션 참고: https://bangu4.tistory.com/199