/**
Überladen der Methode maximum

Das Programm liefert folgende Ausgabe:

Maximum von 12 und 17 ist 17
Maximum von 321.345 und 321.245 ist 321.345
Maximum von "Java" und "Jawa" ist "Jawa"
Maximum von 12, 17 und 13 ist 17
Maximum von P1(12,3)
 und P2(5,5)
 ist P1(12,3)

*/
/*-----------------------------------------------------------------------*/

class Ueberladen
{
   /**
   *  Maximum zweier int-Zahlen bestimmen
   *  @param a erste Zahl
   *  @param b zweite Zahl
   *  @return Maximum der beiden Parameter
   */
   static int maximum(int a,int b)
   {  return a>b?a:b;  }
   
   /**
   *  Maximum von drei int-Zahlen bestimmen
   *  @param a erste Zahl
   *  @param b zweite Zahl
   *  @param c dritte Zahl
   *  @return Maximum der beiden Parameter
   */
   static int maximum(int a,int b,int c)
   {  return maximum(maximum(a,b),c);   }

   /**
   *  Maximum zweier double-Zahlen bestimmen
   *  @param a erste Zahl
   *  @param b zweite Zahl
   *  @return Maximum der beiden Parameter
   */
   static double maximum(double a,double b)
   {  return a>b?a:b;  }
   
   /**
   *  Maximum zweier Strings bestimmen (lexikographische Ordnung).
   *  a.compareTo(b) liefert >0, wenn a hinter b kommt
   *  @param a erster String
   *  @param b zweiter String 
   *  @return lexikographisch größerer String 
   */
   static String maximum(String a,String b)
   {  return (a.compareTo(b)>0)?a:b; }
   
   /**
   *  Maximum zweier Punkte bestimmen
   *  @param p1 erster Punkt
   *  @param p2 zweiter Punkt
   *  @return Punkt mit größerer Länge
   */
   static Punkt maximum(Punkt p1,Punkt p2)
   {  return (p1.laenge()>p2.laenge())?p1:p2; }
   
   /**
   *  Testumgebung
   */
   public static void main(String[] argv)
   {  int i=12,j=17,k=13;
      double f=321.345,g=3.21245e2;
      String s1="Java",s2="Jawa";
      Punkt p1=new Punkt(12,3,"P1"),p2=new Punkt(5,5,"P2");
      
      System.out.println("Maximum von "+i+" und "+j
            +" ist "+maximum(i,j));
      System.out.println("Maximum von "+f+" und "+g
            +" ist "+maximum(f,g));
      System.out.println("Maximum von \""+s1+"\" und \""+s2
            +"\" ist \""+maximum(s1,s2)+"\"");
      System.out.println("Maximum von "+i+", "+j
            +" und "+k+" ist "+maximum(i,j,k));
      System.out.print("Maximum von ");p1.ausgeben();
      System.out.print(" und ");p2.ausgeben();
      System.out.print(" ist ");
      maximum(p1,p2).ausgeben();
      System.out.println();
   }
}
