Java

[IT국비지원교육_코딩_비전공자] 객체지향 / 생성자 / 변수의 초기화 / 상속

coolcode 2022. 1. 19. 17:55

package student;


// VO (Value Object)
// **생성자 만들기 /**조회기능 / **등록기능  << 과제3개
public class Student {
	// 학번, 이름, 국어, 영어, 수학
	String no; 
	String name;
	int kor;
	int eng;
	int mat;
	
	static String schoolName= "휴먼초등학교";
	//여기까지 field 끝
	//총점(총점의 대상=> kor, eng, mat/ 0~100 사이) 평균 
	//static 키워드가 없으면 전부 인스턴스 메서드
	//인스턴스 메서드내에서는 인스턴스 메서드를 제한없이 쓸 수 있음
	int sum() {  
		return kor + eng + mat;  //인스턴스 변수간의 상호 호출이 가능함
	}
	
	double avg() {
		return (int)(sum() / 3d * 100) / 100d; }
		//return sum() / 3d;  // 3의 double type 캐스팅으로 실수간의 연산이 가능해짐
		public static void main(String[] args) {	
		Student student = new Student();
		student.no = "220001";
		student.name = "홍길동";
		student.kor = 90;
		student.eng = 80;
		student.mat = 80;
		
		System.out.println(student.sum());
		System.out.println(student.avg());
		// 인스턴스 메서드 호출 시점에 인스턴스 메서드를 사용할 수 있음
	
		// 필드 > 생성자 > 메서드 순으로 작성
		// thos > 미래 생성 될 인스턴스
	
	}

}




// 변수 종류 3가지

package student;

//01/17 : student 필드 정의, main 메서드 메뉴 정리
// 01/18 : 생성자 작성, 조회기능, 등록기능 구현
// 01/19 : toString 정의, 수정기능 구현


// 기능 담당 클래스 
public class StudentService {
	Student[] students = new Student[10]; //학생들 
	int cnt;
	
	{
		String[]names = {"김경보", "김동엽", "김상현", "김승종", "김예찬", "김치형", "김태윤"};
		
		for(int i = 0 ; i < names.length ; i++) {
			students[cnt++] = new Student(220000 + cnt + 1 + "", names[cnt], getScore(),getScore(),getScore());
			cnt++;	
	
	}
	
		System.out.println("임시 데이터 초기화 완료");
		
	}
	
	int getScore() {
		return (int)(Math.random() * 41) + 60;
	}
	
	// >> student 자체가 참조형 타입 + 배열[] 또한 참조형 => student[]참조형+참조형
	//==============================================================================
			// students >> 하기 기능에서 다뤄야할 데이터 
	// 1. 조회v
	void list() {
		// 조회 기능 구현 (students안에 데이터가 있다는 것을 가정 하)
		System.out.println("조회 기능 구현");  // << 해당 자리에 맞는 기능 코드 구현
	}
	
	// 2. 등록v
	void register() {
		// 등록 기능 구현
		// 데이터 입력받기
		
		
	}
	
	// 3. 수정v
	void modify() {
		//학번으로 학생을 탐색 후 학생 데이터 중 이름, 국어, 영어, 수학점수를 수정
		//새로 입력 받은 데이터로 덮어쓰기 하는 형식의 수정 구현
	}
	
	// 4. 삭제v

	public static void main(String[] args) {
		StudentService service = new StudentService(); 
	// Student[] >> Student
	// String[] >> String 
		
	//	service.students[0]   // >> service.students[0] 의 타입은 Students
	//	service.students[0] = new Student("220002","고길동", "80", "90", "50");
		System.out.println(service.students[0]);  // > 출력하면 null값이 나온다
	}
	
	
//이름 - 타입 - 생성자(소속) 
	
// 
	
	
}
//메인 메서드는 어떤 클래스 위치에서도 만들 수 있음 

// 생성자 사용목적 > 인스턴스 변수값을 초기화 하기 위해
//인스턴스변수를 만들기 위해서는 인스턴스를 만들어야 한다
//new 연산자를 사용해서 인스턴스를 생성한다 
//초기화방법 > 생성자를 사용한다
//인스턴스 메서드이기때문에 인스턴스 변수에 대한 접근 제한이 없을것
//각 필드값에 대한 접근
package student;

import java.util.Scanner;

public class StudentEx {

	public static void main(String[] args) {
		StudentService service = new StudentService();	
		// 1. 목록조회 2. 학생등록 3. 학생정보수정 4. 학생삭제 5. 종료
		
	Scanner scanner = new Scanner(System.in);
	for(boolean b = true ; b;) {	
		System.out.println("1. 목록조회 2. 학생등록 3. 학생정보수정 4. 학생삭제 5. 종료");
		System.out.println("=============================================================");
		int input = Integer.parseInt(scanner.nextLine());
		
		switch (input) {
		case 1:
			System.out.println("목록 조회입니다");
			break;

		case 2:
			System.out.println("학생 등록입니다"); //service클래스로 기능구현
			break;	

		case 3:
			System.out.println("학생 정보 수정입니다");
			break;	
		
		case 4:
			System.out.println("학생 삭제입니다");
			break;	
		
		case 5:
			System.out.println("종료합니다");
			break;	
			
			
		default:
			System.out.println("올바른 번호를 입력하세요");
			break;
			}
		}
		scanner.close();
	}
}

//mvc 패턴 > 기능에 관련된 것들은 별도의 클래스(서비스 클래스)로 관리함
//1.데이터 입력받기
//2.입력 받은 데이터를 학생 타입의 인스턴스 생성
//3.students 배열의 null위치에 대입