[김영한_자바기본][1.클래스와 데이터] (보충) 클래스 도입/객체 사용/ 배열 도입 (p.16-34)
▶ 클래스 도입, 객체 이해하기
https://zoooom-in.tistory.com/43
[김영한_자바기본][1.클래스와 데이터] 클래스 도입, 객체 이해하기(인스턴스) (p.15-23)
Class는 설계도로, 객체(인스턴스)는 설계도를 구현한 설계툴로 보자 정보 참조는 설계툴을 통해 이루어지며, 입력 전까지는 설계툴에는 원본(설계도면) 위치만 뜬다. [코드 읽기 전, 이해 도모를
zoooom-in.tistory.com
1. 클래스 도입
[p.15 / Student 클래스]
public class Student { //필드 == 멤버변수
String name;
int age;
int grade;
}
[p.16 / ClassStart3] Student 클래스(설계도) 를 통해 'Student라는 타입/형'을 만들었다.
public static void main(String[] args) {
Student student1 = new Student();
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;
Student student2 = new Student();
student2.name = "학생2";
student2.age = 16;
student2.grade = 80;
System.out.println("이름 : " + student1.name + ", 나이 : " + student1.age + ", 성적 : " + student1.grade);
System.out.println("이름 : " + student2.name + ", 나이 : " + student2.age + ", 성적 : " + student2.grade);
}
[p.16 / 객체 생성 발췌] new Student(); 라는 객체/인스턴스를 만들었다. 이는 실제 메모리에 만들어진 '실체'(설계툴)
Student student1 = new Student();
- Student 클래스는 설계도로, 어떻게 객체를 만들어야 하는지에 대한 규칙을 정의한다.
- new Student()는 설계도(클래스)를 기반으로 메모리에 객체를 생성하는 행위로, 설계툴로 생각할 수 있다.
즉 설계도에 따라 메모리에 새로운 객체가 생성되고, 이 객체에는 설계도에서 정의한 특성과 동작이 포함된다.
"설계툴(객체 생성)로 설계도(클래스)에 직접 접근할 수 있다."
이는 설계툴을 통해 설계도에 있는 객체를 만들고 메모리에 할당한다고 보면 된다.
이러한 설계툴(객체)을 생성하면 설계도의 위치(참조값)을 반환한다. 따라서 이 위치(참조값)을 변수에 보관한다.
그래서 실제 작업은 위치(참조값)를 기반으로 이루어진다고 본다.
변수에 보관하는 이유는 설계툴로 설계도의 위치를 찾아서 작업을 해야하기 때문이다.
2. 객체 사용 (대입/읽기)
[p.20 / 객체 값 대입] 변수를 통해 설계툴의 기능 (`.`)을 사용하여 설계도를 호출하거나 데이터에 접근할 수 있다.
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;
- 변수와 그 변수가 참조하는 객체의 메서드나 속성에 접근한다. (설계도에 접근)
- 변수에 있는 참조값(설계도 위치)을 통해 실제 객체(설계툴-설계도)에 접근
[p.20 / 객체 값 사용 & 읽기] 변수를 통해 설계툴의 기능 (`.`) 을 사용하여 설계도 데이터에 접근/출력할 수 있다.
System.out.println("이름 : " + student1.name + ", 나이 : " + student1.age + ", 성적 : " + student1.grade);
- 변수와 그 변수가 참조하는 객체의 메서드나 속성에 접근한다. (설계도에 담은 내용 출력)
ex) 설계툴로 설계도 위치에 접근 그 중에서 name에 접근 (name의 세부정보)
변수를 통해 설계툴의 기능 (`.`)을 사용하여 설계도를 호출, 데이터에 접근/출력할 수 있다.
3. 배열 도입
[p.24 / ClassStart4] 배열 생성 이유 : 여러 학생을 효율적으로 관리하고 처리하기 위한 방법
public static void main(String[] args) {
Student[] students = new Student[2];
Student student1 = new Student(); // new Student() : 인스턴스/객체 생성 - 설계툴
student1.name = "학생1";
student1.age = 15;
student1.grade = 90;
students[0] = student1; //위치만 복사됨
Student student2 = new Student();
student2.name = "학생2";
student2.age = 16;
student2.grade = 80;
students[1] = student2;
//데이터 출력 (설계도 위치 담은 변수와 설계툴 연동 방법)
for (Student student : students) {
System.out.println("이름 : " + student.name + ", 나이 : " + student.age + ", 성적 : " + student.grade);
}
- 같은 패턴을 묶는다.
[p.24 / 배열 생성] Student 변수를 보관할 수 있는 배열 생성 --> Student[]
Student[] students = new Student[2];
- `Student[]` 배열을 생성하는 것은 여러 학생을 나타내는 `Student` 객체를 여러 개 저장하고 관리하기 위함
- 배열은 같은 타입의 여러 객체를 순서대로 저장할 수 있다.
1. 다수의 학생을 관리 : 여러 학생 객체를 하나의 배열에 저장하여 일괄적으로 관리할 수 있다.
ex) 학생 목록을 저장하고 관리해야 할 때, 배열을 사용하면 효과적으로 학생 데이터를 저장하고 검색할 수 있다.
2. 순회 및 처리 : 루프를 통해 배열의 각 요소에 접근하여 작업을 수행할 수 있다.
ex) 학생 목록을 출력하거나 특정 기준으로 정렬하는 등의 작업이 가능하다.
배열을 생성하는 이유는 관련된 데이터를 논리적으로 그룹화하고 효율적으로 관리하기 위함이다.