Einführung in die Programmierung mit Java. Hörsaalübung



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

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

Objektorientierte Programmierung OOP

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

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

Systemanalyse. - Folien zur Vorlesung für AI3 im Sommersemester Teil 4 -

Klassendiagramm. (class diagram)

Prinzipien Objektorientierter Programmierung

UML Klassendiagramm. Igor Karlinskiy, Mikhail Gavrish

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

3. Konzepte der objektorientierten Programmierung

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

Software Engineering Klassendiagramme Einführung

Darstellung von Assoziationen

OO Softwareentwicklung

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

Software Engineering Interaktionsdiagramme

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

Assoziation und Aggregation

EinfÅhrung in die objektorientiere Programmierung (OOP) unter Delphi 6.0. EDV Kurs 13/2

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

SWE5 Übungen zu Software-Engineering

Software Engineering Klassendiagramme weiterführende Konzepte

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Vorkurs C++ Programmierung

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

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

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

Unified Modeling Language (UML)

Software Engineering Klassendiagramme Assoziationen

Einführung in die Programmierung für NF

Innere Klassen in Java

Programmieren in Java

Übungen zur Softwaretechnik

Übung 4. Musterlösungen

Objektorientierte Programmierung

Probeklausur Softwareengineering SS 15

Objektorientierte Programmierung. Kapitel 12: Interfaces

Softwaretechnologie -Wintersemester 2013/ Dr. Günter Kniesel

4. AuD Tafelübung T-C3

Einführung in die Java- Programmierung

SEP 114. Design by Contract

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

Java Einführung Methoden in Klassen

Java lernen mit BlueJ

Vorlesung "Software-Engineering"

Grundlagen von Python

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

Lösungen zu Übung 3 Objektorientierte Modellierung - Statisches Modell

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

7. Analyse-Phase: Datenmodellierung Software Engineering

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

Java Einführung Packages

Code-Erzeugung aus UML-Klassendiagrammen

Java Kurs für Anfänger Einheit 5 Methoden

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

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

Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

Vorlesung Programmieren

Software Entwicklung II (SS12)

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Programmierkurs Java

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

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

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

Kapitel 6. Vererbung

Javakurs 2013 Objektorientierung

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

RUP Analyse und Design: Überblick

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

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

Objektorientierte Programmierung

BEISPIELKLAUSUR Softwareentwicklung:

Computeranwendung und Programmierung (CuP)

teischl.com Software Design & Services e.u. office@teischl.com

Vgl. Oestereich Kap 2.7 Seiten

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

SEQUENZDIAGRAMM. Christoph Süsens

Kapitel 6. Vererbung

Klausur Software-Engineering SS 2005 Iwanowski

Objektorientierung: Klassen und Objekte

Interaktive Medien Richtlinien für das Codieren Version vom 18. Juni 2014

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht

Klassenbeziehungen & Vererbung

Programmieren Tutorium

5. Abstrakte Klassen

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

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

SS Björn Berezowski B.Sc. Marco Münch B.Sc. Michael Roth B.Sc. Repetitorium PG 1. Übungsblatt. 1 Übung - Probeklausur SS 2010 Typ Prof.

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

Techniken der Projektentwicklungen

Kapitelübersicht. Was ist So#waretechnik? Historische Entwicklung der So9waretechnik Prinzipien, Methoden, Werkzeuge. Was bedeutet Objektorien+erung?

Verwendung des IDS Backup Systems unter Windows 2000

How to do? Projekte - Zeiterfassung

Archiv - Berechtigungen

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

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

Einführung in die Java- Programmierung

Transkript:

Einführung in die Programmierung mit Java Hörsaalübung Folie 1 Grundlagen der Objektorientierung Seit Anfang der Neunzigerjahre Standardmethode der Softwareentwicklung. Die OOP Objektorientierte Programmierung beruht darauf, die zu verarbeitenden Daten anhand ihrer Eigenschaften und dder möglichen Operationen zu klassifizieren. Der OOP liegt die Aufteilung der zu beschreibenden Welt in Objekte mit Eigenschaften und Operationen zugrunde. Das Konzept der Klasse fasst Objekte mit ähnlichen Eigenschaften (eine bestimmte Sorte von Objekten) zusammen. Eine Klasse beschreibt die Struktur eines Objekts in dem sie seine Attribute (Eigenschaften) und Methoden (das Verhalten) bestimmt. (Vgl. Bauplan). Die Objekte der zu beschreibenden Welt werden im Modell auf ihre kontextbedingten Eigenschaften reduziert. Es werden nur die Aspekte berücksichtigt, die zur Erfüllung einer bestimmten Aufgabe zweckdienlich sind. Folie 2 1

Grundlagen der Objektorientierung Folie 3 Beispiel Kontextabhängigkeit Bäckerei: Supermarkt: Folie 4 2

Objektorientierte Modellierung & Entwurf Handwerkszeug UML Klassendiagramme Einfachstes UML Klassendiagramm (Klassenname: Substantiv Singular) Klasse (Bauplan) Konkrete Instanz / Objekt (unterstrichener Name) Folie 5 UML Klassendiagramme Bestandteile Klassenname Name des Attributs Typ des Attributs Sichtbarkeiten Name der Methode Name des Parameters Typ des Parameters Rückgabetyp der Methode Folie 6 3

Attribute & Methoden Attribute Attribute beschreiben die Struktur der Objekte, ihre Bestandteile und die in ihnen enthaltenen Informationen und Daten. Mögliche Sichtbarkeiten: #protected, +public, -private Name des Attributs: in der Regel kleingeschrieben Typ des Attributs: Basisdatentyp (z.b. int, double ) oder komplexer Datentyp (Klasse) Methoden Operationenen/Methoden beschreiben das Verhalten von Objekten. Diese arbeiten auf den Daten (schreibend/lesend). Mögliche Sichtbarkeiten: #protected, +public, -private Typ des Rückgabewerts: Basisdatentyp (z.b. int, double ) oder komplexer Datentyp (Klasse) Name der Operation: in der Regel kleingeschrieben Liste der Parameter: (Parametername: Typ) i.d.r. kleingeschrieben, Basisdatentyp o. komplexer Datentyp Folie 7 Klassenbeispiel class Konto { private String inhabername; private String inhabervorname; private int kontonummer; private int pin; private double guthaben; public void einzahlen(double summe) { guthaben = guthaben + summe; } // Ende Methodendefinition public double auszahlen(double summe) { guthaben = guthaben - summe; return summe; } // Ende Methodendefinition } // Ende Klassendefinition Folie 8 4

UML Klassendiagramme - Objektbeziehungen Assoziation Eine Assoziation repräsentiert eine Beziehung zwischen verschiedenen Objekten einer oder mehrerer Klassen. Folie 9 Objektbeziehungen Detailierte Darstellung Assoziation Gleichrangige Beziehung Keine zwingenden Abhängigkeiten Rollennamen Multiplizitäten / Kardinalitäten * = beliebig viele 1 = genau 1 1..* = mind. 1 bis beliebig viele Folie 10 5

Objektbeziehungen Navigierbarkeiten Ungerichtete Assoziation entspricht Bidirektionale Assoziation Student kennt seine Vorlesung Vorlesung kennt seine Hörer Bidirektionale Assoziation Folie 11 Objektbeziehungen Navigierbarkeiten Unidirektionale Assoziation Unidirektionale Assoziation Student kennt seine Vorlesung Vorlesung kennt seine Hörer nicht Folie 12 6

UML - Objektbeziehungen Folie 13 Hierarchische Objektbeziehungen Aggregation Aggregation Hierarchische Beziehung - ein Objekt ist Teil eines anderen Eine Aggregation ist die Zusammensetzung eines Objektes aus einer Menge von Einzelteilen Folie 14 7

Hierarchische Objektbeziehungen Komposition Komposition Stärkere Form der Aggregation Teilobjekte sind in ihrer Existenz abhängig vom übergeordneten Objekt Beispiel Eine Rechnungsposition gehört immer zu einer Rechnung. Wird eine Rechnung gelöscht, werden auch die einzelnen Rechnungspositionenen gelöscht. Folie 15 Dorf 1 hat 1..* Haus (Aggregation) Komposition! Bankkonto 1 hat 1 Geheimnummer Implikation: Beim Löschen des Objektes MeinBankkonto wird die entsprechende Geheimzahl natürlich auch gelöscht. Folie 16 8

Grundprinzipien der Objektorientierten Programmierung (OOP) Allan Kay prägte in den 80er Jahren den begriff der Objektorientierung. Demnach unterstützt eine objektorientierte Sprache die folgenden Prinzipien: Datenkapselung Vererbung Polymorphie Folie 17 Datenkapselung In der strukturierten/funktionalen Programmierung (Vorläufer der OOP) sind Daten von Routinen/Funktionen getrennt. Es kann von jeder Stelle im Programm auf die Daten zugriffen werden. Die Objektorientierung verändert diese Sicht durch die Einführung von Objekten. Daten und Routinen werden in Form von Klassen zusammengefasst. Daten gehören nun explizit einem Objekt. Ein direkter Zugriff auf die Daten ist diesem Objekt vorbehalten. Objekte haben damit das alleinige Recht, ihre Daten zu verändern oder auch nur lesend auf diese zuzugreifen. Ein Zugriff auf die Daten von außerhalb des Objektes it ist nur über definierte i Methoden möglich. Folie 18 9

Die strukturierte Programmierung als Vorläufer der Objektorientierung? Allgemein Generelle Unterteilung von Programmen : Daten & Instruktionen Komplexität eingrenzen: Strukturierung von Daten & Instruktionen Funktionale Programmierung Instruktionen einzelne Routinen / Funktionen Parameter für Funktionen Daten globale, lokale, statische, dynamische Variablen Definition eigener Variablentypen Folie 19 Datenkapselung Folie 20 10

Getter- und Stetter-Methoden Um Attribute zu lesen & zu schreiben werden s.g. Getter- bzw. Setter-Methoden verwendet. Diese Methoden ermöglichen einen gezielten Lese- und/oder Schreibzugriff auf die Attribute. Zusätzlich kann die Gültigkeit der Attribute gewährleistet werden. Bsp.: setradius kann sicherstellen, dass r immer größer 0 ist. Folie 21 Vererbung Klassen können Spezialisierungen anderer Klassen darstellen. D.h. Klassen können hierarchisch angeordnet werden, übernehmen ( erben ) dabei die Eigenschaften und das Verhalten der ihnen übergeordneten Klassen und können diese bedarfsweise spezialisieren ( überschreiben ) und erweitern. Auf Quelltextebene kann Vererbung eingesetzt werden, um Redundanzen ( doppelten Code ) zu vermeiden. Vererbungspfeil = IST ein.. Folie 22 11

Polymorphie Vielgestaltigkeit - Polymorphie wörtlich übersetzt Existiert auch in der Chemie & Biologie: Die unterschiedliche Gestaltung der Individuen einer Art Beispiele: Kristalle, Ameisen Satt von Polymorphie könnte man auch von Selbständigkeit des Objekts sprechen In der OOP ist Polymorphie ein Konzept das Objekten erlaubt, auf ein und die selbe Nachricht unterschiedlich zu reagieren Folie 23 UML Klassendiagramm - Polymorphie Folie 24 12

References Objektorientierte Programmierung (Lahres, Rayman) http://openbook.galileocomputing.de/oop/ ti / / The Principles of OOD http://butunclebob.com/articles.unclebob.principlesofood Agile Priniciples, Patterns and Practices in C# (Robert C. Martin) Agile Software Development: Principles, Patterns, and Practices (Robert C. Martin) SOLID Principles with Uncle Bob - Robert C. Martin (Podcast) http://www.hanselminutes.com/default.aspx?showid=163 Folie 25 13