Java Einführung. Teil 2: Objektorientierung. Michael Hahsler
|
|
- Johanna Abel
- vor 6 Jahren
- Abrufe
Transkript
1 Java Einführung Teil 2: Objektorientierung Michael Hahsler
2 Java Einführung Objektorientierte Grundkonzepte
3 Inhalt Verständnis der grundlegenden Konzepte der Objektorientierung: Objekte Nachrichten Kapselung Klassen und Instanzen Vererbung Polymorphismus Darstellung in UML 2
4 Objekte Dinge aus der realen Welt (Gegenstände, Personen, Rechte,...) Haben eine Identität und besitzen: Eigenschaften (Attribute) Verhalten (Operationen) Kommunizieren mit anderen Objekten durch Nachrichten 3
5 Nachrichten und Methoden Nachrichten sind Signale von einem Objekt an ein anderes. Nachrichten lösen Verhalten (Operationen) des anderen Objekts aus. Nachricht trinken (einen Schluck) Michael 1. Dose 4
6 Kapselung (Encapsualtion, Data Hiding) Objekte können Attribute und Operationen (und damit Komplexität) verbergen. Operationen werden vor dem Zugriff von außen geschützt. Die allgemein zugänglichen Operationen nennt man Interface Wieviel Flüssigkeit ist in dieser Dose? Kann jeder diese Dose verschließen? 5
7 Klassen (-definition) Bauplan für ähnliche Objekte. Beschreibt Operationen und Attribute die eine Instanz bekommt. Instanzen werden aus Klassen erzeugt Instanzierung Volumen = x Klassendefinition Instanz Nr. 1 Instanz Nr. 2 6
8 Generalisierung, Vererbung (Inheritance) Hierarchische Beziehung zwischen Klassen mit ähnlichen Eigenschaften. Kinder (Subklassen) erben die Eigenschaften von Eltern (Superklassen). Stellt ein gemeinsames Interface sicher. Behälter Ich kenne das Interface eines Behälters (Superklasse) Dose Häferl Gießkanne Subklassen erben, erweitern oder überschreiben Eigenschaften 7
9 Polymorphismus (Griechisch: Vielgestaltigkeit) Subklassen können auch als Instanz der Superklasse (Behälter) behandelt werden, da sie durch die Vererbung ein gemeinsames Interface haben. Behälter Dose Häferl Gießkanne Ich verwende einen Behälter Jede Art von Behälter hat das gleiche Interface. Einige Operationen reagiert aber bei unterschiedlichen Behältertypen ein bisschen anders! 8
10 Modellierung und Abstraktion Eigenschaften und Verhalten müssen modelliert werden. Modellierung ist Vereinfachung! Modellierung ist Einschränkung! Was ist das Wesentliche? Hängt vom Zweck ab! Ist diese Nutzung eines Häferls durch das Modell vorgesehen? 9
11 Vorteile der Objekt-Orientierung Objekte in Programmen entsprechen realen Objekten (von Analyse bis zur Implementierung) Modularität durch die Kapselung in Objekte Wiederverwendung von Objektbibliotheken (Interfaces) Geringere Kosten bei Wartung weil der Programmcode übersichtlicher wird. 10
12 Die Unified Modeling Language UML ist eine von der OMG standardisierte Notation zur Darstellung und Entwicklung von objekt-orientierten Systemen Die Notation enthält unter anderem Diagramme für die Beschreibung von: Anforderungen (Use Case Diagram) Verhalten/Ablauf (Sequence D., Communication D.) Logischer Aufbau des Systems (Klassendiagramm) 11
13 Darstellung von Klassen in UML Diagrammen Klassen sind die Baupläne für Objekte (Instanzen) Darstellung in UML Klassenname Beispiel einer Klasse in UML PKW oder Klassenname Attribute Methoden Farbe Leistung Geschwindigkeit... Beschleunigen() Bremsen() Lenken()... Klasse W59777: PKW Rot 50km Objekte (Instanzen) 12
14 Elemente Klassendiagramm I Klassen Klassenname Beziehungen (Paths/Associations): für die Übermittlung von Nachrichten (Messages = Aufruf von Methoden) Klasse A spricht mit Klasse B Richtung der Beziehungen (Navigability): Nachrichten können nur in diese Richtung gehen Klasse A spricht mit Klasse B 13
15 Elemente Klassendiagramm II Kardinalitäten (Multiplicity): Anzahl der möglichen Instanzen Klasse A 1 spricht mit 0..* Klasse B Aggregation (Aggregation/Composition): Besteht-aus Beziehung Auto Generalisierung (Generalization): is-a Beziehung -> Vererbung in Java besteht aus 1 * Einzelteil Einzelteil Auto oder Einzelteil * Motor Karosserie... 14
16 Elemente Klassendiagramm III Abhängigkeiten (Dependencies) Klasse A benötigt Klasse B Anmerkungen oder Einschränkung PKW ist nur fahrttüchtig mit: Räder, Karosserie,... PKW 15
17 Beispiel: Klassendiagramm PKW ist nur fahrttüchtig mit: Räder, Karosserie,... PKW 0..* verwendet 1 besteht aus 1 * Motor Einzelteil Karosserieteil... Fahrzeughalter 1 besteht aus 4 Zylinder 16
18 Was Sie nach dieser Einheit wissen sollten... Was sind Objekte, Instanzen und Klassen? Was sind die wichtigsten Konzepte der Objektorientierung und was bedeuten Sie? Wie werden Klassen in UML Klassendiagrammen dargestellt? 17
19 Java Einführung Klassendefinitionen
20 Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren, Guth, Kaukal, Klimesch 2
21 Klassen definieren In der Problemanalyse haben Sie die geeigneten Klassen, ihre Eigenschaften und ihr Verhalten festgelegt. Diese implementieren Sie dann im Quellcode. KlassenName -Variablen +Methoden() class KlassenName { variablendeklarationen; methodendeklarationen;, Guth, Kaukal, Klimesch 3
22 Neue Klasse definieren (Bsp. Point) Klassendefinition Variablendefinition class Point { double x, x, y; y; Datentyp der Variablen Name der Klasse Namen der Variablen Klasse Point definiert einen Punkte in der Ebene. Point besitzt zwei Variable: x und y. Die Variablen sind vom primitiven Typ double (reelle Zahlen)., Guth, Kaukal, Klimesch 4
23 Vom Diagramm zum Quellcode (Bsp. Point) Das Klassendiagramm wird in einen kompilierbaren Java-Quellcode umgewandelt: Point -x : double -y : double class Point { double x, x, y; y;, Guth, Kaukal, Klimesch 5
24 Instanzvariablen (Member Variables) Ein Objekt speichert seine Zustände (Eigenschaften) in Instanzvariablen. Alle Objekte einer Klasse haben die selben (Typ und Anzahl) Instanzvariablen. Eine Variable ist eine Dateneinheit von einem bestimmten Datentyp und hat einen Namen. Datentyp und Name werden in der Klasse deklariert. Der Name ermöglicht den Zugriff auf den Inhalt der Variablen (Abfrage und Änderung). Die Werte der Variablen können während der Laufzeit geändert werden. Instanzvariablen werden am Beginn der Klassendefinition definiert, Guth, Kaukal, Klimesch 6
25 Instanzvariablen II (Member Variables) Instanzvariablen werden am Beginn der Klassendefinition definiert Instanzvariablen Point -x : double -y : double class Point { double x, x, y; y;, Guth, Kaukal, Klimesch 7
26 Objekte einer Klasse erzeugen (Bsp. Point) Objekte (Instanzen) einer Klasse werden mit der Methode new erzeugt (=instantiiert): KlassenName objektname = new KlassenName(Initialisierungswerte); z.b. Instanzen der Klasse Point: Point lowerleft = new Point(); Point upperright= new Point(); Point centerpoint = new Point(); Jedes erzeugte Objekt ist eindeutig und hat eigene Kopien der Variablen (x und y). Sie werden daher auch Instanzvariablen genannt., Guth, Kaukal, Klimesch 8
27 Zugriff auf Instanzvariable (Bsp. Point) ObjektName.VariablenName lowerleft.x = 0.0; lowerleft.y = 0.0; upperright.x = ; upperright.y = ; centerpoint.x = 640.0; centerpoint.y = 512.0; x lowerleft (0,0) upperright (1280,1024) centerpoint (640,512) y Jedes Objekt (Instanz) hat ein eigenes x und y., Guth, Kaukal, Klimesch 9
28 Beispiel class Point {double x, y; class UsePoint { public static void main (String[] arg) { Point lowerleft = new Point(); lowerleft.x = 3.7; lowerleft.y = 5.9; System.out.println(lowerLeft.x +, + lowerleft.y);, Guth, Kaukal, Klimesch 10
29 Arrays von Instanzen Deklaration ClassName[] name = new ClassName[n]; // n Anzahl Zugriff auf Instanzvariablen einzelner Instanzen in einem Array erfolgt mittels Indizierung auf einzelne Felder und Angabe des Variablennamens. name[index].variablenname = Wert z.b. ein Array, das 52 Point-Instanzen aufnehmen kann Point[] points = new Point[52]; // Array erzeugen points[0] = new Point(); // Eine Instanz erzeugen! points[0].x = 1.0; points[0].y = 10.0;... bzw. int i = 0; System.out.println(points[i].x + ", " + points[i].y);, Guth, Kaukal, Klimesch 11
30 Lernkontrolle Implementieren Sie eine umfangreiche Klasse Mitarbeiter. Überlegen Sie sich, welche Variablen für diese Klasse sinnvoll sind und definieren Sie ein Array, in welchem 50 Mitarbeiter gespeichert werden können. Ihr Programm soll zu bestimmten Feldern einen Teil der gespeicherten Daten ausgeben., Guth, Kaukal, Klimesch 12
31 Lernkontrolle Implementieren Sie eine Klasse Lehrveranstaltung. Überlegen Sie sich, welche Variablen für diese Klasse sinnvoll sind. Erzeugen Sie zwei Objekte dieser Klasse, die zwei der Lehrveranstaltungen repräsentieren, die Sie dieses Semester besuchen. Ihr Programm soll die Bezeichnung und die Nummer dieser Lehrveranstaltung ausgeben., Guth, Kaukal, Klimesch 13
32 Nach dieser Einheit sollten Sie wissen,... wie man in Java Klassen deklariert. wie man innerhalb einer Klasse Variablen deklariert und diesen primitive Datentypen zuweist. wie man in Java aus vordefinierten Klassen Objekte erzeugt. was der Unterschied zwischen Klassen- und Instanzvariablen ist., Guth, Kaukal, Klimesch 14
33 Java Einführung Einfache Klassen Kapitel 10
34 Inhalt Deklaration von Klassen Erzeugung und Zerstörung von Instanzen Der Punkt-Operator Instanznamen Instanzen als Argument oder Rückgabewert 2
35 Deklaration einer Klasse (Klassendefinition) Date day : int month : String year : int class Date { int day; String month; int year; Die Klasse Date hier ist nur als Beispiel gedacht! Wird ein Datum in Java verwendet, sollten die Klassen Date und DateFormat der Java API (in java.util) verwendet werden. 3
36 Erzeugung und Freigabe von Instanzen Deklaration und Erzeugung von Instanzen Date x, y; x = new Date(); x Instanz y day month year Freigabe von Instanzen Garbage Collection: Sobald kein Zeiger mehr auf das Objekt zeigt (Reference Count) x = null; // x zeigt jetzt auf nichts! 4
37 Der Punkt-Operator Verwendung der Klassenvariablen (Punkt- Operator) Date x = new Date(); x.day = 13; x.month = "November"; x.year = 2001; x Instanz 13 November 2001 day month year Achtung: month ist vom Typ String und daher kein primitiver Datentyp! 5
38 Instanznamen Zuweisung von Instanznamen Date x, y; x = new Date(); y = x; y.day = 20; x y Instanz 20 day month year Zuweisung ist nur bei gleichem Datentyp (Klassennamen) erlaubt! 6
39 Instanzen als Argumente in Date.java: class Date { int day; String month; int year; in UseDate.java: class UseDate { public static void main (String[] args) { Date x = new Date(); x.day=13; x.month="november"; x.year=2003; printdate(x); public static void printdate (Date adate) { System.out.println(aDate.day+". "+adate.month+ " "+adate.year); 7
40 Objekte als Rückgabewerte in Time.java: class Time { int h, m, s; /*hours,minutes,seconds*/ in UseTime.java: class UseTime { static Time convert (int seconds){ Time t = new Time(); t.h = seconds / 3600; t.m = (seconds % 3600) / 60; t.s = seconds % 60; return t; Objekte können nach der Erzeugung wie Variablen verwendet werden. Durch new unterliegen sie nicht den Regeln des Scopes sondern der Garbage Collection! public static void main (String[] args) { Time thetime = convert(12345); 8
41 Java Einführung Methoden in Klassen
42 Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding Konstruktoren, Guth, Kaukal, Klimesch 2
43 Klassendefinition In der Designphase wurden die Eigenschaften (Variablen) und das Verhalten (Methoden) definiert. Im Folgenden wird das Implementieren der Methoden behandelt. KlassenName -Variablen +Methoden() class KlassenName { variablendeklarationen; methodendeklarationen(){, Guth, Kaukal, Klimesch 3
44 Methoden Objekte interagieren miteinander durch das gegenseitige Aufrufen von Methoden (=Nachrichtenaustausch). Methoden sind Programmteile, die bestimmte Teilaufgaben lösen (und sollten nach diesen selbstsprechend benannt werden). Eine Methode (Nachricht) besteht aus zwei Teilen: der Signatur (bzw. Methodendeklaration), die Angaben über Sichtbarkeit, Rückgabetyp, Name der Methode und Parameter macht. dem Methodenrumpf, in dem die Deklarationen der lokalen Variablen und die eigentlichen Anweisungen stehen., Guth, Kaukal, Klimesch 4
45 Zweck von Methoden Zustand eines Objektes abfragen point1.getx(); astring.length(); Aufforderung an ein Objekt, etwas zu tun (z.b. Instanzvariable verändern) point1.setinvisible(true); astring.touppercase();, Guth, Kaukal, Klimesch 5
46 Methodendeklaration Zugriff/Sichtbarkeit Methodenname Bezeichner des Parameters public double setx(double xvalue) Typ des Rückgabewerts Typ des Parameters, Guth, Kaukal, Klimesch 6
47 Beispiel zu Methode class Point { public double x, y; //Methodendeklaration:... public double distance(point pkt) { double xdiff = x - pkt.x; double ydiff = y - pkt.y; return Math.sqrt(xdiff*xdiff +ydiff*ydiff); //Methodenaufruf: Class PointTester { public static void main(string[] args) { Point lowerleft = new Point(); lowerleft.x = 0.1; Point upperrigth = new Point(); upperright.x = 0.1; double d = lowerleft.distance(upperright); danach enthält Variable d die Euklidische Distanz zwischen lowerleft und upperright., Guth, Kaukal, Klimesch 7
48 Variablenzugriff Innerhalb der Methode einer Instanz können die eigenen Variablen und Methoden direkt (d.h. ohne Angabe des Instanznamens) aufgerufen werden. z.b. Variable x in der Instanz lowerleft bei Aufruf lowerleft.distance(upperright) Instanz lowerleft x, y Instanz upperright x, y public double distance(point pkt) { double xdiff = x - pkt.x; double ydiff = y - pkt.y; return Math.sqrt(xdiff*xdiff +ydiff*ydiff);, Guth, Kaukal, Klimesch 8
49 Standardvariable this this ist eine Referenz zum aktuellen Objekt, oder anders ausgedrückt this ist eine Referenz auf die aktuelle Instanz der Klasse in der man sich gerade befindet. Über this kann auf alle Variablen und Methoden der Instanz zugegriffen werden., Guth, Kaukal, Klimesch 9
50 this 2 class Point { double x,y; void setx(double x) { this.x = x; //Instanzvariable x wird gesetzt Instanzvariablenname Parametername Innerhalb einer Methode überschreiben bei Namenskonflikten (=gleicher Bezeichnung) die Parameternamen die Variablennamen der Klasse. Lösung: Verwendung von this oder anderen Parameterbezeichner wählen, z.b. newname., Guth, Kaukal, Klimesch 10
51 Statische Elemente Variablen und Methoden, die nicht zu einer bestimmten Instanz sonder zur Klasse gehören. Statische Variablen/Methoden sind auch dann verfügbar, wenn noch keine Instanz der Klasse erzeugt wurde. Statische Variablen/Methoden können über den Klassennamen aufgerufen werden. Deklaration durch das Schlüsselwort: static Bsp: class Point { double x, y; static int count; Point.count kann dann zum Beispiel benutzt werden um die Anzahl der Instanzen von Punkt zu speichern. Auf diese Variable kann von jeder Instanz der Klasse Point aus zugegriffen werden., Guth, Kaukal, Klimesch 11
52 Statische Elemente Programmaufbau class Programm { public static void main(string[] args) Jede Applikation braucht eine Klasse, wo die Applikation startet. Diese Klasse hat eine main-methode. Das Programm startet mit dieser Klasse bei der main-methode. Der main-methode werden die Eigenschaften public und static zugewiesen. static bedeutet, wie wir wissen, dass keine Instanz der Klasse angelegt werden muss. Und zu Beginn einer Applikation existieren ja auch noch keine Instanzen. public bedeutet hier, dass die Java Virtual Machine die Main- Methode des Programms aufrufen darf, um das Programm zu starten., Guth, Kaukal, Klimesch 12
53 Konstruktoren Jede Klasse benötigt einen oder mehrere Konstruktoren. Konstruktoren: reservieren den Speicherplatz für eine neu zu erzeugende Instanz, weisen den Instanzvariablen initiale Werte zu, haben denselben Namen wie die Klasse, werden wie Methoden deklariert, aber ohne Rückgabewert KlassenName(Parameter){... Zu einer Klasse können mehrere Konstruktoren mit verschiedenen Parametern deklariert werden., Guth, Kaukal, Klimesch 13
54 Konstruktoren Beispielklasse Student class Student { private String matrnr; private String name; private int semester; Student(String name, String matrnr) { this.name = name; this.matrnr = matrnr;, Guth, Kaukal, Klimesch 14
55 Konstruktoren - Anwendung Jedes Objekt der Klasse Student kann nun durch den Konstruktor mit zwei Werten initialisiert werden: Eine Zeichenkette, um den Namen zu initialisieren. Eine Zahl um die Matrikelnummer zu setzen. Student mystudent = new Student("Else Maier", " ");, Guth, Kaukal, Klimesch 15
56 Spezialisierte Konstruktoren Zweiter Konstruktor (in Klassendefinition) mit anderer Anzahl bzw. anderen Typen von Parametern: Student(String name, String matrnr, int semester){ this(name, matrnr); this.semester=semester; Aufruf (aus einem Programm): Student mystudent = new Student("Else Maier", " ", 5); Abhängig von der Parameterzahl und ihren Datentypen wird der entsprechende Konstruktor aufgerufen. Innerhalb dieses Konstruktors wird der erste Konstruktor über this(...); aufgerufen., Guth, Kaukal, Klimesch 16
57 Spezialisierte Konstruktoren class Student { private String name, matrnr; private int semester; Beispielklasse Student Student(String studname, String studmatrnr) { //Konstruktor 1 name = studname; matrnr = studmatrnr; Student(String name, String matrnr, int semester) { // Konstruktor 2 this(name, matrnr); //Aufruf Konstruktor 1 this.semester=semester;, Guth, Kaukal, Klimesch 17
58 Default-Konstruktor //Konstruktor 1 verwenden Student s1 = new Student("Petra Schmidt", " "); //Konstruktor 2 verwenden Student s2 = new Student("Peter Baum", " ", 2); Wenn kein Konstruktor erstellt wurde, wird von Java default-mäßig ein Konstruktor (ohne Parameter) zur Verfügung gestellt. Student s = new Student();, Guth, Kaukal, Klimesch 18
59 Zugriffskontrolle In JAVA gibt es drei Attribute und eine Standardeinstellung, die den Gültigkeitsbereich von Klassen, Variablen und Methoden regeln, d.h. festlegen, ob bzw. welche anderen Objekte auf eine Klasse, Variable oder Methode der programmierten Klasse zugreifen können: private protected public package (Standardeinstellung), Guth, Kaukal, Klimesch 19
60 Zugriffskontrolle 2 Grundsätzlich: alle Methoden oder Variablen können innerhalb der Klasse, in der sie geschrieben sind, verwendet oder aufgerufen werden. private Methoden oder Variablen können nur innerhalb der eigenen Klasse verwendet oder aufgerufen werden. keine Angabe (=Standardeinstellung) Methoden oder Variablen sind innerhalb der Eigenen Klasse und innerhalb ihres Pakets* zugreifbar. protected Wie Standardeintellung. Zusätzlich können abgeleite Klassen** (auch außerhalb des Pakets*) diese Methoden und Variablen verwenden. public Methoden oder Variablen lassen sich generell von allen anderen Klassen und Paketen aus aufrufen (Interface von Klassen in Paketen). * Pakete sind Sammlungen von zusammengehörigen Klassen. ** Vererbung wird später behandelt. Einschränkung nimmt zu, Guth, Kaukal, Klimesch 20
61 Zugriffskontrolle 3 class Student { private String name; //... class Uni { public static void main(string[] args) { Student stud1 = new Student(); stud1.name = Peter ; /* Zugriff außerhalb der Klasse Student auf private-variable nicht möglich, kann nur innerhalb der Klasse Student gesetzt werden */, Guth, Kaukal, Klimesch 21
62 Information Hiding Verstecken der Implementierung einer Klasse hinter den Methoden, die auf ihre internen Daten ausgeführt werden. Das heißt: kein direkter Zugriff auf die Variablen, sondern nur via Methodenaufruf: stud1.setname("peter Meyer"); String name = stud1.getname(); Dieses wichtige Konzept der oop wird auch Data Encapsulation (Datenkapselung) genannt., Guth, Kaukal, Klimesch 22
63 Information Hiding - Code 1 Die Deklaration der Variablen als private verhindert den unerwünschten Zugriff auf die Variablen von außerhalb der Klasse. class Student { private String private int... name; matnr;, Guth, Kaukal, Klimesch 23
64 Information Hiding - Code 2 Auf die Variablen kann nur über die Methoden get und set zugegriffen werden. Diese Methoden müssen public deklariert werden.... public String getname() { return name; public int getmatnr() { return matnr;..., Guth, Kaukal, Klimesch 24
65 Information Hiding - Code 3... public void setname(string name) { this.name = name; public void setmatnr(string matnr) { this.matnr = matnr; Mit den Methoden set können den entsprechenden Variablen Werte zugewiesen werden., Guth, Kaukal, Klimesch 25
66 Klasse Student gesamt class Student { private String name; private int matnr; Student(String name, int matnr){ this.name = name; this.matnr = matnr; public String getname(){ return name; public int getmatnr(){ return matnr; /* keine set-methoden: Die Variablen können nur gelesen werden */, Guth, Kaukal, Klimesch 26
67 Information Hiding - Vorteile Die Implementierung der Daten kann verändert werden, ohne dass Programmcode außerhalb der Klasse geändert werden muss. Der Zugriff auf die verschiedenen Variablen kann eingeschränkt werden. Dies verhindert sowohl Datenmanipulationen als auch irrtümliche Veränderung oder Abfrage der Daten. Außerdem können damit die Programmierfehler eingeschränkt werden., Guth, Kaukal, Klimesch 27
68 Nach dieser Einheit sollten Sie... die Zugriffskontrolle von Methoden kennen, die Signatur verschiedener Methoden interpretieren können, die Bedeutung der Konstruktoren kennen, Methoden implementieren können, Information Hiding und statische Methoden kennen und anwenden können., Guth, Kaukal, Klimesch 28
69 Java Einführung Objektorientierung Kapitel 11
70 Inhalt Methoden in Klassen Aufruf der Methoden Konstruktoren Statische Komponenten 2
71 Klassen Klassen fügen Attribute und Methoden zu einer logischen Einheit zusammen. Name Attribute Methoden Klassen sind die Grundbausteine der objektorientierten Programmierung. 3
72 Methoden in Klassen Fraction int n int d void set (int n, int d) void add (Fraction f) void subtract (Fraction f) void multiply (Fraction f) void divide (Fraction f) class Fraction { public int n; // Zaehler public int d; // Nenner public void set (int nn, int dd){ n=nn; d=dd; public void add (Fraction f){ n = n*f.d + f.n*d; d = d*f.d; public void substract(fra
73 Aufruf von Methoden in Klassen I Fraction a = new Fraction(); a.set(1,2); Instanz a... void set (int nn, int dd) { n = nn; d = dd;... Instanzvariablen können in den Methoden auch mit this angesprochen werden. Z.B. kann die Methode set so aussehen: void set (int n, int d) { this.n = n; this.d = d; 5
74 Aufruf von Methoden in Klassen II Fraction a = new Fraction(); a.n=1; a.d=2; Fraction b = new Fraction(); b.n=3; b.d=5; a.add(b); Instanz a... void add (Fraction f) { n = n*f.d + f.n*d; d = d*f.d;... Die Instanz a enthält nun das Ergebnis der Addition. 6
75 Konstruktoren Wenn ein Instanz erzeugt wird, werden alle Klassenvariablen automatisch erzeugt und erhalten folgende Werte: Zahlen: 0 oder 0.0 Referenzen (Strings, Arraynamen, Instanznamen): null Boolean: false Bei der Erzeugung wir eine spezielle Methode aufgerufen (Konstruktor, gleicher Name wie die Klasse, kann Argumente haben). In dieser Methode können die Werte der Instanzvariablen initialisiert werden. 7
76 Definition von Konstruktoren class Fraction{ int n,d; Fraction () { // Default-Konstruktor n=0; d=1; Fraction (int n, int d) { this.n = n; // this bezeichnet die Klassenvariablen this.d = d; Fraction (Fraction tocopy) { // Copy-Konstrukor* this.n = tocopy.n; this.d = tocopy.d;... * Java unterstützt die Methode.clone() der Klasse Object 8
77 Verwendung von Konstruktoren Aufruf: Default Konstruktor Fraction c = new Fraction(); // 0/1 Aufruf: Konstruktor mit Argumenten Fraction d = new Fraction(3,7); // 3/7 9
78 Statische Komponenten Variablen und Methoden die mit dem Schlüsselwort static deklariert werden: Existieren nur 1x (pro Klasse pro Programm) Existieren auch ohne dass eine Instanz der Klasse erzeugt werden muss Können auch über den Klassennamen angesprochen werden Class.field bzw. Class.method() 10
79 Bsp: Statische Komponenten II class MyProg { static void print (String s){ Out.println(s); public static void main (String[] arg) { for (int i=0; i<arg.length; i++) { print(arg[i]); Die Methode main wird beim Programmstart mit dem Array aus Strings aufgerufen. Z.B. java MyProg Hallo, wie geht es? 11
80 Die Klasse Object in Java In Java wird jede Klasse von Object abgeleitet und erbt daher einige Methoden. Object String tostring() Object clone() boolean equals(object obj) Fraction String... siehe java.lang.object in der API Spezifikation 12
81 tostring() Automatische Konversion zu String class Fraction { int n, d; public String tostring() { return("fraction(" + d + "/" + n + ")") class TestFraction { public static void main(string[] args) { f1 = new Fraction(1,2); System.out.println(f1); 13
82 Java Einführung HelloNewWorld oder HelloWorld - revised
83 Das original Programm Methode class HelloWorld { public static void main (String[] args) { Kommentar // Hello world ausgeben System.out.println( Hello world ); Anweisung Block Klasse 2
84 Das Problem Das Programm ist nicht 'sehr' objekt-orientiert Es verwendet keine Klassen, Methoden und Nachrichten! 3
85 Das neue Design HelloNewWorld Mouth +main() +shout(message) 4
86 Implementierung Mouth Die Datei Mouth.java: class Mouth { // Konstruktor Mouth () { System.out.println("Hello, I am a new mouth!"); // Methoden public void shout(string amessage) { System.out.println("The mouth shouts: "+amessage); 5
87 Implementierung HelloNewWorld Die Datei HelloNewWorld.java: class HelloNewWorld { public static void main (String[] args) { // Neue Instanz von Mouth Mouth OurMouth = new Mouth(); // Methode shout aufrufen OurMouth.shout("Hello New World!"); 6
88 Kompilierung javac HelloNewWorld.java durch diesen Befehl wird die Datei HelloNewWorld.java übersetzt. Da der Kompiler feststellt, dass auch die Klasse Mouth benötigt wird, wird diese im aktuellen Verzeichnis gesucht und auch übersetzt. Ergebnis: HelloNewWorld.class Mouth.class Ausführung: java HelloNewWorld 7
89 Java Einführung Objekt-Datentypen und Strings Kapitel 8 und 9
90 Inhalt Was sind Objekt-Datentypen Sonderheiten bei Zuweisung und Vergleich Zeichenketten (Strings) Zeichencodes Char, Char-Arrays und Strings String-Operationen String-Konversion 2
91 Objekt-Datentyp Jede Klasse in Java stellt einen sogenannten Objektdaten-Typ (Benuzerdefinierter Datentyp) dar. Die Instanzen verhalten sich meist wie primitive Datentypen, es gibt jedoch wichtige Unterschiede! 3
92 Bsp: Date class Date { int day; String month; int year; Date int day String month int year Date kann nach der Deklaration wie ein Datentyp verwendet werden. 4
93 Erzeugung und Freigabe Deklaration und Erzeugung von Instanzen Date x, y; x = new Date(); x Objekt y day month year Freigabe von Objekten Garbage Collection: Sobald kein Zeiger mehr auf das Objekt zeigt (Reference Count) x = null; // x zeigt jetzt auf nichts! 5
94 Punkt-Operator Verwendung der Klassenvariablen (Punkt- Operator) Date x = new Date(); x.day = 13; x.month = "November"; x.year = 2001; x Objekt 13 November 2001 day month year Achtung: month ist vom Typ String und daher eigentlich ein Array. 6
95 Zuweisung Zuweisung von Objektnamen Date x, y; x = new Date(); y = x; y.day = 20; x y Objekt 20 day month year Es wird nur die Referenz kopiert, nicht der Wert! Zuweisung ist nur bei gleichem Datentyp (Klassennamen) erlaubt! 7
96 Vergleich Date x, y; x = new Date(); y = new Date(); y.day = 20; x.day = 20; if (x==y) { System.out.println("x ist gleich y"); x y Instanz 20 Instanz 20 day month year day month year Vergleich ergibt immer falsch, weil die Zeiger verglichen werden! 8
97 Übergabe als Parameter Date addoneday (Date b){ b.day++; return b;... Date a = new Date(); a.day=19; b a c Instanz day month year Date c = addoneday(a); // a hat jetzt auch 20! 9
98 Zeichenketten in Java (Strings) Zeichenketten bestehen aus einzelnen Zeichen. Diese Zeichen sind vom primitiven Datentyp char Zeichenketten können als Array von char erzeugt werden, oder als eigener Objekt-Datentyp String (ist in den Bibliotheken von Java vorhanden unter java.lang.string) 10
99 Zeichenkonstanten und -codes 'a', 'A', '?'... Zeichen werden in Java codiert als: ASCII (American Standard Code of Information Interchange): 128 Zeichen, benutzt 7 Bit, keine Umlaute... Darstellung: Zahl (Hex oder Dezimal) Unicode: benutzt 2 Byte, Zeichen, ersten 128 sind identisch mit ASCII (siehe: ) Darstellung: \unnnn... nnnn ist der Code in Hex 11
100 Zeichenvariable (Primitiver Datentyp) Deklaration char ch; Zuweisung ch = 'a'; Kompatibilität mit int char ch2 = 'x'; int i = ch2; // ok, Code in int-variable ch2 = (char) (i+1); 12
101 Standardfunktionen für Zeichen Auswahl von Java-Bibliothek Standardfunktionen: if (Character.isLetter(ch))... // Unicode? if (Character.isDigit(ch))... // Digit? ch=character.touppercase(ch); // Groß ch=character.tolowercase(ch); // Klein siehe: java.lang.character 13
102 char-arrays Eine Kette von Zeichen. Deklaration: char[] s1 = new char[20]; char[] s2 = {'a','b','c'; Zugriff auf einzelne Zeichen: s2[1]='x'; // ersetzt 'b' durch 'x' 14
103 Strings - Zeichenketten (Objekt-Datentyp) Char-Arrays sind relativ umständlich zu verwenden. Da Zeichenketten häufig vorkommen, stellt Java einen eigenen Bibliothekstyp mit dem Namen String (in java.lang) zur Verfügung. 15
104 String-Konstanten Zeichenfolge zwischen doppelten Hochkommas "Hello, I am a String!" "Alice\t2000\nBob\t1500" "Das \"-Zeichen " "Griechische Symbol (pi): \u03c0" Achtung: Unterschied zwischen 'x' und "x" 16
105 Datentyp String Deklaration String a, b; Zuweisung a = "Hallo"; b = a; a b Hallo Achtung: Strings verhalten sich wie Arrays. Der Name ist nur ein Zeiger auf das "String-Objekt" 17
106 Verkettung von Strings Verkettung String a = "Hallo"; a = a + " Welt!"; // einfache Verkettung Andere Datentypen (z.bsp: int) werden zu String konvertiert int i = 12; String b = "Es ist " + i; System.out.println("i hat den Wert " + i); 18
107 Vergleich von Strings String s = new String("Hallo"); if (s=="hallo") {... // Fehler: Referenzen werden verglichen! if (s.equals("hello")) {... /* die richtige Funktion (siehe: java.lang.string) */ 19
108 Stringoperationen die Java-Bibliothek definiert eine Reihe nützlicher Funktionen für Strings (siehe: java.lang.string) String s = "a long string"; string s2; int i; char ch; i = s.length(); // bei Arrays kein ()! ch = s.charat(3); i = s.indexof("ng"); s2= s.substring(2,6) if (s.startswith("abc")) {... 20
109 java.lang.stringbuffer Strings haben nach der Erzeugung eine fixe Länge. Zum zeichenweisen Aufbau eines Strings ist dies ungeeignet. int i; // x kann sein char,int,float... StringBuffer b = new StringBuffer("Hallo"); b.append("rld"); i= b.length(); b.insert(4,"o W"); // an Stelle 4 einfügen b.delete(0,4); // Zeichen von 0-4 löschen b.replace(1,3,"abc"); /* Zeichen 1-3 durch "abc" ersetzen */ 21
110 Stringkonversionen Oft müssen Strings in andere Datentypen konvertiert werden oder umgekehrt: int i = Integer.parseInt("123"); float f = Float.parseFloat("3.14"); String s = String.valueOf(x); char[] a = s.tochararray(); 22
111 Nach dieser Einheit sollten Sie wissen,... was der Unterschied zwischen primitiven und Objekt-Datentypen ist wie Objekt-Datentypen erzeugt, verwendet uns als Parameter übergeben werden wie Strings in Java funktionieren 23
112 Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7
113 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2
114 Das Klassendiagramm Zweck der Darstellung Logischen Aufbau des Systems Statischen Aspekte Zusammenhänge und Beziehungen zwischen den Komponenten 3
115 Klassen in UML Klassen sind die Baupläne für Objekte (Instanzen) Darstellung in UML Klassenname Beispiel einer Klasse in UML PKW oder Klassenname Attribute Methoden Farbe Leistung Geschwindigkeit... Beschleunigen() Bremsen() Lenken()... Klasse W59777: PKW Rot 50km Objekte (Instanzen) 4
116 Elemente Klassendiagramm I Klassen Klassenname Beziehungen (Paths/Associations): für die Übermittlung von Nachrichten (Messages = Aufruf von Methoden) Klasse A spricht mit Klasse B Richtung der Beziehungen (Navigability): Nachrichten können nur in diese Richtung gehen Klasse A spricht mit Klasse B 5
117 Elemente Klassendiagramm II Kardinalitäten (Multiplicity): Anzahl der möglichen Instanzen Klasse A 1 spricht mit 0..* Klasse B Aggregation (Aggregation/Composition): Besteht-aus Beziehung Auto besteht aus 1 * Einzelteile Generalisierung (Generalization): is-a Beziehung -> Vererbung in Java Einzelteil Motor Karosserie... 6
118 Elemente Klassendiagramm III Abhängigkeiten (Dependencies) Klasse A benötigt Klasse B Anmerkungen oder Einschränkung PKW ist nur fahrttüchtig mit: Räder, Karosserie,... PKW 7
119 Beispiel: Klassendiagramm PKW ist nur fahrttüchtig mit: Räder, Karosserie,... PKW 0..* verwendet 1 besteht aus 1 * Motor Einzelteil Karosserieteil... Fahrzeughalter 1 besteht aus 4 Zylinder 8
120 Umsetzung von Generalisierung Einzelteil Motor Karosserie... Vererbung abstract class Einzelteil { // muss nicht unbedingt abstract sein!... class Motor extends Einzelteil {... 9
121 Umsetzung von Komposition I PKW class Rad {... besteht aus 1 4 Rad class PKW { Rad livorad, revorad, lihirad, rehirad; //Instanznamen PKW() { /* Erzeugung der Instanzen der Räder */ livorad = new Rad(); revorad = new Rad(); lihirad = new Rad(); rehirad = new Rad(); 10
122 Umsetzung von Komposition II PKW 1 class Einzelteil {... class PKW { final int ANZAHL=100; // besteht aus 100 Teilen Einzelteil[] dieeinzelteile; /* Implementierung als Array von Instanznamen (auch als Container moeglich) */ besteht aus PKW() { dieeinzelteile = new Einzelteil[ANZAHL]; /* Array erzeugen */ for(int i=0;i<anzahl; i++) { dieeinzelteile[i] = new Einzelteil(); /* Erzeugung der Instanzen der Einzelteile */ * Einzelteil 11
123 Umsetzung einer Assoziation class PKW {... class Fahrzeughalter { PKW meinpkw; // nur Instanzname PKW... 1 void PKWkaufen(PKW einpkw) { verwendet meinpkw=einpkw; // Referenz auf die Inst. setzen 1 class Michael { Fahrzeughalter public static void main(string[] args) { PKW PKW1 = new PKW(); // PKW erzeugen Fahrzeughalter michael = new Fahrzeughalter(); michael.pwkkaufen(pkw1); // PKW an den Farzeughalter uebergeben 12
124 Umsetzung von komplexeren Assoziationen Assoziationen mit höherer (>1) Kardinalität Es muss ein Container (z.b. Array, Liste) verwendet werden. Assoziationen mit Navigierbarkeit in beide Richtungen: Jede Seite muss eine Referenz der anderen Seite haben. Achtung: Problem mit Inkonsistenz! 13
125 Übung Implementieren Sie das gesamte Klassendiagramm. Überlegen Sie sich sinnvolle Attribute und Methoden sowie Einzelteile (mindestens 4). PKW 0..* verwendet 1 besteht aus 1 * Motor Einzelteil Karosserie... Fahrzeughalter 1 besteht aus 4 Zylinder 14
126 Nach dieser Einheit sollten Sie wissen,... wie Beziehungen in UML-Klassendiagrammen dargestellt werden welche Arten von Beziehungen es gibt wie diese Beziehungen in Java umgesetzt werden können. 15
Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9
Java Einführung Objekt-Datentypen und Strings Kapitel 8 und 9 Inhalt Was sind Objekt-Datentypen Sonderheiten bei Zuweisung und Vergleich Zeichenketten (Strings) Zeichencodes Char, Char-Arrays und Strings
MehrJava Einführung Methoden in Klassen
Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding
MehrJava Einführung Klassendefinitionen
Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse
MehrJava Einführung Objektorientierte Grundkonzepte
Java Einführung Objektorientierte Grundkonzepte Inhalt Verständnis der grundlegenden Konzepte der Objektorientierung: Objekte Nachrichten Kapselung Klassen und Instanzen Vererbung Polymorphismus Darstellung
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrUML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language
UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language ADV-Seminar Leiter: Ziel dieses Seminars Verständnis von Objekt-Orientierung Was sind Klassen? Was ist Vererbung?
MehrSilke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode
Methoden und Klassen Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik Wiederholung Jede Applikation braucht eine Klasse mit einer main-methode Eintrittspunkt in das Programm Die main-methode
MehrRepetitorium 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
MehrAlgorithmen und Datenstrukturen 06
31. Mai 2012 1 Besprechung Blatt 5 Fragen 2 Objektorientierte Programmierung Allgemein Sichtbarkeit Konstanten 3 Unified Modeling Language (UML) Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung
MehrJava: Der Einstieg. Algorithmen und Datenstrukturen II 1
Java: Der Einstieg Algorithmen und Datenstrukturen II 1 Grundlegendes zu Java: Historisches 1990-1991: Entwicklung der Programmiersprache OAK durch James Gosling von Sun Microsystems (zunächst für Toaster,
MehrJavakurs 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
MehrDer Datentyp String. Stringvariable und -vergleiche
Informatik 12 mit Java: Gierhardt Zeichenketten bzw. Strings Der Datentyp String Zeichenketten bzw. Strings sind eine häufig benutzte Datenstruktur. Man könnte auch mit Arrays aus Zeichen arbeiten. Da
MehrGrundlagen der Programmierung Teil1 Einheit IV Okt. 2009
Grundlagen der Programmierung Teil1 Einheit IV - 30. Okt. 2009 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Methoden Methoden sind Programmteile,
Mehr3. 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.
MehrInnere Klassen. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java
Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 13.06.07 G. Bohlender (IANM UNI Karlsruhe) Innere Klassen 13.06.07 1 / 11
MehrKapitel 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
MehrString s1, s2; Eine Zuweisung geschieht am einfachsten direkt durch Angabe des Strings eingeschlossen in doppelte Hochkommata:
Informatik mit Java: Gierhardt Zeichenketten bzw. Strings Der Datentyp String Zeichenketten bzw. Strings sind eine häufig benutzte Datenstruktur. Man könnte auch mit Arrays aus Zeichen arbeiten. Da aber
MehrEinstieg in die Informatik mit Java
1 / 16 Einstieg in die Informatik mit Java Innere Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 16 1 Einführung 2 Element-Klassen 3 Lokale Klassen 4 Anonyme Klassen
MehrGrundzüge der Programmierung. Wiederverwendung VERERBUNG
Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse
MehrEinstieg 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
MehrEinstieg 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:
MehrBeispiele 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]
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrEinstieg 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
MehrJavakurs 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
MehrOrientierte Modellierung mit der Unified Modeling Language
UML-Basics: Einführung in Objekt- Orientierte Modellierung mit der Unified Modeling Language Michael Hahsler Ziel dieses Seminars Verständnis von Objekt-Orientierung Was sind Klassen? Was ist Vererbung?
MehrTest zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003
Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik
MehrJava Einführung VARIABLEN und DATENTYPEN Kapitel 2
Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen
MehrEine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.
Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,
MehrKlassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg
Klassen und Objekte Einführung in Java Folie 1 von 28 12. Mai 2011 Ivo Kronenberg Inhalt Objekte Klassendefinitionen Datenelemente (Klassenattribute) Instanzieren von Objekten Konstruktoren Vergleich primitive
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
MehrOOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
MehrKapitel 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
MehrEinführung in die Informatik
Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester
MehrAlgorithmen und Programmierung II
Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
MehrKapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen
Kapitel 9 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Attribute von Klassen, Methoden und Variablen Interfaces WS 07/08 1/ 18 2/ 18
MehrObjektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen
Objektorientierte Programmierung mit Grundlagen 27.10.2008 1 Übersicht 27.10.2008 2 1 Übersicht Klassen und Objekte in - Klassen - Objekte - Klassen - Objekte 27.10.2008 3 Übersicht 27.10.2008 4 2 Einführung
MehrVererbung. 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Übersicht. Vorstellung des OO-Paradigmas
Java, OO und UML Vorstellung des OO-Paradigmas Übersicht Umsetzung des OO-Paradigmas in Java Einführung (seeeeeehr rudimenter) in UML zur graphischen Darstellung von OO Grammatik und Semantik von Java
MehrJavakurs 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
MehrAlgorithmen und Datenstrukturen 07
5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7
MehrEinfü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
MehrAnwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie
Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,
MehrC++ Notnagel. Ziel, Inhalt. Programmieren in C++
C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt
MehrEinstieg in die Informatik mit Java
1 / 22 Einstieg in die Informatik mit Java Generics Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 22 1 Überblick Generics 2 Generische Klassen 3 Generische Methoden 4
Mehr5.5.8 Öffentliche und private Eigenschaften
5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung
MehrObjektorientierte 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).
MehrStatische und Nichtstatische Methoden Properties/ Eigenschaften
Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische
MehrEinführung in die Programmierung
Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0
9 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Gerüstbeispiel Ein Duo, Quarto oder Sexto ist ein Gerüst. Die Klassen Duo, Quarto und Sexto sollen durch Vererbung
Mehr3. Konzepte der objektorientierten Programmierung
3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung
MehrJavakurs 2013 Objektorientierung
Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
Mehr1 Abstrakte Klassen, finale Klassen und Interfaces
1 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
MehrObjektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ
Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die
MehrJava Einführung Methoden. Kapitel 6
Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden
MehrDatenbankanwendungsprogrammierung Crashkurs Java
Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p. Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung
MehrJava I Vorlesung Vererbung und Sichtbarkeit
Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.
MehrEinstieg in die Informatik mit Java
Vorlesung vom 18.4.07, Grundlagen Übersicht 1 Kommentare 2 Bezeichner für Klassen, Methoden, Variablen 3 White Space Zeichen 4 Wortsymbole 5 Interpunktionszeichen 6 Operatoren 7 import Anweisungen 8 Form
MehrInhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte
Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)
MehrProgrammieren in Java
Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von
MehrProf. W. Henrich Seite 1
Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrAbschnitt 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
MehrBeispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme
Schwerpunkte 3. Grundlegende Sprachkonstruktionen imperativer Programme Java-Beispiele: Temperature.java Keyboard.java Imperative Programmierung Beispiel für ein Programm aus drei Komponenten Variable,
MehrKapitel 2. Java: Der Einstieg. 2.1 Grundlegendes zu Java. 2.1.1 Historisches. 2.1.2 Eigenschaften von Java
Kapitel 2 Java: Der Einstieg Im vorigen Kapitel haben wir die Syntax der Sprache Mini-Java kennengelernt. Bevor wir in Kapitel 3 ausführlich auf Syntax und Semantik der Programmiersprache Java eingehen
MehrProgrammieren 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
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
Mehr7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
MehrJava für Computerlinguisten
Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009
MehrJava Schulung (Java 2 Java Development Kit 5 / 6)
2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt
MehrVorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus
Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrObjektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11
Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen
Mehr5.4 Klassen und Objekte
5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrEINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
MehrObjektorientierte Programmierung. Kapitel 12: Interfaces
12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/
MehrOrganisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50
Organisatorisches Vorlesung Donnerstag 8:35 bis 10:05 Übung drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50 Tutorium (Mehr oder weniger) abwechselnd Mo und Mi 10-11:30 Termine
Mehreinkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();
MehrKlausur Grundlagen der Programmierung
Klausur Grundlagen der Programmierung Aufgabenstellung: Martin Schultheiß Erreichte Punktzahl: von 60 Note: Allgemeine Hinweise: Schreiben Sie bitte Ihren Namen auf jedes der Blätter Zugelassene Hilfsmittel
MehrBeispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der
Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrJava Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
MehrGeschachtelte Klassen
Geschachtelte Klassen Die Programmiersprache Java bietet nicht nur die Möglichkeit innerhalb von Klassen Datenfelder und Methoden zu definieren, sondern auch Klassen. Solche Klassen heißen en geschachtelte
MehrTh. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen
Th. Letschert OOP 2 2. Geheimnisprinzip und Sichtbarkeitsbeziehungen Th Letschert FH Gießen-Friedberg Th. Letschert OOP 2 Sichtbarkeitsbeziehungen und Geheimnisprinzip Sichtbarkeitsbeziehungen realisieren
MehrProbeklausur: 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,
MehrPIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik
MehrKlassen mit Instanzmethoden
Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 3.12.07 G. Bohlender (IANM UNI Karlsruhe) OOP und Klassen 3.12.07
MehrEinführung in die. objektorientierte Programmierung
Einführung in die objektorientierte Programmierung Teil 3 Vererbung Modul WI111: Objektorientierte Programmierung Fachrichtung Wirtschaftsinformatik Prof. Dr. Gert Faustmann Fachbereich Berufsakademie
MehrII. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:
Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen
MehrPrimitive Datentypen
Primitive Datentypen 2 Arten von Datentypen: primitive Datentypen (heute) Objekte (später) Java ist streng typisiert, d.h. für jede Variable muß angegeben werden was für eine Art von Wert sie aufnimmt.
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrProgrammieren I + II Regeln der Code-Formatierung
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme WS 2016/2017, SS 2017 Programmieren I + II Regeln der Code-Formatierung In diesem Dokument finden
MehrTag 4 Repetitorium Informatik (Java)
Tag 4 Repetitorium Informatik (Java) Dozent: Patrick Kreutzer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!
MehrÜberschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
Mehr8. Objektorientierte Programmierung. Informatik II für Verkehrsingenieure
8. Objektorientierte Programmierung Informatik II für Verkehrsingenieure Grundbegriffe ALAN KAY, ERFINDER DER SPRACHE SMALLTALK, HAT DIE GRUNDBEGRIFFE DER OBJEKTORIENTIERTEN PROGRAMMIERUNG WIE FOLGT ZUSAMMENGEFASST:
MehrProbeklausur: 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,
MehrProgrammieren in Java
Programmieren in Java Einführung in die objektorientierte Programmierung 2 Einordnung in den Softwareentwicklungsprozess Softwareentwicklung mit JAVA Planung Entwurf Programmierung Test/Evaluation/Pflege
Mehr