Java Einführung Methoden in Klassen



Ähnliche Dokumente
Programmieren in Java

3 Objektorientierte Konzepte in Java

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

Objektorientierte Programmierung

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

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

Vorkurs C++ Programmierung

Software Engineering Klassendiagramme Einführung

Programmieren Tutorium

Java: Vererbung. Teil 3: super()

Java Kurs für Anfänger Einheit 5 Methoden

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

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

Java Einführung Klassendefinitionen

Prinzipien Objektorientierter Programmierung

Javakurs für Anfänger

Innere Klassen in Java

Kapitel 6. Vererbung

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

Javakurs 2013 Objektorientierung

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

Einführung in die Java- Programmierung

5.5.8 Öffentliche und private Eigenschaften

Objektorientierte Programmierung OOP

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Grundlagen der Programmierung Teil1 Einheit IV Okt. 2009

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

5. Abstrakte Klassen

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

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

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

Grundlagen von Python

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

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

5. Tutorium zu Programmieren

Software Engineering Interaktionsdiagramme

3 Objektorientierte Konzepte in Java

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

Software Engineering Klassendiagramme Assoziationen

Algorithmen und Datenstrukturen

Java Einführung Abstrakte Klassen und Interfaces

Programmierkurs Java

Java Einführung Packages

Kapitel 6. Vererbung

Objektorientierung: Klassen und Objekte

Kapitel 6. Vererbung

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

Zählen von Objekten einer bestimmten Klasse

Vererbung & Schnittstellen in C#

Applet Firewall und Freigabe der Objekte

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

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Computeranwendung und Programmierung (CuP)

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

3. Konzepte der objektorientierten Programmierung

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

Einführung in die Programmierung

Javakurs zu Informatik I. Henning Heitkötter

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Klassenbeziehungen & Vererbung

Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny

SEP 114. Design by Contract

FORUM HANDREICHUNG (STAND: AUGUST 2013)

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

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

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

MCRServlet Table of contents

Alltagsnotizen eines Softwareentwicklers

Kurzeinführung LABTALK

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

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

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

Objektorientierte Programmierung

Objektbasierte Entwicklung

Technische Dokumentation SilentStatistikTool

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

Java Virtual Machine (JVM) Bytecode

BEISPIELKLAUSUR Softwareentwicklung:

Allgemeines - Prinzipien

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Java Einführung Collections

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

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

Übungen zur Softwaretechnik

4 Vererbung, Polymorphie

GetName(), GetName(), GetGeschlecht() und AelterWerden().

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Vorkurs Informatik WiSe 15/16

Assoziation und Aggregation

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

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

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Einführung in Eclipse und Java

Programmierkurs Java

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Internet online Update (Internet Explorer)

Transkript:

Java Einführung Methoden in Klassen

Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding Konstruktoren 2

Klassendefinition In der Designphase wurden die Eigenschaften (Variablen) und das Verhalten (Methoden) definiert. Im Folgenden wird das Implementieren der Methoden behandelt. KlassenName -Variablen +Methoden() class KlassenName { variablendeklarationen; methodendeklarationen(){ 3

Methoden Objekte interagieren miteinander durch das gegenseitige Aufrufen von Methoden (=Nachrichtenaustausch). Methoden sind Programmteile, die bestimmte Teilaufgaben lösen (und sollten nach diesen selbstsprechend benannt werden). Eine Methode (Nachricht) besteht aus zwei Teilen: der Signatur (bzw. Methodendeklaration), die Angaben über Sichtbarkeit, Rückgabetyp, Name der Methode und Parameter macht. dem Methodenrumpf, in dem die Deklarationen der lokalen Variablen und die eigentlichen Anweisungen stehen. 4

Zweck von Methoden Zustand eines Objektes abfragen point1.getx(); astring.length(); Aufforderung an ein Objekt, etwas zu tun (z.b. Instanzvariable verändern) point1.setinvisible(true); astring.touppercase(); 5

Methodendeklaration Zugriff/Sichtbarkeit Methodenname Bezeichner des Parameters public double setx(double xvalue) Typ des Rückgabewerts Typ des Parameters 6

Beispiel zu Methode class Point { public double x, y; //Methodendeklaration:... public double distance(point pkt) { double xdiff = x - pkt.x; double ydiff = y - pkt.y; return Math.sqrt(xdiff*xdiff +ydiff*ydiff); //Methodenaufruf: Class PointTester { public static void main(string[] args) { Point lowerleft = new Point(); lowerleft.x = 0.1; Point upperrigth = new Point(); upperright.x = 0.1; double d = lowerleft.distance(upperright); danach enthält Variable d die Euklidische Distanz zwischen lowerleft und upperright. 7

Variablenzugriff Innerhalb der Methode einer Instanz können die eigenen Variablen und Methoden direkt (d.h. ohne Angabe des Instanznamens) aufgerufen werden. z.b. Variable x in der Instanz lowerleft bei Aufruf lowerleft.distance(upperright) Instanz lowerleft x, y Instanz upperright x, y public double distance(point pkt) { double xdiff = x - pkt.x; double ydiff = y - pkt.y; return Math.sqrt(xdiff*xdiff +ydiff*ydiff); 8

Standardvariable this this ist eine Referenz zum aktuellen Objekt, oder anders ausgedrückt this ist eine Referenz auf die aktuelle Instanz der Klasse in der man sich gerade befindet. Über this kann auf alle Variablen und Methoden der Instanz zugegriffen werden. 9

this 2 class Point { double x,y; void setx(double x) { this.x = x; //Instanzvariable x wird gesetzt Instanzvariablenname Parametername Innerhalb einer Methode überschreiben bei Namenskonflikten (=gleicher Bezeichnung) die Parameternamen die Variablennamen der Klasse. Lösung: Verwendung von this oder anderen Parameterbezeichner wählen, z.b. newname. 10

Statische Elemente Variablen und Methoden, die nicht zu einer bestimmten Instanz sonder zur Klasse gehören. Statische Variablen/Methoden sind auch dann verfügbar, wenn noch keine Instanz der Klasse erzeugt wurde. Statische Variablen/Methoden können über den Klassennamen aufgerufen werden. Deklaration durch das Schlüsselwort: static Bsp: class Point { double x, y; static int count; Point.count kann dann zum Beispiel benutzt werden um die Anzahl der Instanzen von Punkt zu speichern. Auf diese Variable kann von jeder Instanz der Klasse Point aus zugegriffen werden. 11

Statische Elemente Programmaufbau class Programm { public static void main(string[] args) Jede Applikation braucht eine Klasse, wo die Applikation startet. Diese Klasse hat eine main-methode. Das Programm startet mit dieser Klasse bei der main-methode. Der main-methode werden die Eigenschaften public und static zugewiesen. static bedeutet, wie wir wissen, dass keine Instanz der Klasse angelegt werden muss. Und zu Beginn einer Applikation existieren ja auch noch keine Instanzen. public bedeutet hier, dass die Java Virtual Machine die Main- Methode des Programms aufrufen darf, um das Programm zu starten. 12

Konstruktoren Jede Klasse benötigt einen oder mehrere Konstruktoren. Konstruktoren: reservieren den Speicherplatz für eine neu zu erzeugende Instanz, weisen den Instanzvariablen initiale Werte zu, haben denselben Namen wie die Klasse, werden wie Methoden deklariert, aber ohne Rückgabewert KlassenName(Parameter){... Zu einer Klasse können mehrere Konstruktoren mit verschiedenen Parametern deklariert werden. 13

Konstruktoren Beispielklasse Student class Student { private String matrnr; private String name; private int semester; Student(String name, String matrnr) { this.name = name; this.matrnr = matrnr; 14

Konstruktoren - Anwendung Jedes Objekt der Klasse Student kann nun durch den Konstruktor mit zwei Werten initialisiert werden: Eine Zeichenkette, um den Namen zu initialisieren. Eine Zahl um die Matrikelnummer zu setzen. Student mystudent = new Student("Else Maier", "0524343"); 15

Spezialisierte Konstruktoren Zweiter Konstruktor (in Klassendefinition) mit anderer Anzahl bzw. anderen Typen von Parametern: Student(String name, String matrnr, int semester){ this(name, matrnr); this.semester=semester; Aufruf (aus einem Programm): Student mystudent = new Student("Else Maier", "9324343", 5); Abhängig von der Parameterzahl und ihren Datentypen wird der entsprechende Konstruktor aufgerufen. Innerhalb dieses Konstruktors wird der erste Konstruktor über this(...); aufgerufen. 16

Spezialisierte Konstruktoren class Student { private String name, matrnr; private int semester; Beispielklasse Student Student(String studname, String studmatrnr) { //Konstruktor 1 name = studname; matrnr = studmatrnr; Student(String name, String matrnr, int semester) { // Konstruktor 2 this(name, matrnr); //Aufruf Konstruktor 1 this.semester=semester; 17

Default-Konstruktor //Konstruktor 1 verwenden Student s1 = new Student("Petra Schmidt", "0051998"); //Konstruktor 2 verwenden Student s2 = new Student("Peter Baum", "9988764", 2); Wenn kein Konstruktor erstellt wurde, wird von Java default-mäßig ein Konstruktor (ohne Parameter) zur Verfügung gestellt. Student s = new Student(); 18

Zugriffskontrolle In JAVA gibt es drei Attribute und eine Standardeinstellung, die den Gültigkeitsbereich von Klassen, Variablen und Methoden regeln, d.h. festlegen, ob bzw. welche anderen Objekte auf eine Klasse, Variable oder Methode der programmierten Klasse zugreifen können: private protected public package (Standardeinstellung) 19

Zugriffskontrolle 2 Grundsätzlich: alle Methoden oder Variablen können innerhalb der Klasse, in der sie geschrieben sind, verwendet oder aufgerufen werden. private Methoden oder Variablen können nur innerhalb der eigenen Klasse verwendet oder aufgerufen werden. keine Angabe (=Standardeinstellung) Methoden oder Variablen sind innerhalb der Eigenen Klasse und innerhalb ihres Pakets* zugreifbar. protected Wie Standardeintellung. Zusätzlich können abgeleite Klassen** (auch außerhalb des Pakets*) diese Methoden und Variablen verwenden. public Methoden oder Variablen lassen sich generell von allen anderen Klassen und Paketen aus aufrufen (Interface von Klassen in Paketen). * Pakete sind Sammlungen von zusammengehörigen Klassen. ** Vererbung wird später behandelt. Einschränkung nimmt zu 20

Zugriffskontrolle 3 class Student { private String name; //... class Uni { public static void main(string[] args) { Student stud1 = new Student(); stud1.name = Peter ; /* Zugriff außerhalb der Klasse Student auf private-variable nicht möglich, kann nur innerhalb der Klasse Student gesetzt werden */ 21

Information Hiding Verstecken der Implementierung einer Klasse hinter den Methoden, die auf ihre internen Daten ausgeführt werden. Das heißt: kein direkter Zugriff auf die Variablen, sondern nur via Methodenaufruf: stud1.setname("peter Meyer"); String name = stud1.getname(); Dieses wichtige Konzept der oop wird auch Data Encapsulation (Datenkapselung) genannt. 22

Information Hiding - Code 1 Die Deklaration der Variablen als private verhindert den unerwünschten Zugriff auf die Variablen von außerhalb der Klasse. class Student { private String private int... name; matnr; 23

Information Hiding - Code 2 Auf die Variablen kann nur über die Methoden get und set zugegriffen werden. Diese Methoden müssen public deklariert werden.... public String getname() { return name; public int getmatnr() { return matnr;... 24

Information Hiding - Code 3... public void setname(string name) { this.name = name; public void setmatnr(string matnr) { this.matnr = matnr; Mit den Methoden set können den entsprechenden Variablen Werte zugewiesen werden. 25

Klasse Student gesamt class Student { private String name; private int matnr; Student(String name, int matnr){ this.name = name; this.matnr = matnr; public String getname(){ return name; public int getmatnr(){ return matnr; /* keine set-methoden: Die Variablen können nur gelesen werden */ 26

Information Hiding - Vorteile Die Implementierung der Daten kann verändert werden, ohne dass Programmcode außerhalb der Klasse geändert werden muss. Der Zugriff auf die verschiedenen Variablen kann eingeschränkt werden. Dies verhindert sowohl Datenmanipulationen als auch irrtümliche Veränderung oder Abfrage der Daten. Außerdem können damit die Programmierfehler eingeschränkt werden. 27

Nach dieser Einheit sollten Sie... die Zugriffskontrolle von Methoden kennen, die Signatur verschiedener Methoden interpretieren können, die Bedeutung der Konstruktoren kennen, Methoden implementieren können, Information Hiding und statische Methoden kennen und anwenden können. 28