Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Introduction to Programming with Java Presented by RA Waraich (adapted from Slides of BJ Vitins) IVT ETH Zürich September 2014.

Ähnliche Präsentationen


Präsentation zum Thema: "Introduction to Programming with Java Presented by RA Waraich (adapted from Slides of BJ Vitins) IVT ETH Zürich September 2014."—  Präsentation transkript:

1 Introduction to Programming with Java Presented by RA Waraich (adapted from Slides of BJ Vitins) IVT ETH Zürich September 2014

2 2 Übersicht Klassen, Methoden, Objekte Referenzen Datentypen und Konventionen Pakete und Zugriffe Codebeispiele

3 Objekte Sind autonome gekapselte Einheiten eines bestimmten Types Haben einen eigenen Zustand (= lokale Variablen) Besitzen ein Verhalten (wenn sie aktiviert werden) Bieten anderen Objekten eine Dienstleistung an Durchführung von Berechnungen Änderungen des lokalen Zustandes Zurückliefern von Variablenwerten oder Berechnungsergebnissen Allgemein: “Reaktion” auf Aufruf einer Methode 3 Quelle: Mattern (2010)

4 Dynamische Klassen und Referenzen Erzeugen von dynamischen Klassen geschieht mit new x(); Es wird eine Instanz bzw. Objekt der Klasse x erzeugt und eine Referenz (“Zeiger”) darauf zurückgeliefert Am besten die Referenz gleich abspeichern: p1 = new x(); Referenzen sind implementierungstechnisch Adressen null gehört zum Wertebereich aller Referenztypen 4 Quelle: Mattern (2010)

5 Erzeugen von Objekten public class Bicycle { // the Bicycle class has three fields public int gear; public int speed; public String marke; } class Herstellung { public static void main (String [] args) { Bicycle f; f = new Bicycle (); f.marke = “Scott”; System.out.println(f.marke) } 5 Quelle: nach Oracle (2014)

6 Programmstruktur (1) Mit “import” werden anderweitig vorhandene Pakete von Klassen verfügbar gemacht. Der Klassenkörper enthält Instanzen und Klassenvariablen Benannte Konstanten Klassenbezogene “static” Methoden Methoden übernehmen die Rollen von Funktionen Konstruktoren sind spezielle Methoden (beim Erzeugen aufgerufen) 6 import class A { } class B { … } Konstruktur { } Method_1{ } Method_1{ } Klassenkörper Quelle: Mattern (2010)

7 Programmstruktur (2) 7 Bei eigenständigen Programmen muss es eine “main” – Methode geben, die so aussieht: public static void main (String[] args) {… Jede Klasse kann eine (einzige) solche “main” – Methode enthalten. Sie wird ausgeführt, wenn der entsprechende Klassenname beim “java” Kommando Zeile genannt wird. import class A { } class B { … } Konstruktur { } Method_1{ } Method_1{ } Klassenkörper Quelle: Mattern (2010)

8 Beispiel class Bicycle { private int cadence = 0; private int speed = 0; private int gear = 1; public String marke; public Bicycle() { System.out.println("Eine Fahrradinstanz wurde generiert"); } void changeCadence(int newValue) { cadence = newValue; } void changeGear(int newValue) { gear = newValue; } void speedUp(int increment) {speed = speed + increment; } void applyBrakes(int decrement) { speed = speed - decrement; } void printStates() { System.out.println("cadence:" + cadence + " speed:" + speed + " gear:" + gear); } } 8 Quelle: Oracle (2014) Attribute von aussen nicht mehr sichtbar Konstruktor besitzt den Klassennamen und hat kein Rückgabetyp Für die Veränderung der Variablen braucht es eine Methode

9 Anwendung des Beispiels class BicycleDemo { public static void main(String[] args) { // Create two different bicycle objects Bicycle bike1 = new Bicycle(); // Invoke methods on those objects bike1.changeCadence(50); bike1.speedUp(10); bike1.changeGear(2); bike1.printStates(); } 9 Quelle: Oracle (2014) Konstruktor wird aufgerufen bike1 ist eine Referenz die auf Bicycle Objekte zeigen kann Bike1 hat auch fünf Methoden, die aufgerufen werden können

10 Ausgabe von Daten in der Kommandozeile int i = ; System.out.println("The value of i is:”, i); Zusätzlich wird danach noch ein Zeilenumbruch erzeugt. 10

11 Konventionen kleingeschrieben: methoden variablen Grossgeschrieben Klassen Konstruktor Oft beginnen Methoden mit einem Verb 11

12 Methoden public double calculateEnergy (double wingSpan, int numberOfEngines, double length, double grossTons) { double energy; //do the calculation here return energy; } 12 Modifier Return Typ, oder void MethodennameNotwendige Parameter Quelle: Oracle (2014)

13 Methoden public class DataArtist {... public void draw(String s) {... } public void draw(int i) {... } public void draw(double f) {... } public void draw(int i, double f) {... } 13 Quelle: Oracle (2014)

14 Information hiding Mit bewusst verfügbaren und unsichtbaren Informationen kann ein Missbrauch der Daten verhindert werden. Korrektheit kann von den Klassen selber überprüft werden. Dadurch wird eine sichere Codeumgebung gewährleistet. Es können Schnittstellen definiert werden. Es können Änderungen im Code erfolgen. 14 Quelle: Mattern (2010)

15 Inheritance 15 Quelle: Oracle (2014)

16 Abstrakte Klassen und Methoden 16 Quelle: Oracle (2014)

17 Referenzen 17

18 Gleichheit a1 a a3

19 Referenzen und Pointer Bicycle b,c; b = new Bicycle (); c Ø b Ø 19 Quelle: nach Mattern (2010) Marke: Cadence: Händler: b = null; c Ø b Ø Hätte man vorher c = b ausgeführt: c b Ø Marke: Cadence: Händler: Dieses Objekt ist nicht mehr zugreifbar und ab sofort endgültig verloren Marke: Cadence: Händler:

20 Zuweisen von Referenzen b = new Bicycle(); c = new Bicycle(); b.marke = “Scott”; c.marke = “Cannondale”; b c 20 Marke: Scott Cadence: Händler: Marke: Cannondale Cadence: Händler: b = c b c System.out.println(b.marke); System.out.println(c.marke); ist beides “Cannondale”. Marke: Scott Cadence: Händler: Marke: Cannondale Cadence: Händler:

21 Gleichheit von Objekten Referenzvariablen können auf Gleichheit / Ungleichheit mit “==“ bzw. “!=“ verglichen werden p == q ist true genau dann wenn die beiden Referenzvariablen auf dasselbe Objekt zeigen (z.B. nach p = q) oder wenn beide null sind. p != q wenn zwei verschiedene Objekte auf die p bzw. Q verweisen, die gleichen Werte haben. 21 Quelle: Mattern (2010)

22 Ungleichheit von Objekten mit gleichen Variablenwerten 22 b = new Bicycle(); c = new Bicycle(); b.marke = “Scott”; c.marke = “Scott”; b c b != c Marke: Scott Cadence: 2 Händler: Marke: Scott Cadence: 2 Händler:

23 Primitive Datentypen 23 Datentyp Grösse Wertebereich Beschreibung boolean JVM- Spezifisch true / false Boolescher Wahrheitswert char16 bit (z. B. 'A') Unicode-Zeichen (UTF-16) byte8 bit Ganze Zahl short16 bit Ganze Zahl int32 bit Ganze Zahl long64 bit Ganze Zahl float32 bit+/-1,4E /-3,4E+38Gleitkommazahl double64 bit+/-4,9E /-1,7E+308Gleitkommazahl

24 Arrays class ArrayDemo { public static void main(String[] args) { // declares an array of integers int[] anArray; // allocates memory for 10 integers anArray = new int[10]; // initialize first element anArray[0] = 100; // initialize second element anArray[1] = 200; // and so forth anArray[2] = 300; } 24 Quelle: nach Mattern (2010)

25 Matrizen double [][] matrix = new double [4][4]; matrix[3][0] = ; int[][] matrix2 = {{1,2,3}, {4,5,6}}; Die Grösse der Matrix / des Arrays wird festgelegt. Einmal festgelegt kann sie sich aber nicht mehr verändern 25 ZeilenanzahlSpaltenanzahl

26 if - else void applyBrakes() { if (isMoving) { currentSpeed--; } else { System.err.println("The bicycle has already stopped!"); } 26

27 while class WhileDemo { public static void main(String[] args){ int count = 1; while (count < 11) { System.out.println("Count is: " + count); count++; } 27

28 for class ForDemo { public static void main(String[] args){ for(int i=1; i < 11; i++){ System.out.println("Count is: " + i); } 28

29 Pakete in Java 29

30 Pakete in Java Paket: Zusammengehörte Menge von Klassen Hierarchischer Aufbau: Paket “xyz” im Paket “java” → “java.xyz” Klassen und Methoden (sowie Attribute von Klassen) sind ohne weitere Angaben nur im eigenen Paket sichtbar und zugreifbar. Konvention: kleingeschriebene Namen Paketdeklaration immer am Anfang einer Datei, z.B. package xyz; 30 Quelle: nach Mattern (2010)

31 Zugriff auf Klassen und Methoden package vehicle; public class Bicycle { … void changeCadence(int newValue) { cadence = newValue; } Bicycle kann auch ausserhalb des Paketes verwendet werden. changeCadence() kann nur innerhalb des package «vehicle» verwendet werden. Ein «private» Modifier erlaubt nur Zugriff innerhalb der Klasse Bicylce. 31 Quelle: nach Mattern (2010)

32 Literatur 32 Mattern, F. (2010) Informtik II, Departement Informatik, ETH Zürich, Zürich. Oracle (2014) The java Tutorials, webpage, URL


Herunterladen ppt "Introduction to Programming with Java Presented by RA Waraich (adapted from Slides of BJ Vitins) IVT ETH Zürich September 2014."

Ähnliche Präsentationen


Google-Anzeigen