> Vererbung, Die Austauschbarkeit

Größe: px
Ab Seite anzeigen:

Download "> Vererbung, Die Austauschbarkeit"

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 {...

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

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

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

Mehr

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

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

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

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

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

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

Mehr

Einführung in die Java- Programmierung

Einfü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

Mehr

Prinzipien Objektorientierter Programmierung

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

Mehr

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

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

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das 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:

Mehr

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

5. 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:

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

Bauteilattribute als Sachdaten anzeigen

Bauteilattribute 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...

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet 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

Mehr

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. 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

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen 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

Mehr

5. Abstrakte Klassen

5. 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,

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester 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

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

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

SEP 114. Design by Contract

SEP 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

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte 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

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. 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

Mehr

GetName(), GetName(), GetGeschlecht() und AelterWerden().

GetName(), 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

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binä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

Mehr

Folge 18 - Vererbung

Folge 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,

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

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

Mehr

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

13. Tutorium zu Programmieren

13. 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

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

Grundlagen von Python

Grundlagen 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

Mehr

3. Konzepte der objektorientierten Programmierung

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

Mehr

Client-Server-Beziehungen

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

Mehr

Objektbasierte Entwicklung

Objektbasierte 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

Mehr

Software Engineering Klassendiagramme Assoziationen

Software 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

Mehr

Objektorientiertes JavaScript

Objektorientiertes JavaScript Objektorientiertes JavaScript Christoph Fabritz dm121506@fhstp.ac.at http://goo.gl/jzqxnw Inhalt JavaScript Objektorientierung OO in JavaScript Literatur JavaScript Interpretiert / gescriptet Dynamische

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 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,

Mehr

Anleitung über den Umgang mit Schildern

Anleitung ü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

Mehr

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlö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

Mehr

1 Mathematische Grundlagen

1 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.

Mehr

Mediator 9 - Lernprogramm

Mediator 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

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (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

Mehr

Klassendiagramm. Kurzer Überblick über UML - Stand 2006. BlaBla

Klassendiagramm. 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

Mehr

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Erstellen 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

Mehr

Code 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 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

Mehr

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

PHP 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

Mehr

Einfü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 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

Mehr

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Workshop 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

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

.NET Code schützen. Projekt.NET. Version 1.0

.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

Mehr

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Anleitung 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

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

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Xcode/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,

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten 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

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle 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

Mehr

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Vererbung. 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,

Mehr

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses 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

Mehr

Software Engineering Interaktionsdiagramme

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

Mehr

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

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

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der 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.

Mehr

8 Design Patterns. Events

8 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

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung 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

Mehr

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Das 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

Mehr

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

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

Mehr

icloud nicht neu, aber doch irgendwie anders

icloud 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

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

Primzahlen und RSA-Verschlüsselung

Primzahlen 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 !"# $ " %& 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

Mehr

Um ein solches Dokument zu erzeugen, muss eine Serienbriefvorlage in Word erstellt werden, das auf die von BüroWARE erstellte Datei zugreift.

Um 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

Mehr

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

Punkt 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

Mehr

Lineare Gleichungssysteme

Lineare 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

Mehr

Installationsanleitung CLX.PayMaker Home

Installationsanleitung 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

Mehr

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Fassade. 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

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern

Mehr

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

GEORG.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

Mehr

Abschnitt 9: Schnittstellen: Interfaces

Abschnitt 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

Mehr

E-Mail-Inhalte an cobra übergeben

E-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?

Mehr

1. Einführung 2. 2. Erstellung einer Teillieferung 2. 3. Erstellung einer Teilrechnung 6

1. 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

Mehr

EINFACHES HAUSHALT- KASSABUCH

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

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

OO Softwareentwicklung

OO 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

Mehr

Was meinen die Leute eigentlich mit: Grexit?

Was 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?

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie 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,

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java 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

Mehr

Factory Method (Virtual Constructor)

Factory 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

Mehr

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

Flyer, 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

Mehr

Printserver und die Einrichtung von TCP/IP oder LPR Ports

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

Mehr

Leichte-Sprache-Bilder

Leichte-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

Mehr

Bilder zum Upload verkleinern

Bilder 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

Mehr

ACHTUNG: Es können gpx-dateien und mit dem GP7 aufgezeichnete trc-dateien umgewandelt werden.

ACHTUNG: 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

Mehr

Catherina Lange, Heimbeiräte und Werkstatträte-Tagung, November 2013 1

Catherina 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

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik 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,

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 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...

Mehr

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

40-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

Mehr

Zählen von Objekten einer bestimmten Klasse

Zä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 --

Mehr

EinfÅ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 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