티스토리 뷰
#메서드 실습
√클래스의 필요성
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 |