Programming

; develop a program

Back-End/Java

[Java] 객체 간 협력

Clloud_ 2023. 2. 2. 09:42
반응형

객체 지향 프로그램은 객체를 정의하고 객체 간 협력으로 만든다.

이번 포스팅에서는 자바(Java)에서 객체의 협력이 어떻게 이루어지는지에 대하여 공부를 해보고자 한다.

 


객체 지향 프로그램 구현

학생이 학교에 가기 위해 수행하는 여러 과정을 객체 지향 프로그램으로 만들어보려 한다.

 

 

학생 클래스 구현

public class Student {
	 public String studentName;	// 학생 이름
	 public int grade;		// 학년
	 public int money;		// 학생이 가지고 있는 돈
	
	 public Student(String studentName, int money) {    // 이름과 돈 초기화하기
		  this.studentName = studentName;
		  this.money = money;
	 }
	    
	 public void takeBus(Bus bus) {
		  bus.take(1000);
		  this.money -= 1000;
	 }
	    
	 public void takeSubway(Subway subway) {
		  subway.take(1500);
		  this.money -= 1500;
	 }
	    
	 public void showInfo() {
		  System.out.println(studentName + "님의 남은 돈은 " + money + "입니다.");
	 }
}
  • 6행에 생성자는 학생 이름과 학생이 가진 돈을 매개변수로 받는다.
  • 학생 클래스를 하나 생성하면 학생 이름과 학생이 가진 돈을 초기화한다.
  • 디폴트 생성자를 제공하지 않기 때문에 학생 클래스를 생성하려면 매개변수가 있는 Student(String studentName, int money) 생성자를 호출해야 한다.

 

버스 클래스 구현

public class Bus {
	   int busNumber;       	    // 버스 번호
		 int passengerCount;        // 승객 수
		 int money;                 // 버스의 수입
		    
		 public Bus(int busNumebr){   // 버스 번호를 매개변수로 받는 생성자
			  this.busNumber = busNumebr;
		 }
		
		 public void take(int money) {	// 승객이 낸 돈을 받음
			  this.money += money;	// 버스의 수입 증가
			  passengerCount++;	// 승객 수 증가
		 }
		    
		 public void showInfo() {      // 버스 정보를 출력하는 함수
			  System.out.println("버스 " + busNumber + "번의 승객은 " + passengerCount +
       "명이고, 수입은 " + money + "입니다.");
		 }
}
  • take( ) 메서드에서 승객 한 명이 버스를 탄 경우를 구현한다.
  • 6행 Bus(int busNumber) 생성자에서는 버스 번호를 매개변수로 받아 버스가 생성될 때 버스 번호를 초기화한다.

 

지하철 클래스 구현

public class Subway {
	 public String lineNumber;	// 지하철 노선 번호
	 public int passengerCount;	// 승객 수 
	 public int money;		// 수입 액
	    
	 public Subway(String lineNumber) {		// 지하철 노선 초기화
		  this.lineNumber = lineNumber;   
	 }
	    
	 public void take(int money) {		// 승객이 탄 경우 
		  this.money += money;		// 수입 증가
		  passengerCount++;		// 승객 수 증가
	 } 
	    
	 public void showInfo(){		// 지하철 정보 출력 
		  System.out.println(lineNumber + "의 승객은 " + passengerCount +
     "명이고, 수입은 " + money + "입니다.");
	 }
}
  • Subway(String lineNumber) 생성자가 지하철 몇 호선인지를 매개변수로 받아 Subway 클래스를 생성한다.
  • take( ) 메서드는 승객이 탄 경우에 발생하는 일을 구현한다.

 

학생, 버스, 지하철 객체 협력하기

public class TakeTrans {

	public static void main(String[] args) {
		// 두 명의 학생을 생성
		  Student studentJames = new Student("James", 5000);   
		  Student studentTomas = new Student("Tomas", 10000);
		   
		  Bus bus100 = new Bus(100);
		  studentJames.takeBus(bus100);     // james가 100번 버스를 탐
		  studentJames.showInfo();           // james 정보 출력
		  bus100.showInfo();                // 버스 정보 출력
		  
		  Subway subwayGreen = new Subway("2호선");  
		  studentTomas.takeSubway(subwayGreen);  // Tomas가 2호선을 탐
		  studentTomas.showInfo();                 // Tomas 정보 출력
		  subwayGreen.showInfo();   
	}
}
  • 두 개의 학생 인스턴스가 생성되었다.
    • 학생 이름은 James, 가진 돈은 5000원으로 초기화
    • 학생 이름은 Tomas, 가진 돈은 10,000원으로 초기화
  • bus100 변수가 가리키는 버스와 subwayGreen이 가리키는 지하철이 생성되었다.

 

 


반응형

'Back-End > Java' 카테고리의 다른 글

[Java] 변수 유효 범위  (0) 2023.02.03
[Java] static 변수  (0) 2023.02.03
[Java] this 예약어  (0) 2023.02.02
[Java] 정보 은닉(Information Hiding)  (3) 2023.02.01
[Java] 참조 자료형  (0) 2023.02.01