날짜의 유효성을 검증하는 프로그램을 구현해 보세요
다음과 같은 MyDate 클래스가 있습니다.
-day, month, year변수는 private으로 선언합니다.
-각 변수의 getter, setter를 public으로 구현합니다.
-MyDate(int day, int month, int year) 생성자를 만듭니다.
-public boolean isVaild() 메서드를 만들어 날짜가 유효한지 확인합니다.
-MyDateTest 클래스에서 생성한 MyDate 날짜가 유효한지 확인합니다.
public class MyDate {
//1 번
private int day;
private int month;
private int year;
private boolean isValid = true;
//2번
public MyDate(int day, int month, int year) {
setYear(year);
setMonth(month);
setDay(day);
}
//3번
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if (day >31 || day < 0) {
isValid = false;
}
break;
case 4: case 6: case 9: case 11:
if (day > 30 || day < 0) {
isValid = false;
}
break;
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0 )//윤년여부
{
if (day <0 || day >29) {
isValid = false;
}
} else {
if (day <0 || day >28) {
isValid = false;
}
}
break;
default : isValid = false;
}
}
//4번
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
if(month > 12 || month < 1) {
isValid = false;
}
}
//5번
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
if( year < 1 ) {
isValid = false;
}
}
//6번
public void isValid() {
if(isValid) {
System.out.println( "유효한 날짜입니다.");
} else {
System.out.println( "유효하지 않은 날짜입니다.");
}
}
public class MyDateTest {
public static void main(String[] args) {
MyDate date1 = new MyDate(29,2,2020);
date1.isValid(); // 유효한 날짜입니다.
MyDate date2 = new MyDate(29,2,2019);
date2.isValid(); // 유효하지 않은 날짜입니다.
}
}
테스트를 위해 MyDataTest 클래스를 만들고 date1과 date2 인스턴스를 만들어 1년차이나는 2월 29일을 입력했을 때 윤년여부에 따라 유효성 테스트가 되는 것을 확인할 수 있습니다.
출근길 커피 사기
아침 출근길에 김 졸려씨는 4000원을 내고 별다방에서 아메리카노를 사 마셨습니다.
이 피곤 씨는 콩다방에서 4500원을 내고 라떼를 사 마셨습니다.
객체 간의 협력 강의를 참고하여 객체 지향 방법으로 구현해 보세요.
public class BeanCoffee {
//1
public int price;
public int income;
//2
public BeanCoffee() {
}
//3
public String sellBeanCoffee(int price) {
income+=(price);
if (price == 4200) {
return "콩 다방 아메리카노를 구입했습니다.";
} else if (price == 4500) {
return "콩 다방 라떼를 구입했습니다.";
} else {
return null;
}
}
}
public class StarCoffee {
public String shopName;
public int price;
public int income;
public StarCoffee() {
shopName = "별 다방";
}
public String sellStarCoffee(int price) {
income+=(price);
if (price == 4000) {
return "별 다방 아메리카노를 구입했습니다.";
} else if (price == 4300) {
return "별 다방 라떼를 구입했습니다.";
} else {
return null;
}
}
public class Person {
//1번
public String name;
public int money;
//2번
public Person(String name) {
this.name = name;
money = 10000;
}
//3번
public void buyStarCoffee(StarCoffee starcoffee, int price) {
String message = starcoffee.sellStarCoffee(price);
if(message != null) {
money -= price;
System.out.println(name+" 님이 "+price+"으로 " + message );
}
}
//4번
public void buyBeanCoffee(BeanCoffee beancoffee, int price) {
String message = beancoffee.sellBeanCoffee(price);
if(message != null) {
money -= price;
System.out.println(name+" 님이 "+price+"으로 " + message );
}
}
public class CoffeTest {
public static void main(String[] args) {
//1번
Person Lee = new Person("Lee");
Person Kim = new Person("Kim");
//2번
StarCoffee starcoffee = new StarCoffee();
BeanCoffee beancoffee = new BeanCoffee();
//3번
Lee.buyStarCoffee(starcoffee, 4000);
//Lee 님이 4000으로 별 다방 아메리카노를 구입했습니다.
Kim.buyBeanCoffee(beancoffee, 4500);
//Kim 님이 4500으로 콩 다방 라떼를 구입했습니다.
}