Burninghering's Blog
article thumbnail

객체 지향 프로그래밍에서의 협력

  • 객체 지향 프로그램에서 객체 간의 협력을 바탕으로 코딩이 이루어짐 
  • 협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 함
  • 매개 변수로 "객체 자체"가 전달되는 경우가 발생
객체 협력의 예

ex) 학생이 버스를 타면, 학생의 가진 돈은 줄어들고, 버스의 승객수+1, 수입+a 가 된다. -> 객체 간의 협력!

 

실생활을 아주 잘 반영한 것이 객체 지향 프로그래밍!


객체 지향 프로그래밍 예제

<버스 타고 학교 가는 학생의 과정을 객체 지향 프로그래밍으로 구현해보기>

James와 Tomas는 각각 버스와 지하철을 타고 학교에 갑니다.
James는 5000원을 가지고 있었고, 100번 버스를 타면서 1000원을 지불합니다.
Tomas는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다.

두 학생이 버스와 지하철을 타는 상황을 구현해 봅시다.

 

Student.java

package ch14;

public class Student {
	String studentName;
	int money;
	
	public Student(String studentName,int money) {
		this.studentName = studentName;
		this.money=money;
	}
	
	public void takeBus(Bus bus) { //클래스 Bus, 어떤 버스를 탔는지 매개변수로 넘어옴
		bus.take(1000); //버스 객체에 의해 take 함수가 불려졌다.
		this.money-=1000;
	}
	
	public void takeSubway(SubWay subway) {
		subway.take(1200);
		this.money-=1200;
	}
	
	public void showInfo() {
		System.out.println(studentName+"님의 남은 돈은 "+money+"원 입니다.");
	}
}

Bus.java

package ch14;

public class Bus {
	int busNumber;
	int passengerCount;
	int money;
	
	public Bus(int busNumber) {
		this.busNumber=busNumber;
	}
	
	public void take(int money) { //버스 탄 것, 이것이 바로 협력..
		this.money+=money;
		passengerCount++;
	}
	
	public void showBusInfo() {
		System.out.println(busNumber+"번의 승객 수는 "+passengerCount+"명이고, 수입은 "+money+"원입니다.");
	}
}

SubWay.java

package ch14;

public class SubWay {
	int subwayNumber;
	int passengerCount;
	int money;
	
	public SubWay(int subwayNumber){
		this.subwayNumber=subwayNumber;
	}
	
	public void take(int money) { //지하철 탄 것, 이것이 바로 협력..
		this.money+=money;
		passengerCount++;
	}
	
	public void showSubwayInfo() {
		System.out.println(subwayNumber+"번의 승객 수는 "+passengerCount+"명이고, 수입은 "+money+"원입니다.");
	}
}

TakeTransTest.java

package ch14;

public class TakeTransTest {
	public static void main(String[] args) {
		Student hyerin=new Student("혜린",5000);
		Student hyeongsoo=new Student("형수",10000);
		
		Bus bus100 = new Bus(100); //버스는 여러 대의 버스가 있을 수 있다.
		Bus bus500 = new Bus(500);
		
		hyerin.takeBus(bus100); //인스턴스로 넘어간 버스는 100번!
		
		SubWay greenSubway = new SubWay(2);
		hyeongsoo.takeSubway(greenSubway);
		
		hyerin.showInfo();
		hyeongsoo.showInfo();
		
		bus100.showBusInfo();
		greenSubway.showSubwayInfo();
		
		bus500.showBusInfo();
	}
}

 

결과는 이러합니다

profile

Burninghering's Blog

@개발자 김혜린

안녕하세요! 반갑습니다.