기초JAVA 12강 - 객체지향 프로그래밍

Whatever·2021년 9월 24일
0

기초 JAVA

목록 보기
12/26

객체지향 프로그래밍(Object Oriented Programming)

  • 프로그램을 단순히 코드의 연속으로 보는 것이 아니라 객체간의 상호작용으로 보는 것
  • 코드의 재사용성이 높고 유지보수가 용이하다.

객체지향 - 객체를 기준으로 코드를 나누는 것
객체 - 사물, 실제로 존재하는 대상
메서드 - 코드의 모음

SampleClass sc = new SampleClass(); //SampleClass를 메모리에 올리겠다
-> 메모리의 주소가 변수에 들어감

지역변수 : 메서드 안에서만 사용하는 변수
전역변수 : 클래스 전체 영역에서 사용하는 변수(초기화하지 않아도 기본으로 초기화됨)

  • 메서드 : 변수를 가지고 할 일
  • 선언방법 : 리턴타입 메서드명(파라미터){}
  • 파라미터(매개변수) : 실행에 필요한 정보
  • 리턴타입(반환타입) : 실행 후 돌려줘야하는 결과물

클래스의 내용이 메모리에 올라가있는 것이 객체
올리는 과정은 객체생성

method에 파라미터를 설정해놨으면 값을 반드시 입력해야 메서드가 실행됨

return이 하는 일
1. 값을 돌려줌 2. 메서드 종료

Alba와 Boss를 통해 보는 Class

public class Alba {

//메서드 : 알바가 할 일(보스가 알바에게 시킨 일)
//파라미터 : 일을 하기 위해 필요한 것(보스가 알바에게 주는 것)
//리턴타입 : 일을 하고 난 후 돌려주는 것(알바가 보스에게 주는 것)

//주문받기 위해 필요한 것? 없음
//주문받은 후 보스에게 줄 것? 주문서
String[] order(){
	System.out.println("주문 하시겠습니까?");
	return new String[]{"짜장면","탕수육"};
} 

//서빙하기 위해 필요한 것? 음식
//서빙 후 보스에게 줄 것? 없음
void serve(String[] foods){
	System.out.println("맛있게 드세요.");
}

//계산하기 위해 필요한 것? 주문서
//계산 후 보스에게 줄 것? 없음
void pay(String[] order){
	System.out.println("2만원입니다. 안녕히 가세요.");
}

}

public class Boss {

public static void main(String[] args) {
	Alba alba = new Alba();

	String[] order = alba.order();
	System.out.println(Arrays.toString(order));
	
	System.out.println("요리 만드는 중..... 완성!!");
	String[] foods = {"완성된 짜장면", "완성된 탕수육"};
	
	alba.serve(foods);
	
	alba.pay(order);
	
}

}

계산기 클래스를 이용해서 계산하기

public class Calculator {


double plus(double a, double b){
	return a + b;
}
double minus(double a, double b){
	return a - b;
}
double multi(double a, double b){
	return a * b;
}
double divide(double a, double b){
	return a / b;
}
double remainder(double a, double b){
	return a % b;
}
}

//다음을 한줄씩 계산해서 최종 결과값을 출력해주세요.
//1. 123456 + 654321
//2. 1번의 결과값 * 123456
//3. 2번의 결과값 / 123456
//4. 3번의 결과값 - 654321
//5. 4번의 결과값 % 123456

	Calculator c = new Calculator();
	double a = c.plus(123456, 654321);
	a = c.multi(a, 123456);
	a = c.divide(a, 123456);
	a = c.minus(a, 654321);
	a = c.remainder(a, 123456);
	System.out.println(a);    
    
    

과제 : Class에 메서드를 만들어서 Score2 클래스를 실행하시오

public class Score {

public static void main(String[] args) {
	//student Class에서 메소드를 만들어서 main 메소드는 호출하기만 해서 사용

	String[] studentNames = 
		{ "강나영", "강동환", "강태영", "곽지훈", "김서윤"
        , "김영훈", "김진석", "김충신", "박슬기", "박채린"
        , "손영태", "손영흔", "안정연", "이선우", "이수보"
        , "이주홍", "이중호", "임현정", "장유진", "정신애"
        , "조수경", "조하영", "조혜민", "허민정", "박지은"};

Student[] students = new Student[studentNames.length];

for(int i = 0; i < 25; i++){
	Student student= new Student(); //객체생성 25개의 객체가 생성됨
	
	student.korMake();
	student.engMake();
	student.mathMake();
	student.sumMake();
	student.avgMake();
	student.name = studentNames[i];
	student.rank = 1;
	students[i] = student; //클래스 배열에 객체의 주소값이 저장됨
}

//성적처리 프로그램을 완성해주세요.

		//석차
		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 < 25; i++){
			System.out.print(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.println();
		}
		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]);
		}
}

}

Student 클래스

public class Student { // 학생 한 명, 학생이 하는 일(메소드)

int kor;
int eng;
int math;
int sum;
double avg;
String name;
int rank;


void korMake(){
	kor = (int)(Math.random() * 101);
}
void engMake(){
	eng = (int)(Math.random() * 101);
}
void mathMake(){
	math = (int)(Math.random() * 101);
}

int sumMake(){
	sum = kor + eng + math; 
	return sum;
}

double avgMake(){
	avg = Math.round(sum / 3.0 * 100) / 100.0;
	return avg;
}
}

0개의 댓글

관련 채용 정보