Java

[IT국비지원교육_코딩_비전공자] 객체지향 / 기본형의 매개변수와 참조형 매개변수/ 오버라이딩/생성자

coolcode 2022. 1. 18. 14:01
package a220118;

public class ReferenceParamEX1 {
	public static void main(String[] args) {  // 배열선언
		int[] arr = {3,2,1,6,5,4};            //메서드 3번 호출 
		printArr(arr);
		sortArr(arr);
		printArr(arr);
		System.out.println("sum=" + sumArr(arr));
	}

	static void printArr(int[]arr) {   //배열을 인자로 받아서 배열
		System.out.print("[");
		for(int i : arr) {
			System.out.print(i+",");
	}
		System.out.println("]");
	}
	
	static int sumArr(int[]arr) {
		int sum = 0;
		for(int i : arr) {
			sum += i;
	}
		
		return sum;
	}
	
	static void sortArr(int[]arr) {
		for(int i = 0 ; i < arr.length - 1; i++) {
			for(int j = 0 ; j < arr.length -1 -i ; j++) {
				if(arr[j] > arr[j+1]) {
					int tmp = arr[j];
					arr[j] = arr[j+1];
					arr[j+1] = tmp;
				}
				
			}
		}
	}
}

package student;


// VO (Value Object)
public class Student {
	// 학번, 이름, 국어, 영어, 수학
	String no; 
	String name;
	int kor;
	int eng;
	int mat;
	
	static String schoolName= "휴먼초등학교";
	//여기까지 field 끝
	//총점(총점의 대상=> kor, eng, mat/ 0~100 사이) 평균 
	//static 키워드가 없으면 전부 인스턴스 메서드
	//인스턴스 메서드내에서는 인스턴스 메서드를 제한없이 쓸 수 있음
	int sum() {  
		return kor + eng + mat;  //인스턴스 변수간의 상호 호출이 가능함
	}
	
	double avg() {
		return (int)(sum() / 3d * 100) / 100d; }
		//return sum() / 3d;  // 3의 double type 캐스팅으로 실수간의 연산이 가능해짐
		public static void main(String[] args) {	
		Student student = new Student();
		student.no = "220001";
		student.name = "홍길동";
		student.kor = 90;
		student.eng = 80;
		student.mat = 80;
		
		System.out.println(student.sum());
		System.out.println(student.avg());
		// 인스턴스 메서드 호출 시점에 인스턴스 메서드를 사용할 수 있음
	
	
	}

}
package student;

import java.util.Scanner;

public class StudentEx {

	public static void main(String[] args) {
		
		// 1. 목록조회 2. 학생등록 3. 학생정보수정 4. 학생삭제 5. 종료
		
	Scanner scanner = new Scanner(System.in);
	for(boolean b = true ; b;) {	
		System.out.println("1. 목록조회 2. 학생등록 3. 학생정보수정 4. 학생삭제 5. 종료");
		int input = Integer.parseInt(scanner.nextLine());
		
		switch (input) {
		case 1:
			System.out.println("목록 조회입니다");
			break;

		case 2:
			System.out.println("학생 등록입니다");
			break;	

		case 3:
			System.out.println("학생 정보 수정입니다");
			break;	
		
		case 4:
			System.out.println("학생 삭제입니다");
			break;	
		
		case 5:
			System.out.println("종료합니다");
			break;	
			
			
		default:
			System.out.println("올바른 번호를 입력하세요");
			break;
			}
		}
		scanner.close();
	}
}

//mvc 패턴 > 기능에 관련된 것들은 별도의 클래스(서비스 클래스)로 관리함
package a220118;

public class FactorialTest {

	public static void main(String[] args) {
		int result = factorial(4);
		System.out.println(result);
		
		
		}	

		static int factorial2(int n) {
		int result = 1;
		for(int i = 1 ; i <= n ; i++) {
			result *= i;
		}
		return result;
		}
		
		static int factorial(int n) {
		int result = 0;
		
		if(n==1) {
			result = 1;
		}
		else {
			result = n * factorial(n-1);
		}
		return result;
		}
	
}

 

생성자
package a220118;

public class Car {
	String color;
	String gearType;
	int door;
	
	Car() {}
	Car(String c, String g, int d) {
		color = c;
		gearType = g;
		door = d;
	}
	
}
package a220118;

public class CarTest {

	public static void main(String[] args) {
		Car c1 = new Car();   //인스턴스 생성
		c1.color = "white";   //값 지정
		c1.gearType = "auto";
		c1.door = 4;

		System.out.printf(
				"c1의 color : %s, gearType : %s, door : %s%n"
				,c1.color, c1.gearType,c1.door);
		
		Car c2 = new Car("black", "manual", 6);
		//인스턴스 생성과 동시에 값을 지정(위의 방법보다 높은 편의성)
		System.out.printf(
				"c2의 color : %s, gearType : %s, door : %s%n"
				,c2.color, c2.gearType,c2.door);
			
		// Car c1, c2

		// this : 미래에 생성될 객체의 주소값
	}
}
package a220118;

public class WhatIsThis {

	public static void main(String[] args) {
		WhatIsThis isThis = new WhatIsThis();
		System.out.println(isThis);
		isThis.printWhatIsThis();
		System.out.println(isThis.getWhatIsThis());
	}

	
	WhatIsThis getWhatIsThis() {
		return this;  //this > 메서드 내에서 후에 인스턴스 주소값이 될 것을 지칭
	}                 //클래스 변수,메서드 내에서는 this를 지칭할 수 없음
	
	void printWhatIsThis() {  //void는 별도 return없음
		System.out.println(this);
	}
}