Today's memo:
개발자는 항상 사용자들의 평의를 위해서 여러가지 상황에 맞는 코드들을 제공해줘야한다.
필드사용은 항상 메소드를 통해서 사용하게끔 하는거 잊지말기!
why? 객체 무결성을 유지하기위해서이다.
import java.util.Scanner;
class Name{//data class : 독립적으로 사용
private String name;
public Name() {}
public Name(String name) {this.name=name;}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Subject{// data class gradeManager가 가져다 쓰는 클래스라 이건 건들여지면안됨
private int score;
public Subject() {}
public Subject(int score) {this.score=score;}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
public class GradeManager {
private Name name;
private Subject kor,math,eng;
private float avg;
private int total;
public GradeManager() {
name=new Name();
kor=new Subject();
math=new Subject();
eng=new Subject();
}
public GradeManager(String name,int kor,int eng,int math) {
this.name=new Name(name);
this.kor=new Subject(kor);
this.eng=new Subject(eng);
this.math=new Subject(math);
total=this.getKor()+this.getEng()+this.getMath();
avg=total/3.f;
}
private void setName(String name) {
this.name.setName(name);
}
public String getName() {
return name.getName();
}
public int getKor() {
return kor.getScore();
}
public void setKor(int kor) {
this.kor.setScore(kor);
}
public int getMath() {
return math.getScore();
}
public void setMath(int math) {
this.math.setScore(math);
}
public int getEng() {
return eng.getScore();
}
public void setEng(int eng) {
this.eng.setScore(eng);
}
public float getAvg() {
return avg=total/3.0f;
}
public void setAvg(float avg) {
this.avg = avg;
}
public int getTotal() {
return total=kor.getScore()+eng.getScore()+math.getScore();
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
GradeManager gm=new GradeManager();
System.out.println("이름을 입력하시오");
gm.setName(sc.next());
System.out.println("국어 성적 입력");
gm.setKor(sc.nextInt());
System.out.println("영어 성적 입력");
gm.setEng(sc.nextInt());
System.out.println("수학 성적 입력");
gm.setMath(sc.nextInt());
System.out.println("이름:"+gm.getName());
System.out.println("국어: "+gm.getKor()+"영어: "+gm.getEng()+"수학: "+gm.getMath());
System.out.println("총점: "+gm.getTotal()+"평균: "+gm.getAvg());
}
}
위 클래스를 활용하여 여러명 성적관리를 해보자
import java.util.Scanner;
public class Studentes {
private GradeManager[ ] stu;
Studentes(int num){
stu=new GradeManager[num];
for(int i=0;i<num;i++) {
stu[i]=new GradeManager();
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num;
System.out.println("몇명 성적관리하시겠습니까?");
num=sc.nextInt();
Studentes st=new Studentes(num);
for(int i=0;i<st.stu.length;i++) {
System.out.println("이름 입력");
st.stu[i].setName(sc.next());
System.out.println("국어 성적입력");
st.stu[i].setKor(sc.nextInt());
System.out.println("영어 성적입력");
st.stu[i].setEng(sc.nextInt());
System.out.println("수학 성적입력");
st.stu[i].setMath(sc.nextInt());
}
for(int i=0;i<st.stu.length;i++) {
System.out.print("이름: "+st.stu[i].getName()+"\t");
System.out.print("국어: "+st.stu[i].getKor()+"\t");
System.out.print("영어: "+st.stu[i].getEng()+"\t");
System.out.println("수학: "+st.stu[i].getMath()+"\t");
System.out.println("총점:"+st.stu[i].getTotal()+"\t"+"평균:"+st.stu[i].getAvg()+"\t" );
}
}
}
메인에 너무 기능을 떄려 넣은거같으니 메소드를 만들어서 만들어보자!
import java.util.Scanner;
public class Studentes {
private GradeManager[ ] stu;
private int pos;
Studentes(int num){
pos=0;
stu=new GradeManager[num];
for(int i=0;i<stu.length;i++) {
stu[i]=new GradeManager();
}
}
public void setStuInfo(String name,int kor,int eng,int math) {
stu[pos].setName(name);
stu[pos].setKor(kor);
stu[pos].setEng(eng);
stu[pos].setMath(math);
pos++;
}
public void disp() {
for(int i=0;i<pos;i++) {
System.out.print("이름: "+stu[i].getName()+"\t");
System.out.print("국어: "+stu[i].getKor()+"\t");
System.out.print("영어: "+stu[i].getEng()+"\t");
System.out.println("수학: "+stu[i].getMath()+"\t");
System.out.println("총점:"+stu[i].getTotal()+"\t"+"평균:"+stu[i].getAvg()+"\t" );
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int num;
System.out.println("몇명 성적관리하시겠습니까?");
num=sc.nextInt();
Studentes st=new Studentes(num);
for(int i=0;i<num;i++) {
System.out.println("이름입력");
String na=sc.next();
System.out.println("국어성적");
int kor=sc.nextInt();
System.out.println("영어성적");
int eng=sc.nextInt();
System.out.println("수학성적");
int math=sc.nextInt();
st.setStuInfo(na,kor,eng,math);
}
st.disp();
}
}'Java기초' 카테고리의 다른 글
| [Java]동적바인딩 정적바인딩 (0) | 2022.07.05 |
|---|---|
| [JAVA] Class 관계 (has~ a) 포함오브젝트 활용 (0) | 2022.06.30 |
| [Java] 성적처리 프로그램심화(array이해하기 (0) | 2022.06.24 |
| [Java] 2,3차원배열 For문활용 + foreach문 활용 실습 (0) | 2022.06.24 |
| [Java]while,do while 문 활용(For문에서 while문으로 변경) (0) | 2022.06.23 |
댓글