<BMI 시나리오>
1) PersonDataDTO
package bmi2;
public class PersonDataDTO { //이제부터 데이터 클래스에서 데이터는 private처리!
private String name;
private double height;
private double weight;
public String getName() { //private처리한 데이터를 외부에서 호출할수 있게 getter생성
return name;
}
public double getHeight() {
return height;
}
public double getWeight() {
return weight;
}
public PersonDataDTO(String name, double height, double weight) {
super();
this.name = name;
this.height = height;
this.weight = weight;
}
@Override
public String toString() {
return "PersonDataDTO [name=" + name + ", height=" + height + ", weight=" + weight + "]";
}
}
데이터에 private선언
: 외부 클래스에서는 값에 접근 제한
getter 사용
: 원본 데이터 값은 유지하되 외부 클래스에서 접근이 가능하도록 getter메소드 사용
//롬복 사용방법 확인하기
2)BmiService
package bmi2;
public class BmiService {
public double bmiCalculate(PersonDataDTO dto) { //bmi결과로 double값 리턴받는다
double result = 0;
//bmi로직
double height = dto.getHeight();
double weight = dto.getWeight(); //파라미터에서 선언한 dto가져오기.
double bmi = weight / Math.pow(height, 2);
result = bmi;
return result;
}
}
3)BmiUI
package bmi2;
import java.util.Scanner;
public class BmiUI {
Scanner scanner; //공유
BmiService service; //의존성변수
String name; //공유
double height, weight; //공유
public BmiUI(Scanner scanner, BmiService service) {
super();
this.scanner = scanner;
this.service = service;
}
public void bmiUI() { //입출력 금지 , 화면에 입/출력만 담당 , user와 접촉
System.out.println("이름을 입력하세요");
name = scanner.nextLine();
System.out.println("키를 입력하세요");
height = Double.parseDouble(scanner.nextLine());
if (height >= 200) {
System.out.println("다시 입력해주세요");
bmiUI(); //재귀
}
System.out.println("몸무게를 입력하세요");
weight = Double.parseDouble(scanner.nextLine());
if(weight >= 200) {
System.out.println("다시 입력해주세요");
bmiUI(); //재귀
}
System.out.println("이름: "+name+" 키: "+height+"cm"+" 몸무게: "+weight+"kg");
}
public void showResult() {
PersonDataDTO dto = new PersonDataDTO(name, height, weight);
double bmi = service.bmiCalculate(dto);
System.out.println("당신의 BMI지수는 "+bmi+ " 입니다");
}
}
4)Main
package bmi2;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
BmiService service = new BmiService();
BmiUI ui = new BmiUI(scanner, service);
ui.bmiUI();
ui.showResult();
}
}