JAVA Programming/JAVA 문제

[18] 정보은닉 문제

꾸준히개발하자 2020. 7. 14. 10:04

package calendar2;
// 정보은닉 - 날짜의 유효성을 검증하는 프로그램 구현

import java.util.Calendar;


public class MyDate {
	
	private int day;
	private int month;
	private int year;
	
	private boolean isValid = true;
	
	public MyDate(int day , int month , int year) {
		
		setMonth(month);
		setDay(day);
		setYear(year);
		
	}
	
	public int getDay() {
		return day;
	}
	
	public void setDay(int day) {
		switch(month) {
		case 1: case 3: case 5: case 8: case 10: case 11:
			if(day < 0 || day > 30) {
				isValid = false;
			} else {
				this.day = day;
			}
			break;
		case 4: case 6: case 7: case 9: case 12:
			if(day < 0 || day > 31) {
				isValid = false;
			} else {
				this.day = day;
			}
			break;
		case 2:
			if(( (year %4 == 0 && year %100 != 0 )|| year %100 == 0)) {
			  if(day < 0 || day > 29) {	
				isValid = false;
			} else {
				this.day = day;
			}
		}
			else {		
			if(day < 1 || day > 28) {
				isValid = false;
			} else 
			{
				this.day = day;
				}
			}
			break;
		default :
			isValid = false;
		}
	}

	public int getMonth() {
		return month;
	}
	
	public void setMonth(int month) {
		if(month < 1 || month > 12) {
			isValid = false;
		} else {
			this.month = month;
		}
	}
	
	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		if(year > Calendar.getInstance().get(Calendar.YEAR)) {
			isValid = false;
		} else {
			this.year = year;
		}
	}
	
	public String isValid() {
		if(isValid) {
			return "유효한 날짜 입니다.";
		}  else {
			return "유효한 날짜가 아닙니다.";
		}
	}
}
package calendar2;

public class MyDateTest {
	public static void main(String[] args) {
		
		MyDate mydate1 = new MyDate(55,2,2002);
		System.out.println(mydate1.isValid());
		
		MyDate mydate2 = new MyDate(1,5,2005);
		System.out.println(mydate2.isValid());
		
	}
}