BMI 구하기

Ina Kim·2021년 1월 4일
0

Java_초급

목록 보기
2/11

<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();
		
		
	}

}
profile
기록하는것을 좋아합니다

0개의 댓글