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위치에 대입