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);

Mi. 12. Nov. 2003 WA73 - R. 0611. Projekt Software Engeneering 2003/04. SWT & JFace. Norman Thomas Rogowski

Mi. 12. Nov. 2003 WA73 - R. 0611. Projekt Software Engeneering 2003/04. SWT & JFace. Norman Thomas Rogowski Mi. 12. Nov. 2003 WA73 - R. 0611 Projekt Software Engeneering 2003/04 SWT & JFace Norman Thomas Rogowski Was ist SWT? Standard Widget Toolkit Baut auf native Oberfläche auf Aussehen entspricht exakt dem

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am

Mehr

Softwaretechnik WS 16/17. Übungsblatt 01

Softwaretechnik WS 16/17. Übungsblatt 01 Softwaretechnik WS 16/17 Übungsblatt 01 Was ist eine Klasse? Definition der Object Management Group: A class describes a set of objects that share the same specifications of features, constraints, and

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Java Einführung Abstrakte Klassen und Interfaces

Java Einführung Abstrakte Klassen und Interfaces Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer

Mehr

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

188.154 Einführung in die Programmierung für Wirtschaftsinformatik

188.154 Einführung in die Programmierung für Wirtschaftsinformatik Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger

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

Ü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

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme 8. Übung zur Vorlesung Datenbanksysteme WS 08/09 Musterlösung Aufgabe 8-1: SQLJ //

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

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

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6

Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011. Übungen zur Vorlesung Informatik II, Blatt 6 WS 2011/12 Fakultät Angewandte Informatik Programmierung verteilter Systeme 28.11.2011 Prof. Dr. Bernhard Bauer Übungen zur Vorlesung Informatik II, Blatt 6 Abgabe: Montag, 05.12.2011, 12.00 Uhr, Informatik

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Dateien lesen und schreiben 2 Übersicht der heutigen Inhalte File Streams try-with-resources Properties csv-dateien 3 Klasse File Die Klasse java.io.file bietet Unterstützung im Umgang

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung

Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung SS 2011 Fakultät für Angewandte Informatik Lehrprofessur für Informatik 15.06.2011 Prof. Dr. Robert Lorenz Betreutes Programmieren Vorlesung Informatik II, Blatt 7 Musterlösung Programmieraufwand für geübte

Mehr

JAVA KURS COLLECTION

JAVA KURS COLLECTION JAVA KURS COLLECTION COLLECTIONS Christa Schneider 2 COLLECTION Enthält als Basis-Interface grundlegende Methoden zur Arbeit mit Collections Methode int size() boolean isempty() boolean contains (Object)

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

Gebundene Typparameter

Gebundene Typparameter Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form

Mehr

Listing 1: Cowboy. Listing 2: Woody

Listing 1: Cowboy. Listing 2: Woody Musterlösung Test 3 Aufgabe 1: Cowboy Listing 1: Cowboy class Cowboy { public String rope ( Cowboy that ) { if ( this == that ) { return exclaim (); 5 else { return " Caught "; public String exclaim ()

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

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio 16.04.2015 1/9

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio 16.04.2015 1/9 BTree.dll Realisiert mit Microsoft Visual Studio 16.04.2015 1/9 INHALT 1. Allgemein... 3 2. Class BTree1 (balanciert)... 3 3. Class BTree2 (balanciert und verkettet)... 4 4. Beschreibung BTree1 und BTree2...

Mehr

von Anja Austermann Drag and Drop

von Anja Austermann Drag and Drop von Anja Austermann Drag and Drop »Drag and Drop«ist die Bezeichnung für den Datentransfer zwischen unterschiedlichen Anwendungen mit grafischer Benutzeroberfläche. Zur Zeit arbeitet Drag and Drop in Java

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

3. Persistenz und Datenbanken Content Providers. Content Providers. Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen

3. Persistenz und Datenbanken Content Providers. Content Providers. Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen Content Providers Generische Schnittstelle zum Zugriff auf Daten zwischen Anwendungen Entkopplung der Daten-Schicht von der Anwendungsschicht Zugriff erfolgt URI-basiert Kontrolle der Zugriffsrechte eingebaute

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

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

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

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren

Mehr

Übung 1: Object Inspector

Übung 1: Object Inspector Übung 1: Object Inspector Es ist ein System zu entwickeln, mit dem man Objektstrukturen bezüglich ihrer Properties analysieren und dann in einem Tree Viewer (JTree) anzeigen und bearbeiten kann. Properties

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

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

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18

Mehr

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

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

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

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 Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

Jürgen Bayer. MDI-Anwendungen in C#

Jürgen Bayer. MDI-Anwendungen in C# Jürgen Bayer MDI-Anwendungen in C# Inhaltsverzeichnis 1 Grundlagen 2 1.1 Einrichten der Formulare 2 1.2 Öffnen von MDI-Childformularen 3 2 Menüs 4 2.1 Erstellen eines Menüs 4 2.2 Programmierung der Menüpunkte

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

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Neue Features in C# 2.0

Neue Features in C# 2.0 Neue Features in C# 2.0 (gekürzt) Generische Typen Iteratoren Vereinfachte Delegate-Erzeugung Anonyme Methoden Partielle Klassen Sonstiges University of Linz, Institute for System Software, 2004 published

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Datenbanken für Online Untersuchungen

Datenbanken für Online Untersuchungen Datenbanken für Online Untersuchungen Im vorliegenden Text wird die Verwendung einer MySQL Datenbank für Online Untersuchungen beschrieben. Es wird davon ausgegangen, dass die Untersuchung aus mehreren

Mehr

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung

Beispiele für Ausdrücke. Der imperative Kern. Der imperative Kern. Imperativer Kern - Kontrollstrukturen. Deklarationen mit Initialisierung Beispiele für Ausdrücke Der imperative Kern Deklarationen mit Initialisierung Variablendeklarationen int i = 10; int j = 15; Beispiele für Ausdrücke i+j i++ i & j i j [] [static]

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

Ü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 Beans. http://java.sun.com/beans/

Java Beans. http://java.sun.com/beans/ Java Beans http://java.sun.com/beans/ Software Komponenten Eine Software Komponente ist ein eigenständiges, flexibles und einfach wieder verwendbares Stück Software. In Java: + Plattformunabhängigkeit

Mehr

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32

equals und hashcode SortedSet NavigableSet Assoziative Container Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32 Programmieren II Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2010 1 / 32 equals und hashcode SortedSet NavigableSet Assoziative Container 2 / 32 HashSet mit eigener Klasse Wie kann man einen

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

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

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

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

Kapitel 6. Vererbung

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

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2 Universität Osnabrück 1 3 - Objektorientierte Programmierung in Java Zur Erinnerung: Aufteilung der Schichten GUI Vorlesung 17: 3-Schichten-Architektur 2 Fachkonzept Fachkonzept - Datenhaltung Datenhaltung

Mehr

1 Abstrakte Klassen, finale Klassen und Interfaces

1 Abstrakte Klassen, finale Klassen und Interfaces 1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,

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

Klausur Grundlagen der Programmierung

Klausur Grundlagen der Programmierung Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel

Mehr

PROGRAMMIERUNG IN JAVA

PROGRAMMIERUNG IN JAVA PROGRAMMIERUNG IN JAVA ZUWEISUNGEN (1) Deklaration nennt man die Ankündigung eines Platzhalters (Variablen) und Initialisierung die erste Wertvergabe bzw. die konkrete Erstellung des Platzhalters. In einem

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Das Model View Controller (MVC) Konzept

Das Model View Controller (MVC) Konzept Das Model View Controller (MVC) Konzept Ziel: Erhöhung der Flexibilität und Reduktion der Komplexität von GUI-Programmen durch Standard- Struktur (MVC-Pattern). Geht zurück auf Smalltalk. View 1 View 2

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

Datenbankanwendungsprogrammierung Crashkurs Java

Datenbankanwendungsprogrammierung Crashkurs Java Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung

Mehr

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine

Mehr

Vererbung & Schnittstellen in C#

Vererbung & Schnittstellen in C# Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Allgemeine Hinweise:

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 12/13 Einführung in die Informatik I Wiederholungsklausur Prof. Dr. Helmut Seidl, A. Lehmann,

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische

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

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

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes

Mehr

Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread

Dezentrale Kontrolle: Aktive Objekte. Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Dezentrale Kontrolle: Aktive Objekte Aktive Objekte Die Klasse AnimatorThread Aktivierung Objekte beobachten Die Java-Klasse Thread Passive Objekte Bieten Dienste auf Abruf an: - eine Zahl von der Konsole

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE38-Generics (Stand 28.09.2012) Aufgabe 1: Schauen Sie sich die generischen Klassen des Paketes java.util an. Aufgabe 2: Ausgangslage sind die folgenden

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0 9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung

Mehr

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt

Institut für Programmierung und Reaktive Systeme 26. April 2013. Programmieren II. 10. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 26. April 2013 Programmieren II 10. Übungsblatt Hinweis: Insgesamt werden in diesem Semester fünf

Mehr

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler Programmieren für mobile Endgeräte SS 2013/2014 Programmieren für mobile Endgeräte 2 Informationen aus der Datenbank lesen Klasse SQLiteDatabase enthält die Methode query(..) 1. Parameter: Tabellenname

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit Aufgabe : Die allgemeine Object-Liste Gegeben sei folgendes UML-Klassendiagramm: MyObjectList

Mehr

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06

Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Musterlösung Übungsblatt 2 Netzprogrammierung WS 05/06 Aufgabe 1 Bitte schreiben Sie ein RMI Objekt, das eine Person repräsentiert. Es soll die folgende Schnittstelle implementieren: public interface Person

Mehr

Vorlesung 09: Mengen. Peter Thiemann SS 2010

Vorlesung 09: Mengen. Peter Thiemann SS 2010 Vorlesung 09: Mengen Peter Thiemann Universität Freiburg, Germany SS 2010 Peter Thiemann (Univ. Freiburg) JAVA 1 / 43 Inhalt Mengen HashSet LinkedHashSet CopyOnWriteArraySet EnumSet SortedSet NavigableSet

Mehr

Graphische Benutzeroberflächen mit Matlab

Graphische Benutzeroberflächen mit Matlab Graphische Benutzeroberflächen mit Matlab 1 Die Aufgabenstellung Erstellung einer Benutzeroberfläche für das Plotten einer Funktion f(x) im Intervall [a, b]. Bestandteile: 1. Koordinatensystem 2. Editorfelder

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

Programmieren 2 Java Überblick

Programmieren 2 Java Überblick Programmieren 2 Java Überblick 1 Klassen und Objekte 2 Vererbung 3 Schnittstellen 5 Exceptions 6 Funktionsbibliothek 7 Datenstrukturen und Algorithmen 8 Ein-/Ausgabe 9 Graphische Benutzeroberflächen 10

Mehr

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen Verkettete Listen Verwendung von Listen in Java Das Prinzip des Iterators Implementierung von einfach verketteten Listen Implementierung von doppelt verketteten Listen Informatik II: Objektorientierte

Mehr

Info B VL 8: Abstrakte Klassen & Interfaces

Info B VL 8: Abstrakte Klassen & Interfaces Info B VL 8: Abstrakte Klassen & Interfaces Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 8: Abstrakte

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