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