package Review;

// Idea: A Camera hierarchy with two types of cameras.
//
//             Camera
//            /      \
//           /        \  
//  DigitalCamera   FilmCamera
//
// We also have an interface called Battery whose methods will
// be getBatteryType(), getRemainingPower().
//
// Reviews: inheritance, polymorphism, protected, this, super, interfaces
public class CameraDriver {
	public static void testOne(Camera camera) {
		camera.takePicture();
		camera.takePicture();
		System.out.println(camera);
		System.out.println("Remaining Power: " + ((Battery)camera).getRemainingPower());		
	}
	
	public static void main(String[] args) {
		int totalMegs = 200, megsPerPhoto = 1;
	
		System.out.println("**** Testing Digital Camera ****");
		DigitalCamera digital = new DigitalCamera(totalMegs, megsPerPhoto);
		testOne(digital);
		digital.displayPhoto(2);
		System.out.println();
		
		System.out.println("**** Testing Film Camera ****");
		FilmCamera conventional = new FilmCamera();
		int numberExposures = 36;
		conventional.loadRole(numberExposures);
	    testOne(conventional);
	    conventional.rewindRole();
		System.out.println();
	    
	    System.out.println("**** Testing Digital Default****");
	    DigitalCamera digitalTwo = new DigitalCamera();
	    testOne(digitalTwo);
	}
}
