티스토리 뷰

Programing/Java

Java1 - 16. private

HNNN 2017. 4. 28. 15:55


#메서드 실습


  √클래스의 필요성
  
       name    sight height  weight
     
  철수 객체 "철수"  1.2   1.0   173   65.3
  영희 객체 "영희"  1.2   1.0   169   48.3
  민수 객체 "민수"  2.0   1.5   179   75.3
  -->위 표를 보고 표와같은 소스를 만들어 내라
  
  
 

package privateex;

class BodyCheckInfo{

//데이터를 구성할 수있는 틀 제작
 String name;
 double lSight;
 double rSignt;
 int height;
 double weight;


 //객체가 필요할 때, 값을 전달해주는(argument)  메서드를 만들어라
 //메서드 만들때는 그 아규먼트를 수신해야한다. 그에 걸맞는 파라미터를 준비해 놔야함
 //파라미터(매개변수)가 있으면 반드시 아규먼트를 넣어야한다 
 
 
 void setData(String n, double ls, double rs, int h,double w){

      name=n;

      lSight=ls;

      rSignt=rs;

      height=h;

      weight=w;
  
  
 }


 void printBodyCheck(){
      System.out.println(name+"\t"+lSight+"\t"+rSignt+"\t"+height+"cm"+"\t"+weight+"kg");
 }
 
}
public class PrivateTest {

 public static void main(String[] args) {

      BodyCheckInfo chul= new BodyCheckInfo();
      BodyCheckInfo yh= new BodyCheckInfo();
      BodyCheckInfo ms= new BodyCheckInfo();
  

      chul.name="철수";       yh.name="영희";  ms.name="민수";
      chul.lSight=1.2;  yh.lSight=1.2;  ms.lSight=2.0;
      chul.rSignt=1.0;  yh.rSignt=1.0;  ms.rSignt=1.5;
      chul.height=173;  yh.height=169;  ms.height=179;
      chul.weight=65.3;  yh.weight=48.3;  ms.weight=75.3;


      System.out.println("이름\t좌\t우\t키\t몸무게");


  -->메서드를 이용해서 간단히 만들수 있음
      chul.setData("철수", 1.2, 1.0, 173, 65.3);

      yh.setData("영희", 1.2, 1.0, 169, 48.3);
      ms.setData("민수", 2.0, 1.5, 179, 75.3);


< error나는 경우 >


      chul.setData("철수", 1.2, 1.0, 173.3, 65.3);


  ※ error 나는 이유 : int -->double를 대입했기 때문에 안됨

(호응<=>응답이 되어야함대응 이 맞아야함)


      System.out.println("이름\t좌시력\t우시력\t  키\t몸무게\t");


->메서드를 이용해서 간단하게 만들수 있음
      chul.printBodyCheck();
      yh.printBodyCheck();
      ms.printBodyCheck();


 }

}


#실습


 √ 클래스의 필요성 2.
 
      name   
     
  과목 점수
                         국어   영어    수학
  철수 객체 "철수"   30     50       60
  영희 객체 "영희"   60     90       70
  민수 객체 "철수"   70     80       50
 
 


package privateex;

class Score{
     String name;
     int kScore;
     int eScore;
     int mScore;


     void ScoreData(String name, int kScore,int eScore,int mScore){
       this.name=name;
       this.kScore=kScore;
       this.eScore=eScore;
       this.mScore=mScore;

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

name=name;
 -->같은 변수는 error가 남


this.name=name;

->this 평소에는 숨어있다가 (생략), 만약 이름이 매개변수하고 같으면 그땐 써준다 )

____________________________________________


비지니스 메서드 : 내가 편하려고 만들어 쓰는 메서드 , 그때 그떄 만들어 쓰자


     int getTotal(){
       return kScore+eScore+mScore;
     }


 double getAvg(){
  return getTotal()/3.0;
 }


-->소숫점 1자리까지만 만들려고 함


     String getAvg(){
       return String.format("%.1f",getTotal()/3.0);

  // 소수점한자리로 만들고 그 내용을 문자열로 만들어 준다
     }


     void printScore(){
      System.out.println(name+"\t"+kScore+"점\t"+eScore+"점\t"+mScore+"점\t"+getTotal()+"점\t"+getAvg()+"점");
     }
    

}


public class PrivateTest2 {

 public static void main(String[] args) {
  
    Score chul=new Score();
    chul.ScoreData("철수", 30, 50, 60);
    Score yh=new Score();
    yh.ScoreData("영희", 60, 90, 70);
    Score ms=new Score();
    ms.ScoreData("민수", 70, 80, 50);
  

   chul.printScore();
   yh.printScore();
   ms.printScore();
  
 }

}






 클래스 - private


  1. private  클래스의 맴버들(변수와 메서드)을 숨기는 역할을 수행한다
  2. class  밖에선 해당 맴버에 접근할 수 없게 된다
   (즉, )
  3. 보호한다
  private<-->public

     

private-->은닉화, 함부로 불러서 데이터 못 넣게 하자

public-->외부에 공개하겠다.(어디서든:패키지에 구애받지않는다)



  setter


  변수를 보호하기 위해서 붙인 private 때문에 값을 직접 입력할 수 없게 됐다.
  그래서 각 변수마다 메서드를 하나씩 붙여주자 : 값 입력 메서드( setter 메서드 )
  

 void set변수(매개변수){
   인스턴스변수 = 매개변수;
  }


getter


변수를 호출해서 확인할 수 있는 getter도 만들어주자


리턴타입 get변수(){
    return 변수;
}


package privateex;
class Score2{
 private String name;
 private int kScore;
 private int eScore;
 private int mScore;
 
 //setter
 public void setName(String name){
  this.name=name;
 }
 public void setKScore(int kScore){
  if(0<=kScore && kScore<=100)
   this.kScore=kScore;
  else
   System.out.println("국어점수 오류");
 }
 public void setEScore(int eScore){
  if(0<=eScore && eScore<=100)
   this.eScore=eScore;
  else
   System.out.println("영어 점수 오류");
 }
 public void setMScore(int mScore){
  if(0<=mScore && mScore<=100)
   this.mScore=mScore;
  else
   System.out.println("수학 점수 오류");
 }



 //변수 호출 가능한 getter 만듬
 public String getName(){
  return name;
 }
 public int getKScore(){
  return kScore;
 }
 public int getEScore(){
  return eScore;
 }
 public int getMScore(){
  return mScore;
 }
 
 
 
 void ScoreData(String name, int kScore,int eScore,int mScore){

  setName(name);
  setKScore(kScore);
  setEScore(eScore);
  setMScore(mScore);
  // 점수 범위가 반복되므로 setter에서 입력한 내용을 가져다 씀
 }
 
 int getTotal(){
  
  return kScore+eScore+mScore;
 }
 String getAvg(){
  return String.format("%.1f",getTotal()/3.0); 
 }
 
 void printScore(){
  System.out.println(name+"\t"+kScore+" 점 \t"+eScore+" 점 \t"+mScore+" 점 \t"+getTotal()+" 점 \t"+getAvg()+"점");
 }
}


public class PrivateTest3 {

 public static void main(String[] args) {
  
  Score2 ms=new Score2();
  ms.setName("민수");
  ms.setKScore(80);
  ms.setEScore(190);

//범위 이탈

  ms.setMScore(90);
  ms.printScore();
  

  
  
 }

}





 //System.out.println(ms.name+"의  수학 성적 : "+ms.mScore);

--> getter을 쓰지 않으면 오류가 남 (private으로 숨겼기 때문이다)


  System.out.println(ms.getName()+"의  수학 성적 : "+ms.getMScore());
  System.out.println(ms.getName()+"의  영어 성적 : "+ms.getEScore());
  System.out.println(ms.getName()+"의  국어 성적 : "+ms.getKScore());






#실습


1) 각각의 get/set 메서드를 만들고 값입력 출력
2) 나이는 15이상 60이하 까지만 회원가입이 됨
3) point 는 기본 30점  최대값 100
4) 2명의 회원을 가입시키고(초기값은 맘대로)
5) 입력/ 출력하기
 


package privateex;

class Membership{
 private String id;
 private String pw;
 private String name;
 private int age;
 private String address;
 private int point;
 
 //setter
 public void setId(String id){
  this.id=id;
 }
 public void setPw(String pw){
  this.pw=pw;
 }
 public void setName(String name){
  this.name=name;
 }
 public void setAge(int age){
  if(15<=age && age<=60)
   this.age=age;
  else
   System.out.println("가입이 불가능 합니다");
 }
 public void setAddress(String address){
  this.address=address;
 }
 public void setPoint(int point){
  if(30<=point && point<=100)
   this.point=point;
  else
   System.out.println("포인트를 확인하세요 ");
  
 }
 //getter
 public String getId(){
  return id;
 }
 public String getPw(){
  return pw;
 }
 public String getName(){
  return name;
 }
 public int getAge(){
  return age;
 }
 public String getAddress(){
  return address;
 }
 public int getPoint(){
  return point;
 }
 //2명의 회원을 가입시키고(초기값은 맘대로~~)

 void memberData(String id, String pw, String name, int age, String address, int point){
  setId(id);
  setPw(pw);
  setName(name);
  setAge(age);
  setAddress(address);
  setPoint(point);
 }
 
 void printMemberInfo(){
  System.out.println("ID :"+id+"\tPassword :"+pw+"\tName :"+name+"\tAge : "+age+"\tAddress :"+address+"\tPoint :" +point);
 }
 
}
public class PrivateTest4_과제 {

 public static void main(String[] args) {
  
  Membership member = new Membership();
  member.memberData("stella1018", "4224", "해니", 23, "서울시", 20); 
  member.printMemberInfo();

  Membership member2 = new Membership();
  member2.memberData("houng", "1234", "홍길동", 27, "경기도", 50);
  member2.printMemberInfo();
  
 }

}


'Programing > Java' 카테고리의 다른 글

Java1 - 18. 만들어져있는 클래스 사용 방법  (0) 2017.05.02
Java1 - 17. Contructor  (0) 2017.05.01
Java1 - 15. Method 만들기  (0) 2017.04.27
Java1 - 14. class  (0) 2017.04.26
Java 이용 - ATM기 작성  (0) 2017.04.26
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함