20
Proksy (Subject) / Gemischt (Lesson)
Advertisement
- 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
- Advertisement
- 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)