Javakurs für Anfänger



Ähnliche Dokumente
Javakurs für Anfänger

Javakurs für Anfänger

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Javakurs 2013 Objektorientierung

Javakurs für Anfänger

Einführung in die Java- Programmierung

Java: Vererbung. Teil 3: super()

3 Objektorientierte Konzepte in Java

Objektorientierte Programmierung

Programmieren in Java

Java Einführung Methoden in Klassen

Vorkurs C++ Programmierung

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Computeranwendung und Programmierung (CuP)

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Programmieren Tutorium

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

5.4 Klassen und Objekte

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5. Tutorium zu Programmieren

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung OOP

Software Engineering Interaktionsdiagramme

Javakurs für Anfänger

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Modellierung und Programmierung 1

Javakurs für Anfänger

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Programmierkurs Java

Einführung in die Java- Programmierung

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

5. Abstrakte Klassen

Einführung in die Programmierung

Einführung in die Programmierung

Innere Klassen in Java

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Jahrgang: Jahrgang 1. Thema: Systementwicklung einer Webapplikation - Geheimnachrichten-Generator

Grundzüge der Programmierung. Konzepte der objektorientierten Programmierung (oop) OBJEKTE - KLASSEN

Übungsblatt 3: Algorithmen in Java & Grammatiken

Teil 2: Weitere Aspekte der Objektorientierung

5.5.8 Öffentliche und private Eigenschaften

Selbstbestimmtes Lernen. Proinformatik III Objektorientierte Programmierung. Format. Inhalt. Buzzwords

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Java Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7

Zählen von Objekten einer bestimmten Klasse

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Klassendefinitionen verstehen

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

2. Semester, 2. Prüfung, Lösung

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

Arbeiten mit UMLed und Delphi

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Einführung in die C++ Programmierung für Ingenieure

M. Graefenhan Übungen zu C. Blatt 3. Musterlösung

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Deklarationen in C. Prof. Dr. Margarita Esponda

Software Engineering Klassendiagramme Einführung

1 Vom Problem zum Programm

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 18

Objektorientierte Programmierung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

3 Objektorientierte Konzepte in Java

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Einführung in Eclipse und Java

S7-Hantierungsbausteine für R355, R6000 und R2700

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

Prinzipien Objektorientierter Programmierung

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Applet Firewall und Freigabe der Objekte

Programmierkurs Java

Algorithmen und Datenstrukturen

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Transkript:

Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen und Datentypen Verhalten (Methoden) 2. Teil: Objekte Objekte erzeugen Konstruktoren Getter/Setter Methoden Praxis: Die Klasse Auto schreiben Auto-Objekte erzeugen Methoden aufrufen Programmieraufgabe Lernziele Objektorientierung kennenlernen Zusammenhang zwischen Klassen und Objekten verstehen Erste Programmierung mit Objekten 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 2

Auf zur Objektorientierung! Bisher: Nur eine einfache Klasse mit main-methode public class HelloJava{ public static void main(string[] args){ System.out.println("Hallo Welt!"); Nun: Schnell raus aus der main-methode Komplexere Programme erfordern Strukturmechanismen Daher: Objektorientierung als vereinfachte Sichtweise auf komplexe Systeme Klassen bieten eine vereinfachte Sicht der realen Welt Kapselung von Eigenschaften und Verhalten gleichartiger Objekte in Klassen Wartbarkeit durch Begrenzung von Änderungen auf einzelne Klassen Wiederverwendung von bereits vorhandenen Klassen Java Programme bestehen i.d.r. aus Objekten, die über Methodenaufrufe miteinander kommunizieren 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 3

Klasse: Zusammenhang zwischen Klassen und Objekte Wird vom Programmierer geschrieben, gespeichert und kompiliert Stellt ein Konzept bzw. Plan gleichartiger Objekte dar (Bsp.: Auto) Welche Eigenschaften (Attribute) haben die Objekte der Klasse (Bsp.: Name, Preis, ) Welches Verhalten (Methoden) bieten die Objekte der Klasse (Bsp.: fahren, bremsen, ) Beschreibt dadurch einen Teil der Realität Objekt (= Instanz einer Klasse): Wird beim Ausführen des Programms erzeugt und spätestens beim Beenden wieder verworfen Existiert nur im Speicher Wird nach dem vorgesehenen Konzept bzw. dem Plan seiner Klasse erstellt: Bekommt Werte für seine Attribute (Bsp.: Mercedes,30.000 Euro, ) Verhält sich wie in seiner Klasse definiert (Bsp.: fahren, bremsen, ) 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 4

Grundstruktur einer Java-Klasse Beispiel: Auto Eigenschaften (Attribute) - name : String - preis : int Auto + fahren (a: String, b: String ) + bremsen () Konstruktor (kommt später) Fähigkeiten (Methoden) 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 5

Eigenschaften (Attribute) Die Eigenschaften der Objekte einer Klasse (Instanzen) werden durch Instanzvariablen definiert Beschreiben die Attribute eines Objekts Speichern Daten und halten so den aktuellen Objektzustand Werden zusammen mit dem Objekt erzeugt und initialisiert Mit Defaultwerte oder über eigene Konstruktoren Ein direkter Zugriff von außerhalb der Klasse sollte vermieden werden! Prinzip der Datenkapselung (Objekt behält Kontrolle über seinen Zustand) Daher: private Deklaration Grund: Erweiterbarkeit bzw. Wartbarkeit Beispiel: private String name; private int preis; Neben Instanzvariablen gibt es noch: Lokale Variablen Parameter (für Methodenaufrufe) 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 6

Variablen dienen als ansprechbarer Platzhalter zum Speichern von Daten Haben immer einen Datentyp (int, String, Objekt, ) und einen Namen Werden dadurch deklariert: Datentyp variablenname; Aussagekräftigen Namen mit kleinem Anfangsbuchstaben wählen Reserviert festen Speicherplatz auf dem Hauptspeicher (je nach Datentyp) Kann mit Namen angesprochen werden Werte können dort abgelegt und verändert werden Wertzuweisung (initialisieren): variablenname = wert; Deklarieren und initialisieren in einem Schritt möglich Beispiel: int meinezahl = 10; Arbeitsspeicher Einschub: Variablen & Datentypen Wert 10 Der Datentyp bestimmt auch die Größe des reservierten Speicherbereichs Unterscheidung zwischen primitiven und komplexen (Referenz) Typen 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 7

Primitive Typen 8 primitive Datentypen in Java vordefiniert Erfordern wenig Speicherplatz und geringen Aufwand für Compiler und Interpreter => Geschwindigkeitsvorteile Komplexe Typen Jede Klasse mit mehreren Attributen Setzen sich aus verschiedenen Elementen zusammen Bsp.: String, Array, Auto, Primitive vs. Komplexe Datentypen Datentyp Verwendung Größe in Bit Wertebereich boolean Wahrheitswert 8 false, true char Zeichen 16 0 65.535 byte Ganzzahl 8-128 bis 127 short Ganzzahl 16-32.768 bis 32.767 int Ganzzahl 32-2.147.483.648 bis 2.147.483.647 long Ganzzahl 64-2^63 bis 2^63-1 float Kommazahl 32 Genauigkeit ca. 7 Kommastellen double Kommazahl 64 Genauigkeit ca. 15 Kommastellen 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 8

Lebensspanne und Sichtbarkeit Jede Variable hat eine Lebensspanne und eine Sichtbarkeit während der Abarbeitung des Programms Lebensspanne (Von der Erzeugung bis zum Ende) Ist im Speicher repräsentiert Werte können gelesen und geschrieben werden Sichtbarkeit Variable kann nur während ihrem Sichtbarkeitsbereich verwendet werden => Ein Zugriff erfolgt damit nur während der Lebensspanne Sichtbarkeit und Lebensspanne müssen nicht identisch sein! Stichwort: (Temporäre) Überschattung Sichtbarkeit Lebensspanne 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 9

Methoden beschreiben die Fähigkeiten bzw. das Verhalten der Klasse/Objekt Operationen mit Attributen der Klasse/Objekt Aufbau (Allgemein): Fähigkeiten (Methoden) <Modifier> Rückgabetyp Methodenname(Parametertyp Parameter1, ){ //Methodenrumpf Modifier (optional): verändert Eigenschaft der Methode Für den Anfang: public Rückgabetyp: gibt den Datentyp des Ergebnisses an (int, String, Auto, ) void für keine Wertrückgabe Methodennamen: frei wählbar (aussagekräftig, kleiner Anfangsbuchstabe) Parametertyp + Parameter: Datentyp + variablenname 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 10

//Beispiele: Methoden für den Anfang public void fahrevonanachb(string a, String b){ System.out.println( Ich fahre von +a+ nach +b); public void fahren(){ System.out.println( Ich fahre ); Ohne Rückgabewert Mit Parameter public int wieweitgefahren(){ Ohne Parameter return distanz; //muss als Instanzvariable (int) vorliegen Mit Rückgabewert 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 11

Die Objekte ins Spiel bringen Ein Objekt ist eine eindeutige Instanz seiner Klasse Verfügt über dessen Attributen und Methoden Wird mit dem new Operator erzeugt, Bsp.: Klassenname meinobjekt = new Klassenname(); Besitzt: Zustand: Aktuelle Werte der Instanzvariablen Verhalten: Methoden Identität: Eindeutige Speicheradresse Arbeitsspeicher Auto mein_audi = new Auto(); name Beispiel: Klasse Auto Besitzt Instanzvariablen String name und int preis Ein neues Auto mein_audi anlegen mit: Auto mein_audi = new Auto(); Problem: Das neue Objekt mein_audi hat bisher nur Defaultwerte für den Namen und den Preis, nämlich null und 0 preis null 0 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 12

Wir benötigen einen Konstruktor zum Erzeugen von Objekten Aufgabe: Bringe das Objekt in einen definierbaren Anfangszustand beim Erzeugen Anfangsbelegung der Instanzvariablen Kann frei vom Entwickler programmiert werden Ist eine spezielle Methode der Form: Es können mehrere Konstruktoren definiert werden Der richtige Konstruktor wird nach Anzahl und Typen der Parameter aufgerufen Dazu später mehr Konstruktoren public Klassenname (Parametertyp Parameter1, ){ //Anweisungen Ist kein Konstruktor definiert wird vom Compiler automatisch ein Default- Konstruktor erzeugt Besitzt keine weitere Anweisungen Der entspr. Konstruktor wird bei der Objekterzeugung mit new aufgerufen 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 13

Beispiel: Konstruktor für Autos Wollen wir ein Auto mit einem bestimmten Namen und einem bestimmten Preis erzeugen, schreiben wir unseren eigenen Konstruktor, der die Instanzvariablen belegt. public class Auto{ //Instanzvariablen private String name; private int preis; //Konstruktor public Auto(String name, int preis){ this.name = name; this.preis = preis; Ein Auto kann (bzw. muss) nun durch folgenden Aufruf erzeugt werden: Auto mein_auto = new Auto( Fiat Punto,9000); 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 14

Einschub: Das Schlüsselwort this Das Schlüsselwort this wird als Selbstreferenz bezeichnet Verweist immer auf das eigene Objekt Der Typ ist immer die Klasse in der die Methode definiert ist Um auf Instanzvariablen zuzugreifen: this.instanzvariable Beugt versehentliche Verwechslungen mit lokalen Variablen oder Parametern vor Bsp.: this.name = name; Für den Moment: Die Verwendung von this: this: bezieht sich auf das aktuelle Objekt this.variable: greift auf Instanzvariable des eigenen Objekts zurück this.variable = variable; Setzt den Wert der Instanzvariable mit dem Wert der loaklen variable bzw. des Parameters 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 15

Zur Erinnerung: Auf Instanzvariablen zugreifen Ein direkter Zugriff auf Instanzvariablen von außerhalb der Klasse sollte vermieden werden (private Deklaration zur Kapselung von Daten) Deshalb 2 Möglichkeiten zum setzen (schreiben): Bei Objekterzeugung über den Konstruktor (wie eben gesehen) Im weiteren Verlauf über spezielle setter -Methoden Möglichkeit zum Lesen der Instanzvariablen: Über spezielle getter -Methoden Innerhalb einer Klasse kann immer auf die privaten Instanzvariablen direkt zugegriffen (lesen u. schreiben) werden mit objekt.instanzvariable, bzw. this.instanzvariable 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 16

Allgemeiner Aufbau von Setter: Setter-/Getter- Methoden allgemein public void setiv_name(iv_typ iv_name){ this.iv_name = iv_name; Allgemeiner Aufbau von Getter: public IV_Typ getiv_name (){ return iv_name; Diese eindeutigen (einfachen) Methoden können von Eclipse automatisch generiert werden Source -> generate Getters and Setters 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 17

Beispiele für setter/getter Methoden bei der Klasse Auto // Setter Methoden für name und preis: public void setname(string name) { this.name = name; public void setpreis(int preis) { this.preis = preis; // Getter Methoden für name und preis: public String getname() { return name; public int getpreis() { return preis; 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 18

Programmieraufgabe Lösen Sie bitte selbstständig die folgende Programmieraufgabe zu Klassen & Objekten in Java: Erstellen Sie eine Hunde-Farm mit 3 unterschiedlichen Hunden Jeder Hund hat einen Namen (String), eine Rasse (String) und eine Größe in cm (int) Jeder Hund kann laufen und bellen Ablauf: Jeder der Hunde soll einmal bellen und laufen Da Sie der Besitzer sind, wollen Sie sich auch immer anzeigen lassen welcher Hund gerade bellt. Beim Laufen interessiert sie nur, ob ein Hund läuft. Achten Sie auf eine objektorientierte Umsetzung entsprechend dem Kapselungsprinzip private Instanzvariablen und public Methoden 29.10.2015 Javakurs 02: Klassen & Objekte - Lorenz Schauer 19