Einführung in die Programmierung mit BlueJ

Werbung
Einführung in die Programmierung mit BlueJ
Thema 3 – Methoden und Datenspeicher
Dr. Henry Herper – Otto-von-Guericke-Universität Magdeburg - WS 2013/14
Typ-Terminologie in Java
Java - Typen
primitive - Typen
Referenzdatentypen
Ordinaltypen
array
int
boolean
char
2
float
class
Datentypen
Ganzzahlige Datentypen
Datentypen für Gleitkommazahlen
3
Datentypen für Zeichen - Character
Java-Implementierung
Typ Beschreibung
char Word-Zeichen, angeordnet entsprechend des UnicodeZeichensatzes. Die ersten 256 Zeichen entsprechen dem
ANSI-Zeichensatz
4
Größe
2 Byte
Datentypen für Zeichen - Character
Java ermöglicht die Darstellung von Unicode-Zeichen in
hexadezimaler Darstellung. Die Unicode-Schreibweise codiert das
Zeichen durch \u gefolgt von vier hexadezimalen Ziffern (Position in
der Unicode-Tabelle).
Beispiel: ‘a‘ entspricht ‘\u0061‘
Escape-Sequenzen:
Escape-Sequenz
‘\t‘
‘\n‘
‘\‘‘
‘\“‘
‘\\‘
5
Bedeutung
Tabulator
Zeilenvorschub
‘
“
\
Datentypen für Zeichenketten - String
“
zeichenkette
“
Zeichenketten werden in Java nicht als Werte eines speziellen
einfachen Datentyps, sondern als Objekte eines speziellen Klasse
String behandelt.
(Schreibweise für String beginnend mit Großbuchstaben
beachten!)
6
Datentypen für Wahrheitswerte - boolean
Zur Verarbeitung von Wahrheitswerten (z.B. dem Ergebnis von
Vergleichen) gibt es den Datentyp boolean. Variablen dieses
Datentyps können nur die Wahrheitswerte true oder false
annehmen.
public void vergleich2()
{
int a = 3;
int b = 5;
boolean w , w1;
w1 = true;
w = a > b;
System.out.println(w);
System.out.println(w1);
}
7
Konstanten
Eine Konstante ist eine Sonderform der Variablen, der bei der
Deklaration ein Wert zugewiesen wird. Mit dem Schlüsselwort
final wird festgelegt, dass diese Variable bei der Abarbeitung des
Programms nicht mehr verändert wird.
(symbolische Konstante, final-Variable)
Konstantendeklaration
final
8
datentyp
bezeichner
=
ausdruck
;
Deklaration von Methoden
Methodendeklaration:
sichtbarkeit
{
rueckgabetyp
methodenname
methodenrumpf
(
parameterliste
)
}
Sichtbarkeit:
Die Sichtbarkeit legt fest, in welchen Bereichen auf die Methode
zugegriffen werden kann. Wir verwenden public – Zugriff von außen
ist zulässig oder private – der Zugriff ist nur innerhalb des Objektes
zulässig.
9
Deklaration von Methoden
Methodendeklaration:
sichtbarkeit
rueckgabetyp
{
methodenname
methodenrumpf
(
parameterliste
)
}
Rückgabetyp:
Der Rückgabetyp legt fest, welchen Datentyp das Ergebnis der
Methode hat. Das Ergebnis wird über die Rückgabeanweisung
return ausgegeben.
Methoden, die nur den Datenspeicher lesen und keine Veränderung
im vornehmen, werden als sondierende Methoden bezeichnet.
Gibt eine Methode keinen Wert zurück, so hat sie den Rückgabetyp
void. In diesem Fall ist keine return Anweisung erforderlich. Wird sie
verwendet, so führt ihre Abarbeitung zum Abbruch der Methode.
10
Deklaration von Methoden
Methodendeklaration:
sichtbarkeit
rueckgabetyp
{
methodenname
methodenrumpf
(
parameterliste
)
}
Methodenname:
Der Methodenname muss ein gültiger Bezeichner sein. Über diesen
Namen wird die Funktionalität des Objektes aufgerufen.
11
Deklaration von Methoden
Methodendeklaration:
sichtbarkeit
rueckgabetyp
{
methodenname
methodenrumpf
(
parameterliste
)
}
Parameterliste:
Die Parameterliste ist eine Kommaliste von Variablendeklarationen. Die
darin deklarierten Variablen werden als formale Parameter bezeichnet.
Sie werden beim Aufruf der Methode initialisiert und haben innerhalb der
Methode den Status von lokalen Variablen. Werden mehrere Parameter
deklariert, so muss für jeden Parameter eine Typenbezeichnung
angegeben werden. Die Parameterliste kann leer sein.
Die Parameterübergabe erfolgt nach dem Prinzip „Call by Value“. Die
beim Aufruf verwendeten Parameter müssen zuweisungsverträglich zu
denen in der Parameterliste sein.
12
Deklaration von Methoden
Methodendeklaration:
sichtbarkeit
rueckgabetyp
{
methodenname
methodenrumpf
(
parameterliste
)
}
Methodenrumpf:
Der Methodenrumpf beschreibt die Funktionalität einer Methode – den
Algorithmus. Wird im Methodenrumpf der Datenspeicher des Objektes
verändert, so werden diese Methoden als verändernde Methoden
bezeichnet. Sie ändern damit den Zustand eines Objektes.
13
Ausdrücke
Ein Ausdruck besteht aus einer Kombination von Operatoren und
Operanden.
Die einfachste Form eines Ausdrucks ist eine Konstante, eine Variable
oder ein Funktionsaufruf. Diese werden auch als Operanden
bezeichnet. Durch Operatoren können diese Operanden zu
komplexen Ausdrücken zusammengefügt werden. Jeder Ausdruck hat
einen definierten Typ und einen Wert. Daher können Ausdrücke
wieder als Operanden in Ausdrücken auftreten.
Bei den Operatoren werden unäre, binäre und ternäre Operatoren
unterschieden. Ein unärer Operator besitzt nur einen Operanden, ein
binärer Operator besitzt zwei Operanden und ein ternärer Operator
besitzt drei Operanden.
Mit Hilfe von arithmetischen Operatoren werden Berechnungen
durchgeführt, deren Ergebnis ein Zahlenwert ist.
14
Ausdrücke
Ausdrücke bestehen aus Operatoren und Operanden. Ein
Ausdruck steht immer für einen Wert.
Bei der Abarbeitung der Ausdrücke gelten folgende Regeln:
• 
Ein Operand zwischen zwei Operatoren von unterschiedlichem
Rang ist immer an den höherrangigen Operator gebunden.
• 
Ein Operand zwischen zwei gleichrangigen Operatoren ist immer
an den Operator gebunden, der links von ihm steht.
• 
Ausdrücke in Klammern werden als einzelner Operand betrachtet
und immer als erstes abgearbeitet.
• 
Steht der Operator hinter dem Opernden, so wird dies als PostfixNotation bezeichnet. Der Operator wird ausgeführt, bevor der
Operand weiter verwendet wird. (Gilt nur für Inkrement- und
Dekrementoperator.)
15
Binäre arithmetische Operatoren
Operator
+
*
/
%
Bedeutung
Addition
Subtraktion
Multiplikation
Division
Divisionsrest bei
ganzzahliger Division
Der Datentyp eines Ausdrucks ist von den Datentypen
der Operanden abhängig.
Sind bei der Division beide Operanden ganzzahlig, so ist das
Ergebnis auch ganzzahlig. Ist mindestens einer der
Operanden eine Gleitpunktzahl, so ist das Ergebnis der
Division auch eine Gleitpunktzahl.
16
Bestimmung des Ergebnistyps
1.  Es wird geprüft, ob einer der Operanden vom typ double ist – ist
dies der Fall, so ist der Ergebnistyp double. Die Operation wird im
Bereich double ausgeführt.
2.  Falls nicht, prüft der Compiler, ob einer der Operanden vom Typ
float ist – ist dies der Fall, so ist der Ergebnistyp float. Die
Operation wird im Bereich float ausgeführt.
3.  Falls nicht, prüft der Compiler, ob einer der Operanden vom Typ
long ist – ist dies der Fall, so ist der Ergebnistyp long. Die
Operation wird im Bereich long ausgeführt.
4.  Trat keiner der Fälle 1 – 3 ein, so ist der Ergebnistyp der
Operation auf jeden Fall int. Die Operation wird im Bereich int
ausgeführt.
Wird ein andere Ergebnistyp gewünscht, so muss dies durch
Typumwandlung (Voranstellen der Typs) erzwungen werden.
17
Wertzuweisungen
Ergibtanweisungen oder Wertzuweisungen sind in Java als einfache oder
zusammengesetzte Anweisungen möglich. Eine einfache Zuweisung weist
mit Hilfe des Zuweisungsoperators = einer Variablen den Wert eines
Ausdrucks zu.
Die Variable steht immer links vom Zuweisungsoperator, der
zugewiesene Ausdruck immer rechts vom Zuweisungsoperator.
Jede Zuweisung ist selbst ein Ausdruck, dessen Wert der zugewiesene Wert
ist. Damit besteht die Möglichkeit, eine Wertzuweisung in einem Ausdruck
vorzunehmen.
Beispiel: sin( X = 3)
Es wird zuerst der Wert des Ausdrucks berechnet, und anschließend an die
Funktion übergeben.
18
Vorrangregeln
/Quelle: RATZ07,
Seite 75/
19
Beispielaufgabe: Ticketautomat
 
Download-Link in den eduComponents
20
Ticketautomat - Instanzvariablen
public class TicketMachine
{
// Preis für ein Ticket an dieser Maschine
private int price;
// Geldmenge, die bisher eingeworfen wurde
private int balance;
// Gesamtgeldmenge, in diesem Automat
private int total;
21
Ticketautomat
 
 
 
 
 
 
durch Interaktion herausfinden, wie der Automat
funktioniert
Datenspeicher identifizieren: price, total, balance
(Instanzvariablen)
Welche Datentypen haben die Instanzvariablen?
Wie ist der Zugriff auf diese Datentypen geregelt?
Wodurch kann der Inhalt dieser Instanzvariablen
geändert werden?
Wie wird festgelegt, was ein Ticket kostet?
22
Ticketautomat
 
Datenübergabe durch Parameter
23
Ticketautomat
 
Zuweisung des Parameterwertes im Quelltext
public TicketMachine(int cost)
{
price = cost;
balance = 0;
total = 0;
}
24
Sondierende und verändernde Methoden
 
 
 
 
 
Bezug zu Instanzvariablen
sondierenden Methoden geben Inhalt der
Instanzvariablen zurück – sorgen also für Lesezugriff
auf die in der Regel private deklarierten Variablen
verändernde Methoden können den Inhalt von
Instanzvariablen ändern
Instanzvariablen können nicht direkt geändert
werden, immer über Methoden!
stellt sicher, dass nur erlaubte Änderungen
stattfinden
25
Aufgaben und Kontrollfragen
1.  Beschreiben Sie die Methodendeklaration in Java. Gehen Sie dabei auf das
Grundkonzept der Parameterübergabe ein. Welche Anforderungen werden an
die Datentypen der Parameter gestellt. Wie ordnen sich die Parameter in das
Variablenkonzept ein. Erläutern Sie die Funktion der Return-Anweisung.
2.  Wie wird ein Methodenaufruf in Java realisiert?
26
Literatur
/RATZ07/
Dietmar Ratz, Jens Scheffler, Detlef Seese, Jan Wiesenberger
Grundkurs Programmieren in JAVA
Bd. 1: Der Einstieg in die Programmierung und
Objektorientierung
Carl Hanser Verlag München Wien, 2007, ISBN-13:
978-3-446-41268-2
/BARNES09/ David J. Barnes, Michael Kölling
Java lernen mit BlueJ
Pearson Studium, 2009, ISBN-13: 978-3-86894-001-5
Offizielle BlueJ-Webseite: www.bluej.org
Ergänzender Kurs:
http://www.u-helmich.de/inf/BlueJ/kurs11/index.html
27
Herunterladen