HRD_훈련/JAVA

[JAVA] 클래스 실습 (12일차)

리드미. 2023. 5. 30. 19:13
728x90
반응형

<오늘의 학습 - 클래스를 만들어 접근해 보자>

1. 원의 반지름 구하기

2. 계산기 만들기

3. 사각형 면적 구하기

4. 필드의 사용

5. 객체의 생성자와 오버로딩 이용

6. 객체 배열

7. 심화 문제 풀이

 

 

1.  원의 반지름을 구하는 클래스 만들기

Circle 코드

public class Circle {
	int radius; // 원의 반지름 필드
	String name; // 원의 이름 필드

	//생성자
	public Circle() {}

	// 원의 면적을 계산하는 메소드
	public double getArea() {
		return 3.14 * radius * radius;
	}
}

 

▶ main 코드

		Circle pizza = new Circle(); // Circle 객체 pizza 생성
		
		pizza.radius = 10; //피자의 반지름을 10으로 설정
		pizza.name = "자바피자"; //피자의 이름
		
		double area = pizza.getArea(); //피자의 면적 리턴
		System.out.println(pizza.name + "의 면적:" + area);
		
		Circle donut = new Circle(); //Circle 객체 donut 생성
		donut.radius = 2; //도넛의 반지름을 2로 설정
		donut.name = "자바도넛"; //도넛의 이름
		
		area = donut.getArea(); //도넛의 면적 리턴
		System.out.println(donut.name + "의 면적:" + area);

 

▶ 출력 결과

자바피자의 면적:314.0
자바도넛의 면적:12.56

 

 

 

2.  계산기 만들기

▶ Calculator 코드

public class Calculator {
	
	//최솟값
	int min(int a, int b){
		return (a>b)?b:a;
	}

	int min(int a, int b, int c){
		int min = (a>b)?b:a;
		return (min>c)?c:min;
		//return (min(a,b)>=c)? c : min(a,b);
	}

	//절댓값
	int abs(int num){
		return (num < 0)? -num : num;
	}
	
	//배열의 평균값
	double avg(int[] arr){
		int sum=0;
		for(int num : arr){
			sum += num;
		}

		return (double)sum/arr.length;
	}
	
	//배열의 최댓값
	int max(int[] arr){
		 for(int num : arr){
		 	max = Math.max(max,num);
		 }
		return max;
	}
	
	
	//값이 바뀌는지 확인
	void test1(int a){
		a=a+1;
	}

	void test2(int[] arr){
		arr[0]=100;
	}
}

 

 

▶ 최솟값 출력

		Calculator clac =  new Calculator();
        
		//최솟값
		int min = clac.min(8, 10);
		System.out.println("8,10 중 최솟값:"+min);

		min = clac.min(8, 5, 6);
		System.out.println("8,5,6 중 최솟값:"+min);
8,10 중 최솟값:8
8,5,6 중 최솟값:5

 

절댓값 출력

		int num = clac.abs(-2);
		System.out.println("-2의 절댓값:"+num);
-2의 절댓값:2

 

 배열 출력

		int arr[]={3,5,2,1,8};
		int max = clac.max(arr);
		System.out.println("배열의 최댓값:"+max);

		double avg=clac.avg(arr);
		System.out.println("배열의 평균값:"+avg);
배열의 최댓값:8
배열의 평균값:3.8

 

 클래스에서 변수와 배열의 값을 변경하고 반환하지 않았을 때의 값 비교

		int a=1;
        
		System.out.println("test1 호출 전 변수 값:"+a);
		clac.test1(a);
		System.out.println("test1 호출 후 변수 값:"+a); //값 안 바뀜
		System.out.println(); //줄 바꿈

		System.out.println("test2 호출 전 배열 값:"+arr[0]);
		clac.test2(arr);
		System.out.println("test2 호출 전 배열 값:"+arr[0]); //값이 100으로 바뀜
test1 호출 전 변수 값:1
test1 호출 후 변수 값:1

test2 호출 전 배열 값:3
test2 호출 전 배열 값:100
  • 변수는 호출만 했을 때는 값이 바뀌지 않는다. 하지만 배열은 호출하여 값을 바꾸면 그대로 값이 바뀐다.

 

 

 

3.  사각형 면적 구하기

 Rectangle 코드

public class Rectangle {
	int width; //너비
	int height; //높이
	
	//접근자. 너비와 높이를 이용해 면적을 리턴
	public int getArea(){
		return width*height;
	}
}

 

▶ main 코드

		Rectangle rectangle = new Rectangle();
		Scanner scan = new Scanner(System.in);
		
		//사각형의 너비와 높이를 직접 입력
		System.out.println("<사각형의 넓이 구하기>");
		System.out.print("너비의 길이를 입력하세요:");
		rectangle.width = scan.nextInt();
		
		System.out.print("높이의 길이를 입력하세요:");
		rectangle.height = scan.nextInt();
		System.out.println(); //줄바꿈
		
		//사각형의 면적을 계산하여 출력
		System.out.printf("사각형의 면적:%d\n", rectangle.getArea());
		
		scan.close();

 

▶ 출력 결과

<사각형의 넓이 구하기>
너비의 길이를 입력하세요:5
높이의 길이를 입력하세요:10

사각형의 면적:50

 

 

 

4.  필드의 사용

▶ main 코드

	int iNum1, iNum2;
	double dNum;

	//합을 구하는 메소드
	double sum(){
		return iNum1+iNum2+dNum;
	}
	
	public static void main(String[] args) {
		Practice threeSum = new Practice();
		Scanner scan = new Scanner(System.in);
		
		//숫자 입력
		System.out.println("<세 개의 숫자의 합 구하기>");
		System.out.print("첫 번째 숫자를 입력하세요(정수):");
		threeSum.iNum1 = scan.nextInt();	

		System.out.print("두 번째 숫자를 입력하세요(정수):");
		threeSum.iNum2 = scan.nextInt();
		
		System.out.print("세 번째 숫자를 입력하세요(실수):");
		threeSum.dNum = scan.nextDouble();
		System.out.println(); //줄바꿈
		
		//합 출력
		System.out.println("입력한 숫자의 합:"+threeSum.sum());		
	}//main_end

 

▶ 출력 결과

<세 개의 숫자의 합 구하기>
첫 번째 숫자를 입력하세요(정수):11
두 번째 숫자를 입력하세요(정수):22
세 번째 숫자를 입력하세요(실수):3.3

입력한 숫자의 합:36.3

 

 

 

 

5.  객체의 생성자와 오버로딩

Circle 코드

public class Circle {
	int radius;
	String name;
	
	Circle(){
		System.out.println("기본 생성자 호출");
	}
	
	Circle(int r, String name){
		System.out.println("매개변수 생성자 호출");
		
		radius=r; //매개변수를 받아와 radius에 값을 넣는다. radius=r보다는 this.radius=radius 으로 작성하는 방법을 추천한다.
		this.name=name;	//this를 사용하면 Circle 안의 radius를 뜻한다.
	}
}

 

▶ main 코드

		Circle c = new Circle();
		
		c = new Circle(5,"Jo");
		System.out.printf("radius:%d\nname:%s",c.radius,c.name);

 

▶ 출력 결과

기본 생성자 호출
매개변수 생성자 호출
radius:5
name:Jo

 

 

 

6.  객체 배열

 Circle 코드

public class Circle {
	int num;

	Circle(int num){
		this.num=num;
	}
}

 

▶ main 코드

		Circle[] cArray = new Circle[5]; //5개의 공간을 가짐
		for(int i=0;i<cArray.length;i++){
			cArray[i]= new Circle(i); //i 값으로 초기화
			System.out.println(cArray[i].radius);
		}

 

▶ 출력 결과

0
1
2
3
4

 

 

 

7. 심화 문제 풀이

 

[JAVA] 심화 문제 풀이

 

deliciouscode.tistory.com

 

 

 

 

 


2023년 5월 30일 화요일

<12일차 수업 후기>

동일한 패키지에 클래스를 생성하고, 객체를 생성하여 접근하는 실습을 했다. 예전에 애플리케이션을 만들 때 여러 개의 클래스를 만들고 접근했던 기억이 나서 재미있는 수업이었다.

728x90
반응형