Burninghering's Blog
article thumbnail

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

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

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

 

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


2. 객체 지향 프로그래밍 예제

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

<code />
James와 Tomas는 각각 버스와 지하철을 타고 학교에 갑니다. James는 5000원을 가지고 있었고, 100 버스를 타면서 1000원을 지불합니다. Tomas는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다. 학생이 버스와 지하철을 타는 상황을 구현해 봅시다.

 

Student.java

<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

<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

<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

<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

@개발자 김혜린

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