프로그래밍/Java 공부

객체지향프로그래밍_OOP, 자바 파라미터에 클래스 전달

개발계발게발 2021. 6. 2. 16:59
반응형

객체지향 프로그래밍 OOP 특징

캡슐화 = 보안 = 보호
 관련된 데이터(필드)와 기능(메소드)가 하나의 묶음으로 관리


상속
 이미 작성된 클래스(부모)를 이어받아서 새롭게 만드는 것
 자식 클래스는 부모클래스의 모든 속성(필드)과 동작(메소드)  를 사용할 수 있다.
 필요한 기능은 자식 클래스에서 추가해서 사용한다.


추상화
 불필요한 것을 제외하고 필요한 것만 유지
 실제 객체를 인스턴스화 할때 필요한 내용만 남기고
 나머지는 제외하는 것
 
다형성
 객체의 동작이 변경되는 것
 파라미터나 상황에 따라 동작이 변경되는 것

 

 

 

 

자바 파라미터에 클래스 호출 예제

자바8부터 파라미터로 함수를 넣어줄 수가 있다.

 

David 클래스 내에서 Sujan 클래스 내부 함수 호출

class David{
	void ask(Sunja s) {//클래스 내에서 다른 클래스 함수 호출 예제
		System.out.println("You, 나 사랑해?");
		s.answer();
	}
}
class Sunja{
	int lovePoint = 60;
	void answer() {
		if(lovePoint > 50) {
			System.out.println("사랑해");
		}else {
			System.out.println("사랑 안해");
		}
		lovePoint--;
	}
}
public class OOP07 {
	public static void main(String[] args) {
	
		David david = new David();
		Sunja sunja = new Sunja();
		for (int i = 0; i < 15; i++) {
			//david.ask();
			//sunja.answer();
			david.ask(sunja);
		}		
	}
}

AppleBuyer 클래스에서 AppleSeller 클래스 내부 함수 호출

 

public class AppleBuyer {
	//정보
	int buyerMoney = 5000;	//가진 돈
	int countApple = 0;		//가진 사과
			
	// 결과 말하기
	public void buyerInfo() {	//자신의 정보
		System.out.println("가지고 있는 사과는 " + countApple + "개 입니다. ");
		System.out.println("가지고 있는 돈은 " + buyerMoney + "원 입니다.");
	}	
    
	// 사는 행동
	public void buyApple(AppleSeller as, int money) {	//사는 행동 AppleSeller 내부 함수 호출
				countApple += as.saleApple(money);	
				buyerMoney -= money;
	}
}
public class AppleSeller {
	//정보
	int appleCount=50; //사과의 수
	
	int sellerMoney = 0; // 가진 돈
	final int APPLE_PRICE = 1000;	//상수, 사과의 가격
		
	//기능
	public void sellerInfo() { //자신의 정보
		System.out.println("남은 사과는 " + appleCount + "개 입니다. ");
		System.out.println("수익은 " + sellerMoney + "원 입니다.");
	}
	//사과를 파는 행동
	public int saleApple(int money) {
		int count = money/APPLE_PRICE; //줄 사과의 갯수 카운트
		appleCount -= count;	//사과 총 갯수 카운트
		sellerMoney += money;	//가진 돈 카운트
		return count;				
	}	
}
public class Main {
	public static void main(String[] args) {
		AppleSeller as = new AppleSeller();
		AppleBuyer ab = new AppleBuyer();

		ab.buyApple(as, 3000);	//AppleSeller에게 3000원어치 사과 구매
		
		ab.buyerInfo();	//AppleBuyer 정보    // 가지고 있는 사과는 3개 입니다. 
                                             // 가지고 있는 돈은 2000원 입니다.
	
        as.sellerInfo(); //ApplesSeller 정보 // 남은 사과는 47개 입니다. 
                                             // 수익은 3000원 입니다.
	}
}

 

 

반응형