Einführung in die objektorientierte Programmierung

Aufgabe 1

public class Graph {
   protected boolean[][] adjacencyMatrix;
   protected String[] nodes;
   
   protected int indexOf(String node) throws GraphException {
   for (int i = 0; i < nodes.length; i++) {
   if (node.equals(nodes[i])) {
   return i;
   }
   }
   throw new GraphException();
   }
   public Graph(int nodeNumber) {
   nodes = new String[nodeNumber];
   adjacencyMatrix = new boolean[nodeNumber][nodeNumber];
   }
   public Graph(String[] nodes) {
   this(nodes.length);
   for (int i = 0; i < nodes.length; i++) {
   this.nodes[i] = nodes[i];
   }
   }
   public String getNode(int index) throws GraphException {
   // ...liefert den Namen des Knotens an der
   // durch den Wert des Parameters bezeichneten Position,
   // wenn diese einen Knoten bezeichnet; sonst eine GraphException.
   if (index < nodes.length) {
   return nodes[index];
   } // end of if
   throw new GraphException();
   }
   public int getNumberOfNodes() {
   // ...liefert die Anzahl der Knoten zurueck.
   return nodes.length;
   }
   public void setNodes(String[] nodes) {
   // ...weist den ersten k Elementen des Attributs nodes die
   // entsprechenden Werte des Parameters nodes zu. k ist dabei das
   // Minimum aus der Laenge des Attributs und des Parameters.
   for (int i=0; i<nodes.length && i<this.nodes.length; i++) {
   this.nodes[i] = nodes[i];
   } // end of for
   }
   public boolean isAdjacent(int index1, int index2) throws GraphException {
   // ...liefert "wahr", wenn die Knoten mit Index
   // index1 und index2 benachbart sind, sonst "falsch".
   if (index1<adjacencyMatrix.length && index2 <adjacencyMatrix.length ) {
   return  adjacencyMatrix[index1][index2];
   } // end of if
   throw new GraphException();
   }
   public boolean isAdjacent(String node1, String node2) throws GraphException {
   // ...liefert "wahr", wenn die Laender mit Namen
   // node1 und node2 benachbart sind, sonst "falsch".
   return adjacencyMatrix[indexOf(node1)][indexOf(node2)];
   }
   public void addEdge(int index1, int index2) throws GraphException {
   // ...fuegt Kante zwischen den Knoten mit
   // Index index1 und index2 ein, wenn diese
   // Indizes von Laendern sind; sonst eine GraphException.
   if (index1 < adjacencyMatrix.length && index2 < adjacencyMatrix.length) {
   adjacencyMatrix[index1][index2]= true;
   adjacencyMatrix[index2][index1]= true;
   } // end of if
   throw new GraphException();
   }
   public void addEdge(String node1, String node2) throws GraphException {
   // ...fuegt Kante zwischen den Knoten mit
   // Laendernamen node1 und node2 ein, wenn diese
   // Knoten des Graphen bezeichnen; sonst eine GraphException.
   try{
   adjacencyMatrix[indexOf(node1)][indexOf(node2)] = true;
   adjacencyMatrix[indexOf(node2)][indexOf(node1)] = true;
   }
   catch (GraphException e){};
   }
   
   public static void main(String[] args){
   String[] laender= { "Deutschland", "Frankreich", "Spanien"}; 
   Graph g = new Graph( laender);
   try{
   g.addEdge("Deutschland", "Frankreich");
   g.addEdge("Frankreich", "Spanien");
   System.out.println(g.isAdjacent("Deutschland", "Frankreich"));
   System.out.println(g.isAdjacent( "Frankreich", "Spanien"));
   System.out.println(g.isAdjacent( "Spanien", "Deutschland"));
   }
   catch (GraphException e){};
   }
   }

public class GraphException extends Exception {}

Aufgabe 3

class THW{

/*
* Erwartete Ausgabe ist:
*
* Helfer
* Truppfuehrer
* Gruppenfuehrer
* Zugtruppfuehrer
* Zugfuehrer
* false
* true
* false
*
*/

enum Dienstgrad { HELFER, TRUPPFUEHRER, GRUPPENFUEHRER, ZUGTRUPPFUEHRER, ZUGFUEHRER;
public String toString(){
switch (this) {
case HELFER : return "Helfer";

case TRUPPFUEHRER: return "Truppfuehrer";

case GRUPPENFUEHRER: return "Gruppenfuehrer";

case ZUGTRUPPFUEHRER: return "Zugtruppfuehrer";

case ZUGFUEHRER: return "Zugfuehrer";

default: return "nichts";
} // end of switch
}
public static void printAll(){
for (Dienstgrad grad : Dienstgrad.values() ) {
System.out.println(grad.toString() );
} // end of for
}
public boolean istVorgesetzterVor(Dienstgrad d){
return (this.ordinal() > d.ordinal());
}
};

public static void main(String[] args) {
// System.out.println(Dienstgrad.HELFER.toString() );
Dienstgrad.printAll();
System.out.println(Dienstgrad.HELFER.istVorgesetzterVor(Dienstgrad.GRUPPENFUEHRER));
System.out.println(Dienstgrad.TRUPPFUEHRER.istVorgesetzterVor(Dienstgrad.HELFER));
System.out.println(Dienstgrad.GRUPPENFUEHRER.istVorgesetzterVor(Dienstgrad.GRUPPENFUEHRER));
}


}