Title | Grundlagen Zusammenfassung der Java Grundlagen |
---|---|
Author | claudia bremer |
Course | Objektorientiertes Programmieren in JAVA |
Institution | Hochschule Hannover |
Pages | 35 |
File Size | 2.2 MB |
File Type | |
Total Downloads | 42 |
Total Views | 165 |
eine Zusammenfassung und Übersicht der Java Grundlagen mit den wichtigsten Informationen...
3 wichtige Eigenschaften der abgebildeten Objekte Eigenschaften einer Klasse • jedes Objekt hat eine Identität • Attribute (was das Objekt hat) • jedes Objekt hat einen Zustand • Operationen (was das Objekt kann) • jedes Objekt zeigt ein Verhalten Eine Klasse beschreibt, wie ein Objekt aussehen soll.
Plattformunabhängigkeit Java-Quellcode wird in den Zwischencode übersetzt und dann von der Jave-Laufzeitumgebunt, unabhängig von der Hardware-Plattform, ausgeführt. Objektorientierung
Klassen werden definiert von diesen werden Instanzen oder Objekte erzeugt Programm besteht darin: → Versenden von Nachrichten zwischen dein einzelnen Objekten bzw. → Aufruf von Methoden (Java-Terminologie)
Einfachheit
zugrundeliegende Konstrukte sind übersichtlich, verständlich und leicht zu erlernen mit wenigen Schlüsselwörtern und -konzepten wird eine große Ausdrucksfähigkeit erreicht
Sicher
zuverlässige Speicherverwaltung, konsequente Fehlerbehandlung, Validierung des erzeugten Codes
Open Source
öffentlicher Quellcode
Editonen
unterscheiden sich im Wesentlichen durch die Klassenbibliotheken
JSE - Java Standard Edition
grundlegende Funktionalitäten (inkl. grafischer Benutzeroberfläche, DB, Netzwerk, Dateisystem,....)
JEE - Java Enterprise Edition
für Entwicklung unternehmenskritischer Anwendungen. basiert auf JSE und erweitert diese um weitere Technologien
Java Embedded
für den Einsatz in eingebetteten Systemen
SDK Java Software Development
Sammulng von Daten, -umfasst den Compiler, der den Java-Quellcode in einen Plattformübergreifenden Bytecode (Zwischencode) übersetzt und
JDK java DevelopmentKit
ist die JRE, aber mit Javac (benötigt zum Kompilieren von Java-Quellcode)
JRE Java Runtime Environment
Laufzeitumgebung. Enthält JVM
MainMethode
public static void main(String[] args)
Startpunkt für die Ausführung des Programms (findet der Java-Interpreter diese Methode nicht, führt dies zu einem Laufzeitfehler und es wird eine Fehlermeldung ausgegeben.) mit der Main-Methode kann nichts zurückgeben (void). Sie kann lediglich Werte z.B. am Bildschirm ausgeben oder neue Objekte, im Rahmen der Objektorientierung erzeugen. In ihr werden neue Objekte instanziiert.
public: (Modifier, der den Zugriff regelt.
Public, weil von außerhalb der Klasse auf diese zugegriffen wird
static (unabhängig von der Klasse, in der sie steht)
static: weil sie aufgerufen wird, ohne dass zuvor ein Objekt der Klasse erstellt wurde.
(Datentyp oder) void
void: weil sie keinen Rückgabewert besitzt
Methodenname
main
(String[] args)
Deklarieren von Variablen Erwähnung einer Variable deklariert durch einen Datentyp Initialisieren Erstzuweisung eines Wertes (Wertzuweisung) Definieren
Parameter. Art Kommunikataion Konsole und java-Programm
lassen sich kombinieren Hund bello = new Hund(); die Variable bello, referenziert ein Hund-Objekt. bello.alter = 4; Die Objektvariable alter soll initialisiert werden mit dem Punkt-Operator können Werte initialisiert werden Referenzvariablen eine Referenz auf ein konkretes Objekt einer Klasse
Instanziieren Instanz einer Klasse (Objekt) erzeugen
String beer = new String("Jever"); Objekte werden instanziiert
Datentyp variablenName int userAlter;
Deklaration das erste "Erwähnen" der Variablen
Datentyp variablenName = Wertzuweisung int userAlter = 45; int userAlter = 46;
Initialisierung Erstzuweisung eines Wertes danach eine Zuweisung
Konstruktor Initialisierung der Attributwerte des neuen Objekts ggf. Erzeugung existenzabhängiger Teil-Objekte
besondere Methode, die ein neu gebildetes Objekt in den Anfangszustand versetzen kann. D.h. Objekte können bei der Erstellung sofort mit Werten initialisiert werden. haben den Namen der Klasse keinen Rückgabewert wird kein Konstruktor definiert, wird automatisch ein parameterloser Standard-Konstruktor erzeugt
gibt in Kombination mit dem Schlüsselwort new automatisch eine Referenz auf das gerade erstellte, neue Objekt zurück
return kann dazu genutzt werden, um Schleifen zu verlassen. nach dem Schlüsselwort Return angegebene Variable aus dieser Methode zurück gegeben wird und somit auch außerhalb der Methode nutzbar wird.
public void foo(int a, boolean b){ // Parameter System.out.println(a); System.out.println(b); }
foo(1, true); // Argumente
In der (Methodensignatur) sind zwei Variablen a und b deklariert. Das sind unsere Parameter.
Beim Aufruf der Methode foo() müssen zwei Werte übergeben werden (int und boolean in der richtigen Reihenfolge).
Die Parameter schreiben allgemein vor, wie eine Methode später aufgerufen werden muss:
Diese beiden konkreten Werte sind unsere Argumente beim Methodenaufruf.
Java ist pass-by-value! Bei Parameter von primitiven Datentypen bedeutet pass- by-value, dass die Werte der übergebenen Argumente beim Methodenaufruf in die Parameter-Variablen kopiert werden.
Datentyp
definiert die Art der Daten, die verfügbaren Operationen und den möglichen Wertebereich der Variable einfache Datentypen (byte, short, int, long, doubel, float, char, boolean) → haben fest vorgegebenen Speicherplatz
komplexe Datentypen /Referenztypen definiert durch Klasse oder Array. Sie enthalten den Verweis auf eine Speicherstelle, wo eine komplexe Datenstruktur vorliegt → diese setzt sich aus mehreren einfachen Datentypen oder Referenztypen zusammen Array: identifiziert ein Objekt, das mehrere Werte von demsselben Typ speicher kann Variable: Container public class meineKlasse { static int nummer; //Klassenvar double breite; //Objektvariable }
Name für eine Speicherstelle im Hauptspeicher, die einen bestimmten Datentyp verwendet, um einen Wert zu erhalten. Eine Variable verweist auf einen Speicherbereich im Computer und kann verschiedene Werte annehmen und repräsentieren. Um auf den gespeicherten Wert zuzugreifen wird sie über ihren zugewiesenen Namen angesprochen. •
Instanzvariablen: Objektvariablen . Objekt-Eigenschaften: Größe, Namen, Farbe,... non-static
Instanzvariablen gehören zu den Objekten und unterscheiden sich in ihren Werten von Objekt zu Objekt - (können sie zumindest). • • •
sollten immer private deklariert werden und man sollte mit getter /setter methoden auf sie zugreifen. Nicht statisch speichern die Eigenschaften von Objekten
Klassenvariablen statische Variablen. kann von allen Objekten genutzt werden. Dienen dem kompletten Programm (Spiel: Highscore-Listen) → Schlüsselwort static public static final PW - kann von außen nicht verändert werden. Bsp. static int autoReifenAnzahl = 4; • gehören zur Klasse und nicht zum Objekt • werden nur 1x für alle Objekte der Klasse angelegt • während der ges. Laufzeit des Programms verwendbar • sollten bei Deklaration, initialisiert werden • Zugriff auf Klassenvariable mit o Bezugsobjekt.Name oder o Klassen-Name (bevorzugt)
Klassenvariablen gehören zur Klasse (sind an die Klasse gebunden)
Auto.java
Main.java
//Instanzvariablen (stehen IN einem Objekt zur Verfügung) int ps; String hersteller;
Auto a1 = new Auto();
//Klassenvariable (existieren unabhängig eines konkreten Objektes) static int anzahl
//Zugriff über die Referenzvariable a1.ps = 120; a1.hersteller = “Volvo”; //statischer Zugriff über den Klassennamen Auto.anzahl++;
Konstruktor public Auto(int ps, String hersteller){ //Lokale Variablen this.ps = ps //damit diese Infos (ps, hersteller) langfristig im Objekt gespeichert werden→ this.hersteller = hersteller lokalen Variablen IN DIE Instanzvariablen schreiben → denn die Instanzvariablen sind ans Objekt gebunden anzahl++; Anzahl inkrementieren } lokale Variablen existieren NUR innerhalb {} vom Anweisungsblock, in dem diese deklariert sind
Objektvariablen
Objektvariablen - sind innerhalb eines Objektes sichtbar. Eine Objektvariable wird wie eine Klassenvariable innerhalb einer Klasse deklariert: In Methoden - dienen zur temporären Speicherung von Daten, während diese Methode ausgeführt wird •
Klassenmethoden
lokale Variablen NUR innerhalb einer Methode bekannt
Taschenrechner.java
Die Methode ist static → Klassenmethode. Benötigen kein Objekt, um aufgerufen zu werden. (In der Main muss kein neues Objekt erstellt werden. Diese Methode kann einfach so aufgerufen werden. Operatoren Typ der Information:
•
• • •
Datentyp Typ der Information:
Arithmetische O. (Umfassen alles was mit Rechnen zu tun hat) ▪ In- und Dekrement-Operatoren DÜRFEN NICHT auf ein numerisches Literal angewendet werden 5++ //Fehler Zuweisungslogische Vergleichs-
epräsentieren die Art der Information, die gespeichert werden soll. - Datentypen fallen in 2 Kategorien: • Primitive Datentypen (8) (Zahlen, Unicode-Zeichen, Wahrheitswerte). Diese können nur einen Wert speichern • Komplexe Datentypen (Referenztypen, Klassen, Objekte
Exception /Ausnahmen Exception = Superklasse in java aller Fehler in Java ein weicher Programmabsturz → try{ Anwendung}catch (Exception e){ sysout (e)} gewisse Programmabschnitte werden in try-catch-Abschnitten behandelt. // throws = ich drohe zu werfen // throw = ich werfe jetzt
devision by zero Konstruktor --> Exception() sobald ein Fehler passiert, wird ein neues Objekt von der Superklasse Exception erstellt und dieses finden wir in der Referenzvariable e. try { Taschenrechner.dividieren(20,0); } catch (Exception e) { } Exception = Klasse e = Parameter
Array Container mit fester Anzahl von Werten eines einzelnen Datentyps. Datentyp kann nach deklaration NICHT verändert werden. Länge wird bei Deklaration festgelegt. (Parameter) werden mit Argumenten belegt
Array bei Deklaration initialisieren:
Datentyp[] arrayName = {Wert1, Wert2,....}; int [] arr = {65,5,26,...} * For Schleife zum Füllen eines Java Array
Datentyp[] arrayName; arrayName = new Datentyp[Anzahl] //[Array Length] oder Datentyp [] arrayName = new Datentyp[Anzahl]; //Array erstellen
int[] arr; arr = new int[4]; arr[0] = 65; arr[1] = 5; arr[2] = 26; ...
for (int i = 0; i < array.length; i++) { arrayEins[i] = 1; // Jedes Element erhält die Zahl eins. }
….. auf Elemente zugreifen → Index-Positionen angeben ……. Ausgabe:
sysout (arrayName[indexPosition]); sysout(arr[1]);
Ausgabe alle Elemente for(int i = 0, i < arr.length; i++){ sysout (arr[i]);}
String[] myArr = new String[5]; myArr[0] = “First”; myArr[1] = “Second”;
String[] myArr = {“First”, “Second”, “Third”}
for(int i = 0; i < myArr.length; i++){
for(int i : myArr){
Sysout(myArr[i];}
Sysout (i); }
printf(Formatanweisung)
annotation (Bemerkung)
@SuppresWarnings(“unused”)
Kurzschlussauswertung auch bedingte Auswertung, short-circuit evaluation (S-C-E)
Strategie der Auswertung von booleschen Ausdrücken. Im Allgemeinen steht das Ergebnis eines booleschen Ausdrucks ohne die Verwendung von Kurzschlussauswertung erst nach der Auswertung aller Teilausdrücke fest. Kurzschlussauswertung ermöglicht das vorzeitige Abbrechen einer Auswertung eines booleschen Ausdrucks, sobald das Auswertungsergebnis durch einen Teilausdruck eindeutig bestimmt ist.
Unterstreichung in gelb: kommt nicht zur Auswertung Denn wenn A false ist, kann A &&B nicht true sein, deswegen wird B (hier true und gelb unterstrichen) nicht ausgewertet. Bei Bit-Operatinen ist es anders. Dort werden alle ausgewertet, da 0 und 1 vorhanden sind
Bsp. a = 0; b = 10; if (a != 0).... Die Auswertung des booleschen Ausdrucks wird im Fall, dass die Variable A den Wert 0 beinhaltet, nach der Prüfung auf Ungleichheit A != 0 abgebrochen.
Kontrollstrukturen steuern den Programmablauf / Programmfluss if, if-else, switch-case, while, for-each (spezielle for-Schleife), do-while-loop !!! Sequenz Aufeinanderfolgen versch. Anweisungen (in Blöcken dargestellt). Anweisungen werden von oben nach unten (in (Schneidermann) Reihenfolge der Notation) abgearbeitet → sequentieller Aufbau Einfach-Verzweigung (if-else-Anweisung). Bedingung und dann 2 Alternativen
Verzweigung Wiederholung
Schlüsselwörter: For-Schleife
•
Kopfgesteuerte Schleife - Abweisende Schleife (im Kopf wird auf eine Bedingung überprüft)
•
Fußgesteuerte Schleife - Bedingung wird im Fuß der Schleife geprüft. Mind. 1 Durchlauf
if (falls)
Zählerschleife
else (ansonsten)
switch (Fallunterscheidung)
case (Fall)
if (zu überprüfende Bedingung){ Anweisungsblock wenn Bedingung stimmt } else { ansonsten, wenn Bedingung nicht stimmt }
dangling else wenn zwei verschachtelten if-Anweisungen nur ein else-Zweig gegenübersteht else bezieht sich auf die letzte if-Anweisung magic number
sollte vermieden werden → symbolische KONSTANTEN / finalisierte als Zahl verwendet wird. Variablen an zentraler Stelle wird die Volljährigkeit im Programm kontrolliert und diese kann an final static int VOLLJAHRIG = 18; einer Stelle verändert werden wenn im Programm an versch. Stellen auch noch die 21
Der ternäre Operator /Bedingungsoperator kann eine if-else-Verzweigung ersetzen und weist meist einer Variablen einen Wert zu, in Abhängigkeit vom Ergebnis einer Bedingungsprüfung. Für kurze Prüfungen
Switch case Mehrfachverzweigung
switch case
?
true
:
(Bedingung) false
status = (alter >= VOLLJAHRIG) ? “volljährig” : “nicht volljährig”;
switch(Ausdruck){Anweisung Anweisungsblöcke werden von oben nach unten ausgeführt. Block 1: Deswegen → break; break; Block 2: break; es können auch mehrere case-Blöcke zusammengefasst werden default: }
While-Schleife - kopfgesteuert while(bedingung){Anweisungen} wird solange durchlaufen, bis die Bedingung wahr ist
Do-While-Schleife - Fußgesteuert do{Anweisungen}while(bedingung) wird mind. 1 x ausgeführt
For-each-Schleife for each Element do this….
vorwiegend für Datenstrukturen für jedes Element, mache das... rechts steht die Struktur (namensListe) links steht das Objekt, welches sich in der Struktur befindet (string) in der Variablen string steckt jedes einzelne Objekt aus der Struktur (...am Anfang aus der Position Null, dann aus Pos. Eins,...)
Schleifen dienen dazu, Anweisungen beliebig oft zu wiederholen kopfgesteuerte / abweisende Schleifen → eine Abbruch-Bedingung wird erst überprüft und anschließen die Schleife ausgeführt
fußgesteuerte /annehmende Schleifen → nach der Ausführung, wird die Abbruchbedingung überprüft
abweisende Schleifen: while, for-Schleife while (Bedingung){ Anweisung} boolean ist wichtig
annehmende Schleifen: do-while
Rekursion Methoden rufen sich selbst auf, bis sie die Abbruchbedingung erreicht. Alternative zu Schleifen ... Rekursion, weil sich die Funktion pizzaessen immer wieder selbst aufruft, bis die Abbruchbedingung erreicht ist.
While-Schleife
OOP Die in der Software abgebildeten Objekte haben drei wichtige Eigenschaften: Jedes Objekt hat eine Identität. Jedes Objekt hat einen Zustand. Jedes Objekt zeigt ein Verhalten.
Objekte werden in der Main-Methode erstellt. Methoden sollen nur von Objekten aufgerufen werden.
Konstruktoren konkrete Baupläne
der einzelnen Java-Klassen. mit einem Konstruktor → Objekte erzeugen (ein java-Objekt wird IMMER durch einen Konstruktor erschaffen. Können Objekt-Variablen beim Erstellen direkt mit Werte befüllen. (gleiche) Konstruktoren müssen sich unterscheiden von den Parametern
Methoden ... werden in Klassen definiert. ... beschreiben, was Objekte einer bestimmten Klasse ausführen/ tun können.
Funktionen können unabhängig von einem Objekt oder einer Klasse existieren. In Java gibt es nur Methoden
Methoden werden auf einem Objekt mit dem Punktoperator
.
aufgerufen: obj meineMethode(); Accesss Modifier Rückgabewert Namen (Parameter) public void zeichneLinie
Pakete Klassen, die dasselbe Thema zusammenfassen, werden zu einem Paket zusammengefasst
Methode für eine Linie static void gezeichneteLinie(){ sysout(“-----------------------------”); }
erzeichnisse, in denen mehrere Klassen zu einem Thema abgelegt werden. ese können im Code eingebunden/importiert werden.
Schlüsselwort import die Klasse Scanner liegt in dem Paket util. Util liegt in dem Paket java
Klassen komplexe Datentypen. Baupläne (beschreibt wie ein Objekt aussehen soll)
ede Klasse hat eine Oberklasse • • •
Variablen bestehen aus Konstruktoren Methoden
önnen mehrere Informationen abspeichern. ibt an, was in einem Objekt gespeichert werden darf (Welche Eigenschaften/Attribute) Beschreibt was sich in einem Objekt befinden kann)
Aus den Datentypen (Klassen) werden mit der Main-Methode Objekte (komplexer Container mit Variablen, die uns die Klasse zur Verfügung stellt) erstellt. Eine Klasse ist eine Schablone mit leeren Werten. Klassen können Beziehungen untereinander haben. Die Programmiersprache Java arbeitet objektorientiert. Um das umzusetzen, gibt es das Konzept der Java Klassen. Dabei programmierst du eine Klasse, um später von ihr Objekte erzeugen zu können. Ein Objekt ist eine Beschreibung von zum Beispiel einem Auto, mit Attributen und einem festen Zustand. Eine Verallgemeinerung aller Auto-Objekte ist dann eine Klasse. Sie enthält alle Attribute, welche ein Auto haben kann, weist diesen Attributen jedoch noch keinen Wert zu. Superklasse (Elternklasse) → Vererbung um redundanten Code zu Attribute und Methoden weitergeben vermeiden
Subklasse (Kindklasse) →
Abstrakte Klassen
eschreiben erforderliche Entitäten . B. Auto) auf abstrakte Weise mit einer Blaupause für “normale” Klassen
(Eltern- oder Basisklasse) Zusammenfassung allg. Attribute und Methoden untersch. aber ähnlicher Objekte alle Klassen erben von der Superklasse (Kindsklasse) erben von der Superklasse sämtliche Attribute und Methoden um eigene Attribute und Methoden erweitert (Spezialisierung der Subklasse) •
es können von einer abstrakten Klasse keine Instanzen erstellt werden (Denn wir brauchen keine Exemplare einer Blaupause).
Klasse ist dann abstrakt, wenn mind. 1 ihrer önnen sowohl abstrakte als auch nichtMethoden abstrakt ist. abstrakte Methoden zugleich enthalten.
•
Abstrakte Klassen erstellen kein Standardverhalten für z.B. abstrakte Autos. Sie geben nur an, was jedes Auto können muss.
•
NUR Methodensignatur
abstrakte Klassen können KEINE Instanzen erstellen. Keine Objektbildung Werden für die Vererbung der Attribute und Methoden genutzt. (siehe Superklassen)
bstrakte Klassen sagen WAS getan werden soll (abstrakte Methoden) und die Subklassen sagen WIE etwas das getan werden soll.
edeSub- Klasse einer abstrakten Superklasse muss alle Methoden übernehmen Interface • bestehen nur aus den • abstrakten Methoden (nur • Methodenköpfe)
Schlüsselwort: interface Inhalte sind immer public Methoden sind immer abstrakt, d .h. es können nur Methodensignaturen (ohne Meth...