> Vererbung, Die Austauschbarkeit
|
|
- Vincent Hauer
- vor 8 Jahren
- Abrufe
Transkript
1 Objektorientierte Programmierung (OOP) > Vererbung, Die Austauschbarkeit Mark Egloff
2 Lernziel Heute Abend > Sie lernen wie Objekte gezielt kompatibel werden und somit ausgetauscht werden können > Sie verstehen die Begriffe wie Polymorphie, Überschreibung und Schnittstelle > Sie können eigene Objektmodelle erarbeiten bei denen Teile einfach ausgetauscht werden können Mark Egloff
3 Vererbung und Austauschbarkeit Was bedeutet Austauschbarkeit bei Objekten? > Ein Ziel heutiger Softwarentwicklung ist es die Architektur flexibel zu halten. Dies bedingt, dass die Objekte bzw. die Klassen untereinander austauschbar sind > Ein Objekt besitzt bestimmte Eigenschaften, wenn also Klassen ausgetauscht werden, so muss die neue Klasse alle Eigenschaften der alten Klasse aufweisen bzw. übernehmen um die Kompatibilität zu gewährleisten > Die Vererbung bietet hierzu die ideale Grundlage. Klassen welche voneinander abgeleitet sind, besitzen identische Eigenschaften und sind somit kompatibel zueinander Mark Egloff
4 Vererbung und Austauschbarkeit Warum Austauschbarkeit? > Flexibilität Die Anforderungen ändern ständig, was Gestern noch vereinbart wurde, ist Morgen eventuell nicht mehr so. Bestehende Software muss also schnell geändert werden können > Wiederverwendung Wenn Teile austauschbar sind erhöht sich auch deren Wiederverwendungsgrad > Plug-in Prinzip Neue Funktionalität soll einfach hinzu gestöpselt werden können, wobei die bestehende Grundapplikation nicht angepasst werden muss Mark Egloff
5 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Oft hat man in einer Applikation dieselben Anforderungen aber für verschiedene Objekte z.b. grafische Darstellung. Das Problem lässt sich dann nicht elegant lösen und man macht copy-paste Quadrat Dreieck Zeichnungs Appl Kreis Mark Egloff
6 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Die Objekte sind ähnlich. Sie besitzen zum Teils identische Eigenschaften aber auch nur ähnliche Kreis Dreieck Quadrat radius mittelpunkt farbe draw() punkta, punktb, punktc mittelpunkt farbe draw() seite mittelpunkt farbe draw() Identische & Ähnliche Eigenschaften Mark Egloff
7 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Lösungsansatz: Alle identischen Eigenschaften werden in eine Basisklasse Figur ausgelagert. Trotzdem besitzt jede Figur weiterhin eine ähnliche Methode draw() die aber für jede unterschiedlich ist Figur mittelpunkt farbe Kreis Dreieck Quadrat radius punkta, punktb, punktc seite draw() draw() draw() Ähnliche Eig. Mark Egloff
8 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Kreis & Quadrat haben eine unterschiedliche draw() Methode > Dieser Methodenaufruf muss im Fenster hier 2 mal bzw. für jede Figurart unterschiedlich implementiert werden Figur mittelpunkt farbe radius draw() Kreis Quadrat benützt draw() Zeichnungs Appl seite draw() draw() Mark Egloff
9 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Für jede Figur müssen wir ein Attribut und ein Methodenaufruf implementieren class ZeichnungsAppl extends Frame { private Kreis kreis; private Quadrat quad; 2 Datentypen } public void paint(graphics g) { kreis.draw(g); quad.draw(g); } 2 x Methodenaufruf Mark Egloff
10 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Einer geht ja immer noch. Mit jeder neuen Figurart wird die Zeichnungsapplikationsklasse grösser und ständig unhandlicher Dreieck Viereck benützt Vieleck Quadrat Oval Rhombus Diamant Kreis Bild Freihand ZeichnungsAppl Mark Egloff
11 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Wunsch: Im Prinzip ist es doch egal welche Figurenart es ist, sie soll einfach aufgezeichnet werden > In einem solchen Fall reden wir von Generalisierung. Das hier vorliegende Problem soll mittels Austauschbarkeit gelöst werden Zeichnungs Appl draw() draw() Spezialisierte Figur Generelle Figur Mark Egloff
12 Vererbung und Austauschbarkeit Das Substitutionsprinzip (1/4) Rückwärtskompatibilität > Bei Vererbung haben wir gesehen, dass Klassen von anderen Klassen ihre Eigenschaften erben können. Somit sind abgeleitete Klassen kompatibel zu deren Basisklassen. > Diese Regel wurde in bei den Referenzen berücksichtigt. Ein Objekt bzw. seine Referenz kann den Typ der Basisklasse annehmen. Die Referenz ist rückwärtskompatibel z.b.: Rückwärtskompatibilität bei Vererbung Kreis k1 = new Kreis(); Figur f1 = k1; Figur f2 = new Quadrat(); Kreis k2 = new Figur(); Kreis Quadrat Compilerfehler Figur Mark Egloff
13 Vererbung und Austauschbarkeit Das Substitutionsprinzip (2/4) Rückwärtskompatibilität > Wird das Objekt einer Referenz der Basisklasse zugewiesen, benimmt sich das Objekt wie wenn es eine Instanz der Basisklasse wäre > Es kann zu diesem Zeitpunkt nicht mehr direkt auf die speziellen Eigenschaften des Objektes zugegriffen werden z.b.: Aufruf spezieller Eigenschaften so nicht mehr möglich Kreis k = new Kreis(); Figur f = k; f.setradius( 2.5f ) ); Kreis Compilerfehler Figur Mark Egloff
14 Vererbung und Austauschbarkeit Das Substitutionsprinzip (3/4) explizites Casting > Der Compiler gestattet bei komplexen Datentypen nur die Rückwärtskompatibilität als direkte Typumwandlung > Will man dennoch eine Referenz absichtlich einen anderen Typ zuweisen so muss dies mit einem expliziten Casting geschehen Der Interpreter überwacht ob die Typen kompatibel sind und löst eine ClassCastException aus falls nicht. Falsches Casting ist der 2. meiste Laufzeitfehler!!! z.b.: Explizites Casting bei komplexen Datentypen Figur f = new Kreis(); Kreis k = (Kreis) f; funktioniert aber gefährlich Quadrat q = (Quadrat) f; Laufzeitfehler!!! Mark Egloff
15 Vererbung und Austauschbarkeit Das Substitutionsprinzip (4/4) instanceof Operator > bietet einen Operator um zu prüfen vom welchen Typ das hinterlegte Objekt tatsächlich ist, den instanceof Operator. > Dieser sollte immer eingesetzt werden bevor ein explizites Casting durchgeführt wird. Syntax: booleanvalue = ReferenzName instanceof ClassName z.b.: Rückwärtskompatibilität bei Vererbung Figur f = new Kreis(); if ( f instanceof Kreis ) { System.out.print("Ich bin ein Kreis, Casting ok"); Kreis k = (Kreis) f; } Mark Egloff
16 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Das Substitutionsprinzip erlaubt uns schon den ersten Teil zu lösen. Trotzdem können wir es noch nicht ganz vereinfachen Dreieck Viereck Vieleck Quadrat Oval Rhombus Diamant Kreis Freihand Pattern? Figur benützt Zeichnungs Appl Mark Egloff
17 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Wir können zwar nun jede Figur mit dem gleichen Typ handhaben, müssen aber immer noch explizit Casten class ZeichnungsAppl extends Frame { private Figur f; nur noch 1 Datentyp public void paint(graphics g) { if ( f instanceof Kreis)(f (Kreis)).draw(g); if ( f instanceof Quadrat)(f (Quadrat)).draw(g); } } Immer noch 2 x Methodenaufruf Mark Egloff
18 Vererbung und Austauschbarkeit Der Polymorphismus (1/4) > Um das Prinzip der Austauschbarkeit und Kompatibilität zu vervollständigen wurde in der Objektorientierung ein weiterer Mechanismus eingeführt, der Polymorphismus > Polymorph = vielgestaltig ( mehrere Formen ) > Biologie: Unterschiedliche Formen von Lebewesen derselben Art > Chemie: Stoffe die abhängig der Umgebung verschiedene Formen annehmen z.b. Aggregatszustand > In der OO Welt bedeutet es, dass stets die konkrete Eigenschaft des Objektes aufgerufen wird, auch dann wenn das Objekt vorgibt von einer anderen Klasse bzw. Typ zu sein Mark Egloff
19 Vererbung und Austauschbarkeit Der Polymorphismus (2/4) Überschreibung v. Methoden > Von Überschreibung reden wir dann, wenn in der Basisklasse sowie in der abgeleiteten Klasse dieselben Eigenschaften nochmals definiert werden z.b.: Überschreibung der Methode umfang() u. draw() class Figur { public float umfang() {...} public void draw(graphics g) {...} } class Kreis extends Figur { public float umfang() {...} public void draw(graphics g) {...} } Mark Egloff
20 Vererbung und Austauschbarkeit Der Polymorphismus (3/4) Überschreibung v. Methoden > Es stellt sich nun die Frage, was passiert wenn im Falle der Substitution eine überschriebene Eigenschaft aufgerufen wird? z.b.: Aufruf der Methode umfang() Figur f = new Figur(); f.umfang(); Kreis k = new Kreis(); k.umfang(); Figur.umfang() Kreis.umfang() Figur f2 = new Kreis(); // substitution f2.umfang();??? In einem solchen Fall wird immer die Methode des eigentlichen Typs aufgerufen Kreis.umfang() Mark Egloff
21 Vererbung und Austauschbarkeit Der Polymorphismus (4/4) Überschreibung v. Methoden > Das Prinzip des Polymorphismus ist der Schlüssel zu flexiblen Softwarearchitekturen > Die Basisklasse bildet eine grundlegende Schnittstelle, wobei die abgeleiteten Klassen sich nachher anstöpseln können > Man spricht auch von dynamic, late oder runtime binding da erst zur Laufzeit entschieden wird welche Funktionalität aufgerufen wird PluginA method() Interface method() Application PluginB method() method() Mark Egloff
22 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Wir wenden nun das Prinzip des Polymorphismus auf unsere Zeichnungsapplikation an. Die Methode draw() wird in allen FigurKlassen implementiert Kreis radius draw() Quadrat seite Figur mittelpunkt farbe draw() benützt draw() Zeichnungs Appl draw() Mark Egloff
23 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Nun können wir jedes Figur-Objekt als Figur handhaben und sich selber aufzeichnen lassen. Die Zeichnungsapplikation weiss nun nicht mehr das es spezielle Figurarten gibt class ZeichnungsAppl extends Frame { private Figur f; nur noch 1 Datentyp public void paint(graphics g) { } } f.draw(g); nur noch 1 Methodenaufruf Mark Egloff
24 Vererbung und Austauschbarkeit Der Polymorphismus Vorgehen bei der Umsetzung 1. Identifikation eines Musters wo ständig ähnliche Eigenschaften verschiedener Objekte verwendet werden 2. Gemeinsame Basisklasse schaffen 3. Dieselbe Eigenschaften in allen verwandten Klassen überschreiben 4. Anstelle der abgeleiteten Klassen nur noch die Basisklasse in der Applikation verwenden Mark Egloff
25 Vererbung und Austauschbarkeit Der Polymorphismus weitere Beispiele > Polymorphismus eignet sich überall dort wo eine gemeinsame Schnittstelle geschaffen werden muss, jedoch unterschiedliche Variationen / Ausprägungen existieren > z.b. Dateisystem: File, Verzeichnis, ZipDatei, TARDatei > z.b. Eingabeaufforderung: Alle Befehle wie copy, delete, move > z.b. Verschlüsselung: verschiedene Algorithmen wie DES, RSA > z.b. Multimedia: Player Applikation für MP3, WMA, MPEG, DIVX > Mark Egloff
26 Objektorientierte Programmierung (OOP) > Vererbung, Abstrakte Klassen und Interfaces Mark Egloff
27 Lernziel Heute Abend > Sie verstehen die Begriffe wie abstrakte Klassen, abstrakte Methoden und Interfaces und wofür diese eingesetzt werden > Sie wissen wie Schnittstellen bei Objekten erzwungen werden können > Sie können eigene Schnittstellen erzeugen und diese für abgeleitete Klassen vorgeben Mark Egloff
28 Abstrakte Klassen und Interfaces Warum Schnittstellen? > Dank Schnittstellen sind wir in der Lage Softwareteile abzuspalten und austauschbar zu halten > Man kann eine Schnittstelle als einen Vertrag ansehen der genau vorgibt was ich erfüllen muss um sie zu nutzen bzw. die Kompatibilität zu gewährleisten > In der OO besteht eine Schnittstelle ebenfalls aus einem Datentyp z.b. Klasse und deren Methoden. Um den Vertrag zu erfüllen, muss ich eine Klasse gemäss dessen Aufbau erzeugen und die Methoden überschreiben Mark Egloff
29 Abstrakte Klassen und Interfaces Warum Schnittstellen? > Problem: Wie weiss das bestehende System meine Klasse zu nutzen? A funca() B MyClass funcb() System? myfunc() C funcc() D funcb() dem System unbekannt Schicht Mark Egloff
30 Abstrakte Klassen und Interfaces Warum Schnittstellen? > Lösung: erzwingen von Implementationen mittels der Vorgabe einer Schnittelle z.b. durch Interfaces oder abstrakte Klassen A funca() Interface MyClass B funcb() System InterfaceD myfunc() func1() C func1() func2() func2() D funcc() funcb() dem System bekannt Schicht dem System unbekannt Schicht Mark Egloff
31 Abstrakte Klassen und Interfaces Warum Schnittstellen? z.b. Interface mittels Vererbung, das Applet- Framework Interface java.applet.* Applet Figur draw() FigurenApplet Rechteck seitea seiteb draw() Kreis radius draw() init() paint() Init() paint() Browser Aufbau interessiert Programmierer nicht Vertrag Programmierer Aufbau interessiert Browser nicht Mark Egloff
32 Abstrakte Klassen und Interfaces Leere Methoden, die die Schnittstelle vorgeben > Wenn wir eine Schnittstelle vorgeben wollen, so haben wir bis jetzt eine leere Methode in der Basisklasse implementiert, die dann in den abgeleiteten Klassen überschrieben wird. Diese Vorgabe von Schnittstellen kann man aber nun gezielter lösen. > In gibt es dazu zwei Konzepte: abstrakte Klassen und Schnittstellen (engl. interfaces). z.b.: Beispiel leere draw() Methode class Figur { } public void draw(graphics g) { } Mark Egloff
33 Abstrakte Klassen und Interfaces Modifizierer abstract bei Klassen > Mittels dem abstract kann in eine Klasse bzw. eine Methode als abstrakt definiert werden > Eine solche definierte Abstrakte Klasse kann nicht mehr instanziert werden, dient nur noch als Basisklasse. z.b.: Abstrakte Klasse Figur abstract class Figur { public void draw(graphics g) { } } z.b.: Instanzierung einer abstrakten Klasse endet in Compilerfehler Figur f = new Figur(); Compilerfehler Mark Egloff
34 Abstrakte Klassen und Interfaces Modifizierer abstract bei Methoden (1/2) > Bei Methoden bedeutet abstract dass diese Methode keine Implementation besitzt, also leer ist > Zusätzlich wird aber nun erzwungen, dass diese Methode in abgeleiteten Klassen implementiert werden muss > Damit erreichen wir die Vorgabe einer Schnittstelle. Jeder der von meiner Klasse erben möchte, muss diese Methode implementieren > Abstrakte Methoden können nur innerhalb von abstrakten Klassen definiert werden Mark Egloff
35 Abstrakte Klassen und Interfaces Modifizierer abstract bei Methoden (2/2) z.b.: abstrakte Methode in Basisklasse erzwingt implementation abstract class Figur { abstract public void draw(graphics g); } class Kreis extends Figur { } Compilerfehler class Kreis extends Figur { public void draw(graphics g) {... } } Mark Egloff
36 Abstrakte Klassen und Interfaces Handhabung von abstrakten Methoden > Wenn wir von einer Klasse abstrakte Methoden erben, so haben wir zwei Möglichkeiten 1. Wir überschreiben alle abstrakten Methoden und implementieren sie. 2. Wir überschreiben die abstrakte Methode nicht. Das bedeutet: Eine abstrakte Methode bleibt in unserer Klasse, und unsere Klasse muss wiederum abstrakt sein Mark Egloff
37 Abstrakte Klassen und Interfaces Interfaces (Schnittstellen) (1/3) > Das Konzept der abstrakten Klassen und Methoden wurde weiter entwickelt, daraus entstand das Konzept der Schnittstellen > Eine Schnittstelle (interface) enthält keine Implementierungen, sondern nur Namen und Signaturen der enthaltenen Methoden. > Ein Interface kann wie eine abstrakte Klasse nicht instanziert werden > Eine Schnittstelle wird in wie eine Klasse implementiert, man verwendet anstelle von class nun aber interface z.b.: Interface Drawable in Datei Drawable.java interface Drawable { public void draw(graphics g); } Mark Egloff
38 Abstrakte Klassen und Interfaces Interfaces (Schnittstellen) (2/3) > Möchte eine Klasse eine Schnittstelle verwenden, so folgt hinter dem Klassennamen das Schlüsselwort implements und dann der Name der Schnittstelle. > Die Klasse verpflichtet sich nun alle Methoden der Schnittstelle zu implementieren. Sie darf aber dafür jederzeit als Instanz der Schnittstelle angesehen zu werden. > Eine Klasse darf mehrere Schnittstellen implementieren z.b.: Interface Drawable in Klasse Kreis implementieren class Kreis implements Drawable { public void draw(graphics g) {...} } Mark Egloff
39 Abstrakte Klassen und Interfaces Interfaces (Schnittstellen) (3/3) z.b.: Handhabung eines Kreis-Objektes als Instanz der Schnittstelle Kreis k = new Kreis(); Drawable d = k; d.draw(g); > Wenn eine Klasse eine Schnittstelle implementiert, redet man oft dass Sie einen Service unterstützt. Man sieht auch oft direkt im Code dass eine Instanz geprüft wird ob Sie eine Schnittstelle bzw. Service unterstützt. z.b.: Prüfen ob Service unterstützt wird und Aufruf der Funktionalität Object o =...; if ( o instanceof Service) ((Service)o).callService(); Mark Egloff
40 Abstrakte Klassen und Interfaces Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Wir können nun anstelle der Basisklasse Figur ein Interface Drawable schaffen, somit trennen wir die draw() Funktionalität von der Basisklasse. Figur mittelpunkt farbe Kreis radius draw() Quadrat Drawable draw() benützt draw() Zeichnungs Appl seite draw() Mark Egloff
41 Vererbung und Austauschbarkeit Problem einer Zeichnungsapplikation Unterschiedliche Figuren mit gleichen Eigenschaften > Die Zeinungsapplikation prüft ob jede Figurinstanz den Service Drawable unterstützt und wenn ja ruft sie den Service auf z.b.: Figuren auf Service-Unterstützung Drawable prüfen class ZeichnungsAppl extends Frame { private Figur[] farray; public void paint(graphics g) { for (int i=0; i<farray.length; i++) }} if ( farray[i] instanceof Drawable) ((Drawable)fArray[i]).draw(g); Überprüfen u. aufrufen Mark Egloff
42 Objektorientierte Programmierung (OOP) > Vererbung, java.lang.object Mark Egloff
43 Lernziel Heute Abend > Sie lernen die Basisklasse aller Objekte kennen java.lang.object > Sie wissen wie Objekte in verglichen und kopiert werden > Sie können eigene Klassen schreiben in denen die Grundfunktionen genutzt werden Mark Egloff
44 Die Basisklasse java.lang.object Object ist die Mutter aller Oberklassen > In sind alle Klassen implizit von der Klasse java.lang.object abgeleitet > Somit spielt diese Klasse eine ganz besondere Rolle, da alle anderen Klassen automatisch Unterklassen sind und die Methoden erben beziehungsweise überschreiben > Diese Klasse bietet einige wichtige Grundfunktionalitäten sowie Schnittstellen um mit Objekten bzw. deren Referenzen zu arbeiten Mark Egloff
45 Die Basisklasse java.lang.object Methoden der Klasse java.lang.object Methode getclass() hashcode() equals(object) tostring() notify() notifyall() wait(int) clone() finalize() Beschreibung Gibt die Klasse des Objektes zurück Gibt den Identifikationscode des jeweiligen Objekts zurück Vergleicht sich selbst mit einem anderen Objekt und gibt true oder false zurück Gibt eine String Repräsentation des Objekts zurück Sperrt sich selber oder gibt sich selber als Semaphore wieder frei, benötigt für die Synchronisation mit Threads Gibt eine Kopie von sich selber zurück, muss überschrieben werden Destruktor Methode, wird beim Aufruf des GC ausgeführt Mark Egloff
46 Die Basisklasse java.lang.object Alles ist ein Object > Obwohl extends java.lang.object nicht explizit bei der Klassendeklaration aufgeführt ist, werden alle Klassen implizit von Object vererbt > Die meisten Methoden von Object können direkt verwendet werden. Einige müssen jedoch zuerst überschrieben werden > Alle Referenzen können vom Typ Object gehandhabt werden z.b.: Aufruf der vererbten Methode tostring() Kreis k = new Kreis(); System.out.println( k.tostring() ); Kreis@67315 z.b.: Kreisobjekt als java.lang.object handhaben Object o = new Kreis(); Mark Egloff
47 Die Basisklasse java.lang.object Überschreiben der Methode tostring() (1/2) > Die Methode tostring() gibt eine String Repräsentation des Objektes zurück > Standardmässig gibt die Methode den Klassennamen sowie den HashCode des Objektes zurück. Diese beiden Angaben identifizieren das Objekt > Leider helfen diese Angaben wenig um die Objekte selber zu identifizieren. Diese Methode wird deshalb oft überschrieben z.b.: Aufruf der herkömmlichen Methode tostring() Kreis k = new Kreis(); System.out.println( k.tostring() ); Kreis@67315 Mark Egloff
48 Die Basisklasse java.lang.object Überschreiben der Methode tostring() (2/2) z.b.: Überschreiben der Methode tostring() class Kreis { private float radius; public Kreis(float radius){ this.radius = radius; } public String tostring() { return "Kreis: radius = " + radius; } } z.b.: Aufruf der Methode tostring() Kreis k = new Kreis(2.5f); System.out.println( k.tostring() ); Kreis: 2.5 Mark Egloff
49 Die Basisklasse java.lang.object Aufruf der Methode tostring() (1/2) > ruft bei String Verknüpfungen (mittels + ) automatisch selber die tostring() Methode der Objekte auf z.b.: String Verknüpfung ruft tostring() auf Kreis k = new Kreis(2.5f); String s = "Kreis " + k; ruft k.tostring() auf Mark Egloff
50 Die Basisklasse java.lang.object Aufruf der Methode tostring() (2/2) > System.out.println() ist eine überladene Methode, sie akzeptiert auch Referenzen des Typs java.lang.object als Parameter. Man kann Ihr daher alles übergeben und sie ruft dann intern selber die tostring() Methode auf. z.b.: Übergabe als Object und Aufruf der tostring() Methode class PrintStream {... public String println(object obj) { return obj.tostring(); }} z.b.: Impliziter Aufruf der Methode tostring() Kreis k = new Kreis(); System.out.println( k ); ruft k.tostring() auf Mark Egloff
51 Die Basisklasse java.lang.object Objekte vergleichen (1/3) > Um 2 Objekte miteinander zu vergleichen, wird die Methode equals() verwendet. Diese Methode muss für seine eigenen Klassen überschrieben werden. Die vererbte equals() Methode aus Object vergleicht lediglich die Referenzen und daher nicht brauchbar! z.b.: Vergleich 2er String Objekte String s1 = new String("Hallo"); String s2 = new String("Hallo"); boolean a = s1 == s2; false!! boolean b = s1.equals(s2); true Mark Egloff
52 Die Basisklasse java.lang.object Objekte vergleichen (2/3) > Eine eigene equals() Methode zu schreiben ist nicht ganz einfach und kann aufwendig werden (Abhängig von der Grösse und Spezialitäten der jeweiligen Klasse) Kleines Kochrezept: 1. Übergebene Referenz darf nicht null sein 2. Überprüfen ob Referenz auf sich selber zeigt (optional) 3. Überprüfen ob Referenz vom Typ der Klasse ist 4. Casting der Referenz auf Typ der Klasse 5. Überprüfen der einzelnen Attribute. Für jedes Feld gilt > falls Attribut vom elementarer Datentyp == verwenden > falls komplexes Attribut, equals() Methode des Attributs aufrufen 6. Falls nötig die equals() Methode der Basisklasse aufrufen Mark Egloff
53 Die Basisklasse java.lang.object Objekte vergleichen (3/3) z.b.: Überschreiben der Methode equals() class Kreis { private float radius;... public boolean equals(object o) { if ( o == null) return false; if (o == this) return true; if (!(o.getclass().equals(this.getclass()))) return false; if (((Kreis)o).radius!= this.radius) return false; return true; } } Mark Egloff
54 Die Basisklasse java.lang.object Objekte kopieren (1/4) > Um Objekte zu kopieren dient die clone() Methode > Standardmässig ist die clone() Methode geschützt und kann nicht für eigene Klassem verwendet werden. Hier müssen wir erst eine eigene clone() Methode schreiben z.b.: Falsches und Richtiges Kopieren eines String Objektes String s1 = new String("Hallo"); String s2 = s1; String copyofs1 =(String) s1.clone(); keine Kopie! Richtige Kopie Mark Egloff
55 Die Basisklasse java.lang.object Objekte kopieren (2/4) > Die clone() Methode zu verwenden ist nicht trivial. SUN hat hier ein Konzept eingebaut welches man befolgen muss > Die java.lang.object.clone() Methode kopiert standardmässig nur alle Attribute von elementaren Datentypen. Komplexe Attribute müssen selber kopiert werden > Die clone() Methode gibt Object zurück. Man muss danach jeweils casten Kleines Kochrezept: 1. Bei der Klassendeklaration implements Cloneable hinzufügen 2. Methode clone() überschreiben, mit Rückgabetyp Object 3. Neue Instanz erzeugen mit super.clone() und casten 4. Falls nötig noch komplexe Attribute kopieren Mark Egloff
56 Die Basisklasse java.lang.object Objekte kopieren (3/4) z.b.: Überschreiben der Methode clone() class Kreis implements Cloneable { private float radius;... public Object clone() { Kreis kclone = (Kreis) super.clone(); return kclone; } } z.b.: Anwenden der Methode clone() Kreis k1 = new Kreis(2.5f); Kreis k2 = (Kreis) k1.clone(); Mark Egloff
57 Die Basisklasse java.lang.object Objekte kopieren (4/4) > Mit diesem Konzept haben wir die Wahl was für unsere Objekte kopiert werden soll. Dies kann die Effizienz stark beeinflussen. > Man spricht auch von Flacher oder Tiefer Kopie > Flache Kopie nur die wesentlichsten Attribute, die zum Objekt selber gehören, werden kopiert erste Hierarchie > Tiefe Kopie alle Attribute werden kopiert Alle Hierarchien > Würde die Angabe des Interfaces Cloneable bei der Klassendeklaration weggelassen, wird der Aufruf der Methode clone() in eine CloneNotSupportedException enden z.b.: Aufruf der Methode clone() endet in Exception Kreis k1 = new Kreis(2.5f); Kreis k2 = (Kreis) k1.clone(); CloneNotSupportedException Mark Egloff
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:
MehrObjektorientierte 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/
MehrProgrammieren 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
MehrVorkurs 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:
MehrEinfü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
MehrKapitel 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
MehrJava: 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
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrPrinzipien 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........................
MehrObjektorientierte 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
MehrKapitel 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
MehrDas Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala
Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:
Mehr5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel Beispiel (3) Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Probleme des Implementierungsvorschlags:
MehrKapitel 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
MehrBauteilattribute als Sachdaten anzeigen
Mit den speedikon Attributfiltern können Sie die speedikon Attribute eines Bauteils als MicroStation Sachdaten an die Elemente anhängen Inhalte Was ist ein speedikon Attribut?... 3 Eigene Attribute vergeben...
MehrVererbung & 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
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
Mehr7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
Mehr5. Abstrakte Klassen
5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,
MehrWintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22
Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften
MehrObjektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
MehrObjektorientierte 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)
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrObjektorientierte Programmierung für Anfänger am Beispiel PHP
Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten
MehrLineargleichungssysteme: Additions-/ Subtraktionsverfahren
Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als
MehrDatensicherung. Beschreibung der Datensicherung
Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten
MehrGetName(), GetName(), GetGeschlecht() und AelterWerden().
11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer
MehrBinäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen
Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders
MehrFolge 18 - Vererbung
Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,
MehrJava 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
Mehr4 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
Mehr13. Tutorium zu Programmieren
13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting
Mehr3 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
MehrGrundlagen von Python
Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren
Mehr3. 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
MehrClient-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
MehrObjektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrObjektorientiertes JavaScript
Objektorientiertes JavaScript Christoph Fabritz dm121506@fhstp.ac.at http://goo.gl/jzqxnw Inhalt JavaScript Objektorientierung OO in JavaScript Literatur JavaScript Interpretiert / gescriptet Dynamische
Mehr13 OOP MIT DELPHI. Records und Klassen Ein Vergleich
13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,
MehrAnleitung über den Umgang mit Schildern
Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder
MehrMusterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9
Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung
Mehr1 Mathematische Grundlagen
Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.
MehrMediator 9 - Lernprogramm
Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop
MehrZwischenablage (Bilder, Texte,...)
Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen
MehrKlassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla
BlaBla Diese Kennzeichnungen sind nur Erläuterungen und nicht Bestandteil des Diagramms Quelle: P.Grässle, H.Baumann, P.Baumann, UML projektorientiert, Galileo Verlag, 2003 21 Primäre Begriffe Kapselung
MehrErstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])
3.7 Erstellen einer Collage Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu]) Dann Größe des Dokuments festlegen beispielsweise A4 (weitere
MehrCode wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum
MehrPHP Aufbaukurs. Tag 3. PHP5 & Klassen
PHP Aufbaukurs Tag 3. PHP5 & Klassen Organisatorisches 2 Igor Olkhovskiy Dr. Dipl.- Ing. Kontakt: olkhovskiy@rrzn.uni-hannover.de PHP Aufbaukurs 19.09.2006 Folie 2 PHP. OOP. Geschichte 3 PHP/FI ( PHP 1
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrWorkshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ
IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler
MehrJava 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.NET Code schützen. Projekt.NET. Version 1.0
.NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll
MehrAnleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung
Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In
MehrDrei-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
MehrXcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X
Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X SwissMacMeeting #1 26. Juni 2004 Messeturm Basel http://mac.naepflin.com Was ist das Ziel dieses Kurses? Starthilfe Einblick in die Möglichkeiten,
MehrArbeiten mit UMLed und Delphi
Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf
MehrProfessionelle Seminare im Bereich MS-Office
Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion
MehrVererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.
Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,
MehrDieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.
Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html
MehrSoftware Engineering Interaktionsdiagramme
Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)
MehrVIII: 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:
MehrDer Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.
Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.
Mehr8 Design Patterns. Events
8 Design Patterns. Events Jörn Loviscach Versionsstand: 28. März 2015, 19:13 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work
MehrComputeranwendung und Programmierung (CuP)
Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag
MehrDas sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert
Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das
MehrEinfü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
Mehricloud nicht neu, aber doch irgendwie anders
Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und
Mehr1 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
MehrPrimzahlen und RSA-Verschlüsselung
Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also
Mehr! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006
!"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst
MehrUm ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.
Briefe Schreiben - Arbeiten mit Word-Steuerformaten Ab der Version 5.1 stellt die BüroWARE über die Word-Steuerformate eine einfache Methode dar, Briefe sowie Serienbriefe mit Hilfe der Korrespondenzverwaltung
MehrPunkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software
Wie erzeugt man ein Fotobuch im Internet bei Schlecker Seite Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software Punkt 12 bis 24: -Wir arbeiten mit der Software 8-16 -Erstellung
MehrLineare Gleichungssysteme
Lineare Gleichungssysteme 1 Zwei Gleichungen mit zwei Unbekannten Es kommt häufig vor, dass man nicht mit einer Variablen alleine auskommt, um ein Problem zu lösen. Das folgende Beispiel soll dies verdeutlichen
MehrInstallationsanleitung CLX.PayMaker Home
Installationsanleitung CLX.PayMaker Home Inhaltsverzeichnis 1. Installation und Datenübernahme... 2 2. Erste Schritte Verbindung zur Bank einrichten und Kontoinformationen beziehen... 4 3. Einrichtung
MehrFassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing
Fassade Objektbasiertes Strukturmuster C. Restorff & M. Rohlfing Übersicht Motivation Anwendbarkeit Struktur Teilnehmer Interaktion Konsequenz Implementierung Beispiel Bekannte Verwendung Verwandte Muster
MehrObjektorientierte Programmierung
Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern
MehrGEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY
GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY Vorteile der Verwendung eines ACTIVE-DIRECTORY Automatische GEORG Anmeldung über bereits erfolgte Anmeldung am Betriebssystem o Sie können sich jederzeit als
MehrAbschnitt 9: Schnittstellen: Interfaces
Abschnitt 9: Schnittstellen: Interfaces 9. Schnittstellen: Interfaces 9.1 Die Idee der Schnittstellen 9.2 Schnittstellen in Java 9.3 Marker-Interfaces 9.4 Interfaces und Hilfsklassen 9.5 Zusammenfassung
MehrE-Mail-Inhalte an cobra übergeben
E-Mail-Inhalte an cobra übergeben Sie bieten ihren potentiellen oder schon bestehenden Kunden über ihre Website die Möglichkeit, per Bestellformular verschiedene Infomaterialien in Papierform abzurufen?
Mehr1. Einführung 2. 2. Erstellung einer Teillieferung 2. 3. Erstellung einer Teilrechnung 6
Inhalt 1. Einführung 2 2. Erstellung einer Teillieferung 2 3. Erstellung einer Teilrechnung 6 4. Erstellung einer Sammellieferung/ Mehrere Aufträge zu einem Lieferschein zusammenfassen 11 5. Besonderheiten
MehrEINFACHES HAUSHALT- KASSABUCH
EINFACHES HAUSHALT- KASSABUCH Arbeiten mit Excel Wir erstellen ein einfaches Kassabuch zur Führung einer Haushalts- oder Portokasse Roland Liebing, im November 2012 Eine einfache Haushalt-Buchhaltung (Kassabuch)
MehrApplet 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
MehrOO Softwareentwicklung
OO Softwareentwicklung Objektorientierung Prof. Dr. Bernhard Schiefer 1 OO als Ansatz zur Verbesserung der Software-Qualität Modellierung der Welt als selbständig agierende Objekte. Gemeinsame Beschreibung
MehrWas meinen die Leute eigentlich mit: Grexit?
Was meinen die Leute eigentlich mit: Grexit? Grexit sind eigentlich 2 Wörter. 1. Griechenland 2. Exit Exit ist ein englisches Wort. Es bedeutet: Ausgang. Aber was haben diese 2 Sachen mit-einander zu tun?
MehrWie halte ich Ordnung auf meiner Festplatte?
Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,
MehrJava Kurs für Anfänger Einheit 4 Klassen und Objekte
Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse
MehrFactory Method (Virtual Constructor)
Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte
MehrFlyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen
Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Wir wollen, dass ihr einfach für eure Ideen und Vorschläge werben könnt. Egal ob in ausgedruckten Flyern, oder in sozialen Netzwerken und
MehrPrintserver und die Einrichtung von TCP/IP oder LPR Ports
Printserver und die Einrichtung von TCP/IP oder LPR Ports In der Windowswelt werden Drucker auf Printservern mit 2 Arten von Ports eingerichtet. LPR-Ports (Port 515) oder Standard TCP/IP (Port 9100, 9101,9102)
MehrLeichte-Sprache-Bilder
Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen
MehrBilder zum Upload verkleinern
Seite 1 von 9 Bilder zum Upload verkleinern Teil 1: Maße der Bilder verändern Um Bilder in ihren Abmessungen zu verkleinern benutze ich die Freeware Irfan View. Die Software biete zwar noch einiges mehr
MehrACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.
Track in Route umwandeln ACHTUNG: Ein Track kann nur dann in eine Route umgewandelt werden, wenn der Track auf Wegen gefahren wurde. Ein Querfeldein-Track kann nicht in eine Route umgewandelt werden, da
MehrCatherina Lange, Heimbeiräte und Werkstatträte-Tagung, November 2013 1
Catherina Lange, Heimbeiräte und Werkstatträte-Tagung, November 2013 1 Darum geht es heute: Was ist das Persönliche Geld? Was kann man damit alles machen? Wie hoch ist es? Wo kann man das Persönliche Geld
MehrFachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer
Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,
MehrInhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER
AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...
Mehr40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.
40-Tage-Wunder- Kurs Umarme, was Du nicht ändern kannst. Das sagt Wikipedia: Als Wunder (griechisch thauma) gilt umgangssprachlich ein Ereignis, dessen Zustandekommen man sich nicht erklären kann, so dass
MehrZählen von Objekten einer bestimmten Klasse
Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --
MehrEinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2
EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0 EDV Kurs 13/2 Inhaltsverzeichnis 1 Objekte... 1 2 Klassen... 3 2.1 Beziehungen zwischen Klassen... 4 2.1.1 Vererbung... 4 2.1.2
Mehr