Eine weitere Veranschaulichung ist, dass wenn eine Methode auf den ganzen Zahlen von 23 bis 42 funktioniert, sie nur durch eine Methode überschrieben
|
|
- Ursula Goldschmidt
- vor 6 Jahren
- Abrufe
Transkript
1 365
2 Eine weitere Veranschaulichung ist, dass wenn eine Methode auf den ganzen Zahlen von 23 bis 42 funktioniert, sie nur durch eine Methode überschrieben werden darf, die zumindest auch auf den Zahlen von 23 bis 42 funktioniert. Die überschreibende Methode darf aber auch für weitere Zahlen funktionieren. Wenn eine Methode Rückgabewerte aus dem Bereich 53 bis 69 liefert, darf eine überschreibende Methode auch nur höchstens Ergebnisse aus diesem Zahlenbereich liefern, auch weniger Werte sind erlaubt. Diese Regel kann formal nicht überprüft werden, ist aber durch Entwickler konsequent einzuhalten. 366
3 367
4 Dies ist ein kleines akademisches Beispiel, um die Auswertung bei Vererbung mit überschriebenen Methoden und Nutzung von dynamischer Polymorphie zu verdeutlichen. Natürlich sind alle Klassen OO-untypisch, da sie keine Objektvariablen enthalten. Weiterhin macht es wenig Sinn, Vererbung einzusetzen, wenn fast alle Methoden überschrieben werden. 368
5 369
6 Am Rande sollte man sich fragen, was passieren würde, wenn man das Überschreiben von meth2 in C weglassen würde. Es würde keine Änderung geben, da automatisch in der beerbten Klasse nach der Methode meth2 gesucht würde. 370
7 Auf der linken Seite sind die wesentlichen Informationen zu den Methoden zusammengefasst, auf der rechten Seite steht eine Methode zur Analyse des Verhaltens. Für ein Objekt der Klasse A ist das Verhalten direkt ohne Besonderheiten. Innerhalb der Methode meth2 wird die Methode meth3 aufgerufen. 371
8 Zunächst ist zu beachten, dass das neue Objekt der Klasse B an eine Variable vom Typ A zugewiesen wird, was machbar ist, da B die Klasse A beerbt. Interessant ist der Aufruf von meth2, wobei die Suche nach der Implementierung in der Klasse B beginnt. Da es in B keine Methode meth2 gibt, wird in der beerbten Klasse A gesucht und die Methode gefunden. Dabei wird meth3 aufgerufen, wobei wieder die Suche nach der Implementierung in B beginnt. Man wird direkt fündig und es wird "B3" ausgegeben. 372
9 Zunächst ist zu Beachten, dass das neue Objekt der Klasse C an eine Variable vom Typ C zugewiesen wird, was machbar ist, da C die Klasse B und diese die Klasse A beerbt. Interessant ist der Aufruf von meth2, wobei die Suche nach der Implementierung in der Klasse C beginnt und gefunden wird. Es wird die Methode meth2 der beerbten Klasse B aufgerufen. Da es in B keine Methode meth2 gibt, wird in der beerbten Klasse A gesucht und die Methode gefunden. Dabei wird meth3 aufgerufen, wobei die Suche nach der Implementierung wieder in C beginnt. Man wird direkt fündig und es wird "C3" ausgegeben. 373
10 Grundsätzlich wird bei der Ausführung von objektorientierten Programmen für jedes Objekt vermerkt, aus welcher Klasse es erzeugt wurde. Das Objekt kann dann Variablen von Typ dieser zur Erzeugung genutzten Klasse und Variablen aller von diese Klasse beerbten Klassen zugewiesen werden. Beim Methodenaufruf spielt die zur Erzeugung genutzte Klasse eine entscheidende Rolle, da immer in dieser Klasse zuerst nach der Methode gesucht wird, Nur falls die Methode nicht gefunden wird, wird schrittweise in den direkt beerbten Klassen gesucht. Dieser Ansatz gilt für jeden Methodenaufruf; es wird zur Laufzeit entschieden, welche Methode genutzt werden soll. 374
11 Wird super.methode() aufgerufen, wird grundsätzlich in der beerbten Klasse der gerade betrachteten Klasse gesucht. Dies bedeutet z. B., wenn in einer Methode m() in C ein Aufruf super.n() steht, wird die Methode n() in B gesucht, Steht dann im n() der Aufruf einer Methode super.p(), wird diese Methode in A gesucht. Sollte in n() in B ein Aufruf p() stehen, würde nach der vorher vorgestellten Regel in C gesucht. 375
12 Spätestens bei diesem Beispiel kann die Frage aufkommen, ob man durch dynamische Polymorphie zu einer Endloskette von Methodenaufrufen kommen kann. Dies ist durch einige Varianten möglich. Ein Beispiel wäre eine Methode m() in C, die super.n() aufruft und eine Methode n() in B, die m() aufruft. Bei einem Aufruf m() für ein Objekt vom Typ C wird dann die Methode n() vom B ausgeführt, was unmittelbar zu einem Aufruf m() von C führt. 376
13 377
14 Für Objekte der Klasse Student ist der Aufruf von gruss() nicht machbar, da die Klasse keine Objektmethode für das Objekt anbietet. Wird eine Variable von einem bestimmten Typen deklariert, sind auch nur die Methoden nutzbar, die für den genutzten Typen vorhanden sind. Auch wenn ein Objekt einer erbenden Klasse genutzt wird, kann damit nicht auf die neu in der erbenden Klasse ergänzten Methoden zugegriffen werden. 378
15 379
16 380
17 381
18 382
19 383
20 Der Begriff des Frameworks soll hier nicht weiter erläutert werden; er spielt aber in der späteren Programmierausbildung eine wichtige Rolle. Es sei nur angedeutet, dass diese Frameworks mit Objekten von Klassen umgehen können, die bei der Erstellung des Frameworks nicht bekannt waren; hier kann die Nutzung von instanceof sehr wichtig werden. Anmerkung: Programmierabgaben von Anfängern werden gerne nach "instanceof" durchsucht, um ggfls. für schlechten Programmierstil die Note herunterzusetzen. 384
21 385
22 Tritt "instanceof" nur sehr selten in der Studentenverwaltung auf, wäre der schwächere Ansatz dann akzeptabel, wenn bekannt ist, dass keine Erweiterungen des Programms um neue Studentenarten geplant sind. Wenn man diesen Trick sehr häufig anwenden muss, stellt sich wieder die Frage, ob man die richtigen Typen von Variablen nutzt bzw. ob wirklich eine Vererbung genutzt werden soll. Alternativ sollte man über getrennte Klassen nachdenken, die z. B. Objektvariablen eines gleichen Typen haben. 386
23 387
24 388
25 389
26 390
27 391
28 392
29 393
30 Die Klasse EinUndAusgabe wird hier nur benutzt, um eine Methode zur Erstellung von Zufallszahlen nutzen zu können. Hier würde man später mit mehr Programmiererfahrung sicherlich andere Lösungen bevorzugen. Beim Angriff wird sichergestellt, dass, sofern die Stärke und Geschick mindestens den Wert zwei (genauer reicht 1) haben, auch ein positiver Wert zurückgeliefert wird. Durch die Multiplikation können bei starken und geschickten Kämpfern recht hohe Angriffswerte das Ergebnis sein. Bei der Verteidigung wird ein reiner Zufall für den realen Schaden genutzt; hier kann später noch Kreativität und Programmiergeschick zur Erweiterung genutzt werden. Der resultierende Schaden wird zurückgegeben, damit er anderweitig, z. B. zur Anzeige auf dem Bildschirm, genutzt werden kann. 394
31 Kritisch kann man feststellen, dass die sehr große Aktion unten sicherlich gut in mehrere Teilschritte aufgeteilt werden kann. 395
32 Im konkreten Fall kann der Nutzer 30 Punkte auf Kraft und Geschick verteilen, wobei bei ganzzahligen Werte positiv sein müssen. Wenn später die Programmierkünste abgerundet werden, wird man überlegen, das Zahlenwerte, wie 30 und 500 nicht tief im Code der Methode versteckt sein sollen, sondern dass Sie am Anfang einer Klasse in Variablen definiert werden. Dieser Ansatz macht Programme wesentlich wartbarer. 396
33 Ein Kampf findet solange statt, bis der Gesundheitswert eines Kämpfers nicht mehr positiv ist. Die Kämpfer Schlagen sich abwechselnd, wobei der zwei nur schlägt, wenn er den ersten Schlag überstanden hat. 397
34 Die Umsetzung von k1 haut k2 geschieht dadurch, dass zuerst der Angriffswert von k1 berechnet wird (k1.angreifen()) und dieser dann k2 zur Abwehr übergeben wird. 398
35 399
36 400
37 401
38 Eine abstrakte Klasse kann damit als eine Art Klassenschablone angesehen werden. Alle (erbenden) Nutzer der Schablone werden verpflichtet bestimmte Methoden zu realisieren, damit sie gemeinsam nutzbar werden. 402
39 Im konkreten Beispiel werden alle Kämpfer verpflichtet die Methoden angreifen und einstecken in der geforderten Form zu realisieren. 403
40 Der Code aus der ersten Klassen Kaempfer ist einfach in diese Klasse hineingewandert. 404
41 405
42 406
43 407
44 408
45 Bei der Nutzung von abstrakten Klassen hat es sich gezeigt, dass man oft nur daran interessiert ist, dass bestimmte Methoden realisiert werden, weitere Details kann man vollständig der erbenden Klasse überlassen. Um die Bedeutung völlig abstrakter Klassen zu betonen, hat man dafür in Java (auch C#) den Begriff Interface einführt. In anderen Sprachen wie C++ ist das Konzept aber genauso nutzbar, man muss nur einhalten, dass es ausschließlich abstrakte Methoden in der Klasse geben soll. 409
46 Durch das Schlüsselwort interface wird deutlich, dass es sich um eine abstrakte Klasse handelt. Das Schlüsselwort abstract kann bei den Methoden hingeschrieben werden, muss es aber nicht und ist hier unüblich. 410
47 411
48 412
49 Für jede Methode des Interfaces muss angegeben werden, wann sie eingesetzt werden kann (z. B. Wertebereiche für die Parameter), was sie genau machen soll und welche Ergebnisse unter welchen Randbedingungen möglich sind. Schaut man z. B. das Arena-Spiel an, kann man fordern, dass bei einem Angriff immer ein nicht negativer Wert, der maximal 250 ist, zurückgegeben wird. 413
50 Natürlich darf man Leerzeilen zur besseren Strukturierung einfügen. 414
51 415
52 416
53 Der obere Teil bei der Interface-Deklaration sieht recht leer aus. Dies kommt, da das Interface selbst nicht kommentiert wurde, was man zur Vervollständigung ergänzen sollte. Der Editor in BlueJ bietet rechts-oben die Möglichkeit zwischen "Source Code" und "Documentation" umzuschalten. 417
54 418
55 Man beachte wieder kritisch, dass in der vorgestellten Dokumentation Umlaute vorkommen. Dies sollte bei der plattformübergreifenden (Windows, Unix) Software-Entwicklung vermieden werden, da es zu Darstellungsfehlern kommen kann. Die Lösung ist die Nutzung der Umlautdarstellung in HTML. 419
56 Es gilt die einfache Aussage: Ein nichtdokumentiertes Programm ist ein nichtexistentes Programm. Die Dokumentation wird in den Praktikumsaufgaben teilweise (sinnvoll oder sträflich?) vernachlässigt, da die Programmentwicklung im Vordergrund steht. Später sind alle abgegebenen Programme immer zu dokumentieren. Ein sorgfäliger und lesbarer Dokumentationsstil muss selbst erarbeitet werden. 420
57 421
58 Man beachte, dass durch Mehrfachvererbung ein Netzwerk von beerbten Klassen entstehen kann, in dem Klassen durchaus mehrfach vorkommen können, was auch das intuitive Verständnis verringert. Generell gilt, dass zyklische Vererbungsabhängigkeiten immer verboten sind. Programmiersprachen wie C++ unterstützen Mehrfachvererbung, haben dafür keine Interfaces. Man kann also in C++ genauso wie in Java programmieren, da Interfaces ja nur vollständig abstrakte Klassen sind. Echte Mehrfachvererbung ist an einigen Stellen nützlich, muss aber mit Vorsicht betrachtet werden. Man kann ohne echte Mehrfachvererbung auskommen. Die Sprache C# unterstützt Mehrfachvererbung und Interfaces. 422
59 423
60 Man überlege sich, warum man kein Objekt dieser Klasse in einer Arena kämpfen lassen möchte. 424
61 425
62 426
Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife
303 Bei for-schleifen muss man nur immer bedenken, dass die letzte Anweisung immer erst nach der Ausführung der restlichen Anweisungen der Schleife durchgeführt wird. 304 305 for-schleifen sind in Aktivitätsdiagrammen
MehrInformatik II Übung 6 Gruppe 7
Informatik II Übung 6 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch DEBRIEFING Übung 5 2 U5A1-4 Im Prinzip alles richtig. Falls am Ende noch Zeit, dann Einsicht in die Best Of s 3 THEORIE Java Vererbung,
MehrBeispiel: Zwischen der Oberklasse und der abgeleiteten Klasse besteht eine ist ein Beziehung. Eine abgeleitete Klasse stellt eine Spezialisierung der
Vererbung Vererbung ist ein Konzept der objektorientierten Programmierung,, die es ermöglicht neue Klassen von bereits vorhandenen Klassen abzuleiten. In einer abgeleiteten Klasse (subclass) muss nur spezifiziert
MehrÜberschreiben von Methoden
Vergleich der DoME Realisierungen: Methode ausgeben Version 1 (ohne Vererbung): Anzeigen aller Informationen CD: A Swingin Affair (64 Min)* Frank Sinatra Titelanzahl: 16 Mein Lieblingsalbum von Sinatra
MehrAnwendungsentwicklung mit Java. Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie
Anwendungsentwicklung mit Java Grundlagen der OOP, Vererbung, Schnittstellen, Polymorphie Vererbung (1) 2 Problem: Objekte mit gleichen Attributen/Methoden, aber nicht völlig identisch, z.b., LKW, PKW,
MehrOOP und Angewandte Mathematik. Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik
Eine Einführung in die Anwendung objektorientierter Konzepte in der angewandten Mathematik WS 2011/12 Inhalt Test-Besprechung! Ziele verdeutlichen Große Bild von OOP Wiederholung: Einbettung als Technik
MehrEinführung in die Programmierung
Skript zur Vorlesung: Einführung in die Programmierung WiSe 2009 / 2010 Skript 2009 Christian Böhm, Peer Kröger, Arthur Zimek Prof. Dr. Christian Böhm Annahita Oswald Bianca Wackersreuther Ludwig-Maximilians-Universität
MehrJava Vererbung. Inhalt
Java Vererbung Inhalt 1 Zielsetzung... 2 1.1 Bewertung... 2 2 Grundlagen der Vererbung... 2 2.1 Super und Subklassen... 2 3 Überladen von Methoden... 4 3.1 Unterschiedliche Parameter... 4 3.2 Gleiche Parameter
MehrJavakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
MehrFaustregeln zu Zusicherungen
Faustregeln zu Zusicherungen Zusicherungen sollen stabil sein (vor allem an Wurzel der Typhierarchie) keine unnötigen Details festlegen explizit im Programm stehen unmissverständlich formuliert sein während
MehrProgrammierkurs C++ Abstrakte Klassen und Methoden
Programmierkurs C++ Abstrakte Klassen und Methoden Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer #2 Vererbungshierarchie Obst double
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
Mehr8 Baum in perfekter Komposition
8 Baum in perfekter Komposition Die Implementierung des Binärbaums im letzten Kapitel wird mithilfe des Entwurfsmusters Kompositum optimiert. Knoten und Abschluss Bei der einfach verketteten Liste wurde
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und
Mehr3 Objektorientierte Konzepte in Java
3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine
MehrRepetitorium Informatik (Java)
Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen
MehrDie Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014
Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?
MehrProgrammieren in Java
Programmieren in Java Einführung in die objektorientierte Programmierung Teil 2 2 Übersicht der heutigen Inhalte Vererbung Abstrakte Klassen Erweitern von Klassen Überladen von Methoden Überschreiben von
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrPräsentation Interfaces
Einführung in Java Präsentation Interfaces Nozar Delassaei Marvi Inhalt 1. Erinnerung Klasse Objekte Beispiel Klasse Abstrakte Klasse Beispiel Abstrakte Klasse Mehrfachvererbung-1 Mehrfachvererbung-2 2.
MehrKapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
MehrProgrammieren I. Kapitel 8. Vererbung
Programmieren I Kapitel 8. Vererbung Kapitel 8: Vererbung Ziel: Wesentliches objektorientiertes Konzept kennenlernen Subtypen Idee Probleme und Varianten Vererbung in Java dynamische Bindung abstrakte
MehrGrundzüge der Programmierung. Wiederverwendung VERERBUNG
Grundzüge der Programmierung Wiederverwendung VERERBUNG Inhalt dieser Einheit Syntax: Vererbung in Java Superklassen - Subklassen Konstruktorenaufruf in Subklassen super, abstract und final 2 Code-Reuse
MehrKlassen in Java. Grundlagen der Programmierung. Stephan Kleuker 68
Klassen in Java Stephan Kleuker 68 Klassen in Java (Syntax) (1/3) class Datum { int tag; int monat; int jahr; } Java hat Schlüsselworte (z. B. class), diese dürfen z. B. nicht als Variablennamen genutzt
Mehr5.6 Vererbung. Vererbung
5.6 Vererbung Klassen können zueinander in einer "ist ein"- Beziehung stehen Beispiel: Jeder PKW ist ein Kraftfahrzeug, jedes Kraftfahrzeug ist ein Transportmittel aber: auch jeder LKW ist ein Kraftfahrzeug
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrJava I Vorlesung 6 Referenz-Datentypen
Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:
MehrKapitel 6. Vererbung
1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben
MehrFunktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
MehrJava I Vorlesung Vererbung und Sichtbarkeit
Java I Vorlesung 4 Vererbung und Sichtbarkeit 17.5.2004 Vererbung Überladen, Überschreiben, Verstecken, Verschatten Zugriffskontrolle Statische Members Wiederholung: OOP Programme bestehen aus Klassen.
MehrKapitel 8. Programmierkurs. Methoden. 8.1 Methoden
Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 10: Mehr zur Vererbung und abstrakte Klassen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Mehr zur Vererbung Methoden vererben und überschreiben
MehrVorlesung Programmieren. Bisher: Klassen und Objekte. Was ist mit ähnlichen Klassen? Vererbung und Polymorphismus
Vorlesung Programmieren Vererbung und Polymorphismus Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Bisher: Klassen und Objekte Haupteigenschaften:
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrBrainfuck Interpreter für ZX81
Brainfuck Interpreter für ZX81 Sprache Befehle Die Programmiersprache Brainfuck hat wenige, einfache Regeln. Es gibt 8 Befehle + - > < [ ],. Jeder Befehl besteht aus einem einzelnen Zeichen. Es gibt keine
Mehr7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen
7. Schnittstellen Grundlagen zu Schnittstellen 7. Schnittstellen Eine Schnittstelle (Interface) ist eine Spezifikation eines Typs in Form eines Typnamens und einer Menge von Methoden, die keine Implementierungen
MehrVererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.
Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik II: Objektorientierte SW-Entwicklung,
MehrErsetzbarkeit und Verhalten
Ersetzbarkeit und Verhalten U ist Untertyp von T, wenn eine Instanz von U überall verwendbar ist, wo eine Instanz von T erwartet wird Struktur der Typen für Ersetzbarkeit nicht ausreichend Beispiel: void
MehrVom Testkonzept zu JUnit
Testen und Testkonzept Dipl.-Inf. (FH) Christopher Olbertz 2. Dezember 2014 Testen und Testkonzept Warum testen? Wichtig, obwohl bei Programmierern unbeliebt Stellt weitgehend korrekte Funktionsweise eines
Mehr4 Vererbung, Polymorphie
4 Vererbung, Polymorphie Jörn Loviscach Versionsstand: 21. März 2014, 22:57 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work
Mehr7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
MehrJAVA-Datentypen und deren Wertebereich
Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).
MehrInhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte
Grundkonzepte Objektorientierter Programmierung Nicole Himmerlich FSU Jena mit Java, Oberon-2, Object-Pascal und Python Inhaltsüberblick I. Grundbegriffe 1) Kopplung 2) Datenkaspelung 3) Konstruktor 4)
MehrCode wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015
Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum
MehrUniversität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich
Universität Stuttgart Institut für Automatisierungstechnik und Softwaresysteme Prof. Dr.-Ing. M. Weyrich WS 02/03 Warum muss ein Objekt wissen, zu welcher Klasse es gehört? Damit die Klassenzugehörigkeit
MehrGrundlagen Programmierung
1. Aufgabe (Spielen mit Objekten) Gegeben sei der auch von der Veranstaltungsseite erhältliche Programmcode auf der rechten Seite, der im Detail zuerst nicht verstanden werden muss. a) Erzeugen Sie sich
MehrVererbung. Was versteht man unter dem Begriff Vererbung?
Was versteht man unter dem Begriff Vererbung? Elternkonstrukt - Datenelemente - Methoden o Deklaration o Definition Kindkonstrukt... Main... Elternkonstrukt b = new Kindkonstrukt() b.fn() Komponenten &
Mehr3D Programmierpraktikum: Einführung in C++ - Teil 2
3D Programmierpraktikum: Einführung in C++ - Teil 2 Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 4. Mai 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum
MehrEinführung in die Programmierung 1
Einführung in die Programmierung 1 Einführung (S.2) Einrichten von Eclipse (S.4) Mein Erstes Programm (S.5) Hallo Welt!? Programm Der Mensch (S.11) Klassen (S.12) Einführung Wie Funktioniert Code? Geschriebener
MehrEinstieg in die Informatik mit Java
1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern
MehrJava lernen mit BlueJ
Java lernen mit BlueJ Eine Einführung in die objektorientierte Programmierung David J. Barnes Michael Kölling 4.0 Lernen in Eigenregiegi Vorlesungen Seminare Übungen Bücher Webseiten Diskussionslisten
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden
MehrObjektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ
Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die
MehrPIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2008/2009 FB Informatik
MehrModul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 4
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 4 SS 2016
MehrVIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden
VIII: Vererbung Unterklassen einer Klasse Vererbung von Methoden und Instanzvariablen Überschreiben von Methoden Vererbung als Realisierung einer is-a Beziehung. Informatik I VIII: Vererbung 259 Beispiel:
MehrTeil 2: OOP und JAVA (Vorlesung 11)
Teil 2: OOP und JAVA (Vorlesung 11) Modul: Programmierung B-PRG Grundlagen der Programmierung II Prof. Dot.-Ing. Roberto Zicari Professur für Datenbanken und Informationssysteme (FB 12) 28.06.06 1 Teil
Mehr1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation des Quellcodes 4. Werte- und Referenzsemantik
Software-Technik: Vom Programmierer zur erfolgreichen Software-Technik: Vom Programmierer zur erfolgreichen 1. Von der Idee zur Software 2. Funktionen und Datenstrukturen Lehrbuch: 4.3 3. Organisation
MehrInformatik II (D-ITET) Übungsstunde 6
Informatik II (D-ITET) Übungsstunde 6 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übung 5 Besprechung der Vorlesung Die neue Serie... Zeit zum Programmieren / für
MehrProjektdokumentation
Projektdokumentation Schachspiel mit JavaScript Daniel Mockenhaupt Klasse 10b Projektdokumentation: Schachspiel mit JavaScript Seite 1 Einführung Ziel dieser Projektarbeit soll die Erstellung eines Schachspiels
MehrVererbung & Schnittstellen in C#
Vererbung & Schnittstellen in C# Inhaltsübersicht - Vorüberlegung - Vererbung - Schnittstellenklassen - Zusammenfassung 1 Vorüberlegung Wozu benötigt man Vererbung überhaubt? 1.Um Zeit zu sparen! Verwendung
MehrJava Kurs für Anfänger Einheit 5 Methoden
Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden
MehrAllgemeine Informatik II SS :30-13:30 Uhr
TU Darmstadt FB Informatik Prof. J. Fürnkranz Vordiplomsklausur - Lösungsvorschlag Allgemeine Informatik II SS 2005 15.09.2005 11:30-13:30 Uhr Hinweise: Als Hilfsmittel ist nur ein schwarzer oder blauer
MehrJava Einführung Methoden in Klassen
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
MehrEinführung in die Programmierung mit VBA
Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Übungsblatt Nr. 10 Aufgabe 20: Code Verständnis Löse diese Aufgabe selbständig als Vorbereitung zur Übung auf dem Papier. a) Gib
MehrFunktionen in PHP 1/7
Funktionen in PHP 1/7 Vordefinierte Funktionen in PHP oder vom Entwickler geschriebene Funktionen bringen folgende Vorteile: gleiche Vorgänge müssen nur einmal beschrieben und können beliebig oft ausgeführt
MehrInstitut für Programmierung und Reaktive Systeme 24. Juni Programmieren II. 14. Übungsblatt
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 2. Juni 2016 Programmieren II 1. Übungsblatt Hinweis: Auf diesem Übungsblatt finden Sie die fünfte,
MehrInterfaces und Vererbung
Interfaces und Vererbung Einführung in Java Folie 1 von 31 12. Mai 2011 Ivo Kronenberg Inhalt Interfaces Statische und dynamische Typen Visiblitätsmodifier Vererbung Überschreiben von Methoden Konstruktoren
MehrFachhochschule Wiesbaden - Fachbereich DCSM. Skriptsprachen. Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby
Fachhochschule Wiesbaden - Fachbereich DCSM Skriptsprachen Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby 16.10.2008 2003, 2008 H. Werntges, FB Design Informatik Medien (DCSM), FH Wiesbaden
MehrObjektorientierte Modellierung (1)
Objektorientierte Modellierung (1) Die objektorientierte Modellierung verwendet: Klassen und deren Objekte Beziehungen zwischen Objekten bzw. Klassen Klassen und Objekte Definition Klasse Eine Klasse ist
MehrBedienung von BlueJ. Klassenanzeige
Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument
MehrProbeklausur: Programmierung WS04/05
Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,
MehrGetName(), GetName(), GetGeschlecht() und AelterWerden().
11. Vererbung Vererbung ist eine der mächtigsten Funktionalitäten der objektorientierten Programmiersprachen. Man versteht unter Vererbung die Tatsache, dass eine Klasse alle Methoden und Variablen einer
Mehr13. Tutorium zu Programmieren
13. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2009 by IPD Snelting
MehrObjektorientierte Programmierung OOP Programmieren mit Java
Objektorientierte Programmierung OOP Programmieren mit Java 5.1 Elementare Anweisungen 5.1.1 Ausdrucksanweisung 5.1.2 Leere Anweisung 5.1.3 Blockanweisung 5.1.4 Variablendeklaration 5.2 Bedingungen 5.2.1
Mehr2.4.3 Polymorphie (Wiederholung von Alp2)
2.4.3 Polymorphie (Wiederholung von Alp2) Sparbuch einsparbuch = new Sparbuch(3.0); Konto einkonto; KontoDrucker = new KontoDrucker(); KontoDrucker.setzeKonto(einSparbuch); einkonto = einsparbuch; Wie
Mehr1 Polymorphie (Vielgestaltigkeit)
1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen
Mehr= 7 (In Binärdarstellung: = 0111; Unterlauf) = -8 (In Binärdarstellung: = 1000; Überlauf)
Musterlösung Übung 2 Aufgabe 1: Große Zahlen Das Ergebnis ist nicht immer richtig. Die Maschine erzeugt bei Zahlen, die zu groß sind um sie darstellen zu können einen Über- bzw. einen Unterlauf. Beispiele
MehrAbbildung des Aufruf-Interaktionsstils von.net in den kanonischen Interaktionsstil auf Basis von Ereignissen und umgekehrt
- 1 - Abbildung des Aufruf-Interaktionsstils von.net in den kanonischen Interaktionsstil auf Basis von Ereignissen und umgekehrt Memo 5.1 BTS 1. Einleitung Das Einbinden von n in Umgebungen, die einen
MehrMusterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9
Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung
Mehr10. Datenbank Design 1
1 Die Hauptaufgabe einer Datenbank besteht darin, Daten so lange zu speichern bis diese explizit überschrieben oder gelöscht werden. Also auch über das Ende (ev. sogar der Lebenszeit) einer Applikation
MehrObjektorientierung II
9Lehrstuhl für Bioinformatik Einführung in die Programmierung für Bioinformatiker Prof. B. Rost, Dr. L. Richter Blatt 09 19.12.2016 Objektorientierung II Aufgabe 9.1. Modellierung - Geometrische Figuren
MehrMakro + VBA 2007 effektiv
Daten Makro + VBA 2007 effektiv 5 DATEN 5.1 Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten, siehe Seite 84, jederzeit im Programm verändert werden. Als Variablen können
MehrSmalltalk. Gespräche über alltägliche, allgemeine und unwichtige Dinge. Smalltalk ist die Kunst zu reden, ohne zu denken.
Gespräche über alltägliche, allgemeine und unwichtige Dinge. Wikipedia Smalltalk ist die Kunst zu reden, ohne zu denken. Andreas Tenzer, Dozent für Philosophie Inhalt: Vorwort Geschichte Eigenschaften
Mehreinkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung
PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();
MehrFH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces
10 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Wiederholung: Interfaces Aber: Mehrfachvererbung von Klassen ist in Java nicht erlaubt. Ausweg Definition eines Interfaces, z.b.:
MehrLetztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);
Letztes Mal static int ggt(int a, int b) { if (a == b) return a; else if (a > b) } return ggt(a-b,b); else if (a < b) return ggt(a,b-a); Darf hier nicht stehen! Compiler sagt: Missing return statement
Mehr13 OOP MIT DELPHI. Records und Klassen Ein Vergleich
13 OOP MIT DELPHI Delphi war früher "Object Pascal". Dieser Name impliziert eine Funktionalität, welche in der Welt der Programmierung nicht mehr wegzudenken ist: die objektorientierte Programmierung,
MehrAlgorithmen und Datenstrukturen 07
5. Dezember 2011 1 Besprechung Blatt 6 Fragen 2 Vererbung Allgemein abstract Interfaces 3 Unified Modeling Language (UML) Ablaufdiagramme Klassendiagramme Anwendungsfalldiagramme 4 Vorbereitung Blatt 7
MehrInformationsverarbeitung im Bauwesen
1/21 Informationsverarbeitung im Bauwesen Einführung in das Programmieren mit C++ Markus Uhlmann Institut für Hydromechanik Karlsruher Institut für Technologie www.ifh.kit.edu WS 2010/2011 Vorlesung 8
MehrJavaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden
Javaprogrammierung mit NetBeans Variablen, Datentypen, Methoden Programmieren 2 Java Bezeichner Bezeichner: Buchstabe _ $ Buchstabe _ $ Ziffer Groß- und Kleinbuchstaben werden strikt unterschieden. Schlüsselwörter
MehrKlassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrJavakurs für Anfänger
Javakurs für Anfänger Einheit 09: Vererbung Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil Einführung in die Vererbung Motivation Das Schlüsselwort extends Einführendes
MehrJava Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)
Good code is its own best documentation. (Steve McConnell) Java Cheatsheet Java Grundlagen Aufbau einer Klasse Name der Klasse public class MeineKlasse { Textdatei MeineKlasse.java (muss dem Namen der
MehrObjektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
MehrKapitel 5 Zustand eines Objekts
Kapitel 5 Zustand eines Objekts Seite 1 / 6 Kapitel 5 Zustand eines Objekts Lernziel: Bedingte Anweisung in Java Objektzustand 5.1 Unverwundbar soll sichtbar sein Die Methode VerwundbarSetzen sorgt dafür,
Mehr