์๊ตฌ์ฌํญ
- ํ๊ท ํ์ ๊ณ์ฐ ๋ฐฉ๋ฒ = (ํ์ ์ร๊ต๊ณผ๋ชฉ ํ์ )์ ํฉ๊ณ/์๊ฐ์ ์ฒญ ์ดํ์ ์ โ๏ธ
- MVCํจํด(Model-View-Controller) ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ๋ค. โ๏ธ
- ์ผ๊ธ ์ปฌ๋ ์ ์ฌ์ฉ
ํ์ ๊ณ์ฐ๊ธฐ ์ค์ต์ ๋ค์์ ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ ๋ฐ๋ผ ๊ตฌํํด๋ณด๋ก ํ๋ค.
๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์
1. ๋๋ฉ์ธ์ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด์๋ ์ด๋ค ๊ฒ๋ค์ด ์๋์ง ๊ณ ๋ฏผ
2. ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ณ ๋ฏผ
3. ๋์ ์ธ ๊ฐ์ฒด๋ฅผ ์ ์ ์ธ ํ์ ์ผ๋ก ์ถ์ํํด์ ๋๋ฉ์ธ ๋ชจ๋ธ๋ง ํ๊ธฐ
4. ํ๋ ฅ์ ์ค๊ณ
5. ๊ฐ์ฒด๋ค์ ํฌ๊ดํ๋ ํ์ ์ ์ ์ ํ ์ฑ ์์ ํ ๋น
6. ๊ตฌํํ๊ธฐ
1. ๋๋ฉ์ธ์ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด์๋ ์ด๋ค ๊ฒ๋ค์ด ์๋์ง ๊ณ ๋ฏผ
- ์ด์ํ ๊ณผ๋ชฉ
- ํ์ ๊ณ์ฐ๊ธฐ
2. ๊ฐ์ฒด๋ค ๊ฐ ๊ด๊ณ ๊ณ ๋ฏผ
์ด์ํ ๊ณผ๋ชฉ๋ค์ ํตํด ํ์ ์ ๊ณ์ฐ
โ ํ์ ๊ณ์ฐ๊ธฐ๊ฐ ์ด์ํ ๊ณผ๋ชฉ์ ์ธ์คํด์ค ๋ณ์๋ก ๊ฐ์ง
3. ๋์ ๊ฐ์ฒด๋ฅผ ์ ์ ํ์ (ํด๋์ค)์ผ๋ก ์ถ์ํํ์ฌ ๋๋ฉ์ธ ๋ชจ๋ธ๋ง
์ด์ํ ๊ณผ๋ชฉ : ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ, ์๋ฃ๊ตฌ์กฐ, ์ค๊ตญ์ดํํ
์ด๋ฌํ ๊ณผ๋ชฉ๋ค์ ํด๋์ค๋ก ํํํ๋ ๊ฒ !
4. ํ๋ ฅ ์ค๊ณ
์ด์ํ ๊ณผ๋ชฉ(์ธ์)์ ์ ๋ฌํ์ฌ ํ๊ท ํ์ ๊ณ์ฐ ์์ฒญ
โ ํ์ ๊ณ์ฐ๊ธฐ : [(ํ์ ์ร๊ต๊ณผ๋ชฉ ํ์ )์ ํฉ๊ณ/์๊ฐ์ ์ฒญ ์ดํ์ ์] ๊ณ์ฐ
or
โ ํ์ ๊ณ์ฐ๊ธฐ : (ํ์ ์ร๊ต๊ณผ๋ชฉ ํ์ )์ ํฉ๊ณ , ์๊ฐ์ ์ฒญ ์ดํ์ ์ ๊ณ์ฐ์
โ ๊ณผ๋ชฉ(์ฝ์ค)๋ฅผ ํตํด ๊ณ์ฐ
์ ๋๊ฐ์ด ๋ฐ๋ผํด๋ ๋๋ง ์๋ก์ด ์๋ฌ๋ค์ด ์๊ธฐ๋ ๊ฑด๊ฐ .... (โผ ์๋ฌ ํด๊ฒฐ์ ์ฐธ๊ณ ํ ๋ถ๋ถ)
์ธํ ๋ฆฌ์ ์ด ํ๊ธ ๊นจ์ง๋ ๋ฌธ์
cannot found assertThat ๋ฌธ์
๐ ์งํ ๊ณผ์
์ด๋ฒ ํ์ ๊ณ์ฐ๊ธฐ ์ญ์ TDD ๋ฐฉ๋ฒ๋ก ์ ๋ฐํ์ผ๋ก ์ค์ต์ ์งํํ์๋ค.
GradeCalculatorTest
public class GradeCalculatorTest {
@DisplayName("ํ๊ท ํ์ ์ ๊ณ์ฐํ๋ค")
@Test
void calculateGradeTest() {
List<Course> courses = List.of(new Course("OOP", 3, "A+"),
new Course("์๋ฃ๊ตฌ์กฐ", 3, "A+"));
GradeCalculator gradeCalculator = new GradeCalculator(courses);
double gradeResult = gradeCalculator.calculateGrade();
assertThat(gradeResult).isEqualTo(4.5);
}
}
๋ฑ๊ธ ๊ณ์ฐ๊ธฐ ํ ์คํธ๋ฅผ ์ํ class๋ฅผ ๋ง๋ค๊ณ ์ค ๋ค, ์์ ๊ฐ์ ํ ์คํธ ์ผ์ด์ค์์ gradeResult(ํ๊ท ๋ฑ๊ธ)์ด 4.5๊ฐ ๋์ค๋์ง ํ ์คํธํ๋ค.
GradeCalculator
public class GradeCalculator {
private final List<Course> courses;
public GradeCalculator(List<Course> courses) {
this.courses = courses;
}
public double calculateGrade() {
return 4.5;
}
}
GradeCalculator ๋ด์ calculateGrade() ๋ฉ์๋๊ฐ 4.5๋ฅผ returnํ๋๋ก ํ์ฌ ํ ์คํธ๋ฅผ ํต๊ณผํ๋๋ก ๋ง๋ ๋ค.
์ฌ๊ธฐ๊น์ง test๋ฅผ ์งํํ์ฌ ์ ์์ ์ผ๋ก ํต๊ณผ๋๋ฉด, calcaulateGrade() ๋ฉ์๋ ๊ตฌํ์ ์งํํ๋ค.
public double calculateGrade() {
// (ํ์ ์ร๊ต๊ณผ๋ชฉ ํ์ )์ ํฉ๊ณ
double MultipliedCreditAndCourseGrade = 0;
for (Course course: courses) {
MultipliedCreditAndCourseGrade += course.getCredit() * course.getGradeToNumber();
}
// ์ด์ ํ์ ์ ํฉ๊ณ
int totalCompletedCredit = courses.stream()
.mapToInt(Course::getCredit)
.sum();
// (ํ์ ์ร๊ต๊ณผ๋ชฉ ํ์ )์ ํฉ๊ณ / ์ด์ ํ์ ์ ํฉ๊ณ
return MultipliedCreditAndCourseGrade / totalCompletedCredit;
}
๋ค์๊ณผ ๊ฐ์ด ๋ฑ๊ธ ๊ณ์ฐํ๊ธฐ๋ฅผ ๊ตฌํํ๊ณ , course ํด๋์ค ๋ด getGradeToNumber() ๋ฉ์๋ ๋ํ switch-case๋ฌธ์ ํ์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ๋ง๋ ๋ค.
'๐ต java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] Scanner์ BufferReader ์ ๋ฆฌํด๋ณด์ (0) | 2024.01.07 |
---|---|
JAVA | ํ์ ๊ณ์ฐ๊ธฐ ์ค์ต - (2) (0) | 2023.09.06 |
JAVA | ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต - (2) (0) | 2023.08.19 |
JAVA | ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต - (1) (0) | 2023.08.15 |
JAVA | STREAM์ด๋ ? (์ฌ์ฉ๋ฒ, ๋ฐฑ์ค ๋ฌธ์ ๊น์ง ๊ฐ์ด ํ์ด๋ณด๊ธฐ) (5) | 2023.08.10 |
์๊ตฌ์ฌํญ
- ํ๊ท ํ์ ๊ณ์ฐ ๋ฐฉ๋ฒ = (ํ์ ์ร๊ต๊ณผ๋ชฉ ํ์ )์ ํฉ๊ณ/์๊ฐ์ ์ฒญ ์ดํ์ ์ โ๏ธ
- MVCํจํด(Model-View-Controller) ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ๋ค. โ๏ธ
- ์ผ๊ธ ์ปฌ๋ ์ ์ฌ์ฉ
ํ์ ๊ณ์ฐ๊ธฐ ์ค์ต์ ๋ค์์ ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ ๋ฐ๋ผ ๊ตฌํํด๋ณด๋ก ํ๋ค.
๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์
1. ๋๋ฉ์ธ์ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด์๋ ์ด๋ค ๊ฒ๋ค์ด ์๋์ง ๊ณ ๋ฏผ
2. ๊ฐ์ฒด๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ณ ๋ฏผ
3. ๋์ ์ธ ๊ฐ์ฒด๋ฅผ ์ ์ ์ธ ํ์ ์ผ๋ก ์ถ์ํํด์ ๋๋ฉ์ธ ๋ชจ๋ธ๋ง ํ๊ธฐ
4. ํ๋ ฅ์ ์ค๊ณ
5. ๊ฐ์ฒด๋ค์ ํฌ๊ดํ๋ ํ์ ์ ์ ์ ํ ์ฑ ์์ ํ ๋น
6. ๊ตฌํํ๊ธฐ
1. ๋๋ฉ์ธ์ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด์๋ ์ด๋ค ๊ฒ๋ค์ด ์๋์ง ๊ณ ๋ฏผ
- ์ด์ํ ๊ณผ๋ชฉ
- ํ์ ๊ณ์ฐ๊ธฐ
2. ๊ฐ์ฒด๋ค ๊ฐ ๊ด๊ณ ๊ณ ๋ฏผ
์ด์ํ ๊ณผ๋ชฉ๋ค์ ํตํด ํ์ ์ ๊ณ์ฐ
โ ํ์ ๊ณ์ฐ๊ธฐ๊ฐ ์ด์ํ ๊ณผ๋ชฉ์ ์ธ์คํด์ค ๋ณ์๋ก ๊ฐ์ง
3. ๋์ ๊ฐ์ฒด๋ฅผ ์ ์ ํ์ (ํด๋์ค)์ผ๋ก ์ถ์ํํ์ฌ ๋๋ฉ์ธ ๋ชจ๋ธ๋ง
์ด์ํ ๊ณผ๋ชฉ : ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ, ์๋ฃ๊ตฌ์กฐ, ์ค๊ตญ์ดํํ
์ด๋ฌํ ๊ณผ๋ชฉ๋ค์ ํด๋์ค๋ก ํํํ๋ ๊ฒ !
4. ํ๋ ฅ ์ค๊ณ
์ด์ํ ๊ณผ๋ชฉ(์ธ์)์ ์ ๋ฌํ์ฌ ํ๊ท ํ์ ๊ณ์ฐ ์์ฒญ
โ ํ์ ๊ณ์ฐ๊ธฐ : [(ํ์ ์ร๊ต๊ณผ๋ชฉ ํ์ )์ ํฉ๊ณ/์๊ฐ์ ์ฒญ ์ดํ์ ์] ๊ณ์ฐ
or
โ ํ์ ๊ณ์ฐ๊ธฐ : (ํ์ ์ร๊ต๊ณผ๋ชฉ ํ์ )์ ํฉ๊ณ , ์๊ฐ์ ์ฒญ ์ดํ์ ์ ๊ณ์ฐ์
โ ๊ณผ๋ชฉ(์ฝ์ค)๋ฅผ ํตํด ๊ณ์ฐ
์ ๋๊ฐ์ด ๋ฐ๋ผํด๋ ๋๋ง ์๋ก์ด ์๋ฌ๋ค์ด ์๊ธฐ๋ ๊ฑด๊ฐ .... (โผ ์๋ฌ ํด๊ฒฐ์ ์ฐธ๊ณ ํ ๋ถ๋ถ)
์ธํ ๋ฆฌ์ ์ด ํ๊ธ ๊นจ์ง๋ ๋ฌธ์
cannot found assertThat ๋ฌธ์
๐ ์งํ ๊ณผ์
์ด๋ฒ ํ์ ๊ณ์ฐ๊ธฐ ์ญ์ TDD ๋ฐฉ๋ฒ๋ก ์ ๋ฐํ์ผ๋ก ์ค์ต์ ์งํํ์๋ค.
GradeCalculatorTest
public class GradeCalculatorTest {
@DisplayName("ํ๊ท ํ์ ์ ๊ณ์ฐํ๋ค")
@Test
void calculateGradeTest() {
List<Course> courses = List.of(new Course("OOP", 3, "A+"),
new Course("์๋ฃ๊ตฌ์กฐ", 3, "A+"));
GradeCalculator gradeCalculator = new GradeCalculator(courses);
double gradeResult = gradeCalculator.calculateGrade();
assertThat(gradeResult).isEqualTo(4.5);
}
}
๋ฑ๊ธ ๊ณ์ฐ๊ธฐ ํ ์คํธ๋ฅผ ์ํ class๋ฅผ ๋ง๋ค๊ณ ์ค ๋ค, ์์ ๊ฐ์ ํ ์คํธ ์ผ์ด์ค์์ gradeResult(ํ๊ท ๋ฑ๊ธ)์ด 4.5๊ฐ ๋์ค๋์ง ํ ์คํธํ๋ค.
GradeCalculator
public class GradeCalculator {
private final List<Course> courses;
public GradeCalculator(List<Course> courses) {
this.courses = courses;
}
public double calculateGrade() {
return 4.5;
}
}
GradeCalculator ๋ด์ calculateGrade() ๋ฉ์๋๊ฐ 4.5๋ฅผ returnํ๋๋ก ํ์ฌ ํ ์คํธ๋ฅผ ํต๊ณผํ๋๋ก ๋ง๋ ๋ค.
์ฌ๊ธฐ๊น์ง test๋ฅผ ์งํํ์ฌ ์ ์์ ์ผ๋ก ํต๊ณผ๋๋ฉด, calcaulateGrade() ๋ฉ์๋ ๊ตฌํ์ ์งํํ๋ค.
public double calculateGrade() {
// (ํ์ ์ร๊ต๊ณผ๋ชฉ ํ์ )์ ํฉ๊ณ
double MultipliedCreditAndCourseGrade = 0;
for (Course course: courses) {
MultipliedCreditAndCourseGrade += course.getCredit() * course.getGradeToNumber();
}
// ์ด์ ํ์ ์ ํฉ๊ณ
int totalCompletedCredit = courses.stream()
.mapToInt(Course::getCredit)
.sum();
// (ํ์ ์ร๊ต๊ณผ๋ชฉ ํ์ )์ ํฉ๊ณ / ์ด์ ํ์ ์ ํฉ๊ณ
return MultipliedCreditAndCourseGrade / totalCompletedCredit;
}
๋ค์๊ณผ ๊ฐ์ด ๋ฑ๊ธ ๊ณ์ฐํ๊ธฐ๋ฅผ ๊ตฌํํ๊ณ , course ํด๋์ค ๋ด getGradeToNumber() ๋ฉ์๋ ๋ํ switch-case๋ฌธ์ ํ์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ๋ง๋ ๋ค.
'๐ต java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] Scanner์ BufferReader ์ ๋ฆฌํด๋ณด์ (0) | 2024.01.07 |
---|---|
JAVA | ํ์ ๊ณ์ฐ๊ธฐ ์ค์ต - (2) (0) | 2023.09.06 |
JAVA | ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต - (2) (0) | 2023.08.19 |
JAVA | ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต - (1) (0) | 2023.08.15 |
JAVA | STREAM์ด๋ ? (์ฌ์ฉ๋ฒ, ๋ฐฑ์ค ๋ฌธ์ ๊น์ง ๊ฐ์ด ํ์ด๋ณด๊ธฐ) (5) | 2023.08.10 |