Anlage Table mit Spalten (Spaltensorter wird hier bereits zugewiesen!)

Größe: px
Ab Seite anzeigen:

Download "Anlage Table mit Spalten (Spaltensorter wird hier bereits zugewiesen!)"

Transkript

1 Dokumentiertes Beispiel für die Implementierung eines Viewers als Ergänzung um Folienvortrag SWT / JFace Thomas Bauer, Peli Service Gmbh, // Class EdbGuiE0100 // Erfassung Tagesprotokoll (Lebensmittelkonsum) // First Created on tbauer // TB Abschluss Ersterstellung public class EdbGuiE0100 extends Window { Anlage Table mit Spalten (Spaltensorter wird hier bereits zugewiesen!) table = new Table(parent, style); // Spalte 0 - MAHLZEIT_COLUMN: Mahlzeit TableColumn column = new TableColumn(table, SWT.LEFT, 0); column.settext("mahlzeit"); column.setwidth(115); // wenn Spalte angeklickt wird: nach Mahlzeiten sortieren column.addselectionlistener(new SelectionAdapter() { public void widgetselected(selectionevent e) { tableviewer.setsorter( new EdbGuiE0100ViewerSorter(EdbGuiE0100ViewerSorter.MAHLZEIT)); ); Anlage TableViewer // *** Anlage des TableViewer auf der zuvor angelegten Table tableviewer = new TableViewer(table); // Übergib ein Array mit Spaltennamen an den TableViewer tableviewer.setcolumnproperties(this.columnnames); Anmerkung: Die Klassenvariable columnnames ist folgendermaßen deklariert // Set the tableger column property names (property name=spaltename) private final String MAHLZEIT_COLUMN = "Mahlzeit"; private final String MENGE_COLUMN = "Verbrauchsmenge"; private final String LMBEZ_COLUMN = "Lebensmittel"; private final String GERICHT_COLUMN = "Gericht"; private final String NMENGE_COLUMN = "Normalverbrauchsmenge"; private final String FETT_COLUMN = "Fettanteil"; private final String WASSER_COLUMN = "Wasserantzeil"; // Set column names private String[] columnnames = new String[] { MAHLZEIT_COLUMN, MENGE_COLUMN, LMBEZ_COLUMN, GERICHT_COLUMN, NMENGE_COLUMN, FETT_COLUMN, WASSER_COLUMN ; Anlage Array mit CellEditor's inkl. Eingabevalidierung // // Lege Array mit cell editoren an (so viele Elemente wie Spalten) // CellEditor[] editors = new CellEditor[this.columnNames.length]; // Column 0 - MAHLZEIT_COLUMN: Mahlzeit Text ComboBoxCellEditor comboeditor = new ComboBoxCellEditor(table, this.arrmahlzeittext, SWT.READ_ONLY SWT.DROP_DOWN); editors[0] = comboeditor; // Column 1 - MENGE_COLUMN: Menge (Text with digits only). Listener für Prüfung // Eingabe (Ziffern, Komma und Tausenderpunkte erlaubt) TextCellEditor texteditor = new TextCellEditor(table);

2 ((Text) texteditor.getcontrol()).addverifylistener(new VerifyListener() { public void verifytext(verifyevent e) { // Zahl wird im Format 1000,99 oder (Beispiel) eingegeben boolean isok = true; if (!e.text.equals("")) { char[] arrtext = e.text.tochararray(); for (int i = 0; i < arrtext.length; i++) { if (" ,.".indexOf(arrText[i]) < 0) { isok = false; e.doit = isok; ); editors[1] = texteditor; CellEditor's dem Viewer zuordnen // Assign the cell editors to the viewer tableviewer.setcelleditors(editors); CellModifier dem Viewer zuordnen // Set the cell modifier for the viewer tableviewer.setcellmodifier(new EdbGuiE0100CellModifier(this)); DefaultSorter dem Viewer zuordnen // Set the default sorter for the viewer tableviewer.setsorter(new dbguie0100viewersorter(edbguie0100viewersorter.mahlzeit)); Getter für ColumnNames // getcolumnnames (Aufruf durch EdbGuiE0100CellModifier) Array mit Spaltennamen als List */ public List getcolumnnames() { return Arrays.asList(this.columnNames); Getter, der dem CellModifier Zugriff gewährt auf die Texte (Werte- Repräsentation) in Multiple-Choice-Zellen (Auswahllisten) // getchoices (wird von EdbGuiE0100CellModifier aufgerufen) property Spaltenname array of choices for a multiple choice cell */ public String[] getchoices(string property) { if (this.mahlzeit_column.equals(property)) return this.arrmahlzeittext; else return new String[] {; Getter, der dem CellModifier Zugriff gewährt auf das Datenmodell // getdbcursor (wird von EdbGuiE0100CellModifier aufgerufen) Array mit Spaltennamen als List */ public EdbModTagProtokollCur getedbmodtagprotokollcur() { return edbmodtagprotokollcur; Nach Änderung im CellModifier: Aufruf satzchanged() aus EdbModTagProtokollCur, der wiederum ruft updatesatz() aus dem Content-Provider und der wiederum ruft update() aus dem TableViewer ContentProvider-Implementierung

3 Der ContentProvider ist der Bestandteil der Verbindung zur Model-Ebene, der dem Viewer "am nahesten" ist //###################################################################### // Klasse EdbGuiE0100ContentProvider // Die Klasse fungiert als Proxy für die EdbModTagProtokollCur // aus der Model-Ebene. Sie stellt den Inhalt für die Tabelle zur // Verfügung. Sie implementiert das Interface IEdbModTagProtokollViewer, // um changelisteners bei der EdbModTagProtokollCur anmelden zu können // Diese Interface definiert die Methoden addsatz(), removesatz() und // updatesatz(), die hier in der Klasse implementiert werden //###################################################################### class EdbGuiE0100ContentProvider implements IStructuredContentProvider, IEdbModTagProtokollViewer { public void inputchanged(viewer inviewer, Object inoldinput, Object innewinput) { // Wird aus der JFace-Ebene vom ContentViewer aufgerufen. // Handling von inputchanged()-calls indem sich die ContentProvider- // Instanz beim model (model ist hier der TagProtokoll-edbModTagProtokollCur) // in der Liste der beim model angemeldeten Viewer einträgt bzw. // austrägt. Jede eingetragene ContentProvider-Instanz repräsentiert // dann einen beim model angemeldeten Viewer. // Diese Vorgehensweise entspricht dem Listener-Pattern, daher // "addchangelistener" und "removechangelistener". Listener-Pattern: The pattern is based on these simple concepts: events, event producer, and event listener. Events are messages that are sent from one object to another. The component that sends the event is said to "fire" the event, while the component that receives the event is said to "handle" the event. An event producer is a class that fires events. It also has the ability to add and delete event listeners (components that receive events). Event listeners, also known as event consumers, "listen" for an event. In programmatic terms, a method on the event listener object is called when an event that it is listening for is fired. (http://www.devx.com/tips/tip/5501) if (innewinput!= null) ((EdbModTagProtokollCur) innewinput).addchangelistener(this); if (inoldinput!= null) ((EdbModTagProtokollCur) inoldinput).removechangelistener(this); public void dispose() { // Wird aus der JFace-Ebene aufgerufen. // Handling von dispose()-calls // Durch removechangelistener wird die ContentProvider-Instanz // aus der Liste der beim model angemeldeten Viewer entfernt // (model ist hier der TagProtokoll-edbModTagProtokollCur) edbmodtagprotokollcur.removechangelistener(this); // Return the Sätze as an array of Objects public Object[] getelements(object parent) { // Wird aus der JFace-Ebene aufgerufen (vom StructuredViewer). // Weiterleitung des getelements()-request an das model (also an // ein TagProtokoll-edbModTagProtokollCur) return edbmodtagprotokollcur.getcursor().toarray(); // holt zuerst die DB-Cursor-Instanz und dann daraus den edbmodtagprotokollcur // (List-Instanz) um diese List-Instanz dann in ein Array umzuwandeln // *** Implementierung der Methoden aus IEdbModTagProtokollViewer Ermöglichung des Zugriffes auf den TabelViewer von der Model-Ebene aus public void addsatz(edbmodtagprotokollsatz satz) { // wird aus EdbModTagProtokollCur aufgerufen // ergänze Satz auf Ebene des TableViewer tableviewer.add(satz); public void removesatz(edbmodtagprotokollsatz satz) { // wird aus EdbModTagProtokollCur aufgerufen // entferne Satz auf Ebene des TableViewer tableviewer.remove(satz);

4 public void updatesatz(edbmodtagprotokollsatz satz) { // wird aus EdbModTagProtokollCur aufgerufen // update Satz auf Ebene des TableViewer tableviewer.update(satz, null); lastmahlzeitnr = satz.getmahlzeitnr(); LabelProvider-Implementierung Liefert die in der Table darzustellenden Werte in der darzustellenden Form (formatiert). Die beiden Getter werden vom TableViewer aufgerufen. // Class EdbGuiE0100LabelProvider // LabelProvider für die Tabelle (TableViewer) in EdbGuiE0100 // Die Klasse implementiert die Schnittstelle ITableLabelProvider und // muß daher folgende Methoden implementieren: // -- getcolumntext() // -- getcolumnimage() // First Created on tbauer // TB Abschluss Ersterstellung org.eclipse.jface.viewers.labelprovider */ public class EdbGuiE0100LabelProvider extends LabelProvider implements ITableLabelProvider { private EdbGuiE0100 e0100; // Constructor ine0100 Instanz der Maske, welche TableViewer enthält*/ public EdbGuiE0100LabelProvider(EdbGuiE0100 ine0100) { super(); this.e0100 = ine0100; // getcolumntext // wird durch TableViewer aufgerufen // Gibt den darzustellenden Wert zurück org.eclipse.jface.viewers.itablelabelprovider#getcolumntext(java.lang.object,int) */ public String getcolumntext(object element, int columnindex) { String result = ""; float wertfloat; float teiler; // übergebenes Element ist vom Typ EdbModTagProtokollSatz Es wird letztendlich ein Satz im Rohdatenformat übergeben und für die gewünscht Spalte wird der formatierte darzustellende Wert zurückgeliefert EdbModTagProtokollSatz satz = (EdbModTagProtokollSatz) element; switch (columnindex) { case 0: // MAHLZEIT_COLUMN break; case 1: // MENGE_COLUMN // formatiert mit Tausenderpunkten und 2 Stellen nach Komma result = DbTools.formatDezimal(satz.getMenge_gr(), 2, true, false); break; case 2: // SBLS_COLUMN default: break; return result;

5 // getcolumnimage // wird durch TableViewer aufgerufen // Gibt das darzustellenden Image zurück org.eclipse.jface.viewers.itablelabelprovider#getcolumnimage(java.lang.object, int) */ public Image getcolumnimage(object element, int columnindex) { return null; CellModifier-Implementierung Der CellModifier wird gerufen, wenn der User eine Zelle im TableViewer ändert. Der Aufruf der Methoden erfolgt aus einer internen JFace-Klasse heraus (TableViewerImpl) // Class EdbGuiE0100CellModifier // CellModifier für die Tabelle (TableViewer) in EdbGuiE0100 // Der CellModifier wird gerufen, wenn der User eine Zelle im TableViewer ändert. // Die Klasse implementiert die Schnittstelle ICellModifier und // muß daher folgende Methoden implementieren: // -- canmodify() // -- modify() // -- getvalue() // First Created on tbauer // TB Abschluss Ersterstellung public class EdbGuiE0100CellModifier implements ICellModifier { private EdbGuiE0100 e0100; // Constructor ine0100 Instanz der Maske, welche TabelViewer enthält*/ public EdbGuiE0100CellModifier(EdbGuiE0100 ine0100) { super(); this.e0100 = ine0100; // canmodify // Erhält ein Element (TableRow) und eine SpaltenName (property) und // gibt die Info zurück, ob die Zelle geändert werden darf. org.eclipse.jface.viewers.icellmodifier#canmodify(java.lang.object, java.lang.string) */ public boolean canmodify(object element, String property) { // Find the index of the column int columnindex = e0100.getcolumnnames().indexof(property); switch (columnindex) { case 2: // LMBEZ_COLUMN return false; case 3: // GERICHT_COLUMN return false; // Rest darf geändert werden default: // Rest darf geändert werden return true; // getvalue // Erhält ein Element (TableRow) und eine SpaltenName (property) und // gibt den aktuellen Wert der Zelle zurück (unformatiert, aber als Text).

6 org.eclipse.jface.viewers.icellmodifier#getvalue(java.lang.object, java.lang.string) */ public Object getvalue(object element, String property) { // Find the index of the column int columnindex = e0100.getcolumnnames().indexof(property); Object result = null; // Cast das Input-Element in eine Instanz der Model-seitigen Klasse // (hier EdbModTagProtokollSatz), um dessen Interface // (IEdbModTagProtokollViewer) zugreifen zu können. Es wird letztendlich ein Satz im Rohdatenformat übergeben und für die gewünscht Spalte wird der Wert zurückgeliefert EdbModTagProtokollSatz satz = (EdbModTagProtokollSatz) element; switch (columnindex) { case 0: // MAHLZEIT_COLUMN break; case 1: // MENGE_COLUMN // mit + "" Konvertierung zu String :-) result = satz.getmenge_gr() + ""; break; default: result = ""; return result; // modify // Erhält ein Element (Tabellenzeile) und eine SpaltenName (property) und // zusätzlich einen Wert. Dieser Wert wird auf die "Model-Ebene" // (also hier EdbModTagProtokollSatz) durchgeschrieben. org.eclipse.jface.viewers.icellmodifier#modify(java.lang.object, java.lang.string, java.lang.object) */ public void modify(object element, String property, Object value) { // Find the index of the column int columnindex = e0100.getcolumnnames().indexof(property); // Das übergebene Element ist ein TableItem (Tabellenzeile) TableItem item = (TableItem) element; // Cast das Input-Element in eine Instanz der Model-seitigen Klasse // (hier EdbModTagProtokollSatz), um dessen Interface // (IEdbModTagProtokollViewer) zugreifen zu können. EdbModTagProtokollSatz satz = (EdbModTagProtokollSatz) item.getdata(); // // Update jetzt auf model-ebene den geänderte Wert durch // die entsprechende set-methode // String valuestring; switch (columnindex) { case 0: // MAHLZEIT_COLUMN case 1: // MENGE_COLUMN // der übergebne value ist ein String-Objekt, welcher in eine // Floatzahl umgewandelt werden muß valuestring = ((String) value).trim(); float zahl; if (valuestring.length() == 0) { zahl = 0.0F;

7 else { if (valuestring.indexof(",") > -1) { // Zahl kommt im Format 1470,22 (d.h. mit Dezimalkomma) zahl = (float) DbTools.strDezimalToDouble(valueString); else { // Zahl kommt im Format (d.h. mit Dezimalpunkt) zahl = Float.parseFloat(valueString); satz.setmenge_gr(zahl); break; default: // restliche Felder können nicht geändert werden // // Aufruf der auf model-ebene definierten Methode satzchanged() // Dort wird die im ContendProvider implementierte Methode // updatesatz() aufgerufen, die wiederum die update()-methode // des TableViewer aufruft wodurch der Viewer dann aktualisiert wird // e0100.getedbmodtagprotokollcur().satzchanged(satz); ViewerSorter-Implementierung // Class EdbGuiE0100ViewerSorter // Sorter zum TableViewer in Maske E0100 // First Created on tbauer // TB Abschluss Ersterstellung public class EdbGuiE0100ViewerSorter extends ViewerSorter { public final static int MAHLZEIT = 0; // Criteria that the instance uses private int criteria; // Constructor // Erzeugt einen resource sorter, der das gegebene Sortierkriterium // verwendet. // criteria ist die Nummer der Sortierspalte für die speziell diese // Sorter-Instanz angelegt wurde (wird angegeben, wenn der Sorter // für eine Spalte im SelectionListener oder als Standard-Sorter des // Viewer angelegt wird) criteria Nummer der Standard-Sortierspalte */ public EdbGuiE0100ViewerSorter(int criteria) { super(); this.criteria = criteria; // compare // wird im TableViewer verwendet org.eclipse.jface.viewers.viewersorter#compare(org.eclipse.jface.viewers.viewer, java.lang.object, java.lang.object) */ public int compare(viewer viewer, Object o1, Object o2) { EdbModTagProtokollSatz satz1 = (EdbModTagProtokollSatz) o1; EdbModTagProtokollSatz satz2 = (EdbModTagProtokollSatz) o2; switch (criteria) { case MAHLZEIT:

8 return comparemahlzeitnr(satz1, satz2); default: return 0; // comparemahlzeitnr // Returns a number reflecting the collation order of the given sätze // based on the MahlzeitNr. a negative number if the first element is less than the // second element; the value <code>0</code> if the first element is // equal to the second element; and a positive number if the first // element is greater than the second element private int comparemahlzeitnr(edbmodtagprotokollsatz satz1, EdbModTagProtokollSatz satz2) { int mahlzeitnr1 = satz1.getmahlzeitnr(); int mahlzeitnr2 = satz2.getmahlzeitnr(); if (mahlzeitnr1 < 1) { // ohne Zuordnung => ganz hinten einreihen mahlzeitnr1 = 99999; if (mahlzeitnr2 < 1) { // ohne Zuordnung => ganz hinten einreihen mahlzeitnr2 = 99999; int result = mahlzeitnr1 - mahlzeitnr2; result = result < 0? -1 : (result > 0)? 1 : 0; return result; // getcriteria the sort criterion */ public int getcriteria() { return criteria; Model: Interface /// // Interface IEdbModTagProtokollViewer // Model-Ebene für Viewer zur Bearbeitung von DB-Tabelle TagProtokoll // notwendiges Interface für die Bearbeitung der Tabelle TagProtokoll in // einem Viewer // First Created on tbauer // TB Abschluss Ersterstellung public interface IEdbModTagProtokollViewer { // addsatz // Update des View, um die Tatsache zu reflektieren, daß ein Datensatz // ergänzt wurde. satz */ public void addsatz(edbmodtagprotokollsatz satz); // removesatz // Update des View, um die Tatsache zu reflektieren, daß ein Datensatz // gelöscht wurde. satz */

9 public void removesatz(edbmodtagprotokollsatz satz); // updatesatz // Update des View, um die Tatsache zu reflektieren, daß ein Datensatz // geändert wurde. satz */ public void updatesatz(edbmodtagprotokollsatz satz); Model: Implementierung der Zugriffe auf den Datenbestand // Class EdbModTagProtokollCur // Model-Ebene für Viewer zur Bearbeitung von DB-Tabelle TagProtokoll // Klasse repräsentiert eine Cursor mit Datensätzen aus TagProtokoll // Die Klasse ist von DbCursor abgeleitet. Die Datensätze werden // in der Klassenvariable von DbCursor, welche den Cursor repräsentiert, // gehalten. Allerdings werden in den Cursor keine DbSatz-Instanzen, // sondern Instanzen der von DbSatz abgeleiteten Klasse EdbModTagProtokollSatz // eingetragen. Damit können alle Sätze aus dem Cursor an den relevanten // Stellen auf EdbModTagProtokollSatz gecastet werden. // First Created on tbauer // TB Abschluss Ersterstellung public class EdbModTagProtokollCur extends DbCursor { // Tabellename (wird auch in EdbModTagProtokollSatz verwendet!!) static final String TABNAME = "TagProtokoll"; // Liste von Referenzen auf ContendProvider-Instanzen (jw. gecasted // auf IEdbModTagProtokollViewer), wobei jede dieser Instanz einen // angemeldeten Viewer repräsentiert private Set changelisteners = new HashSet(); private int userid; private String datum; // Konstruktor // Erzeuge einen Cursor, welcher die Daten zu User/Datum enthält // (Instanz von DbCursor) inuserid indatum */ public EdbModTagProtokollCur(int inuserid, String indatum) { super(tabname, "TABELLE"); // Lese zu UserId und Datum, order by UserId,Datum,MahlzeitNr,ID // keine Exception, wenn keine Daten vorhanden this.userid = inuserid; this.datum = indatum; DbCursor dbcursor = new DbZugTagProtokoll(10, 11, "", 0, inuserid, indatum, indatum, ""); // DbZugTagProtokoll liefert Cursor mit DbSatz-Instanzen // in den Cursor dieses Objektes sollen jedoch EdbModTagProtokollSatz-Instanzen // eintragen werden ListIterator it = dbcursor.getit(); while (it.hasnext()) { DbSatz dbsatz = (DbSatz) it.next(); // Konstruktor baut EdbModTagProtokoll-Instanz auf mit den // Daten aus der DbSatz-Instanz

10 super.satzeintragen(new EdbModTagProtokollSatz(dbSatz)); // addsatz // Wird aus dem Add-Button (widgetselected-listener) aufgerufen // ergänze neuen Satz im edbmodtagprotokollcur // Zudem wird der Satz in jedem Viewer eingetragen, der angemeldet ist public void addsatz(string insbls, float inmenge, int ingerichtnr, int inmahlzeitnr) { EdbModTagProtokollSatz satz = null; satz = new EdbModTagProtokollSatz(0, // ID this.userid, // User-ID this.datum, // Datum inmahlzeitnr, // Mahlzeiten-Nr insbls, // SBLS inmenge, // Menge ingerichtnr); // GerichtNr super.satzeintragen(satz); Iterator iterator = changelisteners.iterator(); while (iterator.hasnext()) { IEdbModTagProtokollViewer viewer; viewer = (IEdbModTagProtokollViewer) iterator.next(); // Eintrag Satz auf Viewer-Ebene (Methode aus ContendProvider) viewer.addsatz(satz); // ruft tableviewerger.add(satz) // removesatz // Wird aus dem Delete-Button (widgetselected-listener) aufgerufen // Der übergebene Satz wird aus Cursor und Db gelöscht // Zudem wird der Satz aus jedem Viewer gelöscht, der angemeldet ist satz */ public void removesatz(edbmodtagprotokollsatz satz) { super.satzloeschendb(satz); // löscht Satz in Db und aus Cursor Iterator iterator = changelisteners.iterator(); while (iterator.hasnext()) { IEdbModTagProtokollViewer viewer; viewer = (IEdbModTagProtokollViewer) iterator.next(); // Löschung Satz auf Viewer-Ebene (Methode aus ContendProvider) viewer.removesatz(satz); // ruft tableviewerger.remove(satz) // satzchanged // Wird durch den CellModifier aufgerufen // Die übergebene Instanz des Satzes ist bereits geändert // Löst den Update des Satzes in jedem Viewer aus, der angemeldet ist satz */ public void satzchanged(edbmodtagprotokollsatz satz) { Iterator iterator = changelisteners.iterator(); while (iterator.hasnext()) { IEdbModTagProtokollViewer viewer; viewer = (IEdbModTagProtokollViewer) iterator.next(); // Update Satz auf Viewer-Ebene (Methode aus ContendProvider) viewer.updatesatz(satz); // ruft tableviewerger.update(satz,null)

11 // removechangelistener // Aufruf durch dispose() sowie inputchangend() der ContentProvider- // Implementierung // Übergeben wird die (auf IEdbModTagProtokollViewer gecastete) Instanz des // ContentProvider. In changelisteners ist eine Referenz auf diese Instanz // gespeichert. Diese Referenz wird entfernt. viewer */ public void removechangelistener(iedbmodtagprotokollviewer viewer) { changelisteners.remove(viewer); // addchangelistener // Aufruf durch inputchangend() der ContentProvider-Implementierung // Übergeben wird die (auf IEdbModTagProtokollViewer gecastete) Instanz des // ContentProvider. In changelisteners wird eine Referenz auf diese Instanz // gespeichert. Diese Referenz steht stellvertretend für einen angemeldeten Viewer. viewer */ public void addchangelistener(iedbmodtagprotokollviewer viewer) { changelisteners.add(viewer); // Class EdbModTagProtokollSatz // Model-Ebene für Viewer zur Bearbeitung von DB-Tabelle TagProtokoll // Klasse repräsentiert eine Datensatz aus TagProtokoll // Die Klasse ist eine Erweiterung zur allgemeinen DB-Zugriffsklasse DbSatz // First Created on tbauer // TB Abschluss Ersterstellung public class EdbModTagProtokollSatz extends DbSatz { // ergänzend dazu gelesene Daten private String skt; // Lebenmittelbezeichnung private float gp; // Standard-Portionsgröße private float zf; // Fettanteil private float zw; // Wasseranteil // Konstruktor // Erzeugt einen neuen Datensatz (Daten für die Felder werden übergeben) inid inuserid indatum inmahlzeitnr insbls inmenge_gr ingerichtnr */ public EdbModTagProtokollSatz(int inid, int inuserid, String indatum, int inmahlzeitnr, String insbls, float inmenge_gr, int ingerichtnr) { // DbSatz-Instanz anlegen super(edbmodtagprotokollcur.tabname, "TABELLE"); // Zusatzwerten ermitteln und Klassenvariablen damit füllen this.leszusatzwerte(insbls, ingerichtnr);

12 // Feld ID eintragen int id = inid; if (inid == 0) { id = DbZugTagProtokoll.maxID() + 1; DbFeld feldid = new DbFeld("ID", EdbModTagProtokollCur.TABNAME, id, false, java.sql.types.integer); super.feldeintragen(feldid); // Feld UserID eintragen // Satz in Datenbank eintragen super.insertsatzindb(null); // Konstruktor // Erzeugt aus einer DbSatz-Instanz einen neue EdbModTagProtokoll-Instanz public EdbModTagProtokollSatz(DbSatz indbsatz) { // DbSatz-Instanz anlegen super(edbmodtagprotokollcur.tabname, "TABELLE"); // Feldliste aus übergebenen Satz übernehmen super.feldlisteeintragen(indbsatz.getfeldliste(), "", ""); // Zusatzwerten ermitteln und Klassenvariablen damit füllen String sbls = indbsatz.getfeld("sbls", "", "").getstringwert(); this.leszusatzwerte(sbls, 0); // leszusatzwerte // lese Zusatzwerte und speichere in Klassenvariablen private void leszusatzwerte(string insbls, int ingerichtnr) { // ergänzende Werte if (insbls!= null && (!insbls.equals(""))) { // Lese Lebenmittel ein // Lese nur Felder SBLS,SKT,ZF,ZE,ZK,ZW,GPUSER,GCAL // Lese zu Key(SBLS) ohne order by / Exception, wenn keine Daten String[] arrfelder = { "SBLS", "SKT", "ZF", "ZE", "ZK", "ZW", "GPUSER", "GCAL" ; DbCursor cur = new DbZugBLS_DATEN(2, 0, "NODAT_EXCEP", arrfelder, insbls, "", ""); DbSatz satz = cur.getfirstsatz(); // SKT: Lebensmittelbezeichnung this.skt = satz.getfeld("skt", "", "").getstringwert(); // ZF: Fettanteil this.zf = satz.getfeld("zf", "", "").getfloat(); // ZW: Wasseranteil this.zw = satz.getfeld("zw", "", "").getfloat(); if (ingerichtnr > 0) { // wenn gerichtnr > 0, dann verwende für durchschnittl. Portionsgröße // den Wert aus GerichtPositionen // Lesen zu Primary Key (GerichtNr, SBLS) ohne order by // Exception, wenn keine Daten cur = new DbZugGericht_Positionen(2, 0, "", ingerichtnr, insbls); satz = cur.getfirstsatz(); this.gp = satz.getfeld("menge", "", "").getfloat(); else { // GP: durchschnittliche Portionsgröße

13 this.gp = satz.getfeld("gpuser", "", "").getfloat(); else { this.skt = ""; this.gp = 0; this.zf = 0; this.zw = 0; // Getter auf die Feldwerte TagProtokoll.ID */ public int getid() { return super.getfeld("id", "", "").getint(); TagProtokoll.UserID */ public int getuserid() { return super.getfeld("userid", "", "").getint(); // Setter für die Feldwerte inid */ public void setid(int inid) { super.getfeld("id", "", "").setwert(inid); inuserid */ public void setuserid(int inuserid) { super.getfeld("userid", "", "").setwert(inuserid);

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Android Java Specifics / Basic IO

Android Java Specifics / Basic IO Dalvik virtual machine Registermaschine anstelle einer Stackmaschine Optimiert für geringen Speicherverbrauch Umwandlung von.class Dateien in.dex-format mit Hilfe von dx Jedes Programm läuft als eigener

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

PostgreSQL unter Debian Linux

PostgreSQL unter Debian Linux Einführung für PostgreSQL 7.4 unter Debian Linux (Stand 30.04.2008) von Moczon T. und Schönfeld A. Inhalt 1. Installation... 2 2. Anmelden als Benutzer postgres... 2 2.1 Anlegen eines neuen Benutzers...

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

Mehr

Ralf Eggert. Zend Framework 2. Das Praxisbuch

Ralf Eggert. Zend Framework 2. Das Praxisbuch Ralf Eggert Zend Framework 2 Das Praxisbuch 7.4 Ein Anwendungsmodul entwickeln 7.3.7 Weitere Konfigurationen Der Modul-Manager ermöglicht auch die Konfiguration weiterer Elemente, für die entsprechende

Mehr

Übungen zur Android Entwicklung

Übungen zur Android Entwicklung Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

Ein Manager mit CardLayout layout/cards.java

Ein Manager mit CardLayout layout/cards.java 201 Copyright 1996-1998 by Axel T. Schreiner. All Rights Reserved. Ein Manager mit CardLayout layout/cards.java CardLayout dient vor allem zum Aufbau von Inspektoren: In der gleichen Fläche soll je nach

Mehr

Object Relational Mapping Layer

Object Relational Mapping Layer Object Relational Mapping Layer Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS PHP (propel) 1/18 Propel - Persistance Layer OR-Mapper für PHP Portierung

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Datensatzhistorie mit dem SQL Server 2000 und 2005 Datensatzhistorie mit dem SQL Server 2000 und 2005-2 - Inhalt

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Vorlesung im Herbstwintersemester 2007. Autorisierte studentisch Lösungen zu Aufgabenblatt 2

Vorlesung im Herbstwintersemester 2007. Autorisierte studentisch Lösungen zu Aufgabenblatt 2 Praktische Informatik I Vorlesung im Herbstwintersemester 2007 Autorisierte studentisch Lösungen zu Aufgabenblatt 2 zusammengestellt von Iva Tsvetkova 9.10.2007 1.Präsenzaufgaben 1.1 Entwurf einer Verwaltung

Mehr

Java Tipps für Lehrer. Table des matières. Einleitung

Java Tipps für Lehrer. Table des matières. Einleitung Java Tipps für Lehrer Table des matières Einleitung..1 Tipp 1: Gültige Objekte erzeugen.2 Tipp 2: Objekte nicht wiederverwenden.3 Tipp 3: Direkt auf die eigenen Attribute zugreifen4 Tipp 4: Ausgabe-Strings

Mehr

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer

Selbststudium OOP5 21.10.2011 Programmieren 1 - H1103 Felix Rohrer Kapitel 4.1 bis 4.3 1. zu bearbeitende Aufgaben: 4.1 4.1: done 2. Was verstehen Sie unter einem "Java-Package"? Erweiterungen verschiedener Klassen welche in Java benutzt werden können. 3. Sie möchten

Mehr

4 Vererbung, Polymorphie

4 Vererbung, Polymorphie 4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

Klassendefinitionen verstehen

Klassendefinitionen verstehen Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen

Mehr

Schnittstellen implementieren am Beispiel Suchbaum

Schnittstellen implementieren am Beispiel Suchbaum Motivation Informatik mit Java und BlueJ Schnittstellen implementieren am Beispiel Suchbaum von Bernhard Rosing Schreiben Sie eine Klasse Person, deren Instanzen in ein TreeSet (Suchbaum) eingefügt werden

Mehr

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

Primitive Datentypen

Primitive Datentypen Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.

Mehr

Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems

Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Android Persistenz Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 3 besprechen (inkl. Repetition) Die wichtigsten

Mehr

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung Inhalt Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle Daten und Tabellen Normalisierung, Beziehungen, Datenmodell SQL - Structured Query Language Anlegen von Tabellen Datentypen (Spalten,

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

5 Projekt Bankverwaltung

5 Projekt Bankverwaltung Kapitel 5 Bankverwaltung (Lösung) Seite 1/7 5 Projekt Bankverwaltung 5.1 Festlegen der Schnittstelle Bevor du mit der Programmierung beginnst, musst du dir einige Gedanken über die Schnittstelle zwischen

Mehr

Objektrelationale, erweiterbare Datenbanken WS 04/05

Objektrelationale, erweiterbare Datenbanken WS 04/05 Eidgenössische Technische Hochschule Zürich Swiss Federal Institute of Technology Zurich Institut für Informationssysteme Dr.C.Türker Objektrelationale, erweiterbare Datenbanken WS 0405 Übung 8 Aufgabe

Mehr

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Performance Tuning mit @enterprise

Performance Tuning mit @enterprise @enterprise Kunden-Forum 2005 Performance Tuning mit @enterprise Herbert Groiss Groiss Informatics GmbH, 2005 Inhalt Datenbank RMI JAVA API HTTP Konfiguration Analyse Groiss Informatics GmbH, 2005 2 Datenbank

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung Matthias Bethke bethke@linguistik.uni-erlangen.de Linguistische Informatik Universität Erlangen-Nürnberg Sommersemester

Mehr

// Zeigt den insgesamt einbezahlten Betrag auf der Bank. // Muss 1600 GE sein. System.out.println("Current Bank balance: " + b.

// Zeigt den insgesamt einbezahlten Betrag auf der Bank. // Muss 1600 GE sein. System.out.println(Current Bank balance:  + b. / Testtreiberklasse, welche das Bankensystem testet. Es werden neue Bankkonten angelegt und Geld deponiert, abgehoben und transferiert. public class Main { / Main Methode fuehrt bestimmte Testfaelle aus.

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel FB Physikalische Technik Musterlösungen Teil 4 Aufgabe 1 package teil4; import javax.swing.*; public class Ei { int haltung, ident; String

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Einführung in ActionScript

Einführung in ActionScript Fachbereich Mathematik und Informatik Softwareprojekt: Spieleprogrammierung Einführung in ActionScript Do, Hoang Viet(do@mi.fu-berlin.de) Freie Universität Berlin, SoSe 2012 Agenda Allgemeine Einführung

Mehr

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index!

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index! 1/40 PHP-User-Group Stuttgart 14.01.2009 Warum Datenbanken einen Hals bekommen und was sich dagegen tun lässt. Tuning und Performancesteigerung ohne zusätzliche Hardware. Ein. Loblied auf den Tabellen-Index!

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 11. Objektorientierung

Grundlagen der Programmierung Prof. H. Mössenböck. 11. Objektorientierung Grundlagen der Programmierung Prof. H. Mössenböck 11. Objektorientierung Klasse = Daten + Methoden Beispiel: Positionsklasse class Position { private int x; private int y; void goleft() { x = x - 1; void

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

5. Threads, Serverprozesse und Benachrichtigungen

5. Threads, Serverprozesse und Benachrichtigungen 5. Threads, Serverprozesse und Benachrichtigungen Threads allgemein Threads in Android: Handler und Messages Services: Local, Remote, Binding Benachrichtigungen Entwicklung mobiler Anwendungen Europäische

Mehr

Java Desktop Anwendungen

Java Desktop Anwendungen 5 1 Java Desktop Anwendungen das Problem: Desktop-Anwendungen werden mit Hilfe der Swing- Bibliothek programmiert, aber die Swing-Bibliothek ist riesig und unübersichtlich es gab kein Programmiergerüst

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:

Mehr

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel ORM & OLAP Object-oriented Enterprise Application Programming Model for In-Memory Databases Sebastian Oergel Probleme 2 Datenbanken sind elementar für Business-Anwendungen Gängiges Datenbankparadigma:

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

Mehr

Arrays Fortgeschrittene Verwendung

Arrays Fortgeschrittene Verwendung Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung

Mehr

Software Engineering Klassendiagramme weiterführende Konzepte

Software Engineering Klassendiagramme weiterführende Konzepte Software Engineering Klassendiagramme weiterführende Konzepte Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Klassenattribut: static Implementierung in Java public

Mehr

C# - PROGRAMME MIT PLUGINS ERWEITERN

C# - PROGRAMME MIT PLUGINS ERWEITERN C# - PROGRAMME MIT PLUGINS ERWEITERN Schreibt man ein Programm welches erweiterbar sein soll, dann gibt es häufig mehrere Möglichkeiten dies umzusetzen. Die Objektorientierung ist dabei der erste Schritt,

Mehr

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org)

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Dynamische Plug-ins mit Eclipse 3 Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Überblick Die Ausgangslage Dynamische Plug-ins Warum? Eclipse 3 Die OSGi-basierte

Mehr

Selbststudium OOP4 Auftrag

Selbststudium OOP4 Auftrag Selbststudium OOP4 Auftrag Kapitel 3.6 1. Wie deklarieren Sie eine Referenzvariable? Mit new z.b. Student studenta = new Stundent( Meier ); 2. Zeichnen Sie das Objektdiagramm zum BlueJ Picture Projekt

Mehr

Software-Architektur Design Patterns

Software-Architektur Design Patterns Design Patterns Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides: Design Patterns:

Mehr

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

EclipseLink. JPA mit. Plus CD! 3.09. Eclipse RCP >> 72. Spring Dynamic Modules >> 12. Eclipse SOA >> 80. Neue Serie: Eclipse-Business-Modelle >> 78

EclipseLink. JPA mit. Plus CD! 3.09. Eclipse RCP >> 72. Spring Dynamic Modules >> 12. Eclipse SOA >> 80. Neue Serie: Eclipse-Business-Modelle >> 78 3.09 Österreich Plus CD! Neue Serie: Eclipse-Business-Modelle >> 78 Deutschland 9,80 Österreich 10,80, Schweiz CHF 19,20 Weitere Infos S. 3 >> Bonusartikel Eclipse DataBinding für die Kommunikation zwischen

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9c: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

Begleitskript. zum PHP/MySQL. Kurs

Begleitskript. zum PHP/MySQL. Kurs Begleitskript zum PHP/MySQL Kurs http://www.online-platform.net Dieser Text unterliegt der GNU General Public License. Er darf als ganzes oder in Auszügen kopiert werden, vorausgesetzt, dass sich dieser

Mehr

Installation MySQL Replikationsserver 5.6.12

Installation MySQL Replikationsserver 5.6.12 Ergänzen Konfigurationsdatei my.ini auf Master-Server:!!! softgate gmbh!!! Master und Slave binary logging format - mixed recommended binlog_format = ROW Enabling this option causes the master to write

Mehr

Java - Programmierung - Objektorientierte Programmierung 1

Java - Programmierung - Objektorientierte Programmierung 1 Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1

Mehr

Schritt 4: Hallo Enterprise Bean

Schritt 4: Hallo Enterprise Bean Prof. Dr. Th. Letschert FB MNI JEE Schritt 4: Hallo Enterprise Bean Einstieg: EJBs erzeugen und nutzen Meine erstes EJB Projekt Enterprise Beans sind eine Backend Technologie, die mit unterschiedlichen

Mehr

C++-Zusammenfassung. H. Schaudt. August 18, 2005

C++-Zusammenfassung. H. Schaudt. August 18, 2005 C++-Zusammenfassung H. Schaudt August 18, 2005 1 Datentypen 1.1 Grunddatentypen int (-32xxx bis +32xxx, implementerungs-abhängig) char -128 bis +128 float double bool (C++) int und char sind austauschbar:

Mehr

Generische Datenstrukturen

Generische Datenstrukturen Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Softwaretechnologie, Prof. Uwe Aßmann 1 2 Trends in der Softwareentwicklung

Mehr

5.6 Vererbung. Vererbung

5.6 Vererbung. Vererbung 5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug

Mehr

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten

Mehr

CORBA Implementierung von Client und Server

CORBA Implementierung von Client und Server CORBA Implementierung von Client und Server J. Heinzelreiter WS 2003/04 Implementierung des Clients Initialisierung und Freigabe des ORBs. Mapping von Interfaces. Behandlung von Objektreferenzen. Verwaltung

Mehr

Theorie und Praxis einer JSON-RPC-basierten Web-API

Theorie und Praxis einer JSON-RPC-basierten Web-API Theorie und Praxis einer JSON-RPC-basierten Web-API Christian Krause Christian.Krause@raritan.com Raritan Deutschland GmbH Chemnitzer LinuxTage 2015 Gliederung 1 2 Remote Procedure Call Interface Definition

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 7. Grafische Benutzeroberflächen 1 Kapitel 7 Ziele 2 (Graphical User Interfaces) als Anwendungsbeispiel für die objektorientierte Programmierung kennenlernen Benutzung von Vererbung zur Erstellung individueller GUI-Klassen durch Erweiterung

Mehr

Valion Consulting AG Implementing Better Solutions Monbijoustrasse 20 CH-3011 Bern +41 (0)31 328 10 10 www.valionconsulting.ch

Valion Consulting AG Implementing Better Solutions Monbijoustrasse 20 CH-3011 Bern +41 (0)31 328 10 10 www.valionconsulting.ch Valion Consulting AG Implementing Better Solutions Monbijoustrasse 20 CH-3011 Bern +41 (0)31 328 10 10 www.valionconsulting.ch i ii iii 1 2 3 4 5 6 7 8 Presentation Reporting Business 9 Presentation Business

Mehr

2.4.3 Polymorphie (Wiederholung von Alp2)

2.4.3 Polymorphie (Wiederholung von Alp2) 2.4.3 Polymorphie (Wiederholung von Alp2) Sparbuch einsparbuch = new Sparbuch(3.0); Konto einkonto; KontoDrucker = new KontoDrucker(); KontoDrucker.setzeKonto(einSparbuch); einkonto = einsparbuch; Wie

Mehr

Assoziation und Aggregation

Assoziation und Aggregation Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben

Mehr

16 SQL Server-Zugriff per VBA

16 SQL Server-Zugriff per VBA Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 16 SQL Server-Zugriff per VBA Sie werden an verschiedenen Stellen per VBA auf die Tabellen der SQL Server-Datenbank zugreifen müssen sei

Mehr

Praktikum Internetprotokolle - POP3

Praktikum Internetprotokolle - POP3 Technische Universität Ilmenau Fakultät für Informatik und Automatisierung Institut für Praktische Informatik und Medieninformatik Fachgebiet Telematik/Rechnernetze 19. Mai 2008 1 Aufgabenstellung Praktikum

Mehr

Übung 1: Ein Website News-System mit MySQL

Übung 1: Ein Website News-System mit MySQL Übung 1: Ein Website News-System mit MySQL In der Vorübung haben wir bereits mit Hilfe eines ERMs den Datenbankentwurf erstellt und daraus die folgenden Tabellen abgeleitet: Nun muss diese Datenbank in

Mehr

JSF Erstellen einer einfachen Bankanwendung mit Kontoübersicht und Überweisung

JSF Erstellen einer einfachen Bankanwendung mit Kontoübersicht und Überweisung Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski JSF Erstellen einer einfachen Bankanwendung mit Kontoübersicht und Überweisung Dipl.

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr