
public class Hauptklasse {

	private void test1() {
		Schiff s1 = new Schiff("Anna", 12);
		Schiff s2 = new Schiff("Der Rhein", 24);
		// System.out.println(s1.toString());
		// System.out.println(s2.toString());

		Dampfer d1 = new Dampfer("Titanic", 234, 440);
		Dampfer d2 = new Dampfer("Andrea Doria", 123, 100);
		// System.out.println( d1.toString() );

		Paddelboot p1 = new Paddelboot("Queen Elizabeth II", 8, "Holz");
		// System.out.println(p1);

		Schiff[] feld = new Schiff[5];
		feld[0] = s1;
		feld[1] = s2;
		feld[2] = d1;
		feld[3] = d2;
		feld[4] = p1;
		for (Schiff s : feld) {
			System.out.println(s.toString());
		}
	} // test1

	private void test2() {
		Fahrrad f1 = new Fahrrad("Mustang", "weiß", 80);
		Lastenrad l1 = new Lastenrad("Masse", "grün", 55, 88);
		Lastenrad l2 = new Lastenrad("Speedy", "gelb", 79, 120);
		EBike e1 = new EBike("ESpeedy", "rot", 79, 34);

		Fahrrad[] feld = new Fahrrad[4];
		feld[0] = f1;
		feld[1] = l1;
		feld[2] = l2;
		feld[3] = e1;

		for (Fahrrad rad : feld) {
			System.out.println(rad.toString());
		}

	} // test2

	private void test3() {
		Schiff s1 = new Schiff("Anna", 12);
		Schiff s2 = new Schiff("Der Rhein", 24);
		Dampfer d1 = new Dampfer("Titanic", 234, 440);
		Dampfer d2 = new Dampfer("Andrea Doria", 123, 100);
		Paddelboot p1 = new Paddelboot("Queen Elizabeth II", 8, "Holz");

		Fahrrad f1 = new Fahrrad("Mustang", "weiß", 80);
		Lastenrad l1 = new Lastenrad("Masse", "grün", 55, 88);
		Lastenrad l2 = new Lastenrad("Speedy", "gelb", 79, 120);
		EBike e1 = new EBike("ESpeedy", "rot", 79, 34);

		Object[] feld = new Object[9];
		feld[0] = s1;
		feld[1] = s2;
		feld[2] = d1;
		feld[3] = d2;
		feld[4] = p1;

		feld[5] = f1;
		feld[6] = l1;
		feld[7] = l2;
		feld[8] = e1;

		for (Object obj : feld) {
			System.out.println(obj.toString());
		}

	} // test3

	// print-Methode
	private void test4() {
		Schiff s1 = new Schiff("Anna", 12);
		Schiff s2 = new Schiff("Der Rhein", 24);
		Dampfer d1 = new Dampfer("Titanic", 234, 440);
		Dampfer d2 = new Dampfer("Andrea Doria", 123, 100);
		Paddelboot p1 = new Paddelboot("Queen Elizabeth II", 8, "Holz");

		Schiff[] feld = new Schiff[5];
		feld[0] = s1;
		feld[1] = s2;
		feld[2] = d1;
		feld[3] = d2;
		feld[4] = p1;

		for (Schiff s : feld) {
			s.print();
		}

	} // test4

	// print-Methode
	private void test5() {
		Schiff s1 = new Schiff("Anna", 12);
		Schiff s2 = new Schiff("Der Rhein", 24);
		Dampfer d1 = new Dampfer("Titanic", 234, 440);
		Dampfer d2 = new Dampfer("Andrea Doria", 123, 100);
		Paddelboot p1 = new Paddelboot("Queen Elizabeth II", 8, "Holz");

		Fahrrad f1 = new Fahrrad("Mustang", "weiß", 80);
		Lastenrad l1 = new Lastenrad("Masse", "grün", 55, 88);
		Lastenrad l2 = new Lastenrad("Speedy", "gelb", 79, 120);
		EBike e1 = new EBike("ESpeedy", "rot", 79, 34);

		Object[] feld = new Object[9];
		feld[0] = s1;
		feld[1] = s2;
		feld[2] = d1;
		feld[3] = d2;
		feld[4] = p1;

		feld[5] = f1;
		feld[6] = l1;
		feld[7] = l2;
		feld[8] = e1;

		for (Object obj : feld) {
			if (obj instanceof Paddelboot) {
				System.out.println("Paddelboot");
				Paddelboot pd = (Paddelboot) obj;
				pd.print();
			} else if (obj instanceof Dampfer) {
				System.out.println("Dampfer");
				Dampfer d = (Dampfer) obj;
				d.print();
			} else if (obj instanceof Schiff) {
				System.out.println("Schiff");
				Schiff s = (Schiff) obj;
				s.print();
				
			} else if (obj instanceof EBike) {
				System.out.println("EBike");
				EBike e = (EBike) obj;
				e.print();
			} else if (obj instanceof Lastenrad) {
				System.out.println("Lastenrad");
				Lastenrad l = (Lastenrad) obj;
				l.print();
			} else if (obj instanceof Fahrrad) {
				System.out.println("Fahrrad");
				Fahrrad f = (Fahrrad) obj;
				f.print();
			} else {
				System.out.println("**** fehlerhafte Instanz: " + obj.getClass());
			}
		}

	} // test5
	
	
	// print-Methode
		private void test6() {
			Schiff s1 = new Schiff("Anna", 12);
			Schiff s2 = new Schiff("Der Rhein", 24);
			Dampfer d1 = new Dampfer("Titanic", 234, 440);
			Dampfer d2 = new Dampfer("Andrea Doria", 123, 100);
			Paddelboot p1 = new Paddelboot("Queen Elizabeth II", 8, "Holz");

			Fahrrad f1 = new Fahrrad("Mustang", "weiß", 80);
			Lastenrad l1 = new Lastenrad("Masse", "grün", 55, 88);
			Lastenrad l2 = new Lastenrad("Speedy", "gelb", 79, 120);
			EBike e1 = new EBike("ESpeedy", "rot", 79, 34);

			Object[] feld = new Object[9];
			feld[0] = s1;
			feld[1] = s2;
			feld[2] = d1;
			feld[3] = d2;
			feld[4] = p1;

			feld[5] = f1;
			feld[6] = l1;
			feld[7] = l2;
			feld[8] = e1;

			for (Object obj : feld) {
				if (obj instanceof Schiff) {
					System.out.println("Schiff");
					Schiff s = (Schiff) obj;
					s.print();
				} else if (obj instanceof Fahrrad) {
					System.out.println("Fahrrad");
					Fahrrad f = (Fahrrad) obj;
					f.print();
				} else {
					System.out.println("**** fehlerhafte Instanz: " + obj.getClass());
				}
			}

		} // test6
	
	

	private void test7() {
		Schiff s1 = new Schiff("Anna", 12);
		Schiff s2 = new Schiff("Der Rhein", 24);
		Dampfer d1 = new Dampfer("Titanic", 234, 440);
		Dampfer d2 = new Dampfer("Andrea Doria", 123, 100);
		Paddelboot p1 = new Paddelboot("Queen Elizabeth II", 8, "Holz");

		Fahrrad f1 = new Fahrrad("Mustang", "weiß", 80);
		Lastenrad l1 = new Lastenrad("Masse", "grün", 55, 88);
		Lastenrad l2 = new Lastenrad("Speedy", "gelb", 79, 120);
		EBike e1 = new EBike("ESpeedy", "rot", 79, 34);
		
		Transport[] feld = new Transport[9];
		feld[0] = s1;
		feld[1] = s2;
		feld[2] = d1;
		feld[3] = d2;
		feld[4] = p1;

		feld[5] = f1;
		feld[6] = l1;
		feld[7] = l2;
		feld[8] = e1;

		for (Transport t : feld) {
			t.save2Database();
		}

	} // test7

	// eine gemeinsame Oberklasse für Listenspeicherung ist unüblich !!
	private void test8() {
		Schiff s1 = new Schiff("Anna", 12);
		Schiff s2 = new Schiff("Der Rhein", 24);
		Dampfer d1 = new Dampfer("Titanic", 234, 440);
		Dampfer d2 = new Dampfer("Andrea Doria", 123, 100);
		Paddelboot p1 = new Paddelboot("Queen Elizabeth II", 8, "Holz");

		Fahrrad f1 = new Fahrrad("Mustang", "weiß", 80);
		Lastenrad l1 = new Lastenrad("Masse", "grün", 55, 88);
		Lastenrad l2 = new Lastenrad("Speedy", "gelb", 79, 120);
		EBike e1 = new EBike("ESpeedy", "rot", 79, 34);
		
		Monitor monitor = new Monitor("Dell 5880",58);

		ITransport[] feld = new ITransport[10];
		feld[0] = s1;
		feld[1] = s2;
		feld[2] = d1;
		feld[3] = d2;
		feld[4] = p1;

		feld[5] = f1;
		feld[6] = l1;
		feld[7] = l2;
		feld[8] = e1;
		
		feld[9] = monitor;

		for (ITransport t : feld) {
			t.save2IDatabase();
		}
	} // test8

	// Ausgabe mit einer gemeinsamen Oberklasse NICHT möglich
	// Lösung: Interface
	// ein Interface ist eine Vertrag, dass die Klasse die Methoden einbaut
	// Eine Klasse kann nur EINE Oberklasse haben
	// Eine Klasse kann nur BELIEBIG viele Interface haben !!!
	private void test9() {
		Schiff s1 = new Schiff("Anna", 12);
		Schiff s2 = new Schiff("Der Rhein", 24);
		Dampfer d1 = new Dampfer("Titanic", 234, 440);
		Dampfer d2 = new Dampfer("Andrea Doria", 123, 100);
		Paddelboot p1 = new Paddelboot("Queen Elizabeth II", 8, "Holz");
		// Frachter frachter1 = new Frachter("HWER 234", 300, 1500, 200000);

		Fahrrad f1 = new Fahrrad("Mustang", "weiß", 80);
		Lastenrad l1 = new Lastenrad("Masse", "grün", 55, 88);
		Lastenrad l2 = new Lastenrad("Speedy", "gelb", 79, 120);
		EBike e1 = new EBike("ESpeedy", "rot", 79, 34);

	} // test9

	public static void main(String[] args) {
		Hauptklasse instanz = new Hauptklasse();
		// instanz.test1();
		// instanz.test2();
		// instanz.test3();
		// instanz.test4();
		//instanz.test5();
		//instanz.test6();
		//instanz.test7();
		instanz.test8();
	}

}
