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

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Kapselung , toString , equals , Java API
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
Programmieren mit JAVA
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung in die Programmierung Datensammlung
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Grundkonzepte Java - Klassendefinition
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
Die Klasse String und ihre Methoden
Unterprogramme in JAVA
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Programmiervorkurs WS 2014 Referenzdatentypen
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Java-Kurs Übung Besprechung der Hausaufgabe
Java Programme nur ein bisschen objektorientiert.
Konstruktoren.
Implementieren von Klassen
 Präsentation transkript:

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

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

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)

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)

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)

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)

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)

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

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

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

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

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)

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)

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)

Inheritance 15 Quelle: Oracle (2014)

Abstrakte Klassen und Methoden 16 Quelle: Oracle (2014)

Referenzen 17

Gleichheit a1 a a3

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:

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:

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)

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:

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

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)

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

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

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

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

Pakete in Java 29

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)

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)

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