79
Toni Barthel TAG 4: SORTIEREN VON ARRAYS, OBJEKTORIENTIERTE PROGRAMMIERUNG Brückenkurs Programmierung SoSe 16 Brückenkurs Programmierung SoSe 16 - Toni Barthel

TAG 4: SORTIEREN VON ARRAYS, OBJEKTORIENTIERTE …bhsw76/lib/exe/fetch.php?media=bk:... · (Parameter und Lokale Variablen leben nur für die Dauer der Aktivität der Methode) Definieren

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

https://www.youtube.com/watch?gl=US&v=hePMxBhJK3E

WDH: Speicherverwaltung II - Das Selbe / Gleiche

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

Vergleich Standardlösung und OOP

Zu Erinnerung …

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

Am Beispiel …

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

GIT und Service: GITLAB

https://git.thm.de/

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

Entwicklungswerkzeuge

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

AUSFÜHREN EINES PROJEKTES

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

Öffnen VON ECLIPSE ….

… BEISPIEL

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

Toni Barthel

HERZLICHEN DANK FÜR IHRE AUFMERKSAMKEIT

Brückenkurs Programmierung SoSe 16 - Toni Barthel