문과생애긔개발자_공부/Java(자바)

학생 관리 프로그램 (02 StudentExpel class만들기)

animeel 2022. 7. 6. 15:00

바로 쓰는 제 2부

학생 관리 프로그램 시간이 돌아왔습니다! (짝짝짝)

 

StudentExpel이라는 javaclass를 생성해주겠습니다.

이름에서도 물씬 풍겨오는 제적의 향기 ~~ 으흠~~스멜

 

코드가 짧기 때문에 전체 코드를 보여드리겠습니다.

 

package com.javalec.manager;

import java.util.ArrayList;

public class StudentExpel {

    ArrayList<Student> expelStudents;  //배열의 데이터 타입은 Student, 배열이라 expelStudents라고 네이밍

    public StudentExpel() {
        expelStudents = new ArrayList<Student>(); //초기화와 생성 (제적당한 모든 학생)
    }
    //외부에서 접근할 수 있게 public 지정
    public void addExpelStudent(String name, int age, int studentNum, String major) {
        expelStudents.add(new Student(name, age, studentNum, major));
        //타입이 Student이므로 new Student로 만들어야함
        System.out.println("제적 학생 정보 등록 완료");
   }
}

제가 가장 싫어하는 ArrayList를 사용합니다^^

Array 그냥 싫어... 요즘은 쓰면 알아서 import됩니다만 없으면 안되니까 잘 봐두세요

 

ArrayList의 형식은 아래와 같습니다. 

int[] iArr = {10, 20, 30, 40};

ArrayList<Student> expelStudents;

두개를 비교해보면 아랫놈은 생긴것부터 돌아이같이 생겼죠. 그래서 싫어합니다.

어쨌든 위에 약간 순한 녀석을 먼저 설명하자면 

int는 자료의 타입을 말합니다.

[ ] 대괄호는 이것이 Array라는 뜻이죠.

그리고 iArr이라는 변수명을 써줍니다.

그리고 이 iArr에 들어가는 자료들은 10, 20, 30, 40인데 그것들을 중괄호 { }로 묶어줍니다.

 

아래에 ArrayList는 배열, 즉 int[ ]에서 [ ]와 같이 배열임을 나타내주는 것입니다.

 

< >이 괄호는 이름이 뭐죠? 뾰족괄호라고 합시다. (아님)

찾아보니까 화살괄호라고 하네요^^ 세상의 모든 것은 필시 이유가 있어서 이름이 있는 것이니 이름이 있는 것들은 웬만하면 그 이름을 불러줍시다. "우리는 이걸 화살괄호로 부르기로 했어요..." 사회적 약속의 중요성^^

하여튼 화살괄호 안에는 Student라는 이름의 자료 타입을 나타내줍니다.

위 예시에선 int와 같은 것입니다.

 

그 다음에 expelStudents는 변수명으로 iArr과 같은 것입니다.

참 쉽죠?

 

한 줄 설명하는데 하루가 다 갔네요.

다음 줄 나오시죠.

public StudentExpel() {
    expelStudents = new ArrayList<Student>(); //초기화와 생성 (제적당한 모든 학생)
}

StudentExpel이라는 녀석입니다. 이 녀석은 뭘까요?

지난 글을 잘 읽어본 학생이라면 누구나 대답할 수 있겠죠.

네 맞습니다. 생성자죠~ 왜 생성자냐구요? 1. 클래스명과 동일하다 2. 소괄호가 있다 (전이렇게 생각했읍니다 아닐시 죄송)

 

생성자 안에서 초기화를 같이 진행해줍니다.

아까봤던 요상한 ArrayList가 나왔네요. expelStudents라는 변수명에 생성자와 함께 초기화 진행해주었습니다.

제적당한 모든 학생들의 바디엔 소울을 모아놨기 때문에 Students라고 복수로 적은걸 알수 있죠^^

그리고 제적당한 녀석들을 바깥에서도 접근할 수 있도록 public으로 접근제한자를 설정해주었습니다.

 

 

addExpelStudent라는 이름의 메소드를 만들어줍시다.

이놈은 왜 메소드냐구요? 왜냐면 클래스명과 다르잖아요~ 

public void addExpelStudent(String name, int age, int studentNum, String major) {
     expelStudents.add(new Student(name, age, studentNum, major));
     //타입이 Student이므로 new Student로 만들어야함
     System.out.println("제적 학생 정보 등록 완료");
}

 

void 타입으로 해주는 이유는 리턴값이 없기 때문입니다.

addExpelStudent라는 메소드에는 이름, 나이, 학번, 전공을 파라미터값으로 넣어줍니다.

그리고 expelStudents에다가 정보를 어떻게 넣어줄거냐면 그게 바로 중괄호 안에 있는 녀석입니다.

콘솔창이 심심하지 않게 print문을 작성해줍니다.

제적 학생이 생긴다면 이 print문이 출력될 것입니다. 

 

Student student = new Student(name, age, studentNum, major);
expelStudents.add(student);


//expelStudents.add(new Student(name, age, studentNum, major));

위에 작성했던 코드를 풀어쓴 예시입니다.

왠진 모르겠지만 쌤이 굳이 두줄로 만들어서 쓸 필요가 없다고 아래처럼 쓰라고 하셨는데

이러나 저러나 어렵기 때문에 어떻게 쓰든 상관없지 않을까....하지만 한줄이 가능하다면 한줄로 쓰는게 깰끔하겠쬬

맞게 썼나 모르겠지만 잘 돌아가는거 보면 맞을겁니다 (무책임)

 

 

 

저도 잘 모르는데 아는척하며 포스팅하기가 참 힘들군요

모든 애기 개발자들 화이팅... 나중에 추억하며 보기 위해서 작성하는겁니다... 어른 개발자 됐을때 말이죠

어쨌든 3편에서 뵙죠