Objekt-Orientierte Programmierung

Ähnliche Dokumente
Objekt-Orientierte Programmierung

Programmieren in Java

Grundlagen von Python

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

Objektorientierte Programmierung. Kapitel 12: Interfaces

Vorkurs C++ Programmierung

Programmierkurs Java

Objektorientierte Programmierung

Einführung in die Java- Programmierung

3 Objektorientierte Konzepte in Java

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Javakurs 2013 Objektorientierung

Innere Klassen in Java

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

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

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

Java Einführung Packages

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

Einführung in die Programmierung

Java: Vererbung. Teil 3: super()

Computeranwendung und Programmierung (CuP)

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

7. Pakete Grundlagen der Programmierung 1 (Java)

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

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

Software Engineering Klassendiagramme Einführung

5. Tutorium zu Programmieren

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

5.5.8 Öffentliche und private Eigenschaften

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

Prinzipien Objektorientierter Programmierung

Einführung in die Java- Programmierung

Kapitel 6. Vererbung

5. Abstrakte Klassen

5.4 Klassen und Objekte

Deklarationen in C. Prof. Dr. Margarita Esponda

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

Kapitel 6. Vererbung

Objektorientierte Programmierung. Kapitel 16: Pakete, Zugriffsschutz

Algorithmen und Datenstrukturen

Software Engineering Klassendiagramme Assoziationen

Vererbung & Schnittstellen in C#

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Kapitel 6. Vererbung

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

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

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

Java Einführung Methoden in Klassen

Software Engineering Interaktionsdiagramme

Javakurs für Anfänger

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

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

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

Java Einführung Collections

Javakurs zu Informatik I. Henning Heitkötter

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

Objektorientierte Programmierung OOP

Java Projekt: Tic Tac Toe + GUI

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

BEISPIELKLAUSUR Softwareentwicklung:

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

Klassenbeziehungen & Vererbung

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

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

2. Programmierung in C

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

Java Kurs für Anfänger Einheit 5 Methoden

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

Einführung in Eclipse und Java

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Liste Programmieren Java Überblick

Modellierung und Programmierung 1

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Applet Firewall und Freigabe der Objekte

10 Objektorientierte Programmierung, Teil 1

Objektorientierte Programmierung

Vgl. Oestereich Kap 2.7 Seiten

Objektorientierung: Klassen und Objekte

Programmieren Tutorium

Aufgabe 1. »Programmieren«, WS 2006/2007. Nino Simunic M.A.

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

Übungsblatt 3: Algorithmen in Java & Grammatiken

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

Objektbasierte Entwicklung

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Einführung in die. objektorientierte Programmierung

3 Objektorientierte Konzepte in Java

Einführung in die Programmierung

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

Graphische Benutzungsoberflächen

Einrichten eines HBCI- Zugangs mit Bank X 5.1

Grundlagen der Programmierung APPLETS

SWE5 Übungen zu Software-Engineering

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Informatik für Schüler, Foliensatz 23 Konstruktor, String-Methode und Heldenklassse

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

Software Engineering Klassendiagramme weiterführende Konzepte

Programmierkurs Java

Delegatesund Ereignisse

Transkript:

Objekt-Orientierte Programmierung Ein OO-Programm modelliert eine Anwendung als eine Welt von Objekten, die miteinander in Beziehung stehen ( später). Ein Objekt kann andere Objekte erzeugen. Ein Objekt kann eigene Methoden und die Methoden anderer Objekte aufrufen. Ein Objekt hat Datenfelder, die Werte beinhalten und während des Programmablaufs geändert werden können. 1

Objekte Können zur Modellierung von realen Objekten verwendet werden. Können zur Repräsentation von GUI (Graphical User Interface) Komponenten verwendet werden ( später). Können Software-Einheiten repräsentieren, z.b. Ereignisse, Dateien, Bilder, etc. Können abstrakte Konzepte repräsentieren, z.b. Regeln eines Spieles, einen speziellen Tanztyp, etc. 2

Klassen und Objekte Eine Klasse ist ein Stück eines Quellcodes, das einen speziellen Objekttyp (Sorte) beschreibt. OO-Programmierer schreiben Klassendefinitionen Ein Objekt wird eine Instanz einer Klasse genannt. Ein Programm kann beliebig viele Instanzen einer Klasse anlegen und verwenden. 3

Klasse Eine Blaupause (Plan) für Objekte eines speziellen Typs Definiert die Struktur (Anzahl, Typen) der Attribute Definiert das Verhalten (Funktionalität) der Objekte Objekt Attribute Verhalten 4

Klasse: Auto Objekt: ein Auto Attribute: String typ Farbe farbe int leistung int anzpersonen double verbrauch int zufahrendestrecke Verhalten: Insassen hinzufügen bzw. entfernen, volltanken, melde leeren Tank Attribute: typ = "Mustang farbe = gelb leistung = 220 anzpersonen = 0 verbrauch = 12.5 zufahrendestrecke = 10; Verhalten: 5

Klasse vs. Objekt Ein Stück Quelltext Geschrieben von einem Programmierer Eine Instanz in einem laufenden Programm Wird zur Laufzeit des Programms angelegt (von der main-methode oder einer anderen Methode) 6

Klasse vs. Objekt Spezifiziert die Struktur (die Anzahl und Typen) seiner Objektattribute gleich für alle Objekte dieser Sorte Speichert spezielle Attributwerte; diese können sich während des Programmlaufs ändern Spezifiziert das Verhalten seiner Objekte Verhält sich entsprechend 7

Klassen und Quelldateien Jede Klasse ist in einer seperaten Datei gespeichert Der Name der Datei muss gleich dem Namen der Klasse sein, mit der Erweiterung.java public class Car {... Car.java Konvention: der Name der Klasse (und der entspr. Datei) beginnen mit einem Großbuchstaben. (In Java sind alle Namen case-sensitive.) 8

Bibliotheken Java Programme werden normalerweise nicht von Null geschrieben. Es existieren bereits hunderte von Klassenbibliotheken, in den Klassen für unterschiedlichste Anwendungen definiert wurden. Klassenbibliotheken sind in Packages organisiert. Beispiel: java.util miscellaneous utility classes java.awt windowing and graphics toolkit javax.swing GUI development package 9

import Um Klassen innerhalb von Paketen nutzen zu können, müssen sie dem Compiler präzise beschrieben werden Vollständige qualifizierte Klassennamen beinhalten den Package-Namen: java.awt.color javax.swing.jbutton import-statements zu Beginn des Quellcodes erlauben es, Abkürzungen zu verwenden: import javax.swing.jbutton;... JButton go = new JButton("Go"); vollständig qualifiziert 10

import Man kann alle Klassennamen aus einem Package importieren lassen, in dem man eine wildcard.* verwendet: import java.awt.*; import java.awt.event.*; import javax.swing.*; Importiert alle Klassen aus awt, awt.event, und swing Packages java.lang wird automatisch in alle Klassen importiert; definiert System, Math, Object, String, und andere häufig verwendete Klassen. 11

Members SomeClass.java import... import statements public class SomeClass Funktionskopf { Attribute Variablen, die den Objektzustand definieren; prim. Datentypen, Strings, andere Objekte Konstruktoren Prozeduren für die Initialisierung der Attribute beim Anlegen eines neuen Objekts der Klasse Methoden Aktionen, die ein Objekt dieser Klasse ausführen kann 12

Attribute Instanz-Variablen Der private Speicher der Objekte 13

Attribute Attributname [private public] [static] [final] datatype name; optional: normalerweise private optional: bedeutet, dass das Attribute nur einmal für die Klasse angelegt wird; Klassenattribute int, double, etc., oder ein Objekt optional: bedeutet, dass das Attribute eine Konstante ist 14

Konstruktoren Prozeduren, um ein Objekt bei der Konstruktion zu initialisieren Haben immer den Namen der Klasse Initialisieren die Objektattribute Können Parameter haben Eine Klasse kann mehrere Konstruktoren besitzen, die sich in der Anzahl und im Typ der Parameter unterscheiden 15

Konstruktoren Ein privater Konstruktor ist ein spezieller Instanzkonstruktor. Er wird häufig für Klassen verwendet, die nur statische Member enthalten. Wenn eine Klasse über einen oder mehrere private und keine öffentlichen Konstruktoren verfügt, dürfen von anderen Klassen keine Instanzen dieser Klasse erstellt werden. Beispielsweise weil die Klasse nur als ein Behälter statischer Methoden dienen soll. 16

Konstruktoren... Car mycar;... mycar = new Car ( Opel, 6.4, 150, 25000);... Ein Objekt wird durch den new Operator kreiert public class Car {... public Car (String typ, float x, int y, int z) {...... Die Anzahl, Reihenfolge und Typen der Parameter müssen mit der Deklaration übereinstimmen Konstruktor 17

Konstruktoren JButton go = new JButton("Go"); 18

Konstruktoren class Car { private String private float private int private int typ; verbrauch; ausstoß; preis; Car ( String typ, float verbrauch, int co2, int preis ) { this.typ = typ; this.verbrauch = verbrauch; ausstoß = co2; this.preis = preis; Im Rumpf einer Methode kann auf das Objekt, für das die Methode aufgerufen wird, durch das Schlüsselwort this verwiesen werden 19

Konstruktoren class MyStaticClass { public static int i; public static short s; static { i = 10; s = 20; Ein statischer (parameterloser) Konstruktor kann verwendet werden, um statische Variablen mit einem Wert zu initialisieren. Der Konstruktor kann dabei ausschließlich statische Variablen mit einem Startwert vorbelegen. 20

Methoden Methoden werden für ein spezielles Objekt aufgerufen Die Anzahl und Typen der Parameter (Argumente) eines Funktionsaufrufs müssen mit der Deklaration übereinstimmen Eine Methode liefert entweder einen Wert zurück oder wird durch das Schlüsselwort void im Funktionskopf als Prozedur deklariert 21

Methoden class MyClass { public int a; public MyClass ( int x ) { a = x; public void MyMethod() { System.out.print("my method was called"); public class MyTest { public static void main(string[] args) { MyClass object = new MyClass(1); object.a = 3; System.out.print(object.a); object.mymethod(); Der Objektname wird durch den Punktoperator vom gewünschten Element (Attribut/Methode) getrennt notiert. 22

Kapselung Die besondere Idee der Klassen und ihrer Objekte ist die Kapselung von Daten (Programmvariablen) und Algorithmen (Methoden) in eine Einheit. Die Objektorientierung bietet darauf basierend syntaktische Mittel, um sicherzustellen, dass Prozeduren nur auf die ihnen zugeordneten Programmvariablen zugreifen. Regelung Die Namen privater Attribute sind nur innerhalb des Klassenrumpfes gültig, ihre Lebensdauer ist mit der Lebensdauer des Objekts gleichgesetzt. Private Attribute können ausschließlich durch Zuweisungen im Rumpf von Methoden des Objekts verändert werden, in dem auch das Attribut angesiedelt ist und auch nur dort gelesen werden. Die Lebensdauer der Attribute, der lokalen Daten, eines Objekts und damit seiner Methoden besteht über die Dauer des Aufrufs einer Methode fort. 23

Methoden Konstruktoren und Methoden können andere public und private Methoden der selben Klasse aufrufen. Konstruktoren und Methoden können nur public Methoden anderer Klassen aufrufen Class X private field public Methode Class Y public Methode private method 24

Kapselung class Konto { private String private String private int kontonummer; kontoinhaber; kontostand; Konto(String ktonummer, String ktoinhaber, int startwert) { public void erbuebertrag(konto kto) { kontostand = kontostand + kto.kontostand; kto.kontostand = 0; Korrekt, da innerhalb von Methoden eines Objektes einer Sorte alle lokalen Atttribute und Methoden der Sorte sichtbar sind! 25

Kapselung class Konto { private String kontonummer; private String kontoinhaber; public int kontostand; Konto(String ktonummer, String ktoinhaber, int startwert) { public class KontoTester { public static void main(string[] args) { Konto meinkonto = new Konto( 123, Westermann, 100); meinkonto.kontostand = 1000; System.out.println( meinkonto.kontonummer + : + meinkonto.kontostand ); Fehler bei Übersetzung, da kontonummer in main nicht sichtbar ist! 26

Kapselung class Car { public static int lagerbestand = 0; private static Car[] lagerliste = new Car[1000]; Car(String type, float verbrauch, int co2, int preis) { Car(Car newcar) { public static void einkauf(car newcar) { lagerliste[lagerbestand] = new Car(newCar); lagerbestand++; public static void verkauf(int index) { lagerliste[index] = null; // nicht empfehlenswert!!! lagerbestand--; Die Referenz null bezeichnet ein vorgegebenes Referenzelement, dessen Bezugselement undefiniert ist. Im Rumpf einer (Klassen)methode kann auf Klassenattribute zugegriffen werden. 27

Kapselung class Car { public static int lagerbestand = 0; private static float gewinn = 0; private static Car[] lagerliste = new Car[1000]; public static void einkauf(car newcar) { public static void verkauf(int index) { public class Organizer { public static void main(string[] args) { Car car = new Car( ); System.out.println( Aktueller Bestand: + Car.lagerbestand); System.out.println( Aktueller Gewinn: + Car.gewinn); Car.einkauf(car); Fehler beim Kompilieren, da Klassenattribut gewinn in main nicht sichtbar ist! 28

Sichtbarkeiten Erlaubte Zugriffe auf Attribute und Methoden: public default private Klasse selbst X X X Andere Klasse im gleichen Paket X X Andere Klasse im anderen Paket X 29

Sichtbarkeit in Packages in Java Für Klassen, die auf der obersten Ebene direkt in einem Paket deklariert sind, gelten folgende Regeln (sie gelten nicht für Klassen, die als Mitglied einer anderen Klasse definiert wurden später): Wenn eine Klasse nicht mit dem Klassenmodifikator "public" deklariert wird, dann ist sie nur innerhalb ihres Pakets sichtbar. Wenn eine Klasse mit dem Klassenmodifizierer "public" deklariert wird, dann ist sie in allen Paketen der Hierarchie sichtbar. In Java darf nicht mehr als eine öffentliche Klasse in einer Übersetzungseinheit enthalten sein, eine Übersetzungseinheit darf aber mehrere (nicht-öffentliche) Klassen enthalten. Für Klassendeklarationen der obersten Ebene ist der Klassenmodifizierer "private" nicht anwendbar. 30

Sichtbarkeit in Packages in Java Ein Zugriff auf eine Methode einer Klasse ist nur möglich, wenn ein Zugriff auf die Klasse möglich ist. Ist der Zugriff auf eine Klasse möglich, so ist aber der Zugriff auf alle Methoden der Klasse nicht unbedingt möglich. Wenn bei der Deklaration einer Methode keine Methodenmodifikatoren für den Zugriff angegeben wird, dann ist die Methode nur in dem Paket der Methode sichtbar. Wird eine Methode mit dem Methodenmodifizierer "public deklariert, dann ist diese Methode in allen Paketen der Hierarchie sichtbar. Wird eine Methode mit dem Methodenmodifikator "private" deklariert, so ist diese Methode nur innerhalb der Klassendeklaration der Klasse sichtbar, in der die Methode deklariert wird. 31