Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- singleton
- 오라클 비교연산자
- Java
- 템플릿
- 깃 명령어
- SUB Query
- 다운캐스팅
- IP
- 상속
- 이클립스 오라클 연동
- 모달창 여러개
- order by
- spring annotation
- GROUP BY
- Servlet 맵핑
- static
- 추상 메서드
- downcasting
- react
- AOP란?
- 형변환
- static메서드
- static 예제
- 객체협력
- 싱클톤패턴
- 리스트 모달창
- 스프링 모달창
- 다중 모달창
- oracle 연동
- 사용자 데이터그램 프로토콜
Archives
- Today
- Total
모든지 기록하자!
[Java] 객체 간 협력 예제 ( static ) 본문
728x90
A씨는 4000원을 내고 별다방에서 아메리카노를 사 마셨다.
B씨는 4500원을 내고 콩다방에서 라떼를 사 마셨다.
이 상황을 객체 간 협력(대중교통) 을 활용하여 객체 지향으로 프로그래밍 해보자!
package coffee;
public class Menu {
public static final int STARAMERICANO = 4000;
public static final int STARLATTE = 4300;
public static final int BEANAMERICANO = 4100;
public static final int BEANLATTE = 4500;
}
다른 클래스에서 객체 생성없이 사용 할수있도록 static으로 지정하고
커피의 가격은 변하지 않는 값이므로 final로 선언한다.
package coffee;
public class Person {
String name;
int money;
Person(String name, int money ){
this.name = name;
this.money = money; //매개변수로 받은 money를 Person클래스의 money에 대입한다.
}
public void buyStarCoffee(StarCoffee sCoffee, int money) {
String message = sCoffee.brewing(4000); // 별다방의 4000원 짜리 커피를 구매
if(message != null) {
this.money -= money; //커피 가격만큼 Person의 소지금 차감
System.out.println(name + " 님이 " + money +"으로 " + message);
}
}
public void buyBeanCoffee(BeanCoffee bCoffee, int money) {
String message = bCoffee.brewing(4500); // 콩다방의 4500원 짜리 커피를 구매
if(message != null) {
this.money -= money; //커피 가격만큼 Person의 소지금 차감
System.out.println(name + " 님이 " + money +"으로 " + message);
}
}
}
Person 생성자에 매개변수로 name과 money를 받아서 자기 자신의 객체
즉 Person의 멤버변수 name과 money에 대입 시킨다.
message는 해당 매장에서 구매한 커피 가격에 맞는 문장을 리턴 받아 저장한다.
package coffee;
public class StarCoffee {
int money; // 판매한 커피값을 저장 할 변수
public String brewing(int money) {
this.money += money; // 판매한 커피 가격 만큼 매장에 매출 증가
if(money == Menu.STARAMERICANO) { // 별다방의 아메리카노(4000) 의 값을 받으면
return "별 다방 아메리카노를 구입했습니다"; // 해당 문장을 반환한다.
}
else if(money == Menu.STARLATTE) { // 별다방의 라떼(4300) 의 값을 받으면
return "별 다방 라떼를 구입했습니다"; // 해당 문장을 반환한다.
}
else {
return null; // 지불한 가격에 맞는 커피가 없을경우 null을 리턴
}
}
}
package coffee;
public class BeanCoffee {
int money; // 판매한 커피값을 저장 할 변수
public String brewing(int money) {
this.money += money; // 판매한 커피의 금액만큼 매장의 매출 증가
if(money == Menu.BEANAMERICANO) { // 콩카페의 아메리카노(4100)의 값을 받으면
return "콩 다방 아메리카노를 구입했습니다"; // 해당 문장을 반환한다.
}
else if(money == Menu.BEANLATTE) { // 콩까페의 라떼(4500)의 값을 받으면
return "콩 다방 라떼를 구입했습니다"; // 해당 문장을 반환한다.
}
else {
return null;
}
}
}
Person클래스의 money를 전달받아 해당 가격에 맞는 커피를 찾아 return문을 반환 해준다.
package coffee;
public class CoffeeTest {
public static void main(String[] args) {
// 이름이 Kim이고 소지금이 10000원인 객체 생성해서 kim에 대입한다.
Person kim = new Person("Kim", 10000);
Person hong = new Person("Hong", 8000);
StarCoffee starCoffee = new StarCoffee(); // 별다방 객체 생성
BeanCoffee beanCoffee = new BeanCoffee(); // 콩까페 객체 생성
kim.buyStarCoffee(starCoffee, 4000); // kim이 별다방에서 4000원 짜리 커피구매
hong.buyBeanCoffee(beanCoffee, 4500); // hong이 콩까페에서 4500원 짜리 커피 구매
System.out.println("Kin님의 남은 소지금은 "+kim.money+"원 입니다.");
System.out.println("Hong님의 남은 소지금은 "+hong.money+"원 입니다.");
System.out.println("별다방의 매출은 "+starCoffee.money+"원 입니다.");
System.out.println("콩커피의 매출은 "+beanCoffee.money+"원 입니다.");
}
}
결과 출력문
728x90
'Java' 카테고리의 다른 글
[Java] 상속 (예제 : 고객관리) (0) | 2021.05.14 |
---|---|
[Java] Array List 클래스 (0) | 2021.05.14 |
[Java] 변수의 유효 범위 (scope) (0) | 2021.05.13 |
[Java] singleton 패턴 (0) | 2021.05.13 |
[Java] 암호화 / 복호화 (0) | 2021.05.13 |
Comments