[☕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.