본문 바로가기
Kosta DevOps 과정 280기/Java

Class-1

by 롯슈83 2024. 5. 16.

정의와 특징

  • 형태 : class 새로운자료형이름{세트를 이루는 구성요소(들)}
  • 사용자 정의 자료형으로 하나의 셋트를 만들고 싶을 때 사용한다.
  • 사용: new를 이용해서 생성해야 사용할 수 있다. 그래야 힙에 메모리가 할당된다.
  • 참조변수: 객체는 힙에 셋트로 잡힌다. 이 객체를 참조하는 변수를 참조 변수라고 한다.
  • 멤버변수: 객체를 이루고 있는 변수이다. 이 변수에 접근하기 위해서는 객체 참조변수를 이용해야 한다. 
class Student{
	String name;
    int kor;
    int eng;
    int math;
    int tot;
    double avg;
}

//둘 다 변수를 선언하는 문장이다.
int year;
Student data;

year = 2024;
data = new Student();

필요성

  • 클래스가 없을 경우, 순서를 바꿀 때 이름, 국어, 영어, 수학, 총점, 평균을 각각 바꿔줘야 한다. 이것은 상당히 번거로운 일이다. 아래와 같이 "기본자료형"만으로 프로그래밍 할 때 "불가능"한 것은 아니지만, 정렬하고자 할 때 일일이 바꿔줘야하는 것은 귀찮고 시간이 오래걸리고 번거롭다. 이럴 때 한 명의 학생의 정보(이름, 국어, 영어, 수학, 총점, 평균)을 하나의 세트로 하는 "새로운 자료형"을 만들면 보다 더 간결하게 표현할 수 있다.

 

클래스 없이 관련 정보들 다루기

package day0516;

import java.util.Scanner;

public class D05StudentSortTest {
//5명학생의 이름, 국어, 영어, 수학을 입력받아 총점, 평균을 구하고,
//성적순으로 정렬하여 입력할 떄
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		String []name = new String[5];
		int []kor = new int[5];
		int []eng = new int[5];
		int []math = new int[5];
		int []tot = new int[5];
		double []avg = new double[5];
		
		for(int i = 0; i< name.length; i++) {
			System.out.printf("%d번째 학생의 이름==>", i+1);
			name[i] = sc.next();
			System.out.printf("%d번째 학생의 국어점수==>", i+1);
			kor[i] = sc.nextInt();
			System.out.printf("%d번째 학생의 영어점수==>", i+1);
			eng[i] = sc.nextInt();
			System.out.printf("%d번째 학생의 수학점수==>", i+1);
			math[i] = sc.nextInt();			
			tot[i] = kor[i] + eng[i] + math[i];
			avg[i] = tot[i] / 3.0;
		}
		
		//성적이 높은 순으로 정렬하기
		for(int i=0;i<tot.length;i++) {
			for(int j = i+1;j<tot.length;j++) {
				if(tot[j] > tot[i]) {
					
					String tempString = name[i];
					name[i] = name[j];
					name[j] = tempString;
					
					int tempInt = kor[i];
					kor[i] = kor[j];
					kor[j] = tempInt;
					
					tempInt = eng[i];
					eng[i] = eng[j];
					eng[j] = tempInt;
					
					tempInt = math[i];
					math[i] = math[j];
					math[j] = tempInt;
					
					tempInt = tot[i];
					tot[i] = tot[j];
					tot[j] = tempInt;
					
					double tempDouble = avg[i];
					avg[i] = avg[j];
					avg[j] = tempDouble;
				}
			}
		}
		
		System.out.println("***성적 처리 결과 ***");
		System.out.println("이름\t국어\t영어\t수학\t총점\t평균");
		System.out.println("----------------------------");
		for(int i = 0; i<name.length; i++) {
			System.out.printf("%s\t%d\t%d\t%d\t%d\t%.2f\n",name[i], kor[i], eng[i], math[i], tot[i], avg[i]);
		}
	}

}

 

클래스로 관련 정보들 다루기

package com.kosta.exam03;

import java.util.Scanner;

class Student{
	String name;
	int kor;
	int eng;
	int math;
	int tot;
	double avg;
}
public class D09StudentClassTestArray {
	public static void main(String[] args) {
		int year = 2024;
		Scanner sc = new Scanner(System.in);
		
		Student []data;
		data = new Student[5];
		//Student 배열을 만든것이지 Student 객체를 만든 것은 아님.
		
		for(int i = 0; i < data.length;i++) {
			//Student 객체를 생성
			data[i] = new Student();			
			System.out.printf("%d번째 학생의이름==>", i+1);
			data[i].name = sc.next();
			System.out.print("국어성적==>");
			data[i].kor = sc.nextInt();
			System.out.print("영어성적==>");
			data[i].eng = sc.nextInt();
			System.out.print("수학성적==>");
			data[i].math = sc.nextInt();		
			data[i].tot = data[i].kor + data[i].eng + data[i].math;
			data[i].avg = data[i].tot / 3.0;
		}
		for(int i= 0;i<data.length;i++) {
			for(int j = i+1;j<data.length;j++) {
				if(data[j].tot > data[i].tot) {
					Student temp = data[i];
					data[i] = data[j];
					data[j] = temp;
				}
			}
		}
		System.out.println(year+"년도 성적 처리 결과");
		System.out.printf("이름\t국어\t영어\t수학\t총점\t평균\n");
		System.out.println("------------------------------------------------");
		for(int i= 0;i<data.length;i++) {
			System.out.printf("%s\t%d\t%d\t%d\t%d\t%.2f\n",data[i].name, data[i].kor, data[i].eng, data[i].math, data[i].tot, data[i].avg);
		}
			//System.out.println(data[i].name+","+data[i].kor+","+data[i].eng+","+data[i].math+","+data[i].tot+","+data[i].avg);
		
	}
}

 

 

'Kosta DevOps 과정 280기 > Java' 카테고리의 다른 글

Class-3  (0) 2024.05.17
Class-2  (0) 2024.05.16
메소드 호출  (0) 2024.05.16
정렬하기  (0) 2024.05.16
다차원배열  (0) 2024.05.14