Day 15 (23.01.13)

Jane·2023년 1월 13일
0

IT 수업 정리

목록 보기
15/124

1. 자동으로 함수 만들어주는 기능 (Generate Getters and Setters)

age 라는 변수를 긁어서 오른쪽 클릭
Source > Generate Getters and Setters...
눌러보면 setAge(int age), getAge 함수처럼 자동적으로 함수를 만들어준다. (JVM에 저장되어 있는 것만 가능^^)

2. 함수 code

2-1. Baby 클래스

  • 나이 설정 : setAge(num) 함수
  • 나이 얻어오기 : getAge() 함수
  • 술 마실 수 있는지 판단하기 : showDrink() 함수
class Baby {
	int age = -5;

	public void setAge(int num) { // 나이 설정
		age = num;
	}

	public int getAge() { // 나이 얻어오기
		return age;
	}

	public void showDrink() { // 술을 마실 수 있는지
		if (age >= 20) {
			System.out.println("술을 마실 수 있습니다.");
		} else {
			System.out.println("술을 마실 수 없습니다.");
		}
	}
}

public class ObjectTest {

	public static void main(String[] args) {
		Baby baby = new Baby(); // 객체 생성
		System.out.println(baby); // 참조하는 주소값 출력
		System.out.println(baby.age); // 나이 출력 (초기값)

		baby.setAge(10); // 나이를 10으로 설정
		System.out.println(baby.age); // 설정한 값 : 10 출력
		System.out.println(baby.getAge()); // getAge 함수로 얻기
		
		baby.showDrink(); // 술을 마실 수 있나요? (X)
		baby.setAge(20); // 나이를 20으로 설정
		baby.showDrink(); // 술을 마실 수 있나요? (O)
	}

}

2-2. Grade 클래스

  • 국영수 점수 설정하기 : initGrade(a, b, c) 함수
  • 평균 구하기 : getAvg() 함수
  • 등급 구하기 : getGrade(avg) 함수
class Grade {
	int kor;
	int eng;
	int math;

	void initGrade(int a, int b, int c) { // initialize (초기화하는 함수)
		kor = a;
		eng = b;
		math = c;
	}

	double getAvg() { // 평균 구하는 함수
		return (kor + eng + math) / 3.0;
	}

		char getGrade() { // 등급 구하는 함수
		double avg = getAvg(); // getAvg() 호출
		char grade = '가';
		if (avg >= 90) {
			grade = '수';
		} else if (avg >= 80) {
			grade = '우';
		} else if (avg >= 70) {
			grade = '미';
		} else if (avg >= 60) {
			grade = '양';
		} else {
			grade = '가';
		}

		return grade;
	}
    
    /*
    	char getGrade(double avg) {
        // 평균 값을 받아와서 구하는 방법
		char grade = '가';
		if (avg >= 90) {
			grade = '수';
		} else if (avg >= 80) {
			grade = '우';
		} else if (avg >= 70) {
			grade = '미';
		} else if (avg >= 60) {
			grade = '양';
		} else {
			grade = '가';
		}

		return grade;
	}
    */
}

public class ObjectTest {

	public static void main(String[] args) {
		Grade grade = new Grade();
//		System.out.println(grade.kor + ", " + grade.eng + ", " + grade.math);
		grade.initGrade(80, 80, 40);
		double average = grade.getAvg();
		System.out.println(average + "점");
		char text = grade.getGrade();
		System.out.println(text + "입니다");
	}

}

2-3. Triangle 클래스

  • 밑변 지정하는 함수 : setWidth(w)
  • 높이 지정하는 함수 : setHeight(h)
  • 밑변과 높이를 한꺼번에 지정하는 함수 : initTriangle(w, h)
  • 삼각형의 넓이 구하는 함수 : getArea()
class Triangle{
	double width; // 밑변
	double height; // 높이
	
	void setWidth(double w) {
		width = w;
	}
	void setHeight(double h) {
		height = h;
	}
    
    void initTriangle(double w, double h) {
		width = w;
		height = h;
	}
	
	double getArea() {
		return width * height / 2;
        // return width * height * 0.5;
	}
	
}

public class ObjectTest {

	public static void main(String[] args) {
		Triangle t = new Triangle();
		t.setWidth(10);
		t.setHeight(10);
		double area = t.getArea();
		System.out.println("삼각형의 넓이 : " + area);
        
        Triangle t2 = new Triangle();
		t2.initTriangle(10, 10);
		area = t2.getArea();
		System.out.println("삼각형의 넓이 : " + area);
	}

}

2-4. Triangle 비교하기

  • 삼각형을 비교하는 함수 : compare(Triangle)
class Triangle{
	double width; // 밑변
	double height; // 높이
	
	void initTriangle(double w, double h) {
		width = w;
		height = h;
	}
	
	double getArea() {
		return width * height / 2;
	}
	
	void compare(Triangle t) {
		if ((width == t.width) && (height == t.height)) {
			System.out.println("같은 삼각형입니다.");
		} else {
			System.out.println("다른 삼각형입니다.");
		}
	}
	
}

public class ObjectTest {

	public static void main(String[] args) {
		Triangle t = new Triangle();
		t.initTriangle(10, 5);
		
		Triangle t2 = new Triangle();
		t2.initTriangle(10, 5);
		
		t.compare(t2);
		t2.initTriangle(10, 10);
		t.compare(t2);
	}

}

[Console]
같은 삼각형입니다.
다른 삼각형입니다.

3. 참조변수

BankAccount ref1 = new BankAccount();
BankAccount ref2 = ref1; // 같은 인스턴스를 참조한다
  • ref1은 new BankAccount()의 주소를 참조한다.
  • ref2는 ref1 값을 대입하였으므로, ref1와 같은 주소를 참조하게 된다.
class BankAccount {

	int balance = 0; // 예금 잔액

	public int deposit(int amount) { // 입금
		balance += amount;
		return balance;
	}

	public int withdraw(int amount) { // 출금
		balance -= amount;
		return balance;
	}

	public int checkMyBalance() { // 예금 조회
		System.out.println("잔액 : " + balance);
		return balance;
	}

}

public class BankAccountTest {

	public static void main(String[] args) {
		BankAccount yoon = new BankAccount(); // 객체 생성

		yoon.deposit(5000);
		yoon.checkMyBalance();
		yoon.withdraw(1000);
		yoon.checkMyBalance();
		
		yoon = new BankAccount(); 
		yoon.checkMyBalance();
	}

}

[Console]
잔액 : 5000 (처음 new 객체 생성)
잔액 : 4000
잔액 : 0 (다시 new 객체 생성)

profile
velog, GitHub, Notion 등에 작업물을 정리하고 있습니다.

0개의 댓글