Java Object Class 도입 배경
자바 라이브러리 대부분 클래스와 객체로 되어있다. 자바를 잘 활용하기 위해서는 클래스와 객체에 대한 이해는 필수불가결이다.
클래스로 작성된 Java 코드
학생 두 명의 정보를 출력하는 프로그램.
각 학생은 이름, 나이, 성적을 갖고 있다.
요구사항
- 첫 번째 학생 이름을 "홍길동", 나이는 18, 성적 90
- 두 번째 학생 이름을 "김철수", 나이는 15, 성적 85
- 변수로 학생 정보를 입력하고 학생 정보를 출력한다.
출력 포맷
이름: 홍길동, 나이: 18, 성적: 90
이름: 김철수, 나이: 15, 성적: 85
Java 코드1
public class Logical1 {
public static void main(String[] args) {
String studentName1 = "홍길동";
int studentAge1 = 18;
int studentGrade1 = 90;
String studentName2 = "김철수";
int studentAge2 = 15;
int studentGrade2 = 85;
System.out.println("이름: " + studentName1 + ", 나이: " + studentAge1 + ", 성적: "+ studentGrade1);
System.out.println("이름: " + studentName2 + ", 나이: " + studentAge2 + ", 성적: "+ studentGrade2);
}
}
Java 코드 1에서 다음과 같이 학생 2명의 정보를 출력하는 코드가 있다.
만약 학생 3명으로 늘어난다면 다음과 같은 코드를 추가해주어야 할것이다.
String studentName3 = "고영희";
int studentAge3 = 15;
int studentGrade3 = 88;
System.out.println("이름: " + studentName3 + ", 나이: " + studentAge3 + ", 성적: "+ studentGrade3);
- 신규 학생이 필요할 때 반복문 for, while 문을 사용하면 코드를 건들이지 않아도 되지만 변수로 정한 신규 학생 변수 {studentAge} 은 배열로 구성해야한다.
이러한 클래스를 이용하면 학생 수가 많아도 데이터만 입력해주고 학생 수 만큼 자바가 출력을 해준다.
Java 코드2 배열로 사용한 학생 정보 출력
public class Logical1 {
public static void main(String[] args) {
String[] studentName = { "홍길동", "김철수" };
int[] studentAge = {18, 15};
int[] studentGrade = {90, 85};
for (int i=0; i < studentName.length; i++) {
System.out.println("이름: " + studentName[i] + ", 나이: " + studentAge[i] + ", 성적: " + studentGrade[i]);
}
}
}
- 코드를 변경하여 코드 수를 최소화 하였다.
신규 학생 추가하기
신규 학생이 추가되더라도 코드의 변경 없이 데이터만 입력해주어도 된다.
String[] studentName = { "홍길동", "김철수", "고영희" };
int[] studentAge = {18, 15, 15};
int[] studentGrade = {90, 85, 88};
배열 사용 한계
배열 부분을 데이터만 입력해도 추가 할 수 있지만 studentName, studentAge, studentGrade 배열이 불편할 수 있다. 학생을 제거할 때 나이, 성적도 배열 인덱스가 동일하게 맞춰주어야 한다.
- 한 학생의 데이터를 3개의 배열로 구분하고 있음.
- 학생 데이터를 신규, 삭제 해당 학생의 이름, 나이, 학생을 같이 추가하거나 제거해야 한다.
- 한 학생을 신규 삭제 시 실수를 유발하기가 쉽다.
이러한 배열 한계 때문에 새로운 구조화가 필요하게 되었고, 자바에서는 Class 를 도입하게 되었다.