Grundgerüst eines Java - Programms:

Slides:



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

der Universität Oldenburg
Imperative Programmierung
Imperative Programmierung
der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Forschungszentrum caesar
Variablen und Datentypen
10. Grundlagen imperativer Programmiersprachen
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Verteilte Software - Java - Prozedurale Programmierung 1
Abstrakte Klassen HS Merseburg (FH) WS 06/07.
3 Sprachelemente und Anweisungen JavaHS Merseburg (FH) WS 06/07 Strings (Zeichenketten)
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Programmier-sprache Java Weiter mit PP..
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.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
ARRAY oder FELD oder VEKTOR
Basisinformationstechnologie WS 2003/04 T.Schaßan
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Robotik mit LEGO Mindstorms
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Zusammenfassung Vorwoche
Das erste Programm (Folie 16)
Einführung in C++ und das objektorientierte Programmieren (OOP)
Datenformate DVG Datenformate.
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Datenformate DVG Datenformate.
Grundkonzepte Java - Klassendefinition
C# Einheitliches Typsystem
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Programmierung 1. Einführung Seite 1
Variablenkonzept Klassisch, in Java Basistyp
EPROG Tutorium #3 Philipp Effenberger
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Datentypen: integer, char, string, boolean
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
PI Burgenland Java und JavaScript 1. Teil
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
Übersicht Nachtrag zu Ausdrücken
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
Variablen und Datentypen
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Java Programme nur ein bisschen objektorientiert.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Konstruktoren.
Datentypen: integer, char, string, boolean
Variable: typ varName = Wert Kiste: Art Aufschrift  Inhalt
SS 04 Christiane Rauh Christian Hellinger
 Präsentation transkript:

Grundgerüst eines Java - Programms: /* Datei A.java */ package ein.package; // optional // beliebig viele ,import'-Referenzen: import B; // B.class import java.util.Vector; // Vector.class // genau eine ,public'-Klasse: public class A { // beliebig viele Elemente von A float a; // Variable a int f() {...} // Methode f() double g() {...} // Methode g() public static void main( String argv[] ) { ... }   class NurlmPackageNutzbar { int f() {...} /* Ende der Datei A.java */ Java HS Merseburg WS 06/07

Zeichensätze / Unicode Kommentare   In Java gibt es folgende Kommentartypen: // Zeilenweise Kommentare /* Beginn / Ende Kommentar */ einschließlich \r, \n, \r\n /** Dokumentationskommentar */ Zeichensätze / Unicode Java benutzt eine sogenannten Unicode mit 16 bit / Zeichen. Damit sind 65.535 unterschiedliche Zeichen codierbar.   Die Java-Umgebung wandelt ASCII oder Latin-1 Dateien beim Einlesen in den Unicode um. Die allgemeine Darstellung des Unicodes lautet: \udddd // d = hexadezimalziffer Java HS Merseburg WS 06/07

Ziffern in Unicode (Auszug)   Unicode Beschreibung \u0030 - \u0039 ISO-Latin-1 (und ASCII)-Ziffern \u0660 - \u0669 Arabisch-IndischeZiffern \u06f0 - \u06f9 Ost-Arabisch-Indische Ziffern \u0966 - \u096f DewanagarischeZiffern \u09e6 - \u09ef BengalischeZiffern \u0a66 - \u0a6f Gurmukhi-Ziffern \u0ae6 - \u0aef Gujarati-Ziffern \u0b66 - \u0b6f Oriya-Ziffern .... Buchstaben und Ziffern in Unicode (Auszug)   Unicode Beschreibung \u0041 - \u005A ISO-Latin-I (+ ASCII) lateinische Großbuchstaben (,A'-'Z') \u0061 - \u007A ISO-Latin-1(und ASCII) lateinische Kleinbuchstaben (,a'-'z') \u00C0 - \u00D6 ISO-Latin-l, ergänzende Buchstaben \u00D8 - \u00F6 ISO-Latin-1, ergänzende Buchstaben \u00F8 - \u00FF ISO-Latin-1, ergänzende Buchstaben \u0100 - \u1FFF Latin Erweiterung-A, Latin Erweiterung-B, ..... Java HS Merseburg WS 06/07

um ein Zeichen oder eine Ziffer handelt: Die Klasse Character beinhaltet einige Methoden zur Überprüfung, ob es sich um ein Zeichen oder eine Ziffer handelt:   Character.isJavaLetter() = true, wenn Zeichen Unicode–Buchstabe Character.isJavaLetterOrDigit()= true, wenn Zeichen ein Buchstabe oder Ziffer ist Namenskonventionen Folgende Konventionen sollten bei Bezeichnern eingehalten werden:   Klassen- / Schnittstellename beginnen mit Großbuchstaben Methoden- / Variablennamen beginnen mit Kleinbuchstaben Packagenamen werden klein geschrieben Konstanten alles groß Unterstriche nur für mehrteilige Konstanten Zugriffsmethoden set(X) get(X) Java HS Merseburg WS 06/07

package DE.fh-merseburg.de.informatik.javaclasses; Beispiel:   package DE.fh-merseburg.de.informatik.javaclasses; import java.util.Date; class EineKlasseMitEinemLangenNamen { String s; double radius; double nochEinDouble; final int MAX_VALUE = 2001; double eineDoubleMethode() ... int eineIntMethode() ... void setRadius( double d ) ... double getRadius() ... } Java HS Merseburg WS 06/07

abstract double int static boolean else interface super Literale Literale sind Quelltextdarstellung des Wertes eines primitiven Datentyps, eines Strings oder das NULL Symbol. Außer der Darstellung der Unicode Zeichen (\uxxxx) ergeben sich bei Literalen in Java keine Abweichungen zur C-Schreibweise. Schlüsselworte abstract double int static boolean else interface super break extends long switch byte final native synchronized case finally new this catch float null throw char for package throws dass goto* private transient* const* if protected try continue implements public void default import return volatile do instanceof short while Java HS Merseburg WS 06/07

} In Java werden folgende Arten von Datentypen unterschieden:   Elementare Datentypen Felder Klassen Referenztypen Schnittstellen ·         boolean für logische Werte, ·         char für Zeichen, ·         Integertypen byte, short, int, long ·         Fließkommatypen float, double. In Java werden folgende Arten von Datentypen unterschieden:   Elementare Datentypen Felder Klassen Referenztypen Schnittstellen ·         boolean für logische Werte, ·         char für Zeichen, ·         Integertypen byte, short, int, long ·         Fließkommatypen float, double. } Java HS Merseburg WS 06/07

Zugriffe auf eine Variable eines elementaren Typs liefern oder setzen immer direkt den Wert dieser Variable. Es sind keine Pointer auf Variable eines elementaren Datentyps möglich. Ebenso kann die Adresse dieser Variablen nicht ermittelt werden. Die Übergabe eines elementaren Datentyps als Argument an eine Methode erfolgt immer by-value durch Kopieren des Wertes. Referenztypen stehen für Objekte, auf die über einen Pointer (eine Referenz) zugegriffen wird. Pointer werden von Java automatisch verwaltet und können nicht modifiziert werden. Java HS Merseburg WS 06/07

Wertebereiche, Defaultwerte und der benötigte Speicherplatz:   Typ Wertebereich Default Größe byte -128... 127 0 8 bit short -32768... 32767 0 l6 bit int -2147483648... 2147483647 0 32 bit long -9223372036854775808... 0L 64 bit 9223372036854775807 char \u0000... \uFFFF \u0000 l6 bit boolean false, true false 1 bit float +-3.40282E+38 0.0F 32 bit double +- l.79769E+308 0.0D 64 bit Java HS Merseburg WS 06/07

Berechnungsgrundsätze:   Der Operand des kleineren Typs wird automatisch und ohne Informationsverlust in den benötigten größeren Typ konvertiert, bevor die Operation ausgeführt wird. Eine Zuweisung an den Typ byte oder short muß immer mit einer expliziten Typkonvertierung geschrieben werden: byte b1, b2 = 42, b3 = 69; int i = 2147483647, i2 = 0xfedcba98; long k = 2147483648L, k2 = 0x0001000200030042L; i = b2 + b3; // ok. b1 = b2 + b3; // Fehler! b1 = (byte)(b2 + b3); // ok. b3 = (byte) k2; // ok, liefert 0x42 Java HS Merseburg WS 06/07

Die Typkonventierung (,,Casting") erfolgt wie in C/C++ mit: (Datentyp) Ausdruck Die Umwandlung eines kleineren in einen größeren Typ wird vom Compiler bei Bedarf automatisch in der Reihenfolge (von links nach rechts) byte short int long float double char int long float double vorgenommen. Bei Konvertierung eines größeren Typs in einen kleineren Typ (etwa von long nach int oder von short nach byte) werden nur die passenden unteren Bits kopiert und die höherwertigen Bits abgeschnitten. Diese Konvertierungen werden deshalb niemals von Java automatisch vorgenommen, sondern müssen immer mit einem Cast ausdrücklich angefordert werden. Java HS Merseburg WS 06/07

Der Typ char char repräsentiert Unicode-Zeichen, die als vorzeichenloser 16 bit Wert gespeichert werden. Die Zeichenliterale werden in einfache Anführungszeichen geschrieben:   char c1, c2, c_a, c_b, c_A; c_a = ´a´; c_b = ´b´; c_A = ´A´; c1 = ´\n´; c2 = ´\u4321´; Bei Unicode-Zeichen im Bereich unter 255, (ASCII bzw. Latin-l Zeichen) gibt es keine Unterschiede zu char in aus C. Einige Zeichen können auch über die ESC – Sequenzen erreicht werden. Java HS Merseburg WS 06/07

Sequenz Bedeutung \n Zeilenvorschub (engl. new line) (\u000A) LF \t Tabulator (\u0009) HT \b Backspace (\u0008) BS \r (Wagen-)Rücklauf (engl. return) (\u000D) CR \f Seitenvorschub (engl. form feed) (\u000C) FF \\ der inverse Schrägstrich (engl. backslash) selbst (\u005C) \‘ Apostroph (engl. single quote) (\u0027) \“ Anführungsstriche oben (engl. double quote) (\u0022) \ddd ein durch seinen oktalen Wert angegebenes Zeichen, \udddd ein Unicode-Zeichen, wobei jedes d eine hexadezimale Ziffer ist   Alle für Integertypen zulässigen Operationen können auch mit char durchgeführt werden. Die Zuweisung von char zu einem short oder byte – Typ per Typkonvertierung erfolgt durch Kopieren der Bits, wobei aus einem (zwingend positiven) char negative Werte entstehen können. Java HS Merseburg WS 06/07

Daten Daten Methoden Methoden Der Typ boolean Gehalt: Name: Alter: Termine:   Daten Gehalt: Name: Alter: Termine:   class Bankangestellter     class Bankangestellter     Der Typ boolean Boolean wird zur Darstellung der logischen Werte mit den Literalen false und true verwendet. Um den Mißbrauch von Integerwerten für logische Werte zu verhindern, verbietet Java Typumwandlungen zwischen den Integertypen und dem Typ boolean. Java HS Merseburg WS 06/07     Methoden beratenKunde() ... abhebenGeld(aBetrag) if aBetrag<>0 then send Konto abbuchen ... send Kassenautomat ... else... vereinbarenTermin() .... Methoden beratenKunde() ... abhebenGeld(aBetrag) if aBetrag<>0 then send Konto abbuchen ... send Kassenautomat ... else... vereinbarenTermin() ....

Die Fließkommatypen float und double Die Fließkommatypen float und double entsprechen dem Standard IEEE-754 für Gleitkommaarithmetik. Eine float-Variable wird intern mit 32 bit gespeichert und in der Forrn s * m * 2e dargestellt, mit der folgenden Bedeutung s: Vorzeichen +-, m: Mantisse - ein positiver Integerwert < 224 e: Exponent - Integerwert zwischen einschließlich - 149 und 104. Dies entspricht etwa dem Bereich von +-3.40 1038 mit einer Genauigkeit von 6 bis 7 Dezimalstellen. Java HS Merseburg WS 06/07

wenn beide Operanden vom Typ float sind oder Eine double-Variable wird in 64 bit gespeichert, wobei die Mantisse kleiner als 253 ist und der Exponent zwischen -1045 und +1000 liegt. Darstellbare double Werte liegen im Bereich von etwa +-1.798 * 10308 mit einer Genauigkeit von etwa 15 Dezimalstellen.   Die Schreibweise von Fließkommazahlen entspricht den auch in C/C++ üblichen Konventionen. Literale des Typs float müssen mit einem angehängten ´F´ gekennzeichnet werden (ansonsten double-Werte). Der genaue Wert der Zahlenbereiche kann über Konstanten der Klassen java.Float bzw. java.Double (Achtung Grossschreibung) ermittelt werden. Das Resultat einer arithmetischen Operation ist nur dann vom Typ float, wenn beide Operanden vom Typ float sind oder ein Operand float und der andere Operand ein Integerwert (außer long) ist. Java HS Merseburg WS 06/07

/* Werte für +/- unendlich: Float.POSITIVE_INFINITY; Fließkommaoperationen lösen in Java keine Fehlerbedingungen aus (auch nicht die Division durch Null). Falls ein Überlauf entsteht, wird dem Resultat der spezielle Wert ,,unendlich" zugewiesen:   /* Werte für +/- unendlich: Float.POSITIVE_INFINITY; Float.NEGATIVE_INFINITY Double.POSITIVE_INFINITY Double.NEGATIVE_INFINITY */ float f = Float.MAX_VALUE; float g = Float.POSITIVE_INFINITY; if (f == g) ... // false! Das Ergebnis von undefinierten Operationen, z.B. beim Aufruf von Math.sqrt(-1), ist der Wert Double.NaN (,,Not-a-Number") bzw. Float.NaN. Java HS Merseburg WS 06/07

final char MAX_VALUE = ´\uffff´; Konstanten   Alle Variablen der elementaren Typen können durch das Attribut final als Konstanten markiert werden. Sehr häufig werden final-Variablen gleichzeitig als static definiert. Eine final-Variable muss natürlich sofort bei ihrer Deklaration initialisiert werden, da der Wert später nicht mehr geändert werden kann: final char MAX_VALUE = ´\uffff´; static final double PI = 3.14159265358979323846; final static int MIN_PRIORITY = 1; final static int MAX_PRIORITY = 10; Java HS Merseburg WS 06/07