본문으로 바로가기
반응형

 

 

 

이전까지 자바의 기초부터 객체까지 다뤄봤습니다.

 

 

 

 

 

객체의 배열을 학습하기전, 

 

메소드를 활용한 자바 객체의 실습문제를 풀어봅시다!!

 

 

 

 

 

 

 

 

 


자바 객체(메소드) 예제


 

 

 

 

난이도 ★

 

 

 

예제 1

 

 

Q : 다음 사진을 보고 요구사항에 맞는 메소드와 객체를 생성하여라.

 

 

 

 

 


 

 

 

 

 

package com.kh.exam10;

import java.util.Scanner;

class Snack {
	private String kind;
	private String name;
	private String	 flavor;
	private int numOf;
	private int price;
	
	public Snack() {
		
	}
	
	public Snack(String kind, String name, String flavor, int numOf, int price) {
		this.kind = kind;
		this.name = name;
		this.flavor = flavor;
		this.numOf = numOf;
		this.price = price;
	}

	
	
	public String information() {
		return this.kind + "(" + this.name + " - " + this.flavor + ") " 
				  + this.numOf + "개 " + this.price + "원";
	}

	public String getKind() {
		return kind;
	}

	public void setKind(String kind) {
		this.kind = kind;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getFlavor() {
		return flavor;
	}

	public void setFlavor(String flavor) {
		this.flavor = flavor;
	}

	public int getNumOf() {
		return numOf;
	}

	public void setNumOf(int numOf) {
		this.numOf = numOf;
	}

	public int getPrice() {
		return price;
	}

	public void setPrice(int price) {
		this.price = price;
	}
	
	
}

class SnackMenu {
	private Scanner sc = new Scanner(System.in);
	private SnackController scr = new SnackController();
	
	public void menu() {
		String kind; String name; String flavor; int numOf; int price;
		
		System.out.println("스낵류를 입력");
		System.out.print("종류 : ");  kind = sc.nextLine();
		System.out.print("이름 : ");  name = sc.nextLine();
		System.out.print("맛 : ");    flavor = sc.nextLine();
		System.out.print("개수 : ");  numOf = sc.nextInt();  sc.nextLine();
		System.out.print("가격 : ");  price = sc.nextInt();  sc.nextLine();
		
		System.out.println(scr.saveData(kind, name, flavor, numOf, price));
		
		System.out.print("저장한 정보를 확인하시겠습니까?(y/n) : ");
		String yn = sc.nextLine();
		
		
		
		if(yn.equals("y")) {
			System.out.println(scr.confirmData());
		}else if(yn.equals("n")) {
			return;
		}
	} 
}

class SnackController {
	private Snack s = new Snack();
	
	public SnackController() {
		
	}
	
	public String saveData(String kind, String name, String flavor, int numOf, int price) {
		s.setKind(kind);
		s.setName(name);
		s.setFlavor(flavor);
		s.setNumOf(numOf);
		s.setPrice(price);
		
		return "저장 완료되었습니다. \n";
	}
	
	public String confirmData() {
		return s.information();
	}
}

// Run 클래스 대신 Sample5로 작성.
public class Sample5 {

	public static void main(String[] args) {
		// OOP 실습문제 PDF 보고 작성
		SnackMenu sm = new SnackMenu();
		
		
		sm.menu();
		
	}

}

 

 

※ 패키지는 구분하지 않고 하나의 패키지에 작성하였습니다.

     패키지 요구사항을 충족시킬분들은 클래스 다이어그램에서 요구하는 패키지를 생성하고

     작성한 자바파일을 알맞게 넣어주면 됩니다!

 

 

 

 

 


 

 

 

 



 

 

난이도 ★

 

 

 

예제 2

 

 

Q : 다음 요구사항에 맞는 메소드와 객체를 생성하여라.

 

 

--  클래스를 사용하여 인스턴스를 만들고 만들어진 인스턴스를 사용하는 코드를
 보고 해당 코드에 적합한 클래스를 작성해보도록 한다.
 (단, 이 클래스는 캡슐화를 적용한다.)
  
 로또 번호는 1 ~ 45 까지 6개의 번호를 맞추어 등수를 정하는 복권이다.

 


// 1 ~ 45 범위의 번호 6개를 생성해준다.
Lotto lot1 = new Lotto();
Lotto lot2 = new Lotto();

// 1 ~ 45 범위의 번호 6개를 생성해준다.
lot1.generate();
lot2.generate();

// 1 ~ 45 범위의 번호 6개를 생성하나 4, 6, 14 는 반드시 들어간다.
lot1.generate(4, 6, 14);

// 1 ~ 45 범위의 번호 6개를 생성하나 34, 31, 40 은 반드시 들어간다.
lot2.generate(34, 21, 40);

// 생성된 번호를 확인할 수 있다.
lot1.getNumbers();
lot2.getNumbers();

// 당첨번호를 통해 등수를 확인한다.(당첨번호가 등록되지 않았기 때문에 -1을 반환하게 해야 한다.)
lot1.getRank();
lot2.getRank();

int[] nums = new int[] {1, 2, 3, 4, 5, 6};
int bonus = 7;
// 당첨번호를 통해 등수를 확인한다.(당첨번호를 전달하여 등수를 확인한다.)
lot1.getRank(nums, bonus);
lot2.getRank(nums, bonus);

// 1 ~ 45 범위의 번호 7개를 생성해준다.(이 번호는 당첨 번호로 사용할 것이다.)
int[] numbers = Lotto.createWinnerNumbers();


// 위에서 생성된 로또 번호를 공유 변수에 저장한다.(당첨 번호를 등록하는 것이다.)
Lotto.setWinnerNumbers(numbers);

// 당첨 번호를 확인할 수 있다.(보너스 포함)
Lotto.getWinnerNumbers();

// 당첨번호를 통해 등수를 확인한다.(당첨번호를 공유변수에 등록하여 확인한다.)
lot1.getRank();
lot2.getRank();



 

 

 

 


 

 

 

 

 


import java.util.Arrays;
import java.util.Random;

class Lotto {

	private int lotto[] = new int[6];
	private static int winLotto[] = new int[7];
	
	static Random rd = new Random();
	
	public Lotto() {
		
	}
	
	public void generate() {
		Random rd = new Random();
		
		for(int i=0; i < this.lotto.length; i++){
			this.lotto[i] = rd.nextInt(44) + 1;
			
			for(int j=0 ; j<i ; j++) {
				if(this.lotto[i] == this.lotto[j]) {
					i--;
					break;
				}
			}
		}
		
	}
	
	public void generate(int n1, int n2, int n3) {
		this.lotto[0] = n1;    this.lotto[1] = n2;    this.lotto[2] = n3;
		
		Random rd = new Random();
		
		for(int i=3; i < this.lotto.length; i++){
			lotto[i] = rd.nextInt(44) + 1;
		}
		
	}

	public void getNumbers() {
		System.out.println(Arrays.toString(this.lotto));
	}

	

	
	
	
	public void getRank(int[] nums, int bonus) {
		int count=0;
		
		for(int i=0; i<this.lotto.length; i++) {
			if(this.lotto[i] == bonus) {
				count++;
				continue;
			}
			for(int j=0; j<nums.length; j++){
				if(this.lotto[i] == nums[j]) {
					count++;
				}
			}
		}
		
		if(count >= 6) System.out.println("1등 당첨!!!");
		else if(count == 5) System.out.println("2등 당첨!!");
		else if(count == 4) System.out.println("3등 당첨!");
		else if(count == 3) System.out.println("4등 당첨");
		else if(count < 3) System.out.println("다음 기회에...");

	}

	public static int[] createWinnerNumbers() {
		for(int i=0; i<Lotto.winLotto.length; i++) {
			Lotto.winLotto[i] = rd.nextInt(44) + 1;
			
			for(int j=0 ; j<i ; j++) {
				if(Lotto.winLotto[i] == Lotto.winLotto[j]) {
					i--;
					break;
				}
			}
		}
		
		return winLotto;
	}

	public static void setWinnerNumbers(int[] numbers) {
		
		winLotto = numbers;
		
	}

	public static void getWinnerNumbers() {
		System.out.println(Arrays.toString(winLotto));
		
	}

	public void getRank() {
		int count=0;
		
		if(winLotto[0] < 1 || winLotto[0]>45) {
			System.out.println("-1");
		}
		else if(winLotto.length>=7) {
			for(int i=0; i<this.lotto.length; i++) {
				for(int j=0; j<winLotto.length; j++) {
					if(this.lotto[i] == winLotto[j]) {
						count++;
					}
				}
			}
			if(count >= 6) System.out.println("1등 당첨!!!");
			else if(count == 5) System.out.println("2등 당첨!!");
			else if(count == 4) System.out.println("3등 당첨!");
			else if(count == 3) System.out.println("4등 당첨");
			else if(count < 3) System.out.println("다음 기회에...");
		}
		
		
	}
	
	
}
public class Sample4 {

	public static void main(String[] args) {
		/*
		 * 클래스를 사용하여 인스턴스를 만들고 만들어진 인스턴스를 사용하는 코드를
		 * 보고 해당 코드에 적합한 클래스를 작성해보도록 한다.
		 * (단, 이 클래스는 캡슐화를 적용한다.)
		 * 
		 * 로또 번호는 1 ~ 45 까지 6개의 번호를 맞추어 등수를 정하는 복권이다.
		 */
		// 1 ~ 45 범위의 번호 6개를 생성해준다.
		Lotto lot1 = new Lotto();
		Lotto lot2 = new Lotto();
		
		// 1 ~ 45 범위의 번호 6개를 생성해준다.
		lot1.generate();
		lot2.generate();

		// 1 ~ 45 범위의 번호 6개를 생성하나 4, 6, 14 는 반드시 들어간다.
		lot1.generate(4, 6, 14);

		// 1 ~ 45 범위의 번호 6개를 생성하나 34, 31, 40 은 반드시 들어간다.
		lot2.generate(34, 21, 40);

		// 생성된 번호를 확인할 수 있다.
		lot1.getNumbers();
		lot2.getNumbers();

		// 당첨번호를 통해 등수를 확인한다.(당첨번호가 등록되지 않았기 때문에 -1을 반환하게 해야 한다.)
		lot1.getRank();
		lot2.getRank();

		int[] nums = new int[] {1, 2, 3, 4, 5, 6};
		int bonus = 7;
		// 당첨번호를 통해 등수를 확인한다.(당첨번호를 전달하여 등수를 확인한다.)
		lot1.getRank(nums, bonus);
		lot2.getRank(nums, bonus);

		
		
		// 1 ~ 45 범위의 번호 7개를 생성해준다.(이 번호는 당첨 번호로 사용할 것이다.)
		int[] numbers = Lotto.createWinnerNumbers();

		
		// 위에서 생성된 로또 번호를 공유 변수에 저장한다.(당첨 번호를 등록하는 것이다.)
		Lotto.setWinnerNumbers(numbers);

		// 당첨 번호를 확인할 수 있다.(보너스 포함)
		Lotto.getWinnerNumbers();

		// 당첨번호를 통해 등수를 확인한다.(당첨번호를 공유변수에 등록하여 확인한다.)
		lot1.getRank();
		lot2.getRank();
	}

}

 

 

 

 

 


 

 

 

 

 

 

 

이상 java의 객체 실습문제를 마치겠습니다.

 

 

 

 

 

 

다음 포스팅에선 java 객체 배열에 대해 다뤄보고자 합니다.

https://healthdevelop.tistory.com/entry/java12

 

[Java] 자바 객체 생성 예제 | 자바 메소드 예제 | java 객체 예제 | 실습문제 (java로 웹개발하기)(day12

이전까지 자바의 기초부터 객체까지 다뤄보고, 객체 실습 문제도 풀어봤습니다. 객체의 배열을 학습하기 전, 다시 한 번 메소드를 활용한 자바 객체의 실습문제를 풀어보려고 합니다. 실제 업

healthdevelop.tistory.com

 

반응형