Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte...

27
Patrick Förster, Michael Hasseler Programmieren in Java Einführung in die objektorientierte Programmierung

Transcript of Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte...

Page 1: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Programmieren in Java

Einführung in die objektorientierte Programmierung

Page 2: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Übersicht der heutigen Inhalte

• Einführung in die objektorientierte Programmierung

• Objekt

• Klasse

• Attribute

• Konstruktor

• Methoden

• NetBeans 8.0 als Entwicklungsumgebung

2 Objektorientierte Programmierung

Page 3: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

3 Objektorientierte Programmierung

Einordnung in den Softwareentwicklungsprozess

Softwareentwicklung mit JAVA

Planung

Lastenheft

Pflichtenheft

Funktionsanalyse

Entwurf

Entwicklungs-umgebung

CASE-Tools

JRE

JDK

Betriebs-system

Programmierung

Methode

Imperativ

Entwurfsmuster (Pattern)

objektorientiert

Struktur

Objekte

Klassen

Felder/Attribute

Konstruktoren

Methoden

Interfaces

Annotationen Kontroll-strukturen

Bedingte Anweisung (if-then-else)

Schleifen (for-while)

Operatoren und Ausdrücke

Verzweigungen (switch)

Generics

Frameworks

Darstellung (GUI)

Datenaustausch (Services)

Sicherheit

Datenhaltung (I/O)

Bibliotheken

Test/Evaluation/Pflege

Debugging

Lasttests

Versionierung

Page 4: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Motivation und Ziele

• Bisher: prozedurale Programmierung

• Anweisungen werden nach festgelegter Reihenfolge abgearbeitet

• Strukturierung durch Prozeduren und Funktionen

• Ziele:

• Abbildung von Problemen aus der „Natur“

• Wartbarkeit und Erweiterbarkeit herstellen

• Datenstrukturen in Programmlogik einbeziehen

• => Objektorientierte Programmierung

4 Objektorientierte Programmierung

Page 5: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Definition und Begriffszusammenhänge

• Objekt: enthält zusammengehörige Attribute (Daten) und Methoden

(Anweisungen)

• Attribut: Dateneinheit ( z. B. eine Variable)

• Methode: Umsetzung der Objektfunktionalität

• Datenkapselung: Objekt von Außen nur durch seine (Attribute und) Methoden

sichtbar, Funktionalität ist gekapselt

5 Objektorientierte Programmierung

Objekt

Attribut1 Attribut2 Methode1 Methode2

Page 6: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Klassen und Instanzen

• Klasse:

• Gruppierung von Objekten mit gleicher „Schablone“

• eine „Bauanleitung“ für Objekte

• wird vom Entwickler festgelegt

• Einzelnes Objekt:

• Instanz einer Klasse

• wird zur Laufzeit eines Programmes erzeugt

6 Objektorientierte Programmierung

Schuh String farbe;

int groesse;

String marke;

Boolean istLinkerSchuh;

schuh1 farbe = "blau";

groesse = 39;

marke = "Adidas";

istLinkerSchuh = true;

schuh2 farbe = "schwarz";

groesse = 45;

marke = "Nike";

istLinkerSchuh = false;

Klasse Instanz 2 Instanz 1

Page 7: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Instanzen

• Bei der objektorientierten Programmierung wird nicht mit Klassen, sondern mit

Objekten gearbeitet. Diese müssen als Instanz ihrer Klasse erzeugt werden können.

• Klassentyp bezeichnet hier den Klassennamen, objVar ist der Name der

erzeugten Objektreferenz und new ist eine Klassenmethode von Object zum

Erzeugen von Objekten. Klassentyp() bezeichnet den Konstruktor der Klasse

Klassentyp der aufgerufen werden soll.

• Es muss darauf geachtet werden, dass eine Instanz erzeugt wird bevor über das

Attribut auf ein Element der Klasse zugegriffen wird.

7 Objektorientierte Programmierung

Klassentyp objVar = new Klassentyp();

Page 8: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Kommunikation zwischen Objekten

• Zwischen verschiedenen Objekten muss es eine Möglichkeit zur Kommunikation

geben

• Attribute und Methoden müssen adressierbar sein

• Punktnotation zum Trennen von Objektname und Attribut/Methode

8 Objektorientierte Programmierung

Objekt1 Attribut1

Methode1

Objekt2 Attribut2

Methode2 Objekt2.Methode2(Argument)

Page 9: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Klassen in Java

• Grundgerüst einer Klasse um Daten und Methoden in einem Datentyp zu kapseln

• Elemente einer Klasse sind Datenfelder, Konstruktoren und Methoden:

9 Objektorientierte Programmierung

public class Test { ELEMENTDEKLARATION ELEMENTDEKLARATION ELEMENTDEKLARATION … ELEMENTDEKLARATION }

// Datenfelder private int zahl1; private int zahl2;

// Konstruktor public Test(int param1, int param2) { this.zahl1 = param1; this.zahl2 = param2; }

// Methoden public int Summe() { return this.zahl1 + this.zahl2; } public int Produkt() { return this.zahl1 * this.zahl2; }

Page 10: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Attribute/Felder/Daten

• Attribute sind die Datenelemente einer Klasse. Sie werden durch Angabe des Datentyps

und durch ihren Namen beschrieben.

• Hier sind u. a. folgende Zugriffsmodifizierer erlaubt:

• private: Ein Zugriff ist nur innerhalb der Klasse erlaubt

• public: Der Zugriff ist von überall her möglich

• Ein weiterer Modifizierer ist final:

• Konstantes Attribut dessen Anfangswert nicht mehr geändert werden kann

• Nach Konvention den Variablennamen von Konstanten komplett in Großbuchstaben

10 Objektorientierte Programmierung

public int feld1; private int feld2; private final int FELD3 = 5;

Page 11: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Klassen- und Instanzvariablen

• statische Attribute werden mit static definiert.

• statische Attribute werden auch Klassenvariablen genannt.

• Bei der Instanziierung wird das statische Attribut nicht einem Objekt zugeordnet,

sondern der Klasse.

• Von einem statischen Attribut existiert immer nur eine Kopie.

• außer mit statischen Klassenmethoden kann man nur mittels des Klassennamens

auf statische Methoden zugreifen

• statische Attribute können benutzt werden ohne das ein Objekt der Klasse erzeugt

wurde

• Als Instanzvariablen werden alle nicht-statischen Attribute bezeichnet.

11 Objektorientierte Programmierung

private double radius; public final static double PI = 3.1415926;

Page 12: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Aggregation und Komposition von Objekten

• Attribute können nicht nur primitive Datentypen sondern auch Klassen sein.

• Aggregation: Teilobjekte kann unabhängig vom Objekt existieren

• Komposition: Teilobjekt existiert nur, wenn auch das Objekt existiert

12 Objektorientierte Programmierung

public class Person { private String name; ... } public class Konto { private Person inhaber = new Person(); ... }

Page 13: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Methoden

• Wurden bisher zwar schon verwendet, aber noch nicht als Methode einer Klasse

sondern eher als Funktion zum Strukturieren des Programmcodes

• Methoden enthalten Anweisungen und die bisher vorgestellten Sprachkonstrukte

• Methoden werden benutzt um den Zustand eines Objektes zu ändern oder um eine

Aufgabe des Objekts zu erledigen.

• Methoden können innerhalb anderer Methoden aufgerufen werden und können sich

auch selbst aufrufen (Rekursion)

• Syntax der Methodendefinition:

[Modifizierer] typDesRückgabewertes Methodenname([Parameter]) [throws] [<Exception-Liste>] • Hier sind u. a. folgende Zugriffsmodifizierer erlaubt:

• private: Ein Zugriff ist nur innerhalb der Klasse erlaubt

• public: Der Zugriff ist von überall her möglich

13 Objektorientierte Programmierung

Page 14: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Rückgabewerte/Parameter

• Grundsätzlich kann man jeden Typ, also auch eine Klasse als Rückgabewert definieren

oder wenn keiner benötigt wird void.

• Rückgabe erfolgt mittels return-Anweisung

• Die return-Anweisung beendet auch die Ausführung der Methode

• Hinter dem return kann ein Wert oder ein ganzer Ausdruck stehen

• Parameter werden durch Kommata getrennt angegeben, zuerst der Typ des Parameters

dann der Name.

• Wenn Parameter elementare Datentypen sind wird durch die Manipulation der

Parameter in der Methode der Ausgangswert nicht geändert. Werden jedoch Objekte als

Parameter übergeben wirken sich Änderungen an den Parametern auch auf das

Ursprungsobjekt aus da nur eine Referenz übergeben wird.

14 Objektorientierte Programmierung

Page 15: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Konstruktoren

• spezielle Methoden zum Initialisieren von Eigenschaften eines Objekts, die bei der

Erstellung verwendet werden.

• haben denselben Namen wie ihre Klasse.

• haben keine return-Anweisung, da sie beim Erstellen der Instanzen aufgerufen werden

und das Objekt selbst der Rückgabewert ist.

• unterscheiden sich untereinander durch unterschiedliche Parameteranzahl und/oder -

typen

• Wird in einer Klasse kein Konstruktor definiert, dann wird der Standardkonstruktor

verwendet, der keine Argumente hat.

15 Objektorientierte Programmierung

// Konstruktor 1 Test(int param1){ this.zahl1 = param1; }

// Konstruktor 2 Test(int param1, int param2){ this.zahl1 = param1; this.zahl2 = param2; }

Page 16: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Beispiel: Klasse Kreis

16 Objektorientierte Programmierung

public class Kreis { public final static double PI = 3.1415926; private double radius; public double getRadius() { return this.radius; } public Kreis(double radius) { this.radius = radius; } public double getUmfang() { return 2 * Kreis.PI * this.getRadius(); } public double getFlaeche() { return Kreis.PI * this.getRadius() * this.getRadius(); } }

Page 17: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Beispiel: Instanziierung der Klasse Kreis

17 Objektorientierte Programmierung

public class Geomeotrie { public static void main(String[] args) { Kreis kreis1 = new Kreis(1); Kreis kreis2 = new Kreis(20); System.out.print("Kreis 1 hat den Radius " + kreis1.getRadius() + ", "); System.out.print("die Fläche " + kreis1.getFlaeche()); System.out.println(" und den Umfang " + kreis1.getUmfang() + "."); System.out.print("Kreis 2 hat den Radius " + kreis2.getRadius() + ", "); System.out.print("die Fläche " + kreis2.getFlaeche()); System.out.println(" und den Umfang " + kreis2.getUmfang() + "."); }

run: Kreis 1 hat den Radius 1.0, die Fläche 3.1415926 und den Umfang 6.2831852. Kreis 2 hat den Radius 20.0, die Fläche 1256.63704 und den Umfang 125.663704. BUILD SUCCESSFUL (total time: 1 second)

Page 18: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Integrierte Entwicklungsumgebung (IDE)

• Sammlung von Anwendungsprogrammen:

• Texteditor

• Compiler

• Debugger

• Quelltextformatierungsfunktionen

• …

• unterstützt den Entwickler bei der Softwareentwicklung

• für Java z. B.:

• Eclipse

• NetBeans

• IntelliJ

18 Objektorientierte Programmierung

vgl. http://de.wikipedia.org/wiki/Entwicklungsumgebung

Page 19: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

NetBeans-Projekt anlegen 1/3

• Im Programm NetBeans den Menüpunkt „File/New Project“ anklicken

19 Objektorientierte Programmierung

vgl. https://netbeans.org/kb/docs/java/quickstart.html

Page 20: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

NetBeans-Projekt anlegen 2/3

• Im Projektassistenten die Kategorie „Java“ und Projekt „Java Application“ auswählen

• Auf den Button „Next“ klicken

20 Objektorientierte Programmierung

Page 21: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

NetBeans-Projekt anlegen 3/3

• Den Projektnamen und ggf. den Speicherort angeben

• Auf den Button Finish klicken

21 Objektorientierte Programmierung

Page 22: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

NetBeans als IDE

22 Objektorientierte Programmierung

• Im Projekt-Fenster

wird das Projekt

hierarchisch

angezeigt. (blau)

• Der grüne Bereich

ist die Arbeitsfläche

für den Quellcode-

Editor

• Im pinken Bereich

ist das Navigator-

fenster, welches das

schnelle Auffinden der

Elemente untersützt.

• Ausgaben gibt es im

hellblauen Bereich.

Page 23: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Neue Klasse anlegen 1/2

• Auf dem Paket mit der rechten Maustaste das Kontextmenü öffnen und den Menüpunkt

„New/Java Class“ anklicken

23 Objektorientierte Programmierung

Page 24: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Neue Klasse anlegen 2/2

• Im Dialogfenster zum Anlegen einer neuen Klasse den Namen angeben und den Button

„Finish“ drücken.

24 Objektorientierte Programmierung

Page 25: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Zusammenfassung

• Sie kennen den Unterschied zwischen Klassen und Instanzen

• Sie können eine Klasse in Java schreiben mit:

• Konstruktoren

• Attributen (Klassen- und Instanzvariablen)

• Konstanten

• Methoden

• Sie kennen die Bedeutung der Zugriffsmodifizierer:

• Attribute und Methoden: public, private

25 Objektorientierte Programmierung

Page 26: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Aufgaben

1. Legen Sie ein Projekt Schuhbeispiel an.

2. Erstellen Sie eine Klasse Schuh mit den Attributen wie Sie in der

Vorlesungsfolie 6 angegeben wurde, wobei die Attribute private sein sollen.

a. Erstellen Sie einen Konstruktor mit allen Attributen als Parameter.

b. Erstellen Sie eine Methode ausgabe(), die z. B. folgenden String als

Rückgabe besitzt: rechter Schuh: schwarz, 45, Adidas

3. Erstellen Sie eine Klasse Schuhpaar.

a. Die Klasse soll zwei Attribute vom Typ Schuh mit den Namen linkerSchuh

und rechterSchuh besitzen. Entweder ist den Instanzvariablen ein Objekt

vom Typ Schuh zugewiesen oder der Defaultwert null.

b. Erstellen Sie einen Konstruktor, der zwei Schuhe als Parameter besitzt.

c. Implementieren Sie die Methode istVollstaendig(), welche True als Boolean

zurückgibt, wenn beide Schuhe vorhanden und gleiche Attributwerte haben.

26 Objektorientierte Programmierung

Page 27: Einführung in die objektorientierte Programmierung · NetBeans als IDE Objektorientierte Programmierung 22 • Im Projekt-Fenster wird das Projekt hierarchisch angezeigt. (blau)

Patrick Förster, Michael Hasseler

Aufgaben

3. d. Die Methode ausgabe() soll z. B. folgende Ausgabe zurückgeben:

Schuhpaar: {linker Schuh: schwarz, 45, Adidas}, {rechter Schuh: schwarz, 45,

Adidas}

Tipp: Verwenden Sie hierfür den Aufruf der Methode ausgabe() von Schuh als

Teillösung.

Wenn ein Schuh fehlt, dann soll die Ausgabe bspw lauten:

Schuhpaar: {linker Schuh fehlt}, {rechter Schuh: schwarz, 45, Adidas}

4. Instanziieren Sie 3 Schuhpaar-Objekte in der Funktion main der Klasse

SchuhBeispiel und rufen Sie für die Objekte die Methode ausgabe() auf. Das erste

Objekt soll die Ausgabe von 3d mit den zwei Schuhen haben, das zweite Objekt die

Ausgabe von 3d mit dem fehlenden linken Schuh und das dritte Objekt soll als

Ausgabe haben:

Schuhpaar: {linker Schuh: blau, 39, Nike}, {rechter Schuh: blau, 40, Nike}

Zu allen drei Objekten in der main-Funktion soll ein Aufruf der Methode

istVollstaendig() erfolgen und dazu eine sinnvolle System.out.println-Meldung geben.

27 Objektorientierte Programmierung