[개발이야기 #03] 객체협력

nyoung·2023년 3월 28일
3

개발이야기

목록 보기
3/9
post-thumbnail

객체지향프로그래밍 언어인 Java를 공부한다면 꼭 알아야 하는 객체협력에 대해서 배워보았다.
여기서부터 슬슬 어려워지기 시작하는 부분인것같다!
그래도 백엔드 개발자를 목표로 공부하려면 끝까지 엉덩이 붙이고 앉아있기!!


객체 간의 협력 (collabration)

객체 지향 프로그램에서는 객체 간에 협력이 이루어진다.
협력을 위해서는 필요한 메세지를 전송하고 이를 처리하는 기능이 구현되어야 하고, 매개 변수로 객체가 전달되는 경우가 발생한다.

직접 만들어보자.
예제로 아주 유명한 상황인 버스와 지하철을 타는 프로그래밍이 있는데, 너무 유명해서 나는 택시를 타고 잔돈을 확인하는 상황을 구현해보려고 한다.

승객 young은 지각을 해서 택시를 타야 했다.
20000원을 가지고 있었는데, 택시비로 10000원을 사용했다.
택시는 벨로그 운수 회사의 택시이며 승객의 남은돈과 택시의 수입을 계산해보자.

여기서 객체는 승객과 택시를 말하는 것이고, 승객이 택시를 타면 사용하는 택시비만큼 택시의 수입이 증가해야 할 것이다.
여기서 객체 간의 협력이 이루어진다.

//승객 클래스 생성
public class Passenger {
	String name;
    int money;
    int count;
    
    //생성자
    Person(String name, int money){
    	this.name = name;
        this.money = money;
        }
    
    //객체 간의 협력을 위하여 택시를 탈때 승객의 잔돈에서 금액이 차감되는 메서드 구현
    void take(int count){
    	this.money -= count;
       	}
       
    void showPassengerInfo(){
    	System.out.println(name + "님의 남은 돈은 " + money + "원 입니다.);
        }
}
//택시 클래스 생성
public class Taxi {
	String company;
    int count;
    
    //생성자
    Taxi(String company){
    	this.company = company;
    }
    
    //승객 클래스의 메서드 호출
    void take(Person person, int count){
    	this.count += count;
        person.take(count);
    }
    
    void showTaxiInfo(){
    	System.out.println(company + "택시 수입은 " + count + "원 입니다.");
    }
}
//구동 클래스 생성
public class TaxiTest {
	public static void main(String[] args) {
    	
        //승객 생성
    	Person person = new Person("young", 20000);
        
        //택시 생성
        Taxi taxi = new Taxi("벨로그 운수");
        
        //생성한 승객이 택시비로 10000원을 지불함
        taxi.take(person, 10000);
        
        //승객의 잔액과 택시의 수입을 프린트
        taxi.showTaxiInfo();
        person.showPersonInfo();
    }
}

요로케 코드를 짜볼 수 있다.

profile
새싹 개발자

0개의 댓글