Modellierung und Programmierung 1

Ähnliche Dokumente
C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Repetitorium Informatik (Java)

C++ - Objektorientierte Programmierung Konstante und statische Elemente

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Klassenvariablen, Klassenmethoden

Einstieg in die Informatik mit Java

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Folienpaket 7 Themenschwerpunkte: Methoden in OOP /2016 Dr. Daniel Haase - Vorkurse Informatik V3/V4

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

3. Klassen Statische Komponenten einer Klasse. Klassenvariablen

2. Unterprogramme und Methoden

Einstieg in die Informatik mit Java

Modellierung und Programmierung 1

1 Klassen und Objekte

Prof. W. Henrich Seite 1

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Informatik II Übung 05. Benjamin Hepp 3 April 2017

Klassen als Datenstrukturen

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Verschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes

Dr. Monika Meiler. Inhalt

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

Klassenmethoden. Klassenvariablen. Für das Auslesen des Studentenzählers definieren wir eine öffentliche Klassenmethode:

Geschachtelte Klassen

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Klassen mit Instanzmethoden

Java für Bauingenieure

Objektorientierte Programmierung Studiengang Medieninformatik

Informatik I (D-MAVT)

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Visuelle Kryptographie. Anwendung von Zufallszahlen

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Einstieg in die Informatik mit Java

Objektorientierung (OO)

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Arrays. Einleitung. Deklarieren einer Array Variablen

Vorkurs C++ Programmierung

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

Einstieg in die Informatik mit Java

Java Datentypen und Variablen

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Grundlagen der Programmierung

Algorithmen und Datenstrukturen

Einstieg in die Informatik mit Java

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

Organisatorisches. Neue Übungsblätter: Nur mehr elektronisch? Abgabe Di, , 14 Uhr bis Do, , 8Uhr

Einstieg in die Informatik mit Java

Javakurs 2013 Objektorientierung

Java Kurs für Anfänger Einheit 5 Methoden

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Schnittstellen, Vererbung & Polymorphismus für Fortgeschrittene

Modellierung und Programmierung 1

Einstieg in die Informatik mit Java

Programmiertechnik Vererbung & Polymorphismus für Fortgeschrittene

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Grundlagen der Programmierung

Intuitive Einführung. Informatik B Objektorientierte Programmierung in Java. Vorlesung 01: Objektorientierte Programmierung (Teil 1)

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

Programmieren I. Methoden-Spezial Heusch --- Ratz 6.1, Institut für Angewandte Informatik

Abschnitt 6: Klassen, Objekte und Methoden in Java

Java Einführung Methoden. Kapitel 6

Methoden und Wrapperklassen

Objektorientierte Programmierung Studiengang Medieninformatik

Einführung in die Programmierung für NF MI. Übung 07

Objektorientierte Programmierung und Klassen

Objektorientierte Programmierung

Einstieg in die Informatik mit Java

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

Konstruktor/Destruktor

Objektorientierte Programmierung mit Java. Grundlagen Übersicht. Programmiersprachen

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Objektorientierte Programmierung

Programmierkurs C++ Konstruktor, Statische Methoden Namespaces

JAVA - Methoden

Java Einführung Klassendefinitionen

3 Objektorientierte Konzepte in Java

5. Java Arrays und Strings

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

Computeranwendung und Programmierung (CuP)

Scala. Funktionale (Zustandslose) Objekte

Programmieren in Java

Programmiervorkurs WS 2013/2014. Instanzmethoden. Termin 6

Umsetzung einer Klassenkarte in einer Programmiersprache

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

Fragen zur OOP in Java

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Java Einführung Methoden in Klassen

Themen der Übung. Methoden und Wrapperklassen. Vorteile von Methoden. Methoden. Grundlagen

Einführung in die Programmierung Blockkurs Java

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Javakurs für Anfänger

Javakurs für Anfänger

5.5.8 Öffentliche und private Eigenschaften

Transkript:

Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 9. Dezember 2015

Wiederholung Referenzdatentypen reference [0] M datatype char[] variable name array = new char array char[3]; [1] [2] u t class object (datatype) name String string String string custom class (datatype) object name reference constructor method = new String(array); = "Mut"; reference constructor method Text wort = new Text("Mut"); string String " M u t " object class wort Text Attribute

Wiederholung Klassen- vs. Instanzvariablen Klassenvariablen bezeichnen Attribute, die sich auf alle Objekte der Klasse beziehen, für alle Objekte gleich sind und nur für alle Objekte zusammen verändert werden können keyword: static Beispiel: static int objectcount; unveränderbare Klassenkonstante tragen zusätzlich das keyword final Beispiel: final static double PI; Instanzvariablen bezeichnen Attribute, die bei allen Objekte der Klasse eine unterschiedlichen Ausprägung haben können und individuell veränderbar sind default (kein Bezeichner notwendig)

Wiederholung Klassen- vs. Instanzmethoden Klassenmethoden bezeichnen Methoden, die auch ohne das Vorhandensein eines Objektes auf die Klasse angewendet werden können keyword: static Beispiel: static int getnumberofobjects() Aufruf: [Klasse].getNumberOfObjects() Instanzethoden bezeichnen Methoden, auch non-static methods genannt, die auf Objekte/Instanzen der Klasse angewendet werden default (kein Bezeichner notwendig) Beispiel: String getobjectid() Aufruf: [Objekt].getObjectID()

Klassen bestehen aus... Klassenname Attribute Liste von Klassenvariablen Liste von Instanzvariablen sie definieren den Datentyp Konstruktor(-methode) ist kein Konstruktor spezifiziert, greift der default-konstruktor Beispiel: [Klasse](); (minimaler Konstruktor) Aufruf: [Klasse] [object name] = new [Klasse](); ein Konstruktor hat keinen Rückgabetyp der Name jedes Konstruktors ist identisch mit dem Namen seiner Klasse wie bei anderen Methoden: es können Parameter übergeben werden Klassenmethoden Instanzmethoden

Beim letzten Mal... Klassen Memory, SpielFeld und Spieler Nutzung der Spezifikation der Struktur/des Datentypes Deklaration, Definition und (teilweise) Initialisierung der Attribute Nutzung des default-konstruktors Diese Mal... Konstruktor für die Klasse SpielFeld Instanzmethoden: mischen der Karten anzeigen des Spielfeld (4 Varianten) ispair() überprüft, ob die Karten (m1, n1) und (m2, n2) ein Paar bilden removepair() die Karten (m1, n1) und (m2, n2) entfernt

Konstruktor SpielFeld() legt ein Objekt an mit Struktur und initialen Werten für die Attribute spezifiziert durch Attribute der Klassen zusätzlich wird das Spielbrett brett[][] definiert und mit den Zahlen für die Kartenpaare initialisiert danach werden die Karten gemischt das Objekt muss nicht über this angesprochen

Klasse SpielFeld Karten mischen Instanzmethode: void mischen() die Variablen m1, n1, m2, n2, dummy sind lokal das Objekt, dessen Karten gemischt werden sollen, wird mit this (this object) angesprochen Manipulation der Instanzvariablen (hier die Elemente von brett) ändert die Werte des gegebenen Objekts

Klasse SpielFeld Spielbrett anzeigen a) c) b) d) a) keine der vorhandenen Karten aufgedeckt b) (alle vorhandenen Karten aufgedeckt) c) EINE der vorhandenen Karten aufgedeckt d) ZWEI der vorhandenen Karten aufgedeckt Welche Karten noch auf dem Spielbrett vorhanden sind, kann dem Array brett[][] des Objekts spiel entnommen werden.

Klasse SpielFeld Spielbrett anzeigen Die Instanzmethode printbrettopen() heisst überladen, weil mehrere Methoden mit dem selben Namen aber unterschiedlicher Parameterliste existieren. Zwei Parameter Koordinaten EINER Karte int m1, int n1 Vier Parameter Koordinaten ZWEIER Karten int m1, int n1, int m2, int n2

Klasse SpielFeld Paare erkennen Instanzmethoden mit Rückgabewert es kann nur ein Wert (auch eine Referenz) zurückgegeben werden es kann mehrere Rückgabeanweisungen geben der Rückgabewert muss dem Rückgabetyp entsprechen alle denkbaren Methodendurchläufe müssen in einer Rückgabeanweisung enden

This won t work! Why? Was passiert wenn die beiden Karten kein Paar bilden?

Klasse SpielFeld Paare entfernen Methoden können (andere) Methoden aufrufen removepair() ruft ispair() auf der Rückgabewert von ispair() wird an der Stelle des Aufrufes eingesetzt der Rückgabewert true von removepair() bestätigt dem aufrufenden Programm das Entfernen des Paars

Memory erste Schritte in Richtung OOP soweit die Erfolge: Nutzung der Klasse SpielFeld nicht nur als Datentyp sondern auch zur Bereitstellung von Werkzeugen diese Werkzeuge (Methode) dienen der Lösung von Teilaufgaben Übersichtlicheres Hauptprogramm zum Vergleich: progs06/memory.java progs07/memory.1.java progs07/memory.java weitere Modularisierung möglich (und nötig!)

Methoden die Methoden aufrufen Rekursion Lexikoneintrag: Re kur sion, die, siehe Rekursion Rekursion: eine Methode a() ruft sich selbst wieder auf wechselseitige Rekursion: eine Methode a() ruft Methode b() auf, welche Methode a() aufruft potentiell unendliche Nutzen in der Mathematik und Informatik Zurückführen einer komplexen Aufgabe auf eine einfachere Aufgabe derselben Klasse solange bis der Aufgabe per Definition eine Lösung zugewiesen werden kann Beispiel: berechnen der Summe der natürlichen Zahlen bis einschließlich n

Rekursion im Alltag I Ich weiß, dass du weißt, dass ich weiß, dass du weißt,... I Ein Hund kam in die Ku che und stahl dem Koch ein Ei... I Spiegel im Spiegel I Matryoschka (russische Puppen)

Rekursion vs. Iteration Rekursion vier ((1+1)+1)+1 (1+1)+1 1+1 1 eine! n n 1 (n 1) 1 ((n 1) 1) 1= 1 Iteration eine 1 1+1 (1+1)+1 vier ((1+1)+1)+1 n n 1 (n 1) 1 ((n 1) 1) 1= 1 Rekursion ist oft eleganter, während Iteration effizienter ist.

Rekursion Berechnen von n! (n-fakultät) Übung: RekursivFakultaet.java

Rekursion Berechnen von n! (n-fakultät) Übung: IterativFakultaet.java

Referenzdatentyp String Besondere Eigenschaften Strings sind Objekte der Klasse String Strings erzeugen direkte Konstruktion von String-Objekten aus String-Literalen Beispiel: String name = "Rainer Maria Rilke"; Konkatenation von Strings mit dem Plus-Operator Beispiel: String name = "R. "+ "M. "+ "Rilke"; automatisches Umwandeln von anderen Datentypen zu String Beispiel: String z = "Nummer: "+ 51; explizites Umwandeln von anderen Datentypen zu String Beispiel: String s = "Nummer: "+ tostring(51); aus einem Array von Werten des Typs char Beispiel: char[] triplet = { c, a, t }; String codon = new String(triplet); Strings kopieren String s1 = "cat"; Falsch: String s2 = s1; (kopiert nur die Referenz) Richtig: String s2 = new String(s1); Strings vergleichen Falsch: s2 == s1; (vergleicht Speicheradressen) Richtig: s1.equals(s2) oder s2.equals(s1)

String Methoden