Post

[☕JAVA] 클래스와 데이터

[☕JAVA] 클래스와 데이터

자바의 핵심 개념인 클래스가 왜 필요한지, 그리고 클래스를 통해 어떻게 데이터를 효과적으로 관리할 수 있는지 단계별로 알아보자


자바 세상은 클래스(Class)객체(Object)로 이루어져 있다. 그만큼 클래스와 객체라는 개념은 정말 중요함!
이 두 가지를 한번에 이해하기 쉽지 않다. 예시를 보며 천천히 개념을 익혀먹어 보자.

클래스는 왜 필요할까?🤔

프로그래밍을 하다 보면 여러 개의 연관된 데이터를 함께 다뤄야 하는 경우가 많다. 예를 들어, 여러 학생의 정보를 관리하는 프로그램을 만든다고 가정해보자.

  • 학생 정보: 이름, 나이, 성적

1. 변수만 사용

가장 간단한 방법은 각 데이터를 개별 변수에 저장하는 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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);
    }
}
  • ❌문제점: 학생이 추가될 때마다 이름, 나이, 성적 변수를 계속해서 새로 선언해야한다. 관리할 학생이 많아질수록 코드는 길고 복잡해진다.

2. 배열 사용하기 이런 반복 작업을 줄이기 위해 배열을 사용해보자.

1
2
3
4
5
6
7
8
9
10
11
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]);
        }
    }
}
  • ❌문제점: 변수만 사용할 때보다는 간결해졌지만, 데이터를 수정하거나 삭제할 때 실수가 발생할 가능성 높다. 한 배열에서만 데이터를 삭제하면 데이터의 정합성이 깨지게 되기 때문!

클래스의 도입: 데이터를 하나로 묶기 💡

위와 같은 데이터 관리의 한계를 극복하기 위해 클래스(Class)를 사용한다. 클래스는 연관된 데이터들을 하나의 의미 있는 단위로 묶어주는
설계도와 같다.


1. Student 클래스 정의

먼저 학생의 속성인 name, age, grade를 담을 수 있는 Student 클래스를 설계한다.

  • 클래스 안에 선언된 변수들을 멤버 변수(member variable) 또는 필드(field)라고 부른다.
1
2
3
4
5
public class Student {
    String name;
    int age;
    int grade;
}

2. 클래스를 사용한 객체 생성

이제 Student 설계도를 바탕으로 하는 실제 학생 데이터, 즉 객체(Object)를 만든다.

  • new Student(): new는 클래스 설계도를 기반으로 메모리에 실제 객체를 생성하라는 명령어
  • student1, student2: 이 변수들은 생성된 객체가 메모리의 어느 위치에 있는지 가리키는 참조값(reference)을 저장
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class ClassStart3 {
    public static void main(String[] args) {
        // 1. 객체 생성
        Student student1 = new Student(); 
        // 2. 객체의 필드에 값 대입
        student1.name = "학생1";
        student1.age = 15;
        student1.grade = 90;

        Student student2 = new Student();
        student2.name = "학생2";
        student2.age = 16;
        student2.grade = 80;

        // 3. 객체의 필드 값 읽기
        System.out.println("이름:" + student1.name + " 나이:" + student1.age + " 성적:" + student1.grade);
        System.out.println("이름:" + student2.name + " 나이:" + student2.age + " 성적:" + student2.grade);
    }
}

클래스, 객체, 인스턴스: 용어 정리 📚

  • 클래스(Class): 객체를 만들기 위한 설계도 또는
    • 예: 붕어빵 틀, 자동차 설계도
  • 객체(Object): 클래스에 정의된 속성(변수)과 기능(메서드)을 가진 실체
    • 소프트웨어 세계에서 살아 움직이는 존재라고 할 수 있음!
  • 인스턴스(Instance): 객체와 혼용해서 쓰긴하지만 정확히는 특정 클래스로부터 생성된 객체임을 강조할 때 사용하는 용어
    • student1객체“라고도 할 수 있지만, “student1은 Student 클래스의 인스턴스“라고 함
This post is licensed under CC BY 4.0 by the author.