728x90
예제 1) 요구사항 : 과자 클래스를 설계하시오
- 조건
- 가격, 용량, 생산일자, 유통기한
- 모든 멤버 변수의 접근 지정자는 private으로 한다.
- 멤버 접근을 위한 Setter와 Getter를 정의한다.
- 용량 : 쓰기 전용, 300g, 500g, 850g
- 가격 : 읽기 전용, 850원(300g), 1200원(500g), 1950원(850g)
- 생산일자 : 쓰기 전용(Calendar)
- 남은유통기한 : 읽기 전용, 생산된 제품의 유통기한 기준 : 7일(300g), 10일(500g), 15일(850g)
- Bugles 객체 메소드
- void eat() : 과자 먹기
- 먹을수 있는 날짜 = 유통기한 - 현재 - 제조시간
- 5 : 먹을 수 있는 날짜가 5일 남음
- 3 : 먹을 수 있는 날짜가 3일 지남
- 소스코드
package com.test.question;
public class Q0094 {
public static void main(String[] args) {
Q0094_Bugles snack = new Q0094_Bugles();
snack.setWeight(500);
snack.setCreationTime(2023, 2, 13);
System.out.printf("가격 : %,d 원\n",snack.getPrice());
System.out.println("유통 기한이 " + snack.getExpiration() + "일 남았습니다.");
snack.eat();
System.out.println();
Q0094_Bugles snack2 = new Q0094_Bugles();
snack2.setWeight(300);
snack2.setCreationTime(2023, 2, 5);
System.out.printf("가격 : %,d 원\n",snack2.getPrice());
System.out.println("유통 기한이 " + snack2.getExpiration() + "일 남았습니다.");
snack2.eat();
}
}
package com.test.question;
import java.util.Calendar;
public class Q0094_Bugles {
private int price;
private int weight;
private Calendar creationTime;
private int expiration;
int time = 0;
int money = 0;
//******************************
public int getPrice() {
return price;
}
//******************************
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
if(weight==300||weight==500||weight==850) {
this.weight = weight;
}else {
System.out.println("용량을 잘 못 입력하셨습니다.");
}
if(weight==300) {
this.price = 850;
this.expiration = 7;
}else if(weight==500) {
this.price = 1200;
this.expiration = 10;
}else if(weight==850) {
this.price = 1950;
this.expiration = 15;
}
}
//******************************
public void setCreationTime(int year, int month, int date) {
Calendar creationTime = Calendar.getInstance();
creationTime.set(year, month-1, date);
this.creationTime = creationTime;
}
//******************************
public int getExpiration() {
Calendar today = Calendar.getInstance();
return this.expiration += (int)((this.creationTime.getTimeInMillis()-today.getTimeInMillis())/1000/60/60/24);
}
public void eat() {
if(getExpiration() >= 0) {
System.out.println("과자를 맛있게 먹습니다.");
} else {
System.out.println("유통기한이 지나 먹을 수 없습니다.");
}
}
}
- 실행결과
예제 2) 요구사항 : 직원 클래스를 설계하시오
- 조건
- Employee 객체의 정보
- 이름, 부서, 직책, 연락처, 직속상사
- 모든 멤버 변수의 접근 지정자는 private으로 한다.
- 멤버 접근을 위한 Setter와 Getter를 정의한다.
- 이름 : 읽기/쓰기, 한글 2~5자 이내
- 부서 : 읽기/쓰기, 영업부, 기획부, 총무부, 개발부, 홍보부
- 직잭 : 읽기/쓰기, 부장, 과장, 대리, 사원
- 연락처 : 읽기/쓰기, 010-XXXX-XXXX 형식 확인
- 직속상사 : 읽기/쓰기, 다른 직원 중 한명, 같은 부서가 아니면 될 수 없음(유효성 검사)
- Employee 객체 메소드
- void info() : 직원 정보 확인
- Employee 객체의 정보
- 소스코드
package com.test.question;
public class Q0095 {
public static void main(String[] args) {
Q0095_Employee e1 = new Q0095_Employee();
e1.setName("홍길동");
e1.setDepartment("홍보부");
e1.setPosition("부장");
e1.setTel("010-1234-5678");
e1.setBoss(null); //직속 상사 없음
e1.info();
Q0095_Employee e2 = new Q0095_Employee();
e2.setName("아무개");
e2.setDepartment("홍보부");
e2.setPosition("사원");
e2.setTel("010-2541-5678");
e2.setBoss(e1); //홍길동
e2.info();
}
}
package com.test.question;
public class Q0095_Employee {
private String name;
private String department;
private String position;
private String tel;
private Q0095_Employee boss;
//***********************************
public String getName() {
return name;
}
public void setName(String name) {
if(checkLength(name)&&checkKorean(name)) {
this.name = name;
} else {
System.out.println("잘못된 owner 입력");
}
}
public boolean checkKorean(String name) {
for (int i=0; i<name.length(); i++){
char c = name.charAt(i);
if(c<'가' || c>'힣') {
return false;
}
}
return true;
}
public boolean checkLength(String owner) {
if(owner.length() >= 2 && owner.length() <=5) {
return true;
}else {
return false;
}
}
//***********************************
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
if(department.equals("영업부")||department.equals("기획부")
||department.equals("총무부")||department.equals("개발부")
||department.equals("홍보부")) {
this.department = department;
}else {
System.out.println("부서를 잘 못 입력하셨습니다.");
}
}
//***********************************
public String getPosition() {
return position;
}
public void setPosition(String position) {
if(position.equals("부장")||position.equals("과장")
||position.equals("대리")||position.equals("사원")){
this.position = position;
} else {
System.out.println("직책을 잘 못 입력하셨습니다.");
}
}
//***********************************
public String getTel() {
return tel;
}
public void setTel(String tel) {
if(tel.charAt(3)=='-'&&tel.charAt(8)=='-') {
this.tel = tel;
}else {
System.out.println("전화번호를 잘 못 입력하셨습니다.");
}
String temp = tel.replace("-", "");
for(int i=0; i<temp.length(); i++) {
char c = temp.charAt(i);
if(c <'0' || c >'9') {
return;
}
}
this.tel = tel;
}
//***********************************
public Q0095_Employee getBoss() {
return boss;
}
public void setBoss(Q0095_Employee boss) {
if(boss == null) {
return;
}
if(this.name.equals(boss.getName()) && this.department.equals(boss.getDepartment())
&& this.position.equals(boss.getPosition()) && this.tel.equals(boss.getTel())) {
return;
}
if(!this.department.equals(boss.getDepartment())) {
return;
}
this.boss = boss;
}
public void info() {
System.out.printf("[%s]\n", this.name);
System.out.printf("- 부서 : %s\n", this.department);
System.out.printf("- 직위 : %s\n", this.position);
System.out.printf("- 연락처 : %s\n", this.tel);
if(this.boss != null) {
System.out.printf("- 직속상사 : %s(%s %s)\n", this.boss.getName(), this.boss.getDepartment(), this.boss.getPosition());
System.out.println();
}else {
System.out.println("- 직속상사 : 없음");
System.out.println();
}
}
}
- 실행결과
예제 3) 요구사항 : Box 클래스와 Macaron 클래스를 설계하시오.
- 조건
- 1Box에는 10개의 마카롱을 담을 수 있다.(멤버 변수 = Macaron 배열)
- Box 객체의 사용
- Box 객체를 생성시 Box에 마카롱 객체를 10개 담는다.(무작위)
- 품질 검사에 통과하지 못하는 마카롱을 구분한다.
- Macaron 객체의 정보
- 생산 크기(5cm ~ 15cm) → 판매 유효 크기(8cm ~ 14cm)
- 생산 색상(red, blue, yellow, white, pink, purple, green, black) → 판매 유효 색상(black을 제외한 모든 색상)
- 생산 샌드 두께(1mm ~ 20mm) → 판매 유효 두께(3mm ~ 18mm)
- 소스코드
package com.test.question;
public class Q0096 {
public static void main(String[] args) {
Q0096_Box m1 = new Q0096_Box();
m1.cook();
m1.check();
m1.list();
}
}
package com.test.question;
import java.util.Arrays;
public class Q0096_Box {
private Q0096_Macaron[] list = new Q0096_Macaron[10];
public void cook() {
String [] Color = {"red", "blue", "yellow", "white", "pink", "purple", "green", "black"};
for(int i=0; i<list.length; i++) {
Q0096_Macaron m = new Q0096_Macaron();
m.setSize((int)(Math.random()*11)+5);
m.setColor(Color[(int)(Math.random()*Color.length)]);
m.setThickness((int)(Math.random()*21));
this.list[i] = m;
}
System.out.printf("마카롱 %d개를 만들었습니다\n", list.length);
System.out.println();
}
public void check() {
int pass = 0;
int failed = 0;
for(int i=0; i<list.length; i++) {
Q0096_Macaron m = this.list[i];
if(check(m)) {
pass++;
}else {
failed++;
}
}
System.out.println("[박스 체크 결과]");
System.out.printf("QC 합격 개수 : %d 개\n", pass);
System.out.printf("QC 불합격 개수 : %d 개\n", failed);
System.out.println();
}
public void list() {
System.out.println("[마카롱 목록]");
for(int i=0; i<list.length; i++) {
Q0096_Macaron m = this.list[i];
if(check(m)) {
System.out.printf("%d번 마카롱 : %dcm(%s,%dmm) : 합격\n", i, m.getSize(), m.getColor(), m.getThickness() );
}
else {
System.out.printf("%d번 마카롱 : %dcm(%s,%dmm) : 불합격\n", i, m.getSize(), m.getColor(), m.getThickness() );
}
}
}
public boolean check(Q0096_Macaron m) {
if(m.getSize()<8||m.getSize()>14) {
return false;
}
if(m.getColor().equals("black")) {
return false;
}
if(m.getThickness()<3 || m.getThickness()>18) {
return false;
}
return true;
}
}
package com.test.question;
public class Q0096_Macaron {
private int size;
private String color;
private int thickness;
//****************************
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getThickness() {
return thickness;
}
public void setThickness(int thickness) {
this.thickness = thickness;
}
}
- 실행결과
예제 4) 요구사항 : Refrigerator 클래스와 Item 클래스를 설계하시오.
- 조건
- Refrigerator 객체의 정보
- Item을 최대 100개까지 담을 수 있다.(멤버 변수 = Item 배열)
- Refrigerator 객체의 사용
- Item을 냉장고에 넣는다. void add(Item item);
- Item을 냉장고에서 꺼낸다. Item get(String name);
- 냉장고에 있는 Item의 개수를 확인한다. int count();
- 냉장고에 있는 Item을 확인한다. void listItem();
- Item 객체의 정보
- 식품명, 유통기한
- Refrigerator 객체의 정보
- 소스코드
package com.test.question;
public class Q0097 {
public static void main(String[] args) {
Q0097_Refrigerator r = new Q0097_Refrigerator();
Q0097_item i1 = new Q0097_item();
i1.setName("김치");
i1.setExpiration("2023-03-04");
r.add(i1); //냉장고에 넣기
Q0097_item i2 = new Q0097_item();
i2.setName("깍두기");
i2.setExpiration("2023-02-25");
r.add(i2); //냉장고에 넣기
Q0097_item i3 = new Q0097_item();
i3.setName("멸치볶음");
i3.setExpiration("2023-02-27");
r.add(i3); //냉장고에 넣기
r.listItem();
Q0097_item i4 = r.get("깍두기");
System.out.printf("%s의 유통기한 : %s\n", i4.getName(), i4.getExpiration());
System.out.printf("냉장고 안의 총 아이템 개수 : %d개\n", r.count());
r.listItem();
}
}
package com.test.question;
import java.util.Calendar;
public class Q0097_item {
private String name;
private String expiration;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getExpiration() {
return expiration;
}
public void setExpiration(String expiration) {
this.expiration = expiration;
}
}
package com.test.question;
public class Q0097_Refrigerator {
private Q0097_item[] list = new Q0097_item[100];
private int index = 0;
public void add(Q0097_item item) {
Q0097_item t = new Q0097_item();
list[index]=item;
index++;
System.out.printf("'%s'를 냉장고에 넣었습니다.\n",item.getName());
System.out.println();
}
public Q0097_item get(String name) {
Q0097_item item = null;
int itemIndex = -1;
for(int i=0; i<index; i++) {
if(this.list[i].getName().equals(name)){
item = this.list[i];
itemIndex = i;
this.index--;
break;
}
}
if (item != null) {
for(int i=itemIndex; i<index; i++) {
this.list[i] = this.list[i+1];
}
}
return item;
}
public int count() {
return this.index;
}
public void listItem() {
System.out.println("[냉장고 아이템 목록]");
if(index>0) {
for(int i=0; i<index; i++) {
Q0097_item t = this.list[i];
System.out.printf("%s(%s)\n",t.getName(), t.getExpiration());
}
}
else if(index<0) {
System.out.println("냉장고 안에 물건이 없습니다.");
}
System.out.println();
}
}
- 실행결과
예제 5) 요구사항 : 학생 클래스를 구현하시오.
- 조건
- 생성자 오버로딩을 구현하시오.
- Student
- 학생 클래스
- 상태
- name: 이름
- age: 나이
- grade: 학년
- classNumber: 반
- number: 번호
- 행동
- public Student()
- public Student(String name, int age, int grade, int classNumber, int number)
- public Student(String name, int age)
- public Student(int grade, int classNumber, int number)
- String info()
- 소스코드
package com.test.question;
public class Q0098 {
public static void main(String[] args) {
//학생 1
Q0098_Student s1 = new Q0098_Student();
System.out.println(s1.info());
//학생 2
Q0098_Student s2 = new Q0098_Student("홍길동", 13);
System.out.println(s2.info());
//학생 3
Q0098_Student s3 = new Q0098_Student(3, 10, 30);
System.out.println(s3.info());
//학생 4
Q0098_Student s4 = new Q0098_Student("아무개", 12, 1, 5, 11);
System.out.println(s4.info());
}
}
package com.test.question;
public class Q0098_Student {
private String name;
private int age;
private int grade;
private int classNumber;
private int number;
public Q0098_Student() {
name = "미정";
age = 0;
grade = 0;
classNumber = 0;
number =0;
}
public Q0098_Student(String name, int age) {
this.name = name;
this.age = age;
}
public Q0098_Student(String name, int age, int grade, int classNumber, int number) {
this.name = name;
this.age = age;
this.grade = grade;
this.classNumber = classNumber;
this.number = number;
}
public Q0098_Student(int grade, int classNumber, int number) {
this.name = "미정";
this.grade=grade;
this.classNumber = classNumber;
this.number = number;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public int getClassNumber() {
return classNumber;
}
public void setClassNumber(int classNumber) {
this.classNumber = classNumber;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public String info() {
return String.format("%s(나이 : %s, 학년 : %s, 반 : %s, 번호 : %s)"
, this.name
, age != 0? this.age + "세" : "미정"
, grade !=0? this.grade + "학년" : "미정"
, classNumber !=0? this.classNumber + "반" : "미정"
, number !=0? this.number : "미정");
}
}
- 실행결과
예제 6) 요구사항 : 시간 클래스를 구현하시오.
- 조건
- 생성자 오버로딩을 구현하시오.
- 2자리 출력
- Time
- 시간 클래스
- 상태
- hour: 시(0 이상 양의 정수)
- minute: 분(0 이상 양의 정수)
- second: 초(0 이상 양의 정수)
- 행동
- public Time()
- public Time(int hour, int minute, int second)
- public Time(int minute, int second)
- public Time(int second)
- String info()
- 소스코드
package com.test.question;
public class Q0099 {
public static void main(String[] args) {
Q0099_Time t1 = new Q0099_Time();
System.out.println(t1.info());
Q0099_Time t2 = new Q0099_Time(2,30,45);
System.out.println(t2.info());
Q0099_Time t3 = new Q0099_Time(1,70,30);
System.out.println(t3.info());
Q0099_Time t4 = new Q0099_Time(30,10);
System.out.println(t4.info());
Q0099_Time t5 = new Q0099_Time(90,10);
System.out.println(t5.info());
Q0099_Time t6 = new Q0099_Time(50);
System.out.println(t6.info());
Q0099_Time t7 = new Q0099_Time(10000);
System.out.println(t7.info());
}
}
package com.test.question;
public class Q0099_Time {
private int hour;
private int minute;
private int second;
public Q0099_Time() {
}
public Q0099_Time(int hour, int minute, int second) {
this.hour = hour;
this.minute = minute;
this.second = second;
}
public Q0099_Time(int minute, int second) {
this.minute = minute;
this.second = second;
}
public Q0099_Time(int second) {
this.second = second;
}
String info() {
int hour_plus = 0;
int minute_plus = 0;
if(this.minute>=60) {
hour_plus=this.minute/60;
this.minute=this.minute%60;
this.hour+=hour_plus;
}
if(this.second>=60) {
minute_plus=this.second/60;
this.second=this.second%60;
this.minute+=minute_plus;
if(this.minute>=60) {
hour_plus=this.minute/60;
this.minute=this.minute%60;
this.hour+=hour_plus;
}
}
return String.format("%02d:%02d:%02d", this.hour,this.minute,this.second);
}
}
- 실행결과
728x90
'자바' 카테고리의 다른 글
JAVA STEP 28. 상속, Static 예제 (0) | 2023.02.20 |
---|---|
JAVA STEP 27. Inheritance, Static (0) | 2023.02.20 |
JAVA STEP 25. CLASS&Constuctor (0) | 2023.02.17 |
JAVA STEP 24. CLASS (0) | 2023.02.16 |
JAVA STEP 23. String 예제 모음 (0) | 2023.02.15 |