[22.12.12] 35일차 [백엔드] Java 객체간 협력 연결하기

W·2022년 12월 12일
0

국비

목록 보기
50/119
  • Person 클래스
package test;

public class Person {
	// 멤버변수 데이터 은닉 -> set,get 메서드 정의 => 캡슐화
	private String name;
	private int age;
	
    // 기본 생성자 => 기억장소할당, null, 0 기본 초기값 할당
    //생성자 오버로딩 : 생성자 이름 동일(받는 값의 개수, 형이 틀림)
    public Person() {
	this("이름",100); // 같은 클래스내 다른 생성자 호출
	}
	
	public Person(String name) {
    // this. 자기자신 참조변수 호출
		this.name=name;
	}
	
	public Person(int age) {
		this.age=age;
	}
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
    
    // name, age 받는 생성자
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}
    
	// set get 메서드 정의
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	// 메서드 prn() 이름, 나이
	public void prn() {
		System.out.println("이름 : "+name);
		System.out.println("나이 : "+age);
        
    // 메서드 오버로딩
	public void prn(String name) {
		this.name=name;
		System.out.println("이름 : "+name);
		System.out.println("나이 : "+age);
        
   	public void prn(int age) {
		this.age=age;
		System.out.println("이름 : "+name);
		System.out.println("나이 : "+age);
	}
	}
	}
}
package test;

public class Test1 {
	public static void main(String[] args) {
		
        // 기본생성자
		Person p = new Person();
		p.prn();
		
 		// set, get 메서드 호출
		p.setName("김길동");
		p.setAge(35);
		System.out.println("이름 : " +p.getName());
		System.out.println("나이 : "+p.getAge());
		
        // 값을 받는 생성자
		Person p2 = new Person("홍길동", 20);
		p2.prn();

	}

}
<출력>
이름 : null
나이 : 0
이름 : 김길동
나이 : 35
이름 : 홍길동
나이 : 20
  • 생성자 오버로딩 : 생성자 이름 동일(받는 값의 개수, 형이 틀림)

  • Point 클래스
package test;

public class Point {
		// prn(두수를 받아서) 출력하는 메서드 정의
		// 출력 5,7 / 10.5, 20.7	
	public void prn(int a, int b) {
		System.out.println(a +", "+ b);
	}
	
	public void prn(double a, double b) {
		System.out.println(a +", "+ b);
	}
}
package test;

public class Test2 {

	public static void main(String[] args) {
		// 객체생성
		// prn 메서드 호출
		
		Point p = new Point();
		
		p.prn(5, 7);
		p.prn(10.5, 20.7);		
	}

}

객체간 협력

  • Student 클래스
package test;

public class Student {

	// 클래스 Student 정의
	// 멤버변수 이름 String name, 돈 int money
	// 이름, 돈을 받는 생성자

    
	String name;
	int money;
	
	public Student(String name, int money) {
		this.name=name;
		this.money=money;
	}
	
	// 버스 타는 경우
	public void takeBus(Bus bus) {
		bus.take(1000);
		// 버스요금 지불 버스 금액 증가
		// 학생이 가지고 있는 돈은 감소
		this.money=this.money-1000;
	}
	// 지하철 타는 경우
	public void takeSubway(Subway subway) {
		// 지하철요금 지불 버스 금액 증가
		subway.take(1500);
		// 학생이 가지고 있는 돈은 감소
		this.money=this.money-1500;
	}
    
    	// prn() name, money 출력
	public void prn() {
		System.out.println(this.name+", "+this.money);
	}
	
}
  • Bus 클래스
package test;
	
		
public class Bus {
	// 멤버변수 버스번호 int busNum, 버스요금 int busMoney
	int busNum;
	int busMoney;
    
	// busMoney를 받는 생성자
	public Bus(int busNum) {
		this.busNum=busNum;
	}
	
	// 버스요금 지불 버스 금액 증가
	public void take(int busMoney) {
		this.busMoney = this.busMoney + busMoney;
		
	}
    
	// prn() busNum, busMoney
	public void prn() {
		System.out.println(this.busNum+", "+this.busMoney);
	}
	
}
  • Subway 클래스
package test;

		
public class Subway {
	// 멤버변수 지하철노선 String lineNum, 지하철요금 int subMoney
	String lineNum;
	int subMoney;
	// subMoney를 받는 생성자
	public Subway(String lineNum) {
		this.lineNum = lineNum;
	}
	
	// 지하철요금 지불 => 지하철 금액 증가
	
	public void take(int subMoney) {
		this.subMoney = this.subMoney + subMoney;
		
	}
    // prn() lineNum, subMoney
	public void prn() {
		System.out.println(this.lineNum+", "+this.subMoney);
	}
}
  • 출력
package test;

public class Test3 {

	public static void main(String[] args) {

		// 학생이 학교에 갈 때 버스를 타고 가고
		//       집에 올때는 지하철을 타고 옴
		
		Student s1 = new Student("홍길동",5000);
		s1.prn();
		
		// 버스
		Bus bus100 = new Bus(100);
		bus100.prn();
		
		s1.takeBus(bus100);
		s1.prn(); // 학생 1000원 감소
		bus100.prn(); // 버스 1000원 증가
		
		// 지하철
		Subway subway1 = new Subway("1호선");
		subway1.prn();
		
		s1.takeSubway(subway1);
		s1.prn();
		subway1.prn();
	}

}
<출력>
홍길동, 5000
100, 0
홍길동, 4000
100, 1000
1호선, 0
홍길동, 2500
1호선, 1500

0개의 댓글