java 여행기 - class 는 왜 필요함 ? ( 클래스가 필요한 이유 )

0

java

목록 보기
3/3
post-thumbnail
post-custom-banner

원래 나는 자바스크립트로 개발을 시작했기에 처음 자바를 접할때 많이 복잡하다고 느꼇다.

사실 강의를 듣기전에 class ? 뭐임 ? 그냥 있으니깐 쓰지 뭐.. 이런 느낌으로 사용하였다 ..

그러다 보니 솔직히 어쩔때 써야할지도 모르겠고.. 왜 써야할지도 모르겠어서 많이 멘탈도 터지게되었다.

하지만 이번에 김영한 선생님의 강의가 출시되면서 이번 기회에 좀 제대로 개념을 가지고 가볼까 싶어서 강의를 들으며 정리해 보았다 .

문제: 학생 정보 출력 프로그램 만들기

당신은 두 명의 학생 정보를 출력하는 프로그램을 작성해야 한다.
각 학생은 이름, 나이, 성적을 가지고 있다.

요구 사항:
1. 첫 번째 학생의 이름은 "학생1", 나이는 15, 성적은 90입니다.
2. 두 번째 학생의 이름은 "학생2", 나이는 16, 성적은 80입니다.
3. 각 학생의 정보를 다음과 같은 형식으로 출력해야 합니다: "이름: [이름] 나이: [나이] 성적: [성적]"
4. 변수를 사용해서 학생 정보를 저장하고 변수를 사용해서 학생 정보를 출력해야 합니다.

이런 요구사항이 있다고 해보자

음 .. 첫 번째 두번째 .. 어쩌구 저쩌구 .. 딸깍 딸깍 ...


package class1;

public class ClassStart1 {
    public static void main(String[] args) {
        String student1Name = "학생1";
        int student1Age = 15;
        int student1Grade = 90;
        String student2Name = "학생2";
        int student2Age = 16;
        int student2Grade = 80;
        System.out.println("이름:" + student1Name + " 나이:" + student1Age + " 성
                적:" + student1Grade);
        System.out.println("이름:" + student2Name + " 나이:" + student2Age + " 성
                적:" + student2Grade);
    }
}

음 변수를 사용해서 만들어 보았다 ..

근데 갑자기 학생이 늘어나면 어떻게 하지 ??

오 배열을 사용해볼까 ??

딸깍 딸깍 ..

package class1;

public class ClassStart2 {
    public static void main(String[] args) {
        String[] studentNames = {"학생1", "학생2"};
        int[] studentAges = {15, 16};
        int[] studentGrades = {90, 80};
        for (int i = 0; i < studentNames.length; i++) {
            System.out.println("이름:" + studentNames[i] + " 나이:" +
                    studentAges[i] + " 성적:" + studentGrades[i]);
        }
    }
}

학생 추가 전

String[] studentNames = {"학생1", "학생2"};
int[] studentAges = {15, 16};
int[] studentGrades = {90, 80};

학생 추가 후

String[] studentNames = {"학생1", "학생2", "학생3", "학생4", "학생5"};
int[] studentAges = {15, 16, 17, 10, 16};
int[] studentGrades = {90, 80, 100, 80, 50};

그래서 뭐가 편해진거임 ..?

만약에 학생2가 도중에 큰 결심 을 하여 자퇴를 했다고 생각해보도록 하자

그 학생의 데이터를 제거하려면 각각의 배열마다 그 학생의 요소를 정확하게 찾아서 제거 해주어야 한다.

큰 결심 후

String[] studentNames = {"학생1", "학생3", "학생4", "학생5"};
int[] studentAges = {15, 17, 10, 16};
int[] studentGrades = {90, 100, 80, 50};

거기다가 한 학생의 데이터의 배열이 3개로 나누어져 있기에 배열을 각각 변경해야 한다.
그리고 한 학생의 데이터를 관리하기 위해 3개의 배열의 인덱스 순서를 항상 정확하게 맞추어야 한다...

이렇게 하면 특정 학생 (ex : 학생2 )의 데이터를 변경할 때 실수할 가능성이 매우 높다.

이 코드는 컴퓨터가 볼 때는 아무 문제가 없지만 사람이 관리하기에는 좋은 코드가 아니다.

정리

지금처럼 이름 , 나이 , 성적 을 각각 따로 나누어서 관리하는 것은 사람이 관리하기 좋은 방식이 아님.

사람이 관리하기 좋은 방식은 학생이라는 개념을 하나로 묶는것이다.

그리고 각각의 학생 별로 본인의 이름 , 나이 ,성적을 관리하는것인 것이다..!!!

profile
배운것을 끄적끄적 올리는 개발 블로그
post-custom-banner

0개의 댓글