Upload
doantuong
View
213
Download
0
Embed Size (px)
Citation preview
Toni Barthel
TAG 4: SORTIEREN VON ARRAYS, OBJEKTORIENTIERTE PROGRAMMIERUNGBrückenkurs Programmierung SoSe 16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Organisatorisches I
Themen:• Tag 1: Variablen Operatoren, Verzweigungen • Tag 2: Animationen, Schleifen • Tag 3: Funktionen, Events, Arrays, Exkurs: Speicherverwaltung • Tag 4: Sortieren von Arrays, Objektorientierte Programmierungm Geheimnisprinzip • Tag 4: Ausblick auf Java und C
Heute:• Wiederholung Tag 3 • etwas mehr Praxis
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Toni Barthel
TAG 4.0: WIEDERHOLUNGBrückenkurs Programmierung SoSe 16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
WDH: Funktionen
Dieses Prinzip setzt voraus, das komplexe Aufgaben in ihre Grundbestandteile unterteilt werden um die kleineren Teilaufgaben später einfach wiederverwenden zu können – Modularität.
Erläutern Sie das Prinzip der Modularität.
void beliebigeFunktion() {}
Formulieren Sie beliebige Funktion/Methode ohne Rückgabewert.
… beliebig viele.Wie viele Variablen kann ein eine Funktionsdefinition enthalten?
… alle primitiven Datentypen sowie Referenzdatentypen.Welche Rückgabewerte kann eine Funktion annehmen?
Brückenkurs Programmierung SoSe 16 - Toni Barthel
WDH: Funktionen/Events in Processing I
Welche Mouse-Events kennen Sie?
void mouseClicked() { // Aktion wenn die Maus geklickt wurde} void mousePressed() { // Aktion wenn die Maus geklickt ist} void mouseReleased() { // Aktion wenn eine Maustaste losgelassen wird.} void mouseMoved() { // Aktion wenn sich die Maus bewegt} void mouseDragged() { // Aktion wenn die Maus geklickt ist und bewegt wird}
Auch wenn ein Stück Code nur einmal aufgerufen wird,
kann es Sinn machen dieses in eine eigene Funktion
auszulagern, um den Code lesbarer zu machen und die Fehlersuche zu erleichtern.
Brückenkurs Programmierung SoSe 16 - Toni Barthel
WDH: Funktionen/Events in Processing II
Die Funktion setup() wird einmal zu Beginn des Programms einmal ausgeführt
Wann und wie oft wird die Funktion setup() ausgeführt?
Die ist die draw() Funktion.
Auf welche Funktion trifft folgende Beschreibung zu? „Wird, je nach frameRate() pro Sekunde ausgeführt (default 60 Frames pro Sekunde) - Hauptteil unseres Processing“
Die Funktion wird einmal ausgeführt, wenn eine Taste auf der Tastatur gedrückt wird.
Wann wird die Funktion keyPressed() ausgeführt?
Brückenkurs Programmierung SoSe 16 - Toni Barthel
WDH: Arrays
int[] a = new int [5];Definieren Sie ein Array der länge 5.
for (int i=0;i<a.length; i++){ a[i] = i+10; }
Füllen sie das definierte Array mit einer aufsteigenden Zahlenfolge.
int[] a = {1,2,3,4,5,6,7};for(int i=0; i<a.length;i++) if(a[i]%2!=0) a[i]=0;
Ändern Sie den Wert des Arrays an 3. Stelle auf den Wert 99.
Brückenkurs Programmierung SoSe 16 - Toni Barthel
WDH: Arrays
int[] a = {1,2,3,4,5};for(int i = a.length; i!=0 ;i--){ println(a[i-1]);}
Geben Sie das definierte Array a zeilenweise, von der letzten zur ersten Stelle auf der Konsole aus.
int[] a = {1,2,3,4,5};for(int i = a.length; i!=0 ;i--){ println(a[i-1]);}
Überschreiben sie jedes gerade Element im Array a mit dem Wert 0.
Brückenkurs Programmierung SoSe 16 - Toni Barthel
WDH: Speicherverwaltung I
Auf dem Stack werden Parameter und alle lokalen Variablen aller gerade aktiven Methoden verwaltet. (Parameter und Lokale Variablen leben nur für die Dauer der Aktivität der Methode)
Definieren Sie den Begriff Stack.
Auf dem Heap werden Objekte verwaltet (unter anderem mit new angelegt). Der Inhalt der Referenzvariablen verweisen auf den Speicherort der Objekte im Heap. Ein Array ist ein Objekt.
Definieren Sie den Begriff Heap.
In welche zwei Datentyp-Arten können Sie unterscheiden?primitive (einfache) Datentypen und komplexe Datentypen
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Zeichnen Sie für folgenden Sachverhalt einen Stack und einen Heap.
WDH: Speicherverwaltung II
void main (String[] args){ int[] a = {1,2,3,4}; int[] b = {10,20,30,40};} public static void main(String[] args) {
int[] a = {1, 2, 3, 4}; int[] b = {10, 20, 30, 40}; ... }
a"b"
args"...
1 2 3 4
10 20 30 40
Stack& Heap&
Brückenkurs Programmierung SoSe 16 - Toni Barthel
WDH: Speicherverwaltung III
Welche Aufgabe hat die Carbage Collection?
• Der Garbage Collector reinigt den Heap vom „Müll“ • Verfolgt systematisch alle Referenzen und markiert diese • Nicht markierte Objekte können weggeräumt werden, da keine Referenzvariable auf
diese Objekte zeigt • Das Wegräumen nicht benötigter Objekte erfolgt automatischIn regelmäßigen
Abständen
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Toni Barthel
TAG 4.1: SORTIEREN VON ARRAYSBrückenkurs Programmierung WiSe 15/16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Wie bringen wir Ordnung in ein Array?
int[] a = {5,1,12,-5,16};
ProblemstellungSie haben ein unsortiertes Array a vorliegen. Wie können Sie dieses am einfachsten sortieren? Es geht nicht um Geschwindigkeit oder Performance – einfach nur sortieren.
int[] a = {-5,1,5,12,16};
BUBBLESORT
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Wie bringen wir Ordnung in ein Array?
In der Bubble-Phase wird die Eingabe-Liste von links nach rechts durchlaufen. Dabei wird in jedem Schritt das aktuelle Element mit dem rechten Nachbarn verglichen. Falls die beiden Elemente das Sortierkriterium verletzen, werden sie getauscht. Am Ende der Phase steht bei auf- bzw. absteigender Sortierung das größte bzw. kleinste Element der Eingabe am Ende der Liste.
Der BubbleSort …
void swap(int[] meinArray, int index1, int index2){ int temp = meinArray[index1]; meinArray[index1] = meinArray[index2]; meinArray[index2] = temp;}
int[] bubblesort(int[] meinArray) { for (int i=1; i<meinArray.length; i++) for (int j=0; j<meinArray.length-i; j++) if (meinArray[j]>meinArray[j+1]) swap(meinArray,j,j+1); return meinArray;}
void draw() { int[] unsortiert={5,1,12,-5,16}; int[] sortiert=bubblesort(unsortiert); for (int i = 0; i<sortiert.length; i++) System.out.print(sortiert[i] + " "); exit();}
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Toni Barthel
TAG 4.2: BASIS OBJEKTORIENTIERTE PROGRAMMIERUNGBrückenkurs Programmierung WiSe 15/16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Zu Erinnerung … I - Theorie
Klassen und Objekte in Programmen
Klassen: definieren die Art der Speicherung und die Operationen (Funktionen und Methoden).
Objekte: sind Exemplare (Instanzen) einer Klasse
Sie enthalten die jeweils unterschiedlichen Daten. Objekte haben i.A. einen sich ändernden Zustand.
Methoden eines Objekts operieren auf den Daten des Objekts. N
ur v
om P
rinzip
her
. Au
tos
bild
en k
eine
Men
sche
n ab
!
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Zu Erinnerung … II - Aufbau im Quellcodeclass BouncingBall {
//Variablen (Eigenschaften) float x = 0; float y = 0; //Konstruktor (Baumeister) BouncingBall () { } //Methoden (Fähigkeiten) void display(){ ellipse(200,200,20,20); } }
Konstruktor (spezielle Methode!)
Methoden (allgemeine)
Variablen, Eigenschaften
display()
Objekt: b1 mit der Bauplan aus
der Klasse BouncingBall
float x = 0;float y = 0;
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Klassenaufbau und Objekterzeugenclass BouncingBall {
//Variablen (Eigenschaften) float x = 0; float y = 0; //Konstruktor (Baumeister) BouncingBall () { } //Methoden (Fähigkeiten) void display(){ ellipse(200,200,20,20); } }
//DeklarationBouncingBall myBall;
//Initalisierung (Setup)
void setup(){ size(600,600); smooth(); //Erzeugen einer neuen Instanz der Klasse //(anlegen eines neuen Objektes) //new ist das Schlüsselwort myBall = new BouncingBall(); }
void draw(){ background(0); myBall.display(); //Aufruf der Funktion} Main_BouncingBall_ProgrammBouncingBall
Brückenkurs Programmierung SoSe 16 - Toni Barthel
//DeklarationBouncingBall myBall;BouncingBall myBall2;
//Initalisierung (Setup)
void setup(){ size(600,600); smooth(); myBall = new BouncingBall(200,200); myBall2 = new BouncingBall(300,400);}
void draw(){ background(0); myBall.display(); myBall2.display(); } Main_BouncingBall_Programm
Klassenaufbau und Objekterzeugenclass BouncingBall {
//Variablen (Eigenschaften) float x = 0; float y = 0; //Konstruktor (Baumeister) BouncingBall (float einX, float einY) { this.x = einX; this.y = einY; } //Methoden (Fähigkeiten) void display(){ ellipse(this.x,this.y,20,20); }}
BouncingBall
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Exkurs: Objekte im Array erzeugen und anzeigen
//DeklarationBouncingBall[] myBalls;
//Initalisierung (Setup)void setup(){ size(600,600); smooth(); myBalls = new BouncingBall[10]; for(int i=0; i<myBalls.length;i++) myBalls[i] = new BouncingBall(10+(i*40),200);}
void draw(){ background(0); for(int i=0; i<10;i++) myBalls[i].display();}
Main_BouncingBall_Programm
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Bewegung des Ballsclass BouncingBall { ... void move(){ this.x = this.x + this.speedX; this.y = this.y + this.speedY; } void bounce(){ if((x > width) || (x < 9)) this.speedX = this.speedX * -1; if((y > height) || (y < 9)){ this.speedY = this.speedY * -1; } void gravity(){ this.speedY = speedY + 0.2; } ...} BouncingBall
...
void draw(){ background(0); myBall.display(); //Aufruf der Funktion myBall.move(); myBall.bounce(); myBall.gravity();}
Main_BouncingBall_Programm
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Exkurs: Bewegung des Balls//DeklarationBouncingBall[] myBalls;
//Initalisierung (Setup)void setup(){ size(600,600); smooth(); myBalls = new BouncingBall[10]; for(int i=0; i<myBalls.length;i++) myBalls[i] = new BouncingBall(10+(i*40),200);}
void draw(){ background(0); for(int i=0; i<10;i++) { myBalls[i].display(); myBalls[i].move(); myBalls[i].bounce(); myBalls[i].gravity(); }}
Main_BouncingBall_Programm
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Weitere Strukturierung
//DeklarationBouncingBall myBall;
//Initalisierung (Setup)
void setup(){ size(600,600); smooth(); //Erzeugen einer neuen Instanz der Klasse + //(anlegen eines neuen Objektes) myBall = new BouncingBall(200,200); }
void draw(){ background(0); myBall.run();}
class BouncingBall { ... //Methoden (Fähigkeiten) void run () { this.move(); this.bounce(); this.gravity(); this.display(); } void move(){ this.x = this.x + this.speedX; this.y = this.y + this.speedY; } void bounce(){ if((x > width) || (x < 9)) this.speedX = this.speedX * -1; if((y > height) || (y < 9)) this.speedY = this.speedY * -1; } ...}
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Weitere Strukturierung//DeklarationBouncingBall[] myBalls;
//Initalisierung (Setup)void setup(){ size(600,600); smooth();
myBalls = new BouncingBall[10]; for(int i=0; i<myBalls.length;i++) myBalls[i] = new BouncingBall(random(0,600),random(0,300));}void draw(){ background(0); for(int i=0; i<10;i++) { myBalls[i].run(); }}
Main_BouncingBall_Programm
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Letzte Umbauten
//DeklarationBouncingBall[] myBalls;
//Initalisierung (Setup)void setup(){ size(600,600); background(0); smooth();
myBalls = new BouncingBall[10]; for(int i=0; i<myBalls.length;i++) myBalls[i] = new BouncingBall(random(0,600),random(0,300));}
void draw(){ for(int i=0; i<10;i++) { myBalls[i].run(); }} Main_BouncingBall_Programm
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Toni Barthel
TAG 4.3: OOP - GEHEIMNISPRINZIPBrückenkurs Programmierung SoSe 16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Prinzipien der OOP
Kohäsion
Kohäsion und Kopplung
Geheimnisprinzip
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Kohäsion
Kohäsion einer SW-Komponente Beschreibt den innerer Zusammenhalt der Komponente: Eine SW-Komponente (z.B. Klasse) sollte stets ein klardefiniertes und fest umrissenes Konzept realisieren!
Die Kohäsion einer Klasse sollte so groß wie möglich sein.
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Kohäsion
In der objektorientierten Programmierung beschreibt Kohäsion, wie gut eine Programmeinheit eine logische Aufgabe oder Einheit abbildet. In einem System mit starker Kohäsion ist jede Programmeinheit (eine Methode, eine Klasse oder ein Modul) verantwortlich für genau eine wohldefinierte Aufgabe oder Einheit. (Wikipedia)
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Geheimnisprinzip: Kohäsion und Kopplung
Kopplung von SW-Komponenten Gegenseitige logische oder reale Abhängigkeit von Komponenten: • Information die notwendig ist, um die Komponente nutzen zu können. • Information (Daten) die von mehreren Komponenten gemeinsam genutzt wird.
Die Kopplung von Klassen sollte so klein wie möglich sein.
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Geheimnisprinzip: Kohäsion und Kopplung
class Tiger { public void reize() {...} } public class Kaefig { private Tiger tiger = new Tiger(); public Tiger getTiger() { return tiger; } }
public class User { public void m (Kaefig k) { (k.getTiger()).reize(); } }
Referenz'auf'ein'gekapseltes'Objekt'
class BouncingBall { //Variablen (Eigenschaften) float x = 0; float y = 0; float speedX = 4; float speedY = 0.5; //Konstruktor (Baumeister) BouncingBall (float eingabeX, float eingabeY) { this.x = eingabeX; this.y = eingabeY; }
void draw(){ for(int i=0; i<10;i++) { myBalls[i].run(); myBalls[i].speedX = 10; }}
Aufgedecktes Geheimnis Privacy-Leak: Eine Referenz (!) auf Internes wird mit dem Nutzer geteilt, beispielsweise weil es mit einem getter ausgeliefert wird. Objekte können manipuliert werden, ohne die offizielle Schnittstelle zu nutzen!
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Was ist daran so schlimm? Wie macht man es richtig?
Geheimnisprinzip: Kohäsion und Kopplung
Öffentliche Objektvariablen erhöhen unnötig die Kopplung
Hüten&sollst&Du&Dich&vor&öffentlichen&
Objektvariablen!&
So&spare&ich&mir&Methodenaufrufe,&das&
Programm&läuC&schneller!&
in zwei Schritten …
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Verhindern eines Privacy-Lacks
class BouncingBall { //Variablen (Eigenschaften) private float x = 0; private float y = 0; private float speedX = 4; private float speedY = 0.5; //Konstruktor (Baumeister) BouncingBall (float eingabeX, float eingabeY) { this.x = eingabeX; this.y = eingabeY; }
void draw(){ for(int i=0; i<10;i++) { myBalls[i].run(); myBalls[i].speedX = 10; }}
Die$dunkle$Seite$der$Macht;$mit$hoher$
Kopplung$arbeitet$sie;$ins$Chaos$führt$sie$!$
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Problemstellung
display()
Objekt: b1 mit der Bauplan aus der Klasse BouncingBall
private float x = 0;private float y = 0;
private color c = color(120);
run()
boun
ce()
grav
ity(
)
Wie kann ich speedX von außen verändern?
In dem ich mir Methoden dafür baue!
setCol
or()
Öffentliche Objektvariablen: ersetze durch Getter- und Setter-Methoden
Brückenkurs Programmierung SoSe 16 - Toni Barthel
//Variablen (Eigenschaften) private color c = color(120,158,25); ...
//Methoden (Fähigkeiten) void setColor (float r, float g, float b) { this.c = color(r,g,b); } float getColor() { return this.c; }
Get- und Set-Methode
void draw(){ for(int i=0; i<10;i++) { myBalls[i].run(); println(myBalls[i].getColor()); myBalls[i].setColor(random(0,255),random(0,255),random(0,255)); }}
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Zusammenfassung• class• private• getter und setter()
• Sortieren eines Arrays • Aufbau einer Klasse • Variablen -> Attribute (Eigenschaften) • Methoden -> Konstruktoren (Baumeister) • Methoden (Fähigkeiten)
Praxis:
• Kohäsion • Kopplung • Geheimnisprinzip
Theorie:
class Ball { float x,y; Ball(float x, float y) { this.x = x; this.y = y; } void display() { ellipse(x,y,50,50); } }
Klasse und Methode:
Ball b = new Ball(100,200);b.display();
Objekte und Methodenaufruf:
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Toni Barthel
TAG 4.1.1: KODIERRICHTLINIENBrückenkurs Programmierung SoSe 16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Das wichtigste in kürze
http://bit.ly/1WARFyZ
• Klassennamen werden Groß geschrieben, z.B. MeineKlasse
• Variablennamen werden klein geschrieben, z.B. meineVariable
• Funktionsnamen werden klein geschrieben, z.B. meineTolleFunktion
• Entweder CamelCase oder under_line • Namen sind eindeutig und leicht verständlich
zu wählen (Nur einzelne Buchstaben sind nicht praktikabel, nutzen Sie ganze Wörter!)
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Toni Barthel
TAG 4.1.2: LITERATUR-EINBLICK (ERST IN DIE BIB)Brückenkurs Programmierung SoSe 16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
… Spannende Literatur …
Einführung in die Informatik
Taschenbuch: 912 Seiten Verlag: Oldenbourg Wissenschaftsverlag; Auflage: vollständig überarbeitete Auflage (20. Oktober 2010) Sprache: Deutsch ISBN-10: 3486597116 ISBN-13: 978-3486597110
ERST IN DIE BIB
Brückenkurs Programmierung SoSe 16 - Toni Barthel
… Spannende Literatur …
Java ist auch eine Insel: Programmieren mit dem Standardwerk für Entwickler, aktuell zu Java 8
Gebundene Ausgabe: 1306 Seiten Verlag: Galileo Computing; Auflage: 11 (26. Mai 2014) Sprache: Deutsch ISBN-10: 3836228734 ISBN-13: 978-3836228732
ERST IN DIE BIB
Brückenkurs Programmierung SoSe 16 - Toni Barthel
… Spannende Literatur …
Programmieren lernen mit Java: Aktuell zu Java 8 und mit dem WindowBuilder - Ausgabe 2015
Taschenbuch: 537 Seiten Verlag: Rheinwerk Computing; Auflage: 3 (23. Februar 2015) Sprache: Deutsch ISBN-10: 383623517X ISBN-13: 978-3836235174
ERST IN DIE BIB
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Grundkurs JAVA: Von den Grundlagen bis zu Datenbank- und Netzanwendungen
… Spannende Literatur …
Taschenbuch: 568 Seiten Verlag: Springer Vieweg; Auflage: 8.,
überarb. und erw. Aufl. 2015 (14. Januar 2015)
Sprache: Deutsch ISBN-10: 3658079673 ISBN-13: 978-3658079673
ERST IN DIE BIB
Brückenkurs Programmierung SoSe 16 - Toni Barthel
… Spannende Literatur …
Grundkurs C++: C++-Programmierung verständlich erklärt (Galileo Computing)
Broschiert: 447 Seiten Verlag: Galileo Computing; Auflage: 2 (27. Mai 2013) Sprache: Deutsch ISBN-10: 3836222949 ISBN-13: 978-3836222945
ERST IN DIE BIB
Brückenkurs Programmierung SoSe 16 - Toni Barthel
… Spannende Literatur …
C++: Das umfassende Handbuch, aktuell zum Standard C++11 (Galileo Computing)
Gebundene Ausgabe: 1062 Seiten Verlag: Galileo Computing; Auflage: 3 (27. Januar 2014) Sprache: Deutsch ISBN-10: 3836220210 ISBN-13: 978-3836220217
ERST IN DIE BIB
Brückenkurs Programmierung SoSe 16 - Toni Barthel
… Spannende Literatur …
C: Programmieren von Anfang an
Taschenbuch: 320 Seiten Verlag: rororo; Auflage: 22 (1. Dezember 1999) Sprache: Deutsch ISBN-10: 3499600749 ISBN-13: 978-3499600746
ERST IN DIE BIB
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Toni Barthel
TAG 4.1.3: VERSIONSVERWALTUNG: GIT & GITLABBrückenkurs Programmierung SoSe 16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Cheat Sheet: Bezeichner und Namen
• ursprünglich von Linus Torvalds für die Verwaltung des Linux-Kernels entwickelt
• Versionierungs-Tool Git • GIT (Blödmann) ist eine freie Software • zur Versionsverwaltung u.a. Quellcode
• Wie GIT? • Klein und schnell! • Schnelles Branching & Merging • Verteilte Repositiories • Freie, offene Software
• Eigenschaften • Klon des kompletten Archivs (Repositories)
lokal • nicht lineare Entwicklung (siehe Grafik) https://git-scm.com
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Toni Barthel
TAG 4.1.4: DIE IDE ECLIPSEBrückenkurs Programmierung SoSe 16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Was ist Eclipse?
Eclipse IDE (= Integrated Development Environment) ist ein mächtiges Programmierwerkzeug für die Entwicklung von Software:
• Stellt viele Komponenten zur Verfügung, die das Entwickeln von Software um ein vielfaches vereinfacht:
• Text-Editor mit Syntaxhervorhebung / Auto-Formatierung • Direktes markieren von Syntaxfehlern • Automatische Vervollständigung • Einfaches Erzeugen und Organisieren von Softwarekomponenten • Debugger • Ausführung von Programmen per Knopfdruck • … und sehr viel mehr !!!
Brückenkurs Programmierung SoSe 16 - Toni Barthel
ECLIPSE INSTALLIEREN
Wichtig: Java JDK muss auf ihrem Rechner installiert und korrekt eingerichtet sein, damit Sie Eclipse verwenden können !!!
• Laden Sie die aktuellste Version von Eclipse • http://www.eclipse.org/downloads/ • Eclipse IDE for Java Developers • Aktuellste Version: Luna
• Die Installation besteht lediglich aus dem Entpacken der geladenen Archivdatei • Öffnen Sie (in Eclipse): Window / Preferences / Installed JREs
• Hier sollte ein jdk-1.8.0 erscheinen und aktiviert sein • Öffnen Sie (in Eclipse): Window / Preferences / Compiler
• Stellen Sie sicher dass der Compiler compliance level auf 1.8 gesetzt ist.
Brückenkurs Programmierung SoSe 16 - Toni Barthel
WORKSPACE
• Der Workspace repräsentiert einen Container (Ordner), in dem erstellte Projekte verwaltet werden
• Name des Workspace ist frei wählbar • Es können beliebig viele Workspaces
existieren
• Jedes erstellte Projekt in einem Workspace entspricht einem Unterordner
• Der Unterordner hat jeweils den Projektnamen als Namen
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Erstellen von Programmkomponenten
Relevante(Komponenten(die(im(Verlauf(der(Veranstaltung(OOP(besonders((betrachtet(werden.(
Brückenkurs Programmierung SoSe 16 - Toni Barthel
ERSTELLEN EINES PROJEKTES
Ordner&des&Projekts&im&&momentanen&Workspace&
Laufzeitumgebung,&die&&Verwendet&werden&soll.&&Wir&verwenden&Java&1.7&!&
Trennung&von&SourceE&und&ClassEDateien.&WichIg&für&die&OrganisaIon&von&Projekten.&
Brückenkurs Programmierung SoSe 16 - Toni Barthel
ERSTELLEN EINES PROJEKTES
Ordner&der&Quelldateien&(Source&code)&
Das&Paket,&in&dem&die&Klasse&verwaltet&wird&
Die&Bedeutung&der&unterschiedlichen&Modifizierer&lernen&Sie&im&Verlauf&der&Vorlesung&kennen.&Wir&verwenden&zunächst&„public“&
AutomaKsche&generierung&der&mainLFunkKon.&Wir&verzichten&zunächst&auf&diese&OpKon,&aus&Übungszwecken&
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Exception in thread "main" java.lang.ArithmeticException: / by zero! at myPackage.MyClass.myMethod(MyClass.java:13)! at myPackage.MyClass.main(MyClass.java:9)!
!Typ!des!Fehlers!
!Ort!des!Au0retens!
!Nachricht!
AUSFÜHREN EINES PROJEKTES
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Toni Barthel
TAG 4.1.5: JAVA ALS PROGRAMMIERSPRACHEBrückenkurs Programmierung SoSe 16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
ERSTES KLEINES JAVA PROGRAMM
package doMath;
import java.lang.Math;
public class Berechnung { public static void main (String[] args){ int i; i = 3 + 4; System.out.println(i); i = 9; System.out.println(i*Math.PI); }}
Brückenkurs Programmierung SoSe 16 - Toni Barthel
RAHMEN DES PROGRAMMS• Moderne Programmiersprachen enthalten ausgefeilte Konstrukte, die der Entwicklung sehr großer
Programms-Systeme dienen. Sie wirken zunächst unverständlich und sind nicht einfach zu erklären. • Für den ersten Einstieg nimmt man sie am Besten erst einmal als vorgegeben Programmrahmen einfach hin.
package doMath; import java.lang.Math; public class Berechnung { public static void main(String[] args) { } }
Programm'Anweisungen/hier/!/
frei%wählbare%Namen%Paket2Anweisung% Import2Anweisung%
vorgegebener(Rahmen(für(Java0Programme(
Brückenkurs Programmierung SoSe 16 - Toni Barthel
JAVA PROGRAMMStruktur
Variable Reservierter Speicherplatz für Programmdaten
Methode Bestandteil einer Klasse, Folge von Anweisungen
Klasse Komponente von Java-Programmen, Sammlung von Methoden / Variablen
Paket Sammlung von Klassen
Programm Haupt-Klasse
mit main-Methode plus beliebig viele
(im einfachsten Fall keine) weitere Klassen in beliebig vielen Paketen
Brückenkurs Programmierung SoSe 16 - Toni Barthel
• mindestens einem Paket (package) • kann das namenlose default-Paket sein
• mindestens einer Klasse in diesem Paket
• mindestens einer Methode (main) in dieser Klasse • eine der Methoden einer Klasse muss die main-Methode sein
• eine Methode enthält üblicherweise mindestens eine Anweisung
EIN JAVA PROGRAMM BESTEHT AUS
Brückenkurs Programmierung SoSe 16 - Toni Barthel
JAVA PROGRAMMStruktur
package myPackage;
public class MyClass {public static void main (String[] args) {
System.out.println("Hello World!");}
}
• Ein Paket: myPackage • Eine Klasse: MyClass • Eine Methode: main • Eine Anweisung: System.out.println
Brückenkurs Programmierung SoSe 16 - Toni Barthel
ZWEITES JAVA PROGRAMMpackage ggt; import java.util.Scanner; public class Euklid {
public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.print("Bitte erste Zahl eingeben: "); int x = scan.nextInt(); System.out.print("Bitte zweite Zahl eingeben: "); int y = scan.nextInt(); int t = 0; while (x > 0) { if (y > x) { t = x; x = y; y = t; } x = x - y; } System.out.println("GGT: " + y); scan.close(); } }
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Toni Barthel
TAG 4.1.5: C / C++Brückenkurs Programmierung SoSe 16
Brückenkurs Programmierung SoSe 16 - Toni Barthel
http://fbim.fh-regensburg.de/~kum39757/CforJ.pdf
Unterschiede von C zu JAVA
• Plattformabhängig, keine VM wie bei JAVA • „C++ ist OOP Variante von C“
#include<stdio.h>
int main() {printf("Hello World\n");return 0;
}
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Compiler in C
Linux, z.B.: GCC Windows, z.B.: Dev-C++
Brückenkurs Programmierung SoSe 16 - Toni Barthel
#include<stdio.h>
int main() {int telnummer;telnummer = 225678;telnummer = 886547;printf("Telefonnummer: %d\n", telnummer);return 0;
}
Variablen in C
Telefonnummer: 886547
Brückenkurs Programmierung SoSe 16 - Toni Barthel
Mit freundlichen Dank an …
… HERRN SCHWARZ, M.SC. FÜR DIE INHALTLICHEVORLAGE AUS DEN DEN OOP FOLIEN.
Brückenkurs Programmierung SoSe 16 - Toni Barthel