CS1005 Objektorientierte Programmierung

Größe: px
Ab Seite anzeigen:

Download "CS1005 Objektorientierte Programmierung"

Transkript

1 CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Objektorientierung II: Klassen und Objekte Klassen: Statische und dynamische Aspekte Objekt- und Klasseninitialisierung OO-Entwurf: statische und nicht-statische Komponenten Wert- und Referenz-Semantik Seite 1 Th Letschert

2 Statische Klassen Statische Klassen sind Klassen in denen alle Variablen und Methoden mit static markiert sind werden zur Realisierung von zwei Aspekten / Konzepten verwendet: Modul: Ein Programmteil mit definierter Schnittstelle und Implementierung. Objekt: Genau ein Objekt (das Klassen-Objekt) Datensatz mit zugeordneten Methoden (Funktionen) Beispiel Ein Telefonverzeichnis wird implementiert durch eine statische Klasse (statischer Aspekt) und ein Klassenobjekt (dynamischer Aspekt) Seite 2

3 Statische Klassen Beispiel Ein Telefonverzeichnis wird implementiert durch die Definition einer statischen Klasse und durch ein Objekt Statische Klasse statischer Aspekt (Modularisierung) dynamischer Aspekt Ein Objekt (das Klassen-Objekt) Eine Klassendefinition public class TelefonVerzeichnis { private TelefonVerzeichnis() { Ein Telefonverzeichnis im Quellcode private static String[] allenamen = new String[10]; private static int[] allenr = new int[10]; private static int letzterindex = -1; public static void eintrage(string name, int nr) { letzterindex = letzterindex+1; allenamen[letzterindex] = name; allenr[letzterindex] = nr; public static int suche(string name) { for (int i=0; i<=letzterindex; i++) { if (name == allenamen[i]) { return allenr[i]; return -1; Ein (Klassen-) Objekt TelefonVerzeichnis -1 letzterindex allenr allenamen Ein Telefonverzeichnis im Speicher Heap TelefonVerzeichnis.suche("Balder"); Seite 3

4 Statische Klassen Grenzen der statischen Klassen Ein Ding (z.b. ein Telefonbuch) kann problemlos mit einer statischen Klasse modelliert werden. Viele gleichartige Dinge (z.b. Personen) können nur schlecht mit einer statischen Klasse modelliert werden: Jedes einzelne Ding (z.b. jede Person) benötigt seine eigene Repräsentation Im Quellcode und Zur Laufzeit im Speicher Diese Repräsentationen sind zwar gleichartig aber nicht gleich Eine Klassendefinition und ein Klassen-Objekt kann aber nur eine Repräsentation verwalten Viele gleichartige Dinge (z.b. Personen) können aber gut mit einer Klasse-Definition modelliert werden: Alle Dinge haben die gleichen Attribute (Variablen), es reicht darum sie einmal in einer Klasse zu definieren Alle Dinge haben die gleichen Methoden, es reicht darum sie einmal in einer Klasse zu definieren Aber im Quellcode und im Speicher muss es viele geben können Seite 4

5 Statische Klasse / nicht statische Klasse Ein Ding (z.b. ein Telefonbuch): Statische Klassen Statisch / im Programmtext: eine (Klassen-) Definition repräsentiert das Ding im Quellcode Dynamisch / zur Laufzeit: ein (Klassen-) Objekt repräsentiert das Ding im Speicher Viele gleichartige Dinge (z.b. Personen) Nicht-Statische Klassen Statisch / im Programmtext: eine (Klassen-) Definition repräsentiert das Gemeinsame / die Art der Dinge im Quellcode beliebig viele Variablen und Parameter repräsentieren die verschiedenen Dinge im Quellcode Dynamisch / zur Laufzeit: ein (Klassen-) Objekt repräsentiert das Gemeinsame / die Art der Dinge im Speicher beliebig viele weitere Objekte repräsentieren die einzelnen Dinge im Speicher Seite 5

6 Statische Klasse / nicht statische Klasse Statische Klassen TelefonBuch Ein Klassen-Definition im Quelltext ein Klassen-Objekt zur Laufzeit Telefonbuch.add.. Programmcode (zur Entwicklungszeit) Nicht-Statische Klassen Telefonbuch.class Programmspeicher (zur Laufzeit) Karla Person Eine Klassen-Definition und viele zugehörige Variablen im Quelltext ein Klassen-Objekt und viele weitere Objekte zur Laufzeit Seite 6 hugo Person hugo.. Person karla.. hugo... karla... Person.class Programmcode (zur Entwicklungszeit) Programmspeicher (zur Laufzeit)

7 Nicht-Statische Klassen Beispiel: Personen als Klassen Es gibt beliebig viele Personen Aber jede Person hat einen Namen und einen Vornamen Klasse: Das was eine Person ausmacht Objekt: Exemplar der Klasse Person Kein static: beliebig viele Exemplare package personen; /** * Exemplare dieser Klasse repräsentieren Personen. */ public class Person { private String name; Woraus besteht private String vorname; jede Person public Person(String name, String vorname, String telefon) { this.name = name; Wie wird eine (jede) Person this.vorname = vorname; public String getname() { return this.name; public String getvorname() { return this.vorname; erzeugt Wie kommt man an die Informationen einer bestimmten Person Informationen zu einer Person als String. public String tostring() { return "Person [name=" + name + ", vorname=" + vorname + ", telefon=" + telefon + "]"; Seite 7 Kein static: Es gibt beliebig viele Variablen die name und vorname heißen und jeweils einer Person zugeordnet sind, getname und getname beziehen sich auf eine bestimmte Person. this.name : Der Name dieser Person.

8 Klassen: statische und nicht-statische Klassen Beispiel: Personen und Telefonverzeichnis Es gibt beliebig viele Personen Jede Person hat einen Namen und einen Vornamen package personen; public class Person { private String name; private String vorname; public Person(String name, String vorname) { this.name = name; this.vorname = vorname; public class TelefonVerzeichnis { public String getname() { return this.name; private TelefonVerzeichnis() { private static String[] allenamen = new String[10]; private static int[] allenr = new int[10]; private static int letzterindex = -1; public static void eintrage(string name, int nr) { letzterindex = letzterindex+1; allenamen[letzterindex] = name; allenr[letzterindex] = nr; public static int suche(string name) { for (int i=0; i<=letzterindex; i++) { if (name == allenamen[i]) { return allenr[i]; return -1; public String getvorname() { return this.vorname; Es gibt genau ein Verzeichnis Das Verzeichnis hat ein Namen-Array ein Nummern-Array und einen letzten Index Seite 8

9 Nicht-statische Klassen Objekte (Instanzen einer Klasse) erzeugen new Klassenname erzeugt ein Objekt der Klasse Klassenname public class PersonenErzeuger { public static void main(string[] args) { Person hugo = new Person("Balder", "Hugo"); Person karla = new Person("Kahl", "Karla"); Person egon = new Person("Napp", "Karl"); Konstruktor-Aufrufe mit new: Erzeugen und Initialisieren neuer Objekte. System.out.println(hugo.getVorname()); System.out.println(karla.getVorname()); System.out.println(egon.getVorname()); public class Person { private String name; private String vorname; Hugo Karla Karl public Person(String name, String vorname) { this.name = name; this.vorname = vorname; Ausgabe public String getname() { return this.name; Methoden-Aufrufe: nutzen die Daten ihres Objekts. hugo.getvorname() public String getvorname() { return this.vorname; Methoden-Aufruf: Objekt. Methode Aktiviere die Methode des Objekts Seite 9

10 Klassen Statischer (Quellcode-bezogener) Aspekt einer Klasse Klassendefinition Modul mit Schnittstelle und Implementierung Verwendung Klasse ~ Typ: Möglichkeit zur Definition von angepassten Variablen und Parametern über Variablen, Parameter und this kann auf Objekte zugegriffen werden Klasse als Argument für new: Anweisung zur Erzeugung von Objekten Person hugo public class Person { private String name; private String vorname; =... Person wird als Variablentyp verwendet public Person(String name, String vorname) { this.name = name; this.vorname = vorname; new Person("Balder", "Hugo"); Person wird mit new genutzt um die Erzeugung eines Objekts anzuweisen public String getname() { return this.name; hugo.getvorname() Über Variablen vom Typ Person kann auf Objekte der Klasse Person zugegriffen werden. public String getvorname() { return this.vorname; this.name Über this kann auf das aktuelle Objekt zugegriffen werden. Person ist ein Modul mit definierter Schnittstelle und Implementierung Seite 10

11 Klassen Dynamischer (Laufzeit- / Speicher-bezogener) Aspekt einer Klasse Klassen-Objekt Speicherbereich im Heap, enthält den Code der Klasse alle Klassen-Variablen = mit static definierte Variablen der Klasse Objekte Speicherbereiche im Heap, enthalten alle Objekt-Variablen = ohne static definierte Variablen der Klasse... public class Person { Das Klassenobjekt wird im Heap angelegt Person hugo Hugo =... Eine Variable vom Typ Person wird in Stack angelegt hugo... new Person("Balder", "Hugo"); Ein Objekt der Klasse Person wird im Heap angelegt Stack Seite 11 name vorname Person.class Heap Balder

12 Klassen (Nicht-Statische) Klasse statischer Aspekt dynamischer Aspekt Eine Klassendefinition beliebig viele Variablen, Parameter, newanweisungen, this-verwendungen Ein Klassen-Objekt beliebig viele weitere Objekte public class Person { private String name; private String vorname; public Person(String name, String vorname) { this.name = name; this.vorname = vorname; Der Typ der Personen public String getname() { return this.name; Hugo name vorname Balder im Quellcode Karla name vorname public String getvorname() { return this.vorname; Heap Stack p1 public class PErzeuger { public static void main(string[] args) { Person p1 = new Person("Balder", "Hugo"); Person p2 = new Person("Kahl", "Karla"); Person p3 = new Person("Napp", "Karl"); Variablen und Parameter vom Typ Person, new-anweisungen, Zugriffe auf Objekte im Quellcode (p1, p2, p3, this) Seite 12 p2 p3 Kahl Karl name vorname Person.class Ein Klassen-Objekt Napp PErzeuger.class Weitere Objekte

13 Klassen Der this-zeiger this zeigt auf das aktuelle Objekt jede nicht-statische Methode hat eine Variable mit dem Namen this sie wird mit einem Zeiger auf das Objekt belegt für das die Methode aufgerufen wurde objekt. methode ( Parameter ) Objekt für das methode aufgerufen wurde public static void main(string[] args) { Person p1 = new Person("Balder", "Hugo"); String s = p1.getname() Stack vorname Beispiel: Situation zum Zeitpunkt des Aufrufs des Konstruktors Stackframe des Konstruktors Heap... name Hugo this name vorname Stackframe von main p1 Seite Balder

14 Klassen Der this-zeiger public static void main(string[] args) { Person p1 = new Person("Balder", "Hugo"); String s = p1.getname() Stack Heap... Beispiel: Situation zum Zeitpunkt des Aufrufs von getname Stackframe von getname Stackframe von main Hugo this name vorname p1 Seite Balder

15 Klassen: statische und nicht statische Klassen Beispiel Personalverzeichnis: Personen + Verzeichnis UserInterface Modularisierung Modul 1: UserInterface (statische Klasse) Verzeichnis Kommunikation mit dem Benutzer Modul 2: Verzeichnis (statische Klasse) Person Organisation der Einträge Programmcode (zur Entwicklungszeit) Modul 3: Person (nicht-statische Klasse) Informationen zu einer Person Objektorientierung Objekte Nicht statische Klasse: Beliebig viele Exemplare (Instanzen / Objekte) zur Laufzeit 2 Klassenobjekte UserInterface.class Verzeichnis.class + 3 Objekte: Statische Klasse: Genau ein Exemplar zur Laufzeit hugo Daten zur Person Hugo karla Daten zur Person Karla egon Daten zur Person Egon Person Person Hugo Karla Person Egon Person Verzeichnis UserInterface Klassen-Objekte Seite 15 Programmspeicher (zur Laufzeit)

16 Klassen: statische und nicht statische Klassen Beispiel Personalverzeichnis / Programmcode 1 UserInterface package beispiel; import javax.swing.joptionpane; Verzeichnis public class UserInterface { public static void main(string[] args) { Person Person hugo = new Person("Balder", "Hugo"); Person karla = new Person("Kahl", "Karla"); Person egon = new Person("Napp", "Egon"); Konstruktor-Aufruf Verzeichnis.trageEin(1, hugo); Verzeichnis.trageEin(2, karla); Verzeichnis.trageEin(4, egon); Klasse. Methode Programmcode (zur Entwicklungszeit) JOptionPane.showMessageDialog(null, "Fertig, alle drei eingetragen!"); String hugosname = hugo.getname(); Objekt. Methode JOptionPane.showMessageDialog(null, "hugo heisst " + hugosname); package beispiel; import java.util.hashmap; import java.util.map; public class Verzeichnis { private static Map<Integer, Person> personen = new HashMap<Integer, Person>(); public static void trageein(int key, Person person) { personen.put(key, person); Seite 16

17 Klassen: statische und nicht statische Klassen Beispiel Personalverzeichnis / Programmcode 2 UserInterface package beispiel; Verzeichnis public class Person { private String name; private String vorname; Woraus besteht jede Person public Person(String name, String vorname, String telefon) { this.name = name; this.vorname = vorname; Wie wird eine (jede) Person erzeugt public String getname() { return this.name; public String getvorname() { return this.vorname; Wie kommt man an die Informationen einer bestimmten Person Seite 17 Person Programmcode (zur Entwicklungszeit)

18 Klassen: statische und nicht statische Klassen Dynamik: Speicherzustand kurz vor Programmende Balder name Hugo vorname name Kahl vorname Karla name Napp vorname Egon Objekte hugo karla egon hugosname personen Main Stack Verzeichnis Heap Seite 18 Person HashMap UserInterface KlassenObjekte

19 Klassen- und Objekt-bezogenes in Klassendefinitionen Klassen-Variable vs. Objekt-Variable Funktion vs. Methode public class C { private static int a; private int b; Objekt-Variable: Variable die zu jedem Objekt einer Klasse gehört nicht-statische Variable Klassen-Variable: Variable die zu einer Klasse insgesamt gehört statische Variable public void m(int c) { int d = 0; d = a+b+c+d;... public static void f(int c) { int d = 0; d = a+b+c+d;... Methode: Funktion die zu jedem Objekt einer Klasse gehört auch: nicht-statische Methode Funktion (statische Methode): Funktion die zu einer Klasse gehört Ausführung ohne Bezug zu einem Objekt Seite 19 a: Klassenvariable b: Objektvariable c: Parameter d: lokale Variable m: Methode f: Funktion, statische Methode

20 Klassen Klassen und Objekte in Programmen Klassen definieren einen Typ: die Art der Speicherung und die Operationen (Funktionen und Methoden) auf Objekten statische Klassen: es gibt genau ein Objekt Klassen allgemeine: es gibt ein Klassenobjekt und beliebig viele weitere Objekte sind Exemplare (Instanzen) einer Klasse sie enthalten die jeweils unterschiedlichen Daten. Methoden eines Objekts operieren auf den Daten des Objekts static oder nicht static Das Schlüsselwort static in einer Klassendefinition sagt, dass es sich um etwas Allgemeines Klassen-bezogenes handelt. Etwas das sich auf die Klasse insgesamt bezieht. Fehlt das Schlüsselwort static dann handelt es sich um etwas Objekt-bezogenes, etwas das einzelnen Objekten zugeordnet ist. Seite 20

21 Konstruktoren und Initialisierer Initialisierung von Klassen und Objekten Seite 21

22 Initialisierung von Objekten 1-ter Konstruktor Konstruktor initialisiert Objekte wird bei Aufruf von new aktiviert wird benutzt um das neue Objekt mit Initial-Werten zu belegen public class C { private int b; public C() { b = 0; kann in Varianten existieren werden (ohne static) in der Klasse der Objekte definiert wird wie eine Methode definiert Kein Ergebnistyp Name = Klassen-Name durch Art und Zahl der Parameter unterschieden public C(int b) { this.b = b; this.b : mein b, das b des aktuellen Objekts (das Objekt, das die Methode gerade ausführt) Seite 22 2-ter Konstruktor

23 Konstruktor: Default-/Standard-Konstruktor public class Baer { public class Baer { private static String gebrumm1 = "BRUMM"; private static String gebrumm1 = "BRUMM"; private static String gebrumm2 = "GRRRR"; private static String gebrumm2 = "GRRRR"; private boolean gutgelaunt; private boolean gutgelaunt; public Baer(){ public Baer(){ gutgelaunt = true; gutgelaunt = true; public Baer(boolean gutgelaunt){ public Baer(boolean gutgelaunt){ this.gutgelaunt = true; this.gutgelaunt = true; Baer bruno Baer kurt Baer booboo Der Konstruktor, der zu den Parametern passt, wird aufgerufen. = new Baer(false); = new Baer(true); = new Baer(); Seite 23 Konstruktor ohne Parameter : Default(Standard-) Konstruktor Die Laune kann explizit gesetzt werden Der Standard-/DefaultBär ist gut gelaunt

24 Konstruktoren Konstruktoren werden nach der Initialisierung durch Zuweisung ausgeführt. Klassen ohne jede Konstruktor-Definition haben automatisch einen (impliziten) Standard-Konstruktor (ohne Aktionen) Klassen mit mindestens einer expliziten Konstruktor-Definitionen haben keinem Standard-Konstruktor, wenn er nicht explizit definiert wird. public class Baer { public class BaerString { private static gebrumm1 = "BRUMM"; private static String gebrumm1= ="GRRRR"; "BRUMM"; private static String gebrumm2 private static String gebrumm2 = "GRRRR"; public class Baer { public class BaerString { private static gebrumm1 = "BRUMM"; private static String gebrumm1= ="GRRRR"; "BRUMM"; private static String gebrumm2 private static String gebrumm2 = "GRRRR"; private boolean gutgelaunt; private boolean gutgelaunt; private boolean gutgelaunt; private boolean gutgelaunt; public Baer(boolean gutgelaunt){ publicthis.gutgelaunt Baer(boolean gutgelaunt){ = gutgelaunt; this.gutgelaunt = gutgelaunt; public Baer(){ Baer booboo = new Baer(); //OK Baer booboo = new Baer(); //FEHLER Seite 24

25 Objekt-Initialisierer Initialisierung von Objekt-Variablen: Objekt-Initialisierer class C { public int x = -1; public int y; { // Zuweisung // implizite Zuweisung von 0 // Objekt-Initialisierer x=1; y=2; System.out.println( Objekt fertig initialisiert! )... Objekt-Initialisierer: Anweisungsfolge in der Klassendefinition wird bei jeder Objekterzeugung ausgeführt Seite 25

26 Klassen-Initialisierung Initialisierung von Klassenvariablen durch Zuweisung class C { private static int x = 5;... Initialisierung von Klassenvariablen durch Klassen-Initialisierer class C { private static int x;... Objekt-Initialisier: ohne static Klassen-Initialisierer: mit static static { // Klasseninitialisierer x = 12;... System.out.println(''Klasse fertig initialisiert'');... Klassen-Initialisierer: Anweisungsfolge in der Klassendefinition wird einmal bei der Initialisierung der Klasse ausgeführt Seite 26

27 Initialisierungsreihenfolge Reihenfolge der Initialisierungen 1. Klassenvariablen 1. implizite Zuweisung 2. explizite Zuweisung 3. statischer Initialisierer 4. Zuweisungen in einem Konstruktor 2. Objektvariablen 1. implizite Zuweisung 2. explizite Zuweisung 3. Objekt-Initialisierer 4. Zuweisungen in einem Konstruktor Seite 27

28 Objektorientierter Entwurf: Klassen-Philosophie Objekte: Werte oder Individuen Seite 28

29 Objektorientierter Entwurf: Klassen-Philosophie Objektorientierung: Erweiterung des modularen Ansatzes Klassen Klassen definieren Typen: Sie beinhalten das Gemeinsame von individuellen Exemplaren. Objekte Die Exemplare werden Objekte genannt. Objektorientierung: Grundprinzip der Welt in Software Klassen ~ Typen / Arten Repräsentieren Arten von Dingen Objekte Repräsentieren einzelne Exemplare ihrer jeweiligen Art die Dinge Die Natürlichkeit der Objektorientierung Welt (Art / Exemplar) <~> Software (Klasse / Objekt) Seite 29

30 Objektorientierter Entwurf Beispiel : Vektor-Klasse b c a Gesetz Beim Entwurf einer Klasse wird mit deren beabsichtigter Verwendung begonnen! Seite 30

31 Objektorientierter Entwurf Beispiel : Vektor-Klasse / Nutzung public class VektorNutzer { private VektorNutzer() { public static void main(string[] args) { Vektor a = new Vektor(3, 3); Vektor b = new Vektor(2, 3); Vektor c = Vektor.vektorAdd(a, b); Seite 31 b c a

32 Objektorientierter Entwurf Beispiel : Vektor-Klasse / Implementierung public class Vektor { private int[] rep; // Repraesentation: intern, geheim! public Vektor(int x, int y) { // Konstruktor, erzeugt Repraesentation rep = new int[]{x, y; public static Vektor vektoradd(vektor x, Vektor y) { return new Vektor(x.rep[0] + y.rep[0], x.rep[1] + y.rep[1]); public static Vektor vektorsub(vektor x, Vektor y) { return new Vektor(x.rep[0] - y.rep[0], x.rep[1] - y.rep[1]); public static Vektor vektorskalarmult(int s, Vektor x) { return new Vektor(s * x.rep[0], s * x.rep[1]); Seite 32 statische Methoden: Funktionen auf Vektoren

33 Objektorientierter Entwurf Auch Daten können statisch (d.h. Klassen-bezogen) sein class Vektor { private int x = 0 private int y = 0 public Vektor(x, y) { this.x = x this.y = y public static Vektor nullvektor = new Vektor(0,0) Klasse statische KlassenKomponente Vektor v = Vektor.nullVektor; statische Daten-Komponente: es gibt genau einen Null-Vektor Seite 33

34 Objektorientierter Entwurf Kapselung: Modifikation der internen Speicherung ohne äussere Wirkung public class Vektor { private int x; vorher: private int y; private int[] rep; Modifizierung der Repräsentation public Vektor(int x, int y) { this.x = x; this.y = y; public static Vektor vektoradd(vektor v1, Vektor v2) { return new Vektor(v1.x + v2.x, v1.y + v2.y); etc public class VektorNutzer { public static void Vektor a Vektor b Vektor c main(string[] args) { = new Vektor(3, 4); = new Vektor(2, 3); = Vektor.vektorAdd(a, b); Anwendungscode ist nicht betroffen! Seite 34

35 Objektorientierter Entwurf Statisch oder nicht-statisch: Wichtige Entwurfs-Entscheidung bei Klassen welche Komponenten sind statisch, welche nicht statische Variablen alle Informationen die sich auf die Klasse insgesamt beziehen nicht-statische Variablen alle Informationen die einzelnen Individuen zugeordnet sind statische Methoden Operationen die nicht im Kontext eines Exemplars (Objekts) ausgeführt werden nicht-statische Methoden Operationen die im Kontext eines Exemplars durchgeführt werden Seite 35

36 Objektorientierter Entwurf Statisch oder nicht-statisch: Beispiel Vektor statische Variablen Null-Vektor: gibt es nur einmal, er kann im Klassenobjekt angelegt werden nicht-statische Variablen x-, y-koordinaten sind den Vektoren individuell zugeordnet statische Methoden?? nicht-statische Methoden?? Sind die Vektor-Operationen statisch oder nicht statisch? Geschmacksfrage! Seite 36

37 Objektorientierter Entwurf Statisch oder nicht-statisch: Beispiel Vektor statische Variablen Null-Vektor: gibt es nur einmal, er kann im Klassenobjekt angelegt werden nicht-statische Variablen x-, y-koordinaten sind den Vektoren individuell zugeordnet Vektor-Addition als statische Methode Vektor-Addition operiert nicht im Kontext eines bestimmten Vektors: benötigt die Information über beide zu addierenden Vektoren als Parameter im Code der Methode kommt this nicht vor Vektor-Addition als nicht-statische Methode entweder oder Vektor-Addition operiert im Kontext eines bestimmten Vektors: benötigt die Information nur über einen der zu addierenden Vektoren als Parameter im Code der Methode kommt this vor als einer der beiden zu addierenden Vektoren Seite 37

38 Objektorientierter Entwurf Statisch oder nicht-statisch: Beispiel Vektor statische Variablen Null-Vektor: gibt es nur einmal, er kann im Klassenobjekt angelegt werden nicht-statische Variablen x-, y-koordinaten sind den Vektoren individuell zugeordnet Vektor-Addition als statische Methode: mathematisch- / funktionale Sicht => Objekte repräsentieren mathematische Dinge : unveränderliche ewige Werte Die Vektor-Addition ist eine mathematische Operation Sie verarbeitet 2 Werte zu einem neuen Wert. Dabei wird nichts verändert! entweder oder Vektor-Addition als nicht-statische Methode: reine OO Sicht => Objekte repräsentieren veränderliche Dinge der (realen) Welt : veränderliche Individuen Die Vektor-Addition operiert im Kontext eines bestimmten Vektors: Durch die Vektor-Addition wird ein Wert mit Hilfe eines anderen verändert. Danach ist er der Selbe aber nicht mehr der Gleiche. Seite 38

39 Objektorientierter Entwurf, Objekte: Werte oder Individuen Vektor + Objekte: Werte, ewig, unveränderlich (mathematisch) Objekte: Veränderliche Individuen 3 4 vorher 5 7 Vektoraddition, rein funktionale Sicht: aus zwei Vektoren konstruiere einen dritten Objekte: unveränderliche Individuen nachher nachher Vektoraddition, rein objektorientierte-sicht: ein Vektor wird durch Addition vergrößert. Seite Vektoraddition, gemischtesicht

40 Objektorientierter Entwurf, Objekte: Werte oder Individuen Objekte: ewige Werte public class Vektor { a 3 private int x; 4 private int y; b 2 3 Vektor.add (a, b) c 5 7 public Vektor(int x, int y) { this.x = x; this.y = y; public static Vektor add(vektor v1, Vektor v2) { return new Vektor( v1.x + v2.x, v2.y + v2.y ); Operationen erzeugen neue Werte etc Vektor a = new Vektor(3,4) Vektor b = new Vektor(2,3) Vektor c = Vektor.add(a, b); Vektoraddition ist hier eine Erzeugung eines neuen Vektors aus zwei anderen (v1 und v2). Eine Funktion, die aus zwei Vektoren einen neuen macht. Anwendungscode Seite 40

41 Objektorientierter Entwurf, Objekte: Werte oder Individuen Objekte: unveränderliche Individuen public class Vektor { 2 b 3 private int x; private int y; 3 4 vorher a public Vektor(int x, int y) { a.add(b) 2 b 3 c 5 3 a 7 4 nachher this.x = x; this.y = y; public Vektor add(vektor v2) { return new Vektor( this.x + v2.x, this.y + v2.y ); Operationen erzeugen neue Werte etc Vektor a = new Vektor(3,4) Vektor b = new Vektor(2,3) Vektor c = a.add(b); Vektoraddition ist hier eine Erzeugung eines neuen Vektors mit Hilfe eines anderen (v2). Eine Funktion, die aus zwei Vektoren einen neuen macht. Anwendungscode Seite 41

42 Objektorientierter Entwurf, Objekte: Werte oder Individuen Objekte: veränderliche Individuen public class Vektor { 2 b 3 private int x; 3 4 vorher private int y; a public Vektor(int x, int y) { a.add(b) 2 b 3 5 a 7 nachher this.x = x; this.y = y; public void add(vektor v2) { this.x = this.x + v2.x; this.y = this.y + v2.y; Das eigene x und y werden verändert etc Vektor a = new Vektor(3,4) Vektor b = new Vektor(2,3) a.add(b); Vektoraddition ist hier eine Veränderung eines Vektors mit Hilfe eines anderen (v2). Nicht eine Funktion, die aus zwei Vektoren einen neuen macht. Anwendungscode Seite 42

43 Objektorientierter Entwurf, Objekte: Werte oder Individuen Beispiel Klasse Bär public class Baer { public class Baer { public void saghallo() { public void saghallo() { System.out.println("brumm"); System.out.println("brumm"); Baer new brumm brumm bruno brumm probelmbaer knut Eine Bär-Klasse Zwei Bär-Objekte Drei Bär-Variablen public final class Hallo { public static void main(string[] args) { Baer bruno = new Baer(); Baer problembaer = bruno; Baer knut = new Baer(); bruno.saghallo(); problembaer.saghallo(); knut.saghallo(); Die Klasse Bär modelliert Bären. Bären sind keine ewigen unveränderlichen mathematischen Dinge Sie haben ein Individualität und einen veränderlichen Zustand. Seite 43

44 Objektorientierter Entwurf, Objekte: Werte oder Individuen Klassen-Variable vs. Objekt-Variable Funktion vs. Methode public class Baer { private static Person baerenfeind = stoiber; private boolean gutgelaunt = true; public static void setzefeind( Person p) { baerenfeind = p; public void saghallo() { if ( gutgelaunt ) System.out.println(brum); else System.out.println(knurr); baerenfeind: setzefeind: gutgelaunt: saghallo: begegne: Klassen-Variable Klassen-Methode/Funktion Objekt-Variable Methode Methode public void begegne (Person p) { if ( p == baerenfeind ) gutgelaunt =false; Baer flocke = new Baer(); Baer.setzeFeind(stoiber); flocke.saghallo(); flocke.begegne(stoiber); flocke.saghallo(); Aufruf einer Methode: objekt.methode( ) Aufruf einer Funktion: Klasse.Methode( ) Seite 44

45 Objektorientierter Entwurf, Objekte: Werte oder Individuen public class Baer { public class Baer { Alle Bären brummen auf 2 Arten private static String gebrumm1 = "BRUMM"; privatestatic staticstring StringgeBrumm2 gebrumm1= ="GRRRR"; "BRUMM"; private private static String gebrumm2 = "GRRRR"; private boolean gutgelaunt; private boolean gutgelaunt; Jeder Bär hat seine eigene Laune: Pro Bär gibt es eine Variable gutgelaunt public void streicheln(){ public void streicheln(){ gutgelaunt = true; gutgelaunt = true; Bären werden einzeln gestreichelt: Hat Auswirkung auf die Laune eines bestimmten Bären. public void aergern(){ public void aergern(){ gutgelaunt = false; gutgelaunt = false; gebrumm1 und gebrumm2 gibt es jeweils genau einmal public void saghallo(int n) { public void saghallo(int n) { int i; int for ( i; i=0; i < n; i++ ) for ( i=0; i < n; i++ ) if (gutgelaunt) if System.out.println(geBrumm1); (gutgelaunt) else System.out.println(geBrumm1); else System.out.println(geBrumm2); System.out.println(geBrumm2); Seite 45 Bei jedem Aufruf ein anderer Wert: Pro Methodenaufruf neu erzeugt Der Gruß eines Bären hängt von dessen aktuellem Zustand ab.

46 Gleichheit und Identität / Referenz- und Wertsemantik WDR Gleichheit und Identität / Wert und Referenzsemantik Seite 46

47 Gleichheit und Identität / Referenz- und Wertsemantik primitiver Typ Zwei Arten von Typen Primitive Typen z.b.: Zahlen Boolesche Werte (Wahrheitswerte) Klassen Klassentypen Typ alle anderen Referenz- und Wert-Semantik Variablen mit primitivem Typ enthalten ihren Wert immer direkt Variablen mit Klassentyp enthalten immer Referenzen auf Objekte Identität Identität - bruno und problembaer sind identisch (der selbe) int x = 5; int y = x; Baer bruno Baer problembaer = new Baer(); = bruno; Variablendefinitionen: Typ Name = Wert; Typ Name; 5 x 5 y bruno - bruno und problembaer sind identisch (der selbe) Gleichheit Gleichheit - Die Werte von x und y sind gleich. probelmbaer - Die Werte von x und y sind gleich. Seite 47

48 Gleichheit und Identität / Referenz- und Wertsemantik Zuweisungen mit = primitive Typen : Werte werden kopiert Klassentypen : Referenzen werden kopiert Vergleiche mit == primitive Typen : Werte werden verglichen Klassentypen : Referenzen werden verglichen 5 x 5 y 5 z bruno Identität: Identität: == testet Identität bei Klassentypen == testet Identität bei Klassentypen = erzeugt Identität bei Klassentypen = erzeugt Identität bei Klassentypen int x = 5; int y = x; int z = 5; Gleichheit Gleichheit == testet Gleichheit bei primitiven Typen == testet Gleichheit bei primitiven Typen = erzeugt Gleichheit bei primitiven Typen = erzeugt Gleichheit bei primitiven Typen Baer bruno Baer problembaer probelmbaer Baer knut knut = new Baer(); = bruno; = new Baer(); x == y => true x == z => true bruno == problembaer => true bruno == knut => false Seite 48

49 Gleichheit und Identität / Referenz- und Wertsemantik Vergleiche mit equals Klassentypen : Objekte hinter Referenzen werden mit equals verglichen == bruno equals probelmbaer knut!= Baer bruno Baer problembaer Baer knut = new Baer(); = bruno; = new Baer(); bruno == problembaer => true bruno == knut => false bruno.equals(knut) => true Achtnung: Nur vordefinierte Klasse der Java-API enthalten ein korrektes equals. Bei selbst definierten Klassen muss equals i.d.r. auch selbst definiert werden! Seite 49

50 Gleichheit und Identität / Referenz- und Wertsemantik Vergleiche mit equals Beispiel: /** * Instanzen dieser Klasse repräsentieren Personen. */ public class Person { private String name; private String vorname; private String telefon; public Person(String name, String vorname, String telefon) { this.name = name; this.vorname = vorname; this.telefon = public boolean equals(object o) { if (this == o) { return true; if (o == null) { return false; if (!(o instanceof Person)) { return false; Person that = (Person) o; return name.equals(that.name) && vorname.equals(that.vorname) && telefon.equals(that.telefon); Seite 50 equals kann man sich von Eclipse erzeugen lassen!

51 Gleichheit und Identität / Referenz- und Wertsemantik Vergleiche mit equals sollten prüfen: ist der andere null? => false ist der andere identisch mit diesem? => true ist der andere vom gleichen Typ nein => false ja: sind die Komponenten gleich? => true dabei muss beachtet werden ob die Komponenten eventuell null public boolean equals(object o) { if (this == o) { return true; if (o == null) { return false; if (!(o instanceof Person)) { return false; Person that = (Person) o; return name.equals(that.name) && vorname.equals(that.vorname) && telefon.equals(that.telefon); Seite 51

52 Zusammenfassung Objektorientierte Programmierung Statik Eine Klassendefinition ist ein Modul mit Schnittstelle und Implementierung erzeugt einen Typ für Variablen und Parameter und definiert so deren Verwendungsmöglichkeiten ermöglicht Anweisungen zur zur Erzeugung und Initialisierung von Objekten Dynamisch Klasse ist Typ von Variablen im Stack Klassenobjekt und weitere Objekte im Heap Entwurf static / oder nicht static zentrale Option für Methoden und Variablen in einer Klasse hängt stark von der beabsichtigten Verwendung ab als Wert oder veränderliches Ding Wert- und Referenz-Sematik Operationen auf Zeigern und / oder Speicherbereiche auf die Zeiger zeigen ermöglicht die Unterscheidung zwischen Werten und veränderlichen Dingen Seite 52

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Geheimnisprinzip und Kapselung - Klassen zur Unterstützung des Geheimnisprinzips - Einsatz einer Klasse als Modul und / oder Typ

Mehr

CS1005 Objektorientierte Programmierung

CS1005 Objektorientierte Programmierung CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Objektorientierung I : Statische Klassen Statische Aspekte (Modularisierung) Dynamische Aspekte (Klassen-Objekte) Seite 1 Th Letschert

Mehr

Programmieren lernen mit Groovy Objektorientierung Typen

Programmieren lernen mit Groovy Objektorientierung Typen Programmieren lernen mit Groovy Objektorientierung Typen Seite 1 Objektorientierung Objekt-Orientierung vom Funktionalen zum objektorientierten Programmierstil Funktionaler / Prozeduraler Stil Daten und

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

CS1005 Objektorientierte Programmierung

CS1005 Objektorientierte Programmierung CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) Funktionen / statische Methoden - Definition - Verwendung - Ausführung Seite 1 Th Letschert Funktionen: Definition und Verwendung

Mehr

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen Klassenvariablen Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit aller Studentenobjekte.

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung und Klassen Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 16.5.07 G. Bohlender (IANM UNI Karlsruhe) OOP

Mehr

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 39 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 39 1 Überblick:

Mehr

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode: Klassenvariablen Klassenmethoden Wir wollen die Zahl der instantiierten Studentenobjekte zählen. Dies ist jedoch keine Eigenschaft eines einzelnen Objektes. Vielmehr gehört die Eigenschaft zu der Gesamtheit

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E.

Objekte und Klassen. INE2 M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert, E. Objekte und Klassen INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? typedef struct Konto { double saldo; int id; Konto; Modul "konto" konto.h konto.c Prozedurale Programmierung:

Mehr

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Folienpaket 7 Themenschwerpunkte: Methoden in OOP 284 09/2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4 Eine Klasse entwerfen Eine Klasse enthält folgende Information: Name der Klasse (ist auch der

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Grundelemente objektorientierter Sprachen (1)

Grundelemente objektorientierter Sprachen (1) Grundelemente objektorientierter Sprachen (1) Objekt Repräsentation eines Objektes der realen Welt in der Terminologie objektorientierter Programmiersprachen besitzen Attribute (Eigenschaften), deren Werte

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition

Mehr

Programmiertechnik Klassenvariablen & Instantiierung

Programmiertechnik Klassenvariablen & Instantiierung Programmiertechnik Klassenvariablen & Instantiierung Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Klassenvariablen Zur Erinnerung: Klassen bestehen aus Variablen und Methoden; beide zusammen

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Philipp Güttler Objektorientierung und komplexe Datentypen

Philipp Güttler Objektorientierung und komplexe Datentypen Philipp Güttler 23.04.2008 Objektorientierung und komplexe Datentypen Seite 2 Was bedeutet objekt-orientiert? Programmierung ist die Umsetzung von Sachverhalten und Aufgaben Zusammenfassen und Aufteilen

Mehr

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

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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

Teil 2: Weitere Aspekte der Objektorientierung

Teil 2: Weitere Aspekte der Objektorientierung Teil 2: Weitere Aspekte der Objektorientierung Klassenvariablen So wie es Instanzvariablen gibt, die zu einer gewissen Instanz (Objekt) gehören und deren Attribute speichern, so gibt es aus Klassenvariablen:

Mehr

OOP Aufgabenblatt Januar 2014

OOP Aufgabenblatt Januar 2014 1 Prof. Dr. Th. Letschert OOP Aufgabenblatt 10 15. Januar 2014 Aufgabe 1 Informationen zu einem beliebigen Objekt können in einer Abbildung als Zuordnung von Attribut und zugehörigem Wert gespeichert werden:

Mehr

Kapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Kapitel 10. Verweise und Referenzen. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz Kapitel 10 Verweise und Referenzen Inhalt von Kapitel 10 Verweise und Referenzen 10.1 Das Schlüsselwort this Definition Verwendungszweck Klassenmethoden EINSCHUB: Musterlösung zu Übung 4.1 10.2 Objektreferenzen

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Javakurs für Anfänger

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

Mehr

12 Abstrakte Klassen, finale Klassen und Interfaces

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

Mehr

Tag 7 Repetitorium Informatik (Java)

Tag 7 Repetitorium Informatik (Java) Tag 7 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 { Hochschule Harz Programmierung1 Aufgabe 10: FB Automatisierung und Informatik Dipl.-Inf. Dipl.-Ing. (FH) M. Wilhelm Programmierung 1 für MI / WI Thema: Hashing und Generische Klassen Versuchsziele Kenntnisse

Mehr

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Softwareentwicklung I (IB) Objekte. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Softwareentwicklung I (IB) Objekte Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 20:09 Inhaltsverzeichnis Neue Typen durch Klassen............................. 2

Mehr

JAVA 05: Objektorientierte Konzepte

JAVA 05: Objektorientierte Konzepte Lernkartenkurs JAVA 05: Objektorientierte Konzepte panitz Zusammenfassung Dieser Kurs beschäftigt sich mit Grundkonzepten der objektorientierten Programmierung. Was sind Klassen und Objekte? Wie sehen

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 08: Mehr zu Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Wiederholung Heutige Agenda Verwendung der ArrayList 2. Teil: Weitere Aspekte der OO

Mehr

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Prof. Dr. Wolfgang Schramm Vorlesung Exkurs: Anonyme Klassen Techniken der Programmentwicklung Anonyme Klassen

Mehr

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass: OOP (Java), 22. Aufzählungstypen 1/20 Objektorientierte Programmierung Kapitel 22: Aufzählungstypen (Enumeration Types) Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester

Mehr

7. Objektorientierung. Informatik II für Verkehrsingenieure

7. Objektorientierung. Informatik II für Verkehrsingenieure 7. Objektorientierung Informatik II für Verkehrsingenieure Klassen, Objekte und Attribute Buslinie und Haltestellen 3 Haltestellen und deren Eigenschaften Bauplan einer Haltestelle (Struktur) Konkrete

Mehr

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

Mehr

Klassen als Datenstrukturen

Klassen als Datenstrukturen Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung

Mehr

Klassenvariablen und statische Methoden

Klassenvariablen und statische Methoden Softwareentwicklung II (IB) Klassenvariablen und statische Methoden Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 05.04.2018 17:36 Inhaltsverzeichnis Klassenvariablen 1 Definition......................................

Mehr

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik Programmieren II Innere Klassen Heusch 10, 13.10 Ratz 5.2.1, 9.8 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Innere Klassen Bisher kennen wir nur Klassen, die entweder zusammen

Mehr

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein

Objektorientierung. Klassen und Objekte. Dr. Beatrice Amrhein Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein Überblick Konzepte der Objektorientierten Programmierung Klassen und Objekte o Implementierung von Klassen o Verwendung von Objekten 2 Konzepte

Mehr

Javakurs für Anfänger

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

Mehr

Einführung in die Programmierung 1

Einführung in die Programmierung 1 Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener

Mehr

Klassenvariablen und statische Methoden

Klassenvariablen und statische Methoden Klassenvariablen und statische Methoden Softwareentwicklung II (IB) Prof. Dr. Oliver Braun Letzte Änderung: 05.04.2018 17:36 Klassenvariablen und statische Methoden 1/25 Klassenvariablen Klassenvariablen

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 7 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 21.10.2015 Technische Universität Braunschweig, IPS Überblick OO in Java Vererbung Abstrakte Klassen und Interfaces 21.10.2015 Dr. Werner Struckmann

Mehr

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

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

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Bis jetzt kennen wir (fast) nur primitive Datentypen. Diese entsprechen weitestgehend der Hardware des Rechners (z.b. besitzt ein Rechner Hardware um zwei floats zu addieren).

Mehr

Prüfung Softwareentwicklung II (IB)

Prüfung Softwareentwicklung II (IB) Hochschule für angewandte Wissenschaften München Fakultät für Informatik und Mathematik Studiengruppe IB 2 B, IB 2 C Sommersemester 2013 Prüfung Softwareentwicklung II (IB) Datum : 11.07.2013, 08:30 Uhr

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Algorithmen und Datenstrukturen 07

Algorithmen und Datenstrukturen 07 (7. Juni 2012) 1 Besprechung Blatt 6 Fragen 2 Referenzen Referenzsemantik 3 Vererbung Allgemein abstract Interfaces Vererbung in UML 4 Vorbereitung Blatt 7 Anmerkungen Fragen Fragen zu Blatt 6? Referenzsemantik

Mehr

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 09: Mehr zur Objektorientierung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Weitere Aspekte der Objektorientierung Klassen Variablen

Mehr

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik)

CS1005 Objektorientierte Programmierung Bachelor of Science (Informatik) CS005 Objektorientierte Programmierung Bachelor of Science (Informatik) Th Letschert Felder Seite Th Letschert OOP Felder / Arrays Seite 2 Th Letschert Feld / Array Feld (auch Array) Daten unter einem

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

6 Speicherorganisation

6 Speicherorganisation 6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Informatik Funktionen

Informatik Funktionen Informatik Seite 1 Funktion Mathematik: Zuordnung Argumentwert(e) => Ergebniswerte Beispiel: f(x,y) = 2*x+y Informatik / Programmierung: Zusammenfassung von Anweisungen die von Argumentwerten abhängen

Mehr

Parameterübergabemechanismen für den Methodenaufruf

Parameterübergabemechanismen für den Methodenaufruf Methode, griech. der Weg zu etwas, planmäßiges Verfahren -Brockhaus Parameterübergabemechanismen für den Methodenaufruf Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw

Mehr

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. ) Technische Informatik für Ingenieure (TIfI) WS 2006/2007, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Rekursion Datenstrukturen Merge S ( split, s, merge ) Beispiel:

Mehr

Propädeutikum Programmierung in der Bioinformatik

Propädeutikum Programmierung in der Bioinformatik Propädeutikum Programmierung in der Bioinformatik Java Klassen und Objekte Thomas Mauermeier 27.11.2018 Ludwig-Maximilians-Universität München Rückblick Imperative Programmierung Variablen Fallunterscheidungen

Mehr

Umsetzung einer Klassenkarte in einer Programmiersprache

Umsetzung einer Klassenkarte in einer Programmiersprache Klassen in Java Umsetzung einer Klassenkarte in einer Programmiersprache Objektorientierte Programme bestehen (nur) aus Klassendefinitionen In Klassendefinitionen wird die Struktur der Objekte festgelegt,

Mehr

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 7 Markus Reschke 14.10.2014 Vererbung in Java Vererbung ermöglicht es, Klassen zu spezialisieren Wiederverwendung vorhandener Klassen Kindsklasse erhält

Mehr

Probeklausur: Programmierung WS04/05

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

Mehr

Javakurs für Anfänger

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

Mehr

Variablen in Java. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang. Ziele

Variablen in Java. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang. Ziele Variablen in Java Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 11/04 2 Ziele Unterschiedliche Arten von Variablen in Java verstehen Bestimmen von Gültigkeitsbereich

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

EINFÜHRUNG IN DIE PROGRAMMIERUNG

EINFÜHRUNG IN DIE PROGRAMMIERUNG EINFÜHRUNG IN DIE PROGRAMMIERUNG OBJEKTORIENTIERTES PROGRAMMIEREN Tobias Witt 25.03.2014 09:00-10:30 Täglich Übungen zur Vertiefung Laptop hier nicht erforderlich Linux, OS X Freitag: http://hhu-fscs.de/linux-install-party/

Mehr

1 KLASSENKOMPONENTEN. Leitideen: Klassen sind aus Datenkomponenten und Komponentenfunktionen

1 KLASSENKOMPONENTEN. Leitideen: Klassen sind aus Datenkomponenten und Komponentenfunktionen 1 KLASSENKOMPONENTEN Leitideen: Klassen sind aus Datenkomponenten und Komponentenfunktionen zusammengesetzt. Die Komponentenfunktionen haben über eine Zeigervariable direkten Zugriff auf das Objekt. Die

Mehr

Abschnitt 6: Klassen, Objekte und Methoden in Java

Abschnitt 6: Klassen, Objekte und Methoden in Java Abschnitt 6: Klassen, Objekte und Methoden in Java 6. Klassen, Objekte und Methoden in Java 6.1 Klassen 6.2 Objekte 6.3 Methoden 6.4 Zusammenfassung 6 Klassen, Objekte und Methoden in Java Informatik 2

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 14.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung 14.1.08 1 / 11 Übersicht 1

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Bis jetzt kennen wir (fast) nur primitive Datentypen. Diese entsprechen weitestgehend der Hardware des Rechners (z.b. besitzt ein Rechner Hardware um zwei floats zu addieren).

Mehr

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 492

Überblick. Peer Kröger (LMU München) Einführung in die Programmierung WS 14/ / 492 Überblick 6. Grundlagen der objektorientierten Programmierung 6.1 Abstrakte Datentypen: von Structures zu Klassen 6.2 Das objektorientierte Paradigma 6.3 Peer Kröger (LMU München) Einführung in die Programmierung

Mehr

Informatik II Aufgabenblatt 1

Informatik II Aufgabenblatt 1 Prof. Dr. Th. Letschert FB MNI TH Mittelhessen StudiumPlus Informatik II Aufgabenblatt 1 Gruppenübung Aufgabe 1 Ein Telefonverzeichnis ist eine Zuordnung (Abbildung) von Namen zu Telefonnummern. Zuordnungen

Mehr

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich. Felder Felder - Arrays Variable gleichen Types können in Feldern (array) zusammengefasst werden. Typ[] feldname; oder Typ feldname[]; dabei kann unter Benutzung des new-operators gleich die Dimension zugewiesen

Mehr

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java

Variablenarten. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 10.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 10.12.07 1 / 15

Mehr

Softwaretechnik WS 16/17. Übungsblatt 01

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

Mehr

Kopieren und Vergleichen

Kopieren und Vergleichen Softwareentwicklung II (IB) Kopieren und Vergleichen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 24.05.2018 13:24 Inhaltsverzeichnis Kopie eines Objektes................................

Mehr

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1

IT I: Heute. Klasse Object. equals, hashcode, tostring. HashSet IT I - VO 6 1 IT I: Heute Klasse Object equals, hashcode, tostring HashSet 14.11.2017 IT I - VO 6 1 Wissensüberprüfung Wie ruft man statische Methode auf? Gegeben Klasse Fix mit statischer Methode static boolean foxi(string

Mehr

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Programmieren für Wirtschaftswissenschaftler SS 2015

Programmieren für Wirtschaftswissenschaftler SS 2015 DEPARTMENT WIRTSCHAFTSINFORMATIK FACHBEREICH WIRTSCHAFTSWISSENSCHAFT Programmieren für Wirtschaftswissenschaftler SS 2015 Lucian Ionescu Blockveranstaltung 16.03 27.3.2015 6. Klassen Agenda Klassen und

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/ in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de http://ls14-www.cs.tu-dortmund.de

Mehr

Programmieren in Java -Eingangstest-

Programmieren in Java -Eingangstest- Programmieren in Java -Eingangstest- Nummer: 1. Studiengang: Informatik B.Sc. Informatik M.Sc. ESE B.Sc. ESE M.Sc. Sonstiges: Fachsemester: Bitte Fragen, die Sie nicht beantworten können unbedingt mit

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 1 Lösungsvorschlag Objektorientierte Programmierung 10. 04. 2006 Lösung 1 (Imperative Java-Elemente)

Mehr

Vererbung. Martin Wirsing. Ziele. Vererbung

Vererbung. Martin Wirsing. Ziele. Vererbung 2 Ziele Martin Wirsing en Begriff der einfachen verstehen und Redefinition von Oberklassenmethoden verstehen spolymorphie verstehen ie Klasse Object kennenlernen in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Objektorientierte Programmierung Studiengang Medieninformatik

Objektorientierte Programmierung Studiengang Medieninformatik Objektorientierte Programmierung Studiengang Medieninformatik Hans-Werner Lang Hochschule Flensburg Vorlesung 5 12.04.2017 Was bisher geschah... Objektorientierte Programmierung Klassen und Objekte, Attribute

Mehr

Algorithmen implementieren. Implementieren von Algorithmen

Algorithmen implementieren. Implementieren von Algorithmen Algorithmen implementieren Implementieren von Algorithmen Um Algorithmen ablaufen zu lassen, muss man sie als Programm darstellen (d.h. implementieren) Wie stellt man die algorithmischen Strukturelemente

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Kopieren und Vergleichen

Kopieren und Vergleichen Kopieren und Vergleichen Softwareentwicklung II (IB) Prof. Dr. Oliver Braun Letzte Änderung: 24.05.2018 13:24 Kopieren und Vergleichen 1/26 Kopie eines Objektes (1/4) Erster Ansatz zum Duplizieren eines

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Bis jetzt kennen wir (fast) nur primitive Datentypen. Diese entsprechen weitestgehend der Hardware des Rechners (z.b. besitzt ein Rechner Hardware um zwei floats zu addieren).

Mehr