Java
[IT국비지원교육_코딩_비전공자] 자바 콘솔 프로젝트 실습/ 학생 성적관리 예제 / vo만들기/ for문으로 프로세스 분기 나누기
coolcode
2022. 1. 21. 12:21
콘솔 프로젝트로 구현하려고 하는 애플리케이션에 필요한 vo 클래스 파일을 먼저 만들어준다
vo클래스 만들때 주의 사항으로는 매개변수 있는 생성자를 만들기전에 항상 기본생성자를 먼저 만들어주어야 함
기본생성자는 어떤 생성자도 없을때 컴파일러가 자동으로 만들어주기때문에 매개변수 있는 생성자가 만들어져 있으면
기본생성자를 만들어주지 않아서 해당 vo 클래스로 만든 객체의 데이터를 참조할때 호출이 불가할 수 있음
student domain
package domain;
// VO (Value Object)
// **생성자 만들기 /**조회기능 / **등록기능 << 과제3개
// 복사 copy 복제 copy
// source generate
public class Student {
// 학번, 이름, 국어, 영어, 수학
private String no;
private String name;
private int kor;
private int eng;
private int mat;
public int seteng;
public int setmat;
public int setkor;
public Student() {
// TODO Auto-generated constructor stub
}
public Student(String no, String name, int kor, int eng, int mat) {
super();
this.no = no;
this.name = name;
this.kor = kor;
this.eng = eng;
this.mat = mat;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getKor() {
return kor;
}
public void setKor(int kor) {
this.kor = kor;
}
public int getMat() {
return mat;
}
public void setMat(int mat) {
this.mat = mat;
}
// static String schoolName= "휴먼초등학교";
//여기까지 field 끝
//총점(총점의 대상=> kor, eng, mat/ 0~100 사이) 평균
//static 키워드가 없으면 전부 인스턴스 메서드
//인스턴스 메서드내에서는 인스턴스 메서드를 제한없이 쓸 수 있음
public int sum() {
return this.kor + this.eng + mat; //인스턴스 변수간의 상호 호출이 가능함
}
double avg() {
return (int)(sum() / 3d * 100) / 100d;
}
public String toString() {
String str = getNo() + " " + getName() + " " + kor + " " + eng +
" " + mat + " " + sum() + " " + avg() ;
return str;
}
//return sum() / 3d; // 3의 double type 캐스팅으로 실수간의 연산이 가능해짐
public static void main(String[] args) {
Student student = new Student();
System.out.println(student);
Math.random();
}
}
// 인스턴스 메서드 호출 시점에 인스턴스 메서드를 사용할 수 있음
// 필드 > 생성자 > 메서드 순으로 작성
// this > 미래 생성 될 인스턴스
// 변수 종류 3가지
앞으로 만들 서비스의 프로그램 실행 분기를 나누어주는 틀을 먼저 만들었다
호출 할 서비스는 메서드명만 지어두었고 우선은 프로세스 흐름이 타당한지 확인하기위해
콘솔에 sysout으로 메서드 별 확인 문구만 작성하여 분기 흐름을 파악함
student app
package app;
import java.util.Scanner;
import service.StudentService;
import student.StudentUtill;
public class StudentEx {
public static void main(String[] args) {
StudentService service = new StudentService();
// 1. 목록조회 2. 학생등록 3. 학생정보수정 4. 학생삭제 5. 종료
for (boolean b = true; b;) {
int input = StudentUtill.nextInt("1. 목록조회 2. 학생등록 3. 학생정보수정 4. 학생삭제 5. 종료\n");
switch (input) {
case 1:
service.list();
break;
case 2:
service.register();
break;
case 3:
service.modify();
break;
case 4:
service.remove();
break;
case 5:
System.out.println("종료합니다");
b = false;
break;
default:
System.out.println("올바른 번호를 입력하세요");
break;
}
}
}
}
//mvc 패턴 > 기능에 관련된 것들은 별도의 클래스(서비스 클래스)로 관리함**
//1.데이터 입력받기
//2.입력 받은 데이터를 학생 타입의 인스턴스 생성
//3.students 배열의 null위치에 대입