일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.
- 알버트
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
- 패캠챌린지
- R
- 패스트캠퍼스
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지
- 한번에끝내는Java/Spring웹개발마스터초격차패키지
- albert
- SKT
- 패스트캠퍼스후기
- 직장인자기계발
- AI
- 직장인인강
- Today
- Total
제주 탈출 일지
패스트캠퍼스 챌린지 12일차 본문
벌써 12일차다... 렛스고,. 오늘 모더나 백신 1차 접종했는데 머리가 좀 아프다..
13. 객체 간의 협력(collaboration)
객체 지향 프로그램에서 객체 간의 협력이 이루어진다.
객체 지향은 실생활을 잘 반영한 프로그래밍 ㄱ ㅣ법이ㅏㄷ.
객체의 협력을 통해 각 객체가 가지고 있는 속성이 변하거나 어떤 행위가 일어나는 것을 이해해야 한다.
14강에서 프로그래밍 할것.
14. 버스 타고 학교 가는 학생의 과정을 객체 지향 프로그래밍으로 구현해보기
James와 Tomas는 각각 버스와 지하철을 타고 학교에 갑니다.
James는 5000원을 가지고 있엇고, 100번 버스를 타면서 1000원을 지불합니다.
Tomas는 10000원을 가지고 있었고, 초록색 지하철을 타면서 1200원을 지불합니다.
두 학생이 버스와 지하철을 타는 상황을 구현해 봅시다.
bus
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 + "원 입니다.");
}
}
student
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.take(1000);
this.money -= 1000;
}
public void takeSubway(Subway subway) {
subway.take(1200);
this.money -= 1200;
}
public void showInfo() {
System.out.println(studentName + "님의 남은 돈은 " + money + "원 입니다.");
}
}
subway
package ch14;
public class Subway {
int lineNumber;
int passengerCount;
int money;
public Subway(int lineNumber) {
this.lineNumber = lineNumber;
}
public void take(int money) {
this.money += money;
passengerCount ++;
}
public void showBusinfo() {
System.out.println(lineNumber + "번의 승객 수는 " + passengerCount + " 명 이고, 수입은 " + money + "원 입니다.");
}
}
taketranstest
package ch14;
public class TakeTransTest {
public static void main(String[] args) {
Student studentJ = new Student("James", 5000);
Student studentT = new Student("Tomas", 10000);
Bus bus100 = new Bus(100);
Bus bus500 = new Bus(500);
studentJ.takeBus(bus100);
Subway greenSubway = new Subway(2);
studentT.takeSubway(greenSubway);
studentJ.showInfo();
studentT.showInfo();
bus100.showBusinfo();
greenSubway.showBusinfo();
bus500.showBusinfo();
}
}
이 문제에서 학생 - 버스, 학생 - 지하철 객체간 협력이 일어나고 있다. 학생이 버스를 탈때 student의 takeBus() 메소드를 호출하여 메소드 인자로 버스 객체를 넘겨준다. 이 때 버스의 승객은 증가하고, 학생의 돈은 줄어든다.
아직은 객체간의 협력 자체는 잘 구성되는 것 같으나, 좀 복잡한 면이 없잖아 있는것 같다.ㅋㅋ;
15. 복습해봅시다. (객체 협력)
앞의 예제에서 Edward는 지각을 해서 택시를 타야 했습니다.
20000원을 가지고 있었는데 10000원을 택시비로 사용했습니다.
택시는 '잘나간다 운수' 회사 택시를 탔습니다.
앞에 예제에 추가했고 수정한부분만 올림..
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.take(1000);
this.money -= 1000;
}
public void takeSubway(Subway subway) {
subway.take(1200);
this.money -= 1200;
}
public void takeTaxi(Taxi taxi) {
taxi.take(10000);
this.money -= 10000;
}
public void showInfo() {
System.out.println(studentName + "님의 남은 돈은 " + money + "원 입니다.");
}
}
package ch14;
public class Taxi {
String taxiName;
int passengerCount;
int money;
public Taxi(String taxiName) {
this.taxiName = taxiName;
}
public void take(int money) {
this.money += 10000;
passengerCount += 1;
}
public void showTaxiInfo () {
System.out.println(taxiName + " 회사 택시의 승객 수는 " + passengerCount + "명 이고, 수입은 " + money + "원 입니다.");
}
}
package ch14;
public class TakeTransTest {
public static void main(String[] args) {
Student studentJ = new Student("James", 5000);
Student studentT = new Student("Tomas", 10000);
Student studentE = new Student("Edward", 20000);
Bus bus100 = new Bus(100);
Bus bus500 = new Bus(500);
studentJ.takeBus(bus100);
Subway greenSubway = new Subway(2);
studentT.takeSubway(greenSubway);
Taxi jalTaxi = new Taxi("잘나간다 운수");
studentE.takeTaxi(jalTaxi);
studentJ.showInfo();
studentT.showInfo();
studentE.showInfo();
bus100.showBusinfo();
greenSubway.showBusinfo();
bus500.showBusinfo();
jalTaxi.showTaxiInfo();
}
}
이전 예제의 객체간 협력과 동일하게 Taxi Class를 만들었고, 협력을 위해 student 클래스에 takeTaxi 메소드를 추가했다..
이렇게 협력을 많이 필요로 하는 상황을 프로그래밍하게 될때 상당히 헷갈릴듯 하다.
+ 다른 클래스의 메소드를 사용할 때 ctrl를 누르고 메소드 이름을 클릭하면 이클립스에서 해당 클래스의 위치로 이동시켜 준다..
프로그래밍 한 내용 자체는 어렵지 않았으나, 생각보다 협력이 어떻게 되있는지 순간순간 헷갈리는 경우가 많았다.
오늘은 백신을 맞고 머리가 아파서 여기까지만 하고, 내일 조금 더 하는걸로..(라고 하면서 매일 3강씩만 하게 되는 magic)
그럼 안녕.
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'패스트캠퍼스 챌린지!' 카테고리의 다른 글
패스트캠퍼스 챌린지 14일차 (0) | 2021.09.19 |
---|---|
패스트캠퍼스 챌린지 13일차 (0) | 2021.09.18 |
패스트캠퍼스 챌린지 11일차 (0) | 2021.09.16 |
패스트캠퍼스 챌린지 10일차 (0) | 2021.09.15 |
패스트캠퍼스 챌린지 9일차 (0) | 2021.09.14 |