본문 바로가기

IT일반과목/java

자바 getter과 setter적용된것

package jongkyu.run;

import jongkyu.controller.*;

public class Run {
 public static void main(String[] args) {
  Controller c = new Controller();
  c.main();
 }
}
-------------------------------------------------

 

package jongkyu.model;

public class Student {
 private int grade;
 private int sNum;
 private String name;
 private int point;//시험점수는 50점부터
 private int stress;//원래 갖고있으면서 살고있으니 100부터 시작
 //입력할때 넣어주기로 하자.
 
 
 //getter
 
 //하나는 값 읽어오는용 하나는 세팅하는용을 만들어보겠다.
 //getter
 public int getGrade() {
  return grade;//grade의값을 리턴해준다. -> privat grade값을 리턴해준다.
 }//getter
 //불러올때는 getgrade를 쓰는데 리턴하고 그레이드이다. 현재값에 저장되어있는걸 반환해줘
 //읽어오는 용이라고 생각하면 간단하다.
 
 public int getsNum() {
  return sNum;
 }

 public void setsNum(int sNum) {
  this.sNum = sNum;
 }

 public String getName() {
  return name;
 }

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

 public int getPoint() {
  return point;
 }

 public void setPoint(int point) {
  this.point = point;
 }

 public int getStress() {
  return stress;
 }

 public void setStress(int stress) {
  this.stress = stress;
 }

 //setter
 public void setGrade(int grade) {//가로안은 메소드변수 grade이고 클래스에있는 grade를 쓰고싶으니
  //grade같은경우 클래스에있는 걸 넣고싶기때문에 this라는걸썼다. this를 쓰면 클래스안에 grade를 불러오게 되어있다.
  this.grade = grade;
  //private에 grade를 넣고싶어서 this를 썼고 이걸 안쓴다면 가로안에있는 grade안에 넣어준다.
  //이 클래스변수의 grade를 말하고싶다면 this를 써줘야한다.
 }//setter
 
 /*
  * grade를 private로 선언을 한고 getter로해서 값을 리턴시킨후 쓰겠다고 해주면 된다.
  * setter은 값을
  */
 
 
 
 
 
 
 public void cigar() {
  stress -= 500;
 }
 
 public void study() {
  stress +=500;
  point -=10;//공부를 하면 성적이 감소된다.
 }
 public void play() {//pc방
  stress -=100;
  point +=50;
 }
 public void test() {
  stress +=1000;
  eat();//먹으면 스트레스가 감소한다.
 }
 public void eat() {
  stress -= 1000;
 }
 
 
 
 
 
 /*
  * 학생이니까 있어야되는것
  */
}

---------------------------------------------------------------------

package jongkyu.controller;

import jongkyu.model.*;
import java.util.Scanner;

public class Controller {
 Scanner sc = new Scanner(System.in);
 Student s = new Student();//학생등록할거여서 미리 해놓았다.
 public void main() {
  while(true) {
   System.out.println("===== 학생 키우기 =====");
   System.out.println("1. 학생 등록");
   System.out.println("2. 학생 상태보기");
   System.out.println("3. 키우기");
   System.out.print("선택 > ");
   int sel = sc.nextInt();
   switch(sel) {
   case 1 : insert(); break; //학생등록이여서 이렇게 했다.
   case 2 : view(); break;
   case 3 : manage(); break;
   default : return; //그외에는 다 종료

   }

  }
 }
 public void insert() {
  System.out.print("학년 입력 > ");
  s.setGrade(sc.nextInt()); //이렇게 바로 처리할 수도 있다.
  System.out.print("학번 입력 >");
  s.setsNum(sc.nextInt()); //s라는곳에 넣어주곘다.
  System.out.print("이름 입력 >");
  s.setName(sc.next());
  System.out.print("성적 입력 >");
  s.setPoint(sc.nextInt());
  System.out.print("스트레스 지수 입력 > ");
  s.setStress(sc.nextInt());
 }
 //설정용이니 세팅을 써줘야 한다.
 

 public void view() {
  if(s.getGrade()==0) {//메소드이므로 가로를 써줘야 한다.
   System.out.println("학생이 등록되지 않았습니다.");
   return;
  }else {
   System.out.println("학년 :"+s.getGrade());//원래 s.grade였는데 이걸이렇게 바꿨다.
   System.out.println("학번 :"+s.getsNum());
   System.out.println("이름 :"+s.getName());
   System.out.println("성적 :"+s.getPoint());
   System.out.println("스트레스 지수 :"+s.getStress());

  }


 }
 public void manage() {
  while(true) {
   System.out.println("1. 공부");

   System.out.println("2. PC방");
   System.out.println("3. 시험보기");
   System.out.println("4. 먹기");
   System.out.println("5. 담배");
   System.out.print("선택 >");
   int sel = sc.nextInt();
   switch(sel) {
   case 1 : s.study(); break;
   case 2 : s.play(); break;
   case 3 : s.test(); break;
   case 4 : s.eat(); break;
   case 5 : s.cigar(); break;
   default : return;
   }
   if(s.getPoint()>=10000) {
    System.out.println("장학생입니다. 프로그램 종료합니다.");
    return;
   }else if(s.getStress() >= 2000) {
    System.out.println("스트레스과다로 사망했습니다.");
    return;
   }
  }
 }

 

}