본문 바로가기

Java/자료구조

2-2 클래스

1. 클래스 다루기 

 

클래스(class)

 

- 여러 형의 요소를 조합하여 만든 자료구조 

 

ex)

//클래스 XYZ
class XYZ {
	int x; 
    long y;
    double z;
}

 

- 클래스 XYZ는 3개의 데이터 요소를 가지고 있음 

- 데이터 요소를 필드(field)라고 함 

- 클래스형 변수를 사용할 때는 먼저 클래스형 변수(실체를 참조하는 변수)를 만들고, 그와 동시에 실체인 클래스 인스턴스를 생성 

 

XYZ a; //XYZ형의 클래스형 변수 a 선언
a = new XYZ(); //XYZ형의 클래스 인스턴스를 생성하고 참조하는 곳을 대입

 

 

- 클래스형 변수 a가 참조하는 클래스 인스턴스 안의 필드는 멤버 접근 연산자 (.)를 사용하는 a.x, a.y, a.z로 접근

 

 

2. 클래스에서 배열 구현하기 

 

 

- 신체검사 데이터용 클래스 배열에서 평균 키와 시력의 분포를 구함 

import java.util.Scanner;

public class PhysicalExamination {

	static final int VMAX = 21; //시력 분포 
	
	static class PhyscData {
		String name;
		int height;
		double vision;
		
		//생성자 
		PhyscData(String name, int height, double vision){
			this.name = name;
			this.height = height;
			this.vision = vision;
		}
	}
	
	//키의 평균값을 구함
	static double aveHeight(PhyscData[] dat) {
		double sum = 0;
		
		for(int i=0; i<dat.length; i++)
			sum+=dat[i].height;
		
		return sum/dat.length;
	}
	
	//시력 분포를 구함
	static void distVision(PhyscData[] dat, int[] dist) {
		int i=0;
		dist[i]=0;
		for(i=0; i<dat.length; i++)
			if(dat[i].vision>=0.0 && dat[i].vision<=VMAX /10.0)
				dist[(int)(dat[i].vision*10)]++;
	}
	
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		PhyscData[] x = {
				new PhyscData("강민하", 162,0.3),
				new PhyscData("김찬우", 173,0.7),
				new PhyscData("박준서", 175,2.0),
				new PhyscData("강민하", 171,1.5),
				new PhyscData("강민하", 168,0.4),
				new PhyscData("강민하", 174,1.2),
				new PhyscData("강민하", 169,0.8),
		};
		
		int[] vdist = new int[VMAX];
		
		System.out.println("★신체검사 리스트★");
		System.out.println("이름   키     시력");
		System.out.println("---------------");
		for(int i=0; i<x.length; i++)
			System.out.printf("%-8s%3d%5.1f\n", x[i].name, x[i].height, x[i].vision);
		
		System.out.printf("\n평균키:%5.1fcm\n",aveHeight(x));
		
		distVision(x, vdist); //시력 분포를 구함
		
		System.out.println("\n시력 분포");
		for(int i=0; i<VMAX; i++)
			System.out.printf("%3.1f~:  %2d명\n",i/10.0, vdist[i]);
	}

}

 

'Java > 자료구조' 카테고리의 다른 글

3-2 선형 검색  (1) 2024.02.01
3-1 검색 알고리즘  (0) 2024.01.31
2-1 배열  (0) 2024.01.28
1-2. 반복  (1) 2024.01.27
1-1 알고리즘이란?  (1) 2024.01.25