객체지향 - class

조수경·2021년 9월 23일
0

JAVA

목록 보기
9/26

사용자 정의 데이터 타입 : class

	- 데이터의 최종 진화 형태이다. 
    (기본(int:값 하나를 저장)->배열(같은 타입일 경우 하나로 표현)->클래스(서로 다른 타입의 데이터를 묶어서 사용+기능 구성))
	- 서로 다른 타입의 데이터를 묶어서 사용하는 것이다.
	- 변수(데이터)와 메서드(기능)로 구성할 수 있다.
	- 클래스도 결국 익숙하지 않지만 데이터임
	
	**기본형 타입** - 필요한 만큼 만들었어야 했음(많은 변수 필요)**
	int kor;
	int eng;
	int math;
	double avg;
	
	**배열 **- 타입이 같으면 묶음
	int[] scores;
	int sum2;
	double avg2;
	
	**클래스 사용할때**
	  Student student = new Student(); //객체 생성(인스턴스화)
	  클래스를 초기화 하는 방법 
	  student타입의 변수 선언이며 참조형 타입임 -> 주소 저장
	  Student타입의 ()는 메서드를 호출한 것
	  
          student(변수) = 100번지(주소)
	  
	  100번지
	  Student{ //객체(인스턴스) - 메모리에 저장되어있는 값
	  kor, eng, math, sum, avg, name
	  }
	  
	
	  
	student.kor = 80; //kor의 변수를 선언한 것
	student.eng = 90;
	student.math = 70;
	student.sum = student.kor + student.eng + student.math;
	student.avg = student.sum / 3.0;
	student.name = "홍길동";
	
	System.out.println(student.name + " 의 합계 : " + student.sum + " /평균 " + student.avg);



        }

    }
   **클래스 만들기 **(학생과 관련되어 학생 클래스를 만듬)
 class Student{
    int kor;
    int eng;
    int math;
    int sum;
    double avg;
    String name;
}

성적처리 프로그램을 완성하시오

	String[] studentNames ={"강나영", "강동환", "강태영", "곽지훈", "김서윤", "김영훈", "김진석", "김충신", "박슬기", 
	           "박채린", "손영태", "손영흔", "안정연", "이선우", "이수보", "이주홍", "이중호", "임현정",
	           "장유진", "정신애", "조수경", "조하영", "조혜민", "허민정", "박지은"};
	
	Student[] students = new Student[studentNames.length]; //students를 저장할 배열을 만듬 
	
        for(int i = 0; i < 25; i++){
	Student student = new Student(); //25번 객체 생성 = 학생 25명이 만들어짐
	
	student.kor = (int)(Math.random()*101);
	student.eng = (int)(Math.random()*101);
	student.math = (int)(Math.random()*101);
	student.name = studentNames[i];
	student.sum = student.kor + student.eng + student.math;
	student.rank = 1;
	
	
	students[i] = student; //student은 주소값이며 이것이 students[i]클래스 배열에 들어감
	
  }
**합계/평균**
for(int i = 0; i <students.length; i++){
	students[i].sum = students[i].kor + students[i].eng+ students[i].math;
	students[i].avg = Math.round(students[i].sum /3.0 * 10) / 10.0;
}

**석차**
for(int i = 0; i <students.length; i++){
	for(int j = 0; j <students.length; j++){
		if(students[i].sum < students[j].sum){
			students[i].rank++;
		}
	}
}

**석차순 정렬**
for(int i = 0; i <students.length-1; i++){
	int min = i;
	for(int j = i + 1; j < students.length; j++){
		if(students[j].rank < students[min].rank){
			min = j;
		}
	}
	Student temp = students[i];
	students[i] = students[min];
	students[min] = temp;	
}

**과목별 합계, 평균**
int[] sums = new int[3];
for(int i = 0; i < students.length; i++){
	sums[0] += students[i].kor;
	sums[1] += students[i].eng;
	sums[2] += students[i].math;
}

double[] avgs = new double[3];
for(int i = 0; i < avgs.length; i++){
	avgs[i] = Math.round((double)sums[i] / students.length*100)/100.0;
}

**출력**
System.out.println("이름\t국어\t영어\t수학\t합계\t평균\t석차");
for(int i = 0; i < students.length; i++){
	System.out.println(students[i].name + "\t"
              +students[i].kor +  "\t" 
			  + students[i].eng + "\t" 
              + students[i].math+  "\t" 
		  	  +students[i].sum+  "\t"
              +students[i].avg+ "\t" 
			  +students[i].rank);
	
	}
System.out.print("과목합계");
for(int i = 0; i < sums.length; i++){
	System.out.print("\t"+sums[i]);
}
System.out.print("\n과목평균");
for(int i = 0; i < avgs.length; i++){
	System.out.print("\t"+avgs[i]);

  }
profile
신입 개발자 입니다!!!

0개의 댓글