20

Proksy (Fach) / Gemischt (Lektion)

Gemischt

Diese Lektion wurde von LauraKsz erstellt.

Lektion lernen

Anzeige
  • Generics Klasse, Methode public class Klasse <T extends Number> { public T methodenaufruf (T t) {Number n = t.getcontent} } public class KlasseTest { public static boolean grössernull (Klasse <? extends Number> k ) { if (k>0) return true; else retur false; }}
  • Lists Eigenschaften:  feste Reihenfolge, Duplikate möglich ArrayList: + schneller Zugriff auf Elemente (bekannte Position)                  - statischer Aufbau, Resizing bei Vergrößerung des Arrays                  - bei löschen von Elementen: alle Nachfolger müssen verschoben werden LinkedList: + beim Löschen von Elementen, lediglich Referenzen neu setzen                    + kein Resizing                    - spezielles Element suchen: alle Vor- bzw. Nachgänger müssen durchsucht                               werden List<String> l = new ArrayList<String>();                                                                              List<String> l = new LinkedList<String>(); add, remove, get
  • Sets sammlung von Objekten, Duplikate nicht möglich HashSet: -Organisation durch Hashcodes                --> performantes Einfügen und Suchen TreeSet:  -Organisation durch Binärbaum                --> längere Zeit zum abspeichern, kürzere zum abrufen sortierter Menge                 --> Zu sortierende Objekte müssen in Klasse das Interface Comparable implementieren ( Methode: compareTo() muss initilaisiert werden) Set<String> s = new TreeSet<String>();
  • Iterator Möglichkeit eine Collection kontrolliert zu durchlaufen Interface java.util.Collection schreibt iterator(); vor Interface Iterator deklariert: hasNext()     -> Existiert ein nächstes Objekt, boolean  (while (x.hasNext())...) next()            -> Gibt nächstes Objekt aus (System.out.println(x.netxt())...) !! Kann NoSuchElementException werfen
  • Exceptions Throwable -> Exception --> RuntimeException: Laufzeitausnahmen ( ArithmeticException, nicht durch 0 teilen/ NumberFormatException, Double obwohl Integer verlangt/ ) --> IOException: bei IOStreams (FileNotFoundException) --> ArrayIndexoutofBoundsException (Feld das nicht existiert aufrufen) --> UnkownHostException: Server-Client-Programmierung
  • AWT und Swing, schwergewichtige/ leichtgewichtige Komponenten AWT &Swing Paket ermöglichen Erstellung von GUIs AWT verwendet javaexterne Komponenten zur Darstellung graphischer Oberflächen des Betriebssystems --> schwergewichtige Komponenten Swing ist Erweiterung von AWT, da Zugriff auf Betriebssystem-Komponenten Ressourcen kostet Swing Komponenten vollständig in Java implementiert --> leichtgewichtige
  • Look and Feel Beeinflusst das Aussehen der Benutzeroberfläche/ der Komponenten, damit Programm nicht als Betriebssystem externes Programm auffällt über UIManager. ... aufgerufen
  • MVC-Ansatz Model, Datenmodell View, Optische Oberfläche Controller, Programmlogik
  • Adapter Bei Interfaces (z.B. Listenern) WindowListener -> WindowAdapter gleiches Interface, aber alle Methoden bereits leer implementiert. Nun müssen nur noch die Methoden die tatsächlich eine Funktion bekommen sollen überschrieben werden.
  • Prozess Zwei Teile: Programmcode und Laufzeitumgebung die dem Programm Ressourcen zur Verfügung stellt
  • Anzeige
  • Threads, Unterschiedlicher Aufbau 1) extends Thread:--> main und Thread in verschiedenen Klassen zu implementierende Methode: run()                       Exception: InterruptedException KlasseThread: run... try{sleep}catch(s.o.){} main: KlasseThread t = new KlasseThread(); t.start(); 2) implements Runnable:-->main und Thread in einer Klasse zu implementierende Methode: run()                        Exception: InterruptedException run(){... try {Thread.sleep(xx);} catch(s.o.)  } } main{Runnable z = new Klassenname();     Thread t = new Thread(z);       t.start(); } 3) implements Runnable (verschiedene Klassen): mainKlasse: RunnableKlasse t = new RunnableKlasse();     t.start(); RunnableKlasse: Thread t;   //*Konstruktor: t=new Thread(this,name);    start(){t.start();}   run(){.... try{sleep } catch {InterruptedExcetion}}
  • Threads, Erzeuger-Verbraucher-Problem Vorraussetzungen: 1) Gegenseitiger Ausschluss, bei Zugriff auf Speicher 2) Erzeuger muss warten, wenn Speicherkapazität voll -> Verbraucher muss erst lesen 3) Verbraucher kann nur einen Wert lesen -> Wenn keiner vorhanden, warten! set: while (verfügbar) ->{ try, wait - catch}      wert setzen, verfügbar=true, notifyAll() get: while(!verfügbar) ->{try, wait - catch}      wert holen, verfügbar= false, notifyAll
  • Character-Streams, Byte-Streams, Puffer  DATEI                                                                                                                       JAVA    ----------Bytes----------------------> InputStream -----------------------Bytes----------------->    ----------Bytes---------------------->InputStream ; Reader -------Charakters-------------->    ----------Bytes------->InputStream; Reader; Puffer -------------Charakters-------------->  
  • Files und FileWriter File f = new File(ausgabe.txt) PrintWriter out = new PrintWriter(new FileWriter(f), true) ACHTUNG: Autoflush mit True nicht vergessen!
  • Lambda-Ausdrücke Nur bei Interfaces mit EINER abstrakten Methode Klassenname e = new Klassenname(Wert a, Wert b); (a,b) -> {xxxx}; oder Klassenname e = (a,b) -> {xxxx; };
  • Streams, Methoden Zwischenoperationen: map -> auf alle anwenden sorted -> natürliche Ordnung sortiert skip(x) -> die ersten x elemente überspringen limit(x) -> nur die ersten x elemente filter -> filtern nach nachfolgendem Kriterium Abschlussoperationen: sum() -> Summe Ausgeben forEach() -> was wird mit jedem Element gemacht? count() -> anzahl der Elemente ausgeben
  • Stream starten Für Array: Arrays.stream(arrayname) Arrayliste: long i = listenname.stream() IntStream, DoubleStream,... IntStream.range(x,y)
  • Socket und Serversocket Aufbau final int PortNR = xxx Serversocket s = new ServerSocket(PortNR) Socket st = new Socket ("localhost" , PortNR)
  • RMI Objektklasse auf die Zugegriffen werden soll: import java.io.Serializable; class xxx implements Serializable {...} Remote-Interface das die Methoden bereitstellt die der Client nachher empfängt import java.rmi.* public interface yyy extends Remote { public xx  getXx() throws RemoteException {//leer///} } Klasse in der Remote-Interface implementiert wird import java.rmi.* public class zzz extends UnicastRemoteObject implements yyy { @Override public xx getXx() throws RemoteException{............................}} Serveranwendung mit main-Methode Objekt der klasse zzz  erzeugen Remot Objekt Registry erzeugen catch(RemoteException){}  catch(MalformedURLException){} Clientanwendung mit main-Methode
  • Registry erstellen und Object anmelden LocateRegistry.ceateRegistry(12345); Naming.rebind("rmi://...", namedesobjektsderKlassedieübergebenwerdensoll)