본문 바로가기

국비교육/국비교육 복습

day10_oop.modifier2 : 접근제한을 붙여서 클래스 생성

(Q) 이름, 학년, 국어점수, 영어점수, 수학점수에 사용자 입력을 받아  1명의 정보를 생산후 정보 출력

 

Student 클래스

package day10_oop.modifier2;

public class Student {

	// 멤버 필드
	private String name;
	private int level, korean, english, math;
	
	// getter & setter
	public String getName() {
		return this.name;
	}
	
	public void setName(String name) {
		this.name = name;
	}
	
	public int getLevel() {
		return this.level;
	}
	
	public void setLevel(int level) {
		switch(level) {
		case 1: case 2: case 3:
			break;
		}
		this.level = level;
	}
	
	public int getkorean() {
		return this.korean;
	}
	
	public void setKorean(int korean) {
		if(korean >= 0 && korean <= 100) {
			this.korean = korean;
		}
	}
	
	public int getEnglish() {
		return this.english;
	}
	
	public void setEnglish(int english) {
		if(english >= 0 && english <= 100) {
			this.english = english;
		}
	}
	
	public int getMath() {
		return this.math;
	}
	
	public void setMath(int math) {
		if(math >= 0 && math <= 100) {
			this.math = math;
		}
	}
	
	public int getSum() {
		return this.korean + this.english + this.korean;
	}
	
	public double getAvg() {
		return getSum() / 3.0;
	}
	
	public String getGrade() {
		if(getAvg() < 70) {
			return "F";
		}
		else if(getAvg() < 80) {
			return "C";
		}
		else if(getAvg() < 90) {
			return "B";
		}
		else {
			return "A";
		}
	}
	
	// 생성자
	Student(String name, int level, int korean, int english, int math){
		this.setName(name);
		this.setKorean(korean);
		this.setEnglish(english);
		this.setMath(math);
	}
	
	// 출력 메소드
	public void print() {
		System.out.println("이름 : " + this.name);
		System.out.println("총점 : " + this.getSum());
		System.out.println("평균 : " + this.getAvg());
		System.out.println("등급 : " + this.getGrade());
	}
}

- 멤버 필드에 직접 접근하는 것을 제한하기 위해 멤버 필드의 접근제한은 private로 설정하고 

  메소드를 통해 값을 바꾸는 것은 허용하기 위해 메소드의 접근제한은 public으로 설정한다

 

메인 메소드 1. 사용자 입력 5개를 받은 후 객체 생성

package day10_oop.modifier2;

import java.util.Scanner;

public class Test01 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		// 사용자 입력
		System.out.print("이름 : ");
		String name = sc.next();
		System.out.println();
		
		System.out.print("국어 점수 : ");
		int level = sc.nextInt();
		System.out.println();
		
		System.out.print("국어 점수 : ");
		int korean = sc.nextInt();
		System.out.println();
		
		System.out.print("영어 점수 : ");
		int english = sc.nextInt();
		System.out.println();
		
		System.out.print("수학 점수 : ");
		int math = sc.nextInt();
		System.out.println();
		
		// 객체 생성
		Student a = new Student(name, level, korean, english, math);
		
		// 출력
		a.print();
	}
}

 

메인 메소드 2. 사용자 입력을 받으면서 객체 생성

package day10_oop.modifier2;

import java.util.Scanner;

public class Test01_1 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		// 입력한 후 객체의 해당 필드에 입력하는 방법 (입력 순서가 생성자 매개변수 순서가 됨)
		Student a = new Student(sc.next(), sc.nextInt(), sc.nextInt(), sc.nextInt(), sc.nextInt());
		
		// 출력
		a.print();
	}
}

 

- 입력을 받으면서 객체를 생성할 경우 생성자에 입력한 매개변수 순서대로 값을 입력해야 한다

   (구문은 왼쪽에서 오른쪽으로 진행하므로 이름, 학년, 국어점수, 영어점수, 수학점수 순으로 입력해야 한다)