2 minute read

Untitled

해당 문제는 fastcampus의 java&Spring 부트 캠프에서 진행된 과정에서 제출된 문제를 풀이 한 것임을 참고 바란다.
2023년 5월 25일

객체 협력

다음과 같은 상황을 구현해 봅시다.

앞의 예제에서 Edward는 지각을 해서 택시를 타야 했습니다. 20000원을 가지고 있었는데 10000원을 택시비로 사용했습니다. 택시는 ‘잘나간다 운수’ 회사 택시를 탔습니다.

출력결과

Untitled

Student.js

package homework3;

public class Student {
	String studentName;
	int grade;
	int money;

	public Student(String studentName, int money) {
		this.studentName = studentName;
		this.money = money;
	}
	public void takeTax(Tax tax) {
		tax.take(10000);
		this.money -= 10000;
	}
	public void showInfo() {
		System.out.println(studentName + "님의 남은 돈은 " + money + "입니다.");
	}
}

해당 student 코드는 학생 클래스를 나타내는 파일이다. 해당 class는 student의 이름 학년 돈 등의 정보를 저장하고 학생이 택시비를 지불하고, 잔액을 확인하는 기능을 제공한다.

코드 분석

💡 해당 코드를 살펴보면

grade - 학생의 학년을 저장하는데 사용된다.

money - 학생이 가지고 있는 돈을 나타낸다.

grade, money는 student의 멤버 변수이다.



	public Student(String studentName, int money) {
		this.studentName = studentName;
		this.money = money;
	}

해당 코드를 보면 학생 객체를 생성하기 위한 구문이다. 매개변수로 학생의 이름과 초기에 돈을 받아서 해당 값을 저장한다.


	public void takeTax(Tax tax) {
		tax.take(10000);
		this.money -= 10000;
	}

세금을 지불하는 메소드 이다. 매개변수로 Tax 객체를 받는다. tax.take(10000)를 통해서 택시비를 지불한다.


	public void showInfo() {
		System.out.println(studentName + "님의 남은 돈은 " + money + "입니다.");
	}

학생의 정보를 출력하는 메서드 학생의 이름과 남은 돈을 출력한다.



TakeTransTest.js

package homework3;

public class TakeTransTest {

	public static void main (String[] args) {

		Student studentE = new Student("Edword", 20000);
		Tax wellTax = new Tax("잘 나간다 운수 ");
		studentE.takeTax(wellTax);

		studentE.showInfo();
		wellTax.showTaxInfo();
	}
}

TakeTransTest 클래스는 학생과 택시 회사 사이의 상호작용을 테스트하는 내용을 담고 있다.


코드 분석

Student studentE = new Student("Edword", 20000); student 클래스를 이용하여 studentE 라는 학생 객체를 생성한다. 해당 학생의 이름은 Edword 이고 가지고 있는 금액은 20000원 이다.


Tax wellTax = new Tax("잘 나간다 운수 "); Tax 클래스를 이용해 wellTax 이라는 택시 회사 객체를 생성한다.


studentE.takeTax(wellTax); Student 클래스의 takeTax 메서드를 호출하는 코드

studentE 객체가 wellTax 객체에게 택시비를 지불하도록 한다.


➕  추가 설명

takeTax 메소드는 Student 클래스에서 다음과 같이 정의되어 있다:

public void takeTax(Tax tax) {
    tax.take(10000);
    this.money -= 10000;
}

takeTax 메소드는 Tax 객체를 인자로 받아와서 세금을 지불한다.

메소드 내부에서는 tax.take(10000); 코드를 통해 Tax 객체의 take 메소드를 호출하여 세금 10000을 지불하고, this.money -= 10000; 코드를 통해 학생의 돈에서 택시비를 차감한다.

따라서, studentE.takeTax(wellTax); 코드는 studentE 객체가 wellTax 객체에게 세금 10000을 지불하도록 하는 것을 의미한다.



Tax.js

package homework3;

public class Tax {

		String companyName;
		int money;


		public Tax(String companyName) {
			this.companyName = companyName;
		}

		public void take(int money) {
			this.money += money;
		}

		public void showTaxInfo() {
			System.out.println(companyName + "택시 수입은 " + money + "원 입니다. ");
		}

}

해당 Tax 파일 코드는 택시 회사의 이름과 수입을 나타내는 변수 이다.


코드 분석

		public Tax(String companyName) {
			this.companyName = companyName; //현재 객체를 가르킨다.
		}

해당 코드는 Tax 클래스의 생성자이다. companyName 을 매개변수로 받는다. 생성자의 역할을 매개변수를 받아 Tax 객체를 초기화한다.

Leave a comment