Übersicht. Informatik 2 Teil 1 Objektorientiertes Programmieren und Grundlagen von Java

Größe: px
Ab Seite anzeigen:

Download "Übersicht. Informatik 2 Teil 1 Objektorientiertes Programmieren und Grundlagen von Java"

Transkript

1 Übersicht 1.1 Warum objektorientierte Programmierung (OOP) 1.2 OOP-Grundlagen 1.3 Die Programmiersprache Java 1.4 Die Plattformunabhängigkeit von Java 1.5 Vergleich von Java und C 1.6 Primitive Datentypen 1.7 Syntax von Klassen 1.8 Methoden 1.9 Erzeugen von Objekten 1.10 Zugriff auf Objekteigenschaften 1.11 Der Konstruktor 1.12 Kapselung 1.13 Kapselung Beispiel-Schema 1.14 abgeleitete Klassen (Kindklassen), Vererbung 1.15 Kindklassen Überschreiben von Methoden 1.16 Die Methode main(), Klasseneigenschaften und - methoden 1.17 Die Standard-Ausgabe 1.18 Beispiel eines Java-Programms I 1.19 Beispiel eines Java-Programms II 1.20 Logikoperatoren und der Typ boolean 1.21 Pseudokonstanten, Schlüsselwort final 1.22 Packages verwenden 1.23 Packages erstellen 1.24 Bemerkungen zur Wortwahl Prof. Martin Trauth Folie 1 / 25

2 1.1 Warum objektorientierte Programmierung (OOP)? Im täglichen Leben gehen nur die wenigstens Menschen mit Elementen datenverarbeitender Systeme, wie Variablen oder Funktionen um, die ein Merkmal so genannter imperativer Programmiersprachen (wie C) sind. Statt dessen haben wir es mit Dingen zu tun man kann auch Objekte dazu sagen. Das können natürliche Dinge sein (z.b. Berge, Tiere), vom Menschen geschaffene (z.b. Maschinen, Gebäude) oder abstrakte Objekte, z.b. ein Bankkonto oder ein Fenster auf dem Bildschirm. OOP soll den datentechnischen Umgang mit diesen Dingen vereinfachen. Ein Ding hat Eigenschaften und Methoden. Nehmen wir einen Elefanten... Der Elefant hat beispielsweise die Eigenschaft Gewicht. Auch sein Standort ist eine seiner Eigenschaften. Oder die Anzahl seiner Beine (normalerweise 4, aber er könnte ja auch ein Invalide sein). Mit seinen Methoden kann er seine Eigenschaften verändern. Mit der Methode Fressen nimmt er an Gewicht zu. Mit Trinken auch. Er hat auch Methoden, die das Gewicht reduzieren, aber das lassen wir hier mal weg. Mit der Methode Gehen verändert er seinen Standort. Prof. Martin Trauth Folie 2 / 25

3 1.2 OOP - Grundlagen Auch bei der OOP verwendet man Objekteigenschaften und Objektmethoden. Sehr wichtig ist außerdem die Bauanleitung die jedes Objekt haben muss. Die meisten objektorientierten Programmiersprachen verwenden dafür den Begriff Klasse. Am Beispiel des Elefanten wäre die Klasse eine Bauanleitung für Elefanten. Die Klasse definiert welche Eigenschaften und Methoden alle Objekte haben, die zu dieser Klasse gehören. Im Falle von Elefanten definiert die Klasse also, dass ein Elefant eine Methode Fressen hat und dass er die Eigenschaft Gewicht besitzt. Wenn nun ein Objekt der Klasse Elefant erzeugt wird, dann haben wir die Repräsentation eines individuellen Elefanten, mit individuellem Gewicht und einer individuellen Methode Fressen (sie ist individuell, weil sie nur das Gewicht des Elefanten erhöht zu dem sie gehört). Es kann also beliebig viele Elefanten geben, aber sie folgen alle einem gemeinsamen Bauplan. Das gleiche gilt für Bankkonten: wenn man einmal eine Klasse definiert hat, die alle wesentlichen Eigenschaften und Methoden umfasst, die man zum Umgang mit einem Bankkonto benötigt, dann kann man sie verwenden um beliebig viele Bankkonten (als Objekte) zu erzeugen. Das Schöne ist: diese Klasse kann jede/r in einem Bankprogramm einsetzen und braucht sich nicht darum zu kümmern, wie sie im Detail programmiert ist (zur Definition einer Klasse mit Hilfe einer Programmiersprache muss man natürlich programmieren). Es genügt wenn man die Eigenschaften kennt (z.b. wäre der aktuelle Kontenstand eine Eigenschaft, eine andere ist der Zinssatz für Guthaben) und die verfügbaren Methoden. Ein Beispiel für eine Methode: Auszahlung. Vermindert die Eigenschaft Kontenstand um einen eingegebenen Betrag, eventuell wird auch noch der Kreditrahmen gecheckt und festgestellt, ob die Auszahlung überhaupt erfolgen darf. Prof. Martin Trauth Folie 3 / 25

4 1.3 Die Programmiersprache Java Java, eine von der Firma SUN maßgebend entwickelte und vertriebene Programmiersprache, ist erst seit 1996 auf dem Markt, also noch vergleichsweise jung. Ihr großer Markterfolg beruht sicher auf der Tatsache dass das Java Entwicklungssystem (JDK = Java Development Kit) kostenfrei vertrieben wurde, aber auch auf einer Reihe von Vorzügen dieser Programmiersprache: Weitgehende Unabhängigkeit von Hardwareplatform und Betriebssystem. Sehr konsequente Umsetzung des objektorientierten Programmierkonzepts, dennoch relativ einfach strukturierte Sprache Schutzmechanismen gegen Programmierfehler ( sicherer als C) Viele Programmkomponenten haben die gleiche Syntax wie die bekannte Programmiersprache C Gut geeignet für Web-Anwendungen, da von Beginn an dafür entwickelt Weitere OOP-Programmiersprachen: C++, C#, Visual Basic, Smalltalk, u.v.m. Fast alle neueren Programmiersprachen (auch grafische Programmierung) basieren auf OOP. Prof. Martin Trauth Folie 4 / 25

5 1.4 Die Plattformunabhängigkeit von Java Übliche Compiler-Sprachen, wie C, übersetzen den Quelltext in Maschinencode. Dieser Maschinencode ist natürlich nur auf einer bestimmten CPU lauffähig, d.h. er muss eigens dafür kompiliert werden. Außerdem sind die Gegebenheiten des Betriebssystems zu beachten, unter dem das Programm laufen soll. Java arbeitet mit einer so genannten Virtual Machine (VM). Das ist ein Programm, das eine CPU und (weitgehend) ein Betriebssystem simuliert. Natürlich ist die VM für ein bestimmtes Betriebssystem und eine bestimmte CPU compiliert. Aber wenn man sie einmal hat, dann kann man damit alle Java-Programme laufen lassen. Java-VMs werden von SUN für alle gängigen Betriebssysteme kostenfrei zu Verfügung gestellt. In vielen Fällen werden sie von Java-Anwendungen automatisch aus dem Internet heruntergeladen. Der Ablauf einer Java-Programmerstellung: Editor erstellt Programmtext (Endung.java) Compiler erzeugt ByteCode (Endung.class) Java-VM interpretiert Byte-Code (Ablauf auf CPU) Ein Linker wird für Java nicht benötigt. Prof. Martin Trauth Folie 5 / 25

6 1.5 Vergleich von Java und C Identisch bzw sehr ähnlich sind: Variablendeklaration (aber einige Datentypen sind anders) Zuweisungen Kontrollanweisungen wie if...else, for-, while- und do while-schleifen (sowie break- und continue-anweisung) Funktionsaufrufe (wobei man in Java von Methoden spricht) Kommentarzeichen (// oder /* */) Einfache mathematische Operatoren (+, -, *, /, %) Verschiedenheiten: Typische OOP-Strukturen, z.b. Klassen (diese ähneln aber z.t. C++) Java verwendet keine expliziten Pointervariablen Handhabung von Datenfeldern und Zeichenketten ist anders Keine Präprozessordirektiven und Headerdateien bei Java Java verwendet packages als Programm sammlungen z.t. andere Datentypen (boolean) Keine Strukturen (nicht nötig, da mit Klassen gearbeitet wird) Prof. Martin Trauth Folie 6 / 25

7 1.6 Primitive Datentypen Die wichtigsten sog. primitiven (vordefinierten) Datentypen: char 2 Byte wird vor allem für Zeichen verwendet (Unicode-Codierung!) byte 1 Byte Ganzzahlen zwischen 128 und 127 int 4 Byte (immer!) Ganzzahl (auch negativ) long 8 Byte (immer!) Ganzzahl (auch negativ) mit größerem Wertebereich float 4 Byte Fließkommazahl double 8 Byte präzise Fließkommazahl boolean 1 Byte Datentyp für logische Werte (kann nur die Werte true oder false haben) Unterschiede zu C: Es gibt keine Modifikatoren, mit denen man Ganzzahltypen auf den positiven Wertebereich beschränken kann. In Java kann man stets auch negative Zahlen in long- oder int-variablen speichern. Sehr wesentlich ist der Typ boolean: Diesen Typ haben in Java alle Logikausdrücke, denn ihr Ergebnis kann immer nur true (wahr) oder false (falsch) sein. Auch Variable (des Typs boolean) können diese Werte annehmen. Wo Logikausdrücke verwendet werden (z.b. in if-anweisungen) können daher in Java keine Ganzzahl-Werte eingesetzt werden. Unicode ist ein Code für Zeichen. Statt 128 Zeichen, wie mit ASCII- und ANSI-Codierung können in Unicode Zeichen dargestellt werden. Die ersten 64 Zeichen entsprechen aber der ASCII-Tabelle. Prof. Martin Trauth Folie 7 / 25

8 1.7 Syntax von Klassen Klassen sind die grundlegenden Strukturen des Programmierens in Java (und auch anderen OOP-Sprachen). Ihr grundsätzlicher Aufbau wird an einem Beispiel erläutert. Die Klasse heißt Auto. public class Auto { public String name; public int leistung; public int lebensalter; Die Grundstruktur der Klasse ähnelt sehr einer Strukturdefinition. Tatsächlich gibt es viele Gemeinsamkeiten zu Strukturen, aber Klassen können neben Variablen auch noch Methoden enthalten. Einige Hinweise zur üblichen Schreibweise: Klassennamen werden groß geschrieben (hier: Auto), während Variablennamen (Eigenschaftsnamen) klein geschrieben werden. String ist ebenfalls eine Klasse (kein integraler Datentyp), die Zeichenketten-Objekte generieren kann (siehe nachfolgendes Kapitel). Die sonstige Schreibweise von Namen ist im Wesentlichen wie bei C. Die Variablen name, leistung und lebensalter sind die Klasseneigenschaften und werden beim Erzeugen von Objekten zu Objekteigenschaften. Das Schlüsselwort public definiert den Zugriffsmodus: fremde Objekte können auf die Eigenschaften eines Objekts der Klasse Auto zugreifen (d.h. sie lesen und verändern). Prof. Martin Trauth Folie 8 / 25

9 1.8 Methoden Die Klasse Auto enthält bisher nur Eigenschaften. Es können auch Methoden definiert werden. Als Beispiel wird eine Methode tuneup() gezeigt, welche die Leistung erhöht (mit Parameter), sowie eine Methode getleistung(), welche die Leistung als Rückgabewert hat (Parameter- und Rückgabewerte werden wie in C gehandhabt). public class Auto { public String name; public int leistung; public int lebensalter; pow ist Parameter der Methode tuneup. Es ist keine Eigenschaft des aus der Klasse Auto abgeleiteten Objekts. public void tuneup(int pow) { this.leistung = this.leistung + pow; public int get_leistung() { return this.leistung; Das Schlüsselwort this in this.leistung bedeutet, dass die Eigenschaft leistung zum gleichen Objekt gehört wie die Methode tuneup(). Man kann es auch weglassen, aber es macht größere Programme übersichtlicher. getleistung() hat einen Rückgabewert, aber keinen Parameter. Man kann natürlich auch Methoden programmieren die sowohl Rückgabewert als auch (einen oder mehrere) Parameter besitzen. Prof. Martin Trauth Folie 9 / 25

10 1.9 Erzeugung von Objekten Ein Objekt der Klasse Auto könnte z.b. ein ganz bestimmtes Auto sein. Nennen wir das zu erzeugende Objekt daher autost328. Auto autost328; Diese Zeile deklariert autost328 als Referenz auf die Klasse Auto. Mit anderen Worten: autost328 ist ein Auto. Aber es ist noch kein bestimmtes Auto erzeugt worden. Es gibt noch kein Objekt. autost328 = new Auto(); Nun wird das Objekt autost328 erzeugt. Das geschieht mit den Schlüsselwort new. Die Klammern hinter Auto weisen auf eine Methode hin. Tatsächlich wird eine spezielle Methode ausgeführt: der Konstruktor (siehe 1.11). Man kann die beiden Zeilen in einer einzigen kombinieren: Auto autost328 = new Auto(); So schnell kommt man zu einem neuen Auto leider nur zu einem ziemlich virtuellen. Wichtig: erst wenn ein Objekt erzeugt ist, kann man auf dessen Eigenschaften und Methoden zugreifen (und auch das evtl nur wenn sie als public deklariert wurden). Es gibt auch so genannte (als static deklarierte) Klassenmethoden und Klasseneigenschaften, die ohne Erzeugung eines Objekts verwendet werden können (s. nachfolgendes Kapitel). Prof. Martin Trauth Folie 10 / 25

11 1.10 Zugriff auf Objekteigenschaften Will man nun auf die Objekteigenschaften zugreifen (lesen oder schreiben), dann wird dazu eine ähnliche Syntax wie bei Strukturen in C verwendet: ein Punktoperator zwischen Objektname und Eigenschaftsname. So wird z.b. die Eigenschaft lebensalter auf einen Wert gesetzt: autost328.lebensalter = 5; Und so wird sie gelesen: alter = autost328.lebensalter ; Diese Syntax gilt für Zugriff von anderen Objekten aus. Falls eine Methode auf eine Eigenschaft des gleichen Objekts zugreifen möchte kann man den reinen Eigenschaftsnamen nehmen (es sei denn es existiert eine Methodenvariable gleichen Namens) oder this. vor den Namen setzen (siehe auch 1.11). Prof. Martin Trauth Folie 11 / 25

12 1.11 Der Konstruktor Eine sehr wichtige Methode ist der Konstruktor. Er wird immer bei der Erzeugung eines neuen Objekts aufgerufen und trägt den Namen der Klasse (daran kann man ihn im Programmtext erkennen). Seine Parameter werden beim Erzeugen eines Objekts übergeben. Falls kein Konstruktor definiert ist, setzt Java bei der Objekterzeugung einen Standard- Konstruktor ein (der keine Parameter hat!). Bei unserer Auto-Klasse wäre es z.b. vorteilhaft, wenn die Objekteigenschaft Leistung bereits bei der Erzeugung des Objekts einen Wert bekommt. Das tut dieser Konstruktor: public Auto(int leistung) { this.leistung = leistung; Hinweis: der Parameter leistung hat nichts mit der Objekteigenschaft leistung zu tun. Durch this.leistung wird ganz klar auf die Objekteigenschaft leistung zugegriffen. Hier besteht also eine Notwendigkeit das Schlüsselwort this zu verwenden. Natürlich nur dann wenn, wie in unserem Beispiel, der gleiche Name für die Objekteigenschaft wie für den Parameter verwendet wurde. Bei Namensgleichheit und ohne Verwendung von this. überdecken die Namen von Methoden-Variablen (dazu zählen auch die Parameter) die Namen der Objekteigenschaften. Die Erzeugung eines Objekts sieht dann so aus: Auto meinauto = new Auto(100); Das so generierte Objekt meinauto der Klasse Auto hat nun den Wert 100 (kw) für die Eigenschaft leistung. Prof. Martin Trauth Folie 12 / 25

13 1.12 Kapselung In der Klasse Auto wurde eine Methode get_leistung() definiert, mit der man die Eigenschaft leistung auslesen kann. Man könnte sich fragen wozu, denn mit einem Zugriff per Punktoperator (siehe 1.10) kann die Eigenschaft doch gelesen werden. Das ist aber nur der Fall, weil die Eigenschaft durch den Modifikator public für Zugriffe fremder Objekte freigegeben ist. Das ist jedoch schlechter OOP-Stil und wurde hier nur zu Demonstrationszwecken verwendet. Eigentlich sollten Eigenschaften durch den Modifikator private nur für Zugriff des eigenen Objekts freigegeben sein. Wollen externe Objekte zugreifen, dann müssen sie das per Objektmethode tun. Diese ist dann natürlich public. Das hat den Vorteil, dass man den Zugriff auf Objekteigenschaften kontrollieren kann. Mit get_leistung kann man z.b. den Leistungswert nur lesen, nicht verändern. Die Objekteigenschaften sind gekapselt: OOP-Prinzip der Kapselung. Zugriffs-Modifikatoren für Eigenschaften und Methoden: Standard (kein Modifikator angegeben) Zugriff durch Objekte oder Klassen im gleichen package * private Zugriff nur vom gleichen Objekt bzw. der gleichen Klasse protected Zugriff durch Objekte und Klasse der gleichen oder einer abgeleiteten Klasse (s. 1.14), oder aus dem gleichen package * heraus. public Zugriff durch alle Objekte oder Klassen * package: Ordnungsstruktur in Java, wird später erläutert Prof. Martin Trauth Folie 13 / 25

14 1.13 Kapselung Beispiel-Schema Objekt der Klasse Auto private: Eigenschaft leistung Zugriff public: Methode get_leistung() Aufruf Rückgabewert anderes Objekt Aufruf: get_leistung() Prof. Martin Trauth Folie 14 / 25

15 1.14 abgeleitete Klassen (Kindklassen), Vererbung Am eingangs erwähnten Beispiel eines Objekts aus der Natur, dem Elefanten, kann man gut ein wichtiges Verfahren der OOP erläutern: die Vererbung. Nehmen wir an, es gäbe bereits eine Klasse Tier mit dazu passenden Methoden und Eigenschaften. Dann müßte man für die Klasse Elefant nicht alles neu erfinden. Der Elefant ist ja zweifellos ein Tier, also sind alle in der Tier-Klasse definierten Eigenschaften (z.b. Gewicht) und Methoden (z.b. Fressen) auch auf ihn anwendbar. Aber der Elefant hat eventuell zusätzliche Eigenschaften, z.b. eine Rüssellänge. Oder zusätzliche Methoden, z.b. das Trompeten. Umgesetzt auf OOP und Java kann man abgeleitete Klassen bilden (Kindklassen), welche die Eigenschaften und Methoden ihrer Superklasse (Elternklasse) erben. Das ist das wichtige OOP-Prinzip der Vererbung. Zusätzlich können Sie in Kindklassen weitere Eigenschaften und/oder Methoden definieren. Das geschieht durch Verwendung des Schlüsselworts extends (erweitert), woraus bereits hervorgeht, dass eine Kindklasse eine Erweiterung bzw. Spezialisierung der Elternklasse darstellt. Ein reines Kopieren wäre auch ziemlich sinnlos, denn aus einer Klasse lassen sich ohnehin beliebig viele Objekte erzeugen. Aus unserer Beispielklasse Auto lässt sich die Kindklasse Transporter ableiten. class Transporter extends Auto { private int maxzuladung; Es wurde die zusätzliche Eigenschaft maxzuladung definiert. Ebenso ist es möglich zusätzliche Methoden zu definieren. Hinweis: Konstruktoren werden nicht vererbt und müssen im Bedarfsfall neu definiert werden. Prof. Martin Trauth Folie 15 / 25

16 1.15 Kindklassen Überschreiben von Methoden Nicht nur neue Methoden kann man in einer Kindklasse definieren, sondern auch vorhandene überschreiben. Hinweis: das Überschreiben von Methoden ist etwas anderes als das Überladen, das später erklärt wird. Am Beispiel der Klasse Transporter: die Methode set_zuladung() wird hinzu gefügt, die ererbte Methode tuneup() überschrieben. class Transporter extends Auto { private int maxzuladung; public void set_zuladung(int gewicht) { this.maxzuladung = gewicht; public void tuneup(int pow) { if (pow > 1000) pow = 1000; // Limitierung auf 1000 kw this.leistung = pow; Der Programmtext der Elternklasse muss natürlich irgendwo im gesamten Programmcode enthalten sein (wenn sie nicht durch package-import geladen wird). Es spielt aber keine Rolle, ob ihr Programmtext vor oder hinter der Kindklasse steht. Das Überschreiben von Methoden ist ein sehr häufiges Verfahren wenn man fertige Klassen aus Klassenbibliotheken übernimmt. Man leitet eine Kindklasse ab und kann in dieser durch Überschreiben Änderungen vornehmen. Prof. Martin Trauth Folie 16 / 25

17 1.16 Die Methode main(), Klasseneigenschaften und Methoden Die bisherigen Beispiele starten unter normalen Betriebssystemen nicht. Dazu wird, wie in C, eine Hauptfunktion main() benötigt. In Java wird Methode statt Funktion gesagt. Java verlangt die komplette Parameterliste für main(). Leere Klammern werden von vielen Compilern als Fehler bewertet, auch wenn man die Kommandozeilen-Parameter selten benötigt. Ein einfaches Beispiel für main(): class MeinTest1 { public static void main(string[] args) { System.out.println("Berechne 7 * 2:" + 7 * 2); Siehe 1.17 In Java baut alles auf Klassen auf. Also befindet sich auch die Methode main() in einer Klasse, der man normalerweise den Namen des Programms gibt. Man fügt dann weitere Klassen an, mit denen man die gewünschten Objekte erzeugen kann. Die Methode main() ist aber keine Objektmethode, da sie mit dem Modifikator static deklariert wurde. Sie ist eine so genannte Klassenmethode. Man kann sie mit der Syntax <Klassenname>.main() aufrufen (das tut aber in der Regel das Betriebssystem oder das Entwicklungssystem). Mit dem Modifikator static können auch Klasseneigenschaften deklariert werden. Klasseneigenschaften und methoden werden bei der Erzeugung von Objekten nicht zu Objekteigenschaften oder Objektmethoden. Würde man ein Objekt der Klasse MeinTest1 erzeugen, so hätte es weder Eigenschaften noch Methoden. Man verwendet Klasseneigenschaften und methoden, wenn man sie nur einmal benötigt und nicht in viele Objekte kopieren möchte. Prof. Martin Trauth Folie 17 / 25

18 1.17 Die Standard-Ausgabe Die Standard-Ausgabe-Methoden lauten System.out.println() und System.out.print(). System.out ist das Objekt dazu. Es ist ein automatisch (von der Java-VM) erzeugtes Objekt, deswegen auch die ungewöhnliche Syntax mit dem Klassennamen System im Objektnamen. println() gibt immer eine neue Zeile aus. print() fügt die Ausgabe dort an, wo die letzte Ausgabe endete. Als Parameter werden Zeichenketten und/oder Ausdrücke verwendet, die durch +Zeichen verbunden werden. Platzhalter für die Ausdrücke werden nicht benötigt. Alle aus C bekannten Steuerzeichen (z.b. \n) können verwendet werden. Die Ausgabe des Beispiels System.out.println("Berechne 7 * 2:" + 7 * 2); ist: Berechne 7 * 2: 14 Prof. Martin Trauth Folie 18 / 25

19 1.18 Beispiel eines Java-Programms I Für unser Beispiel benötigen wir die vollständige Beispiel-Klasse Auto. Sie ist daher hier aufgeführt: public class Auto { private String name; private int leistung; private int lebensalter; public Auto(int leistung) { this.leistung = leistung; public void tuneup(int pow) { this.leistung = this.leistung + pow; public int get_leistung() { return this.leistung; Prof. Martin Trauth Folie 19 / 25

20 1.19 Beispiel eines Java-Programms II Die main-methode in der Klasse MeinTest2 erzeugt ein Objekt der Klasse Auto und arbeitet mit dessen Methoden. class MeinTest2 { public static void main(string[] args) { Auto meinauto = new Auto(75); System.out.println("Leistung: " + meinauto.get_leistung() + "kw"); meinauto.tuneup(50); System.out.println("getunte Leistung: " + meinauto.get_leistung() + "kw"); Die Ausgabezeilen dieses Programms sehen so aus: Leistung: 75kW getunte Leistung: 125kW Objekt wird erzeugt! Man kann problemlos in neuer Zeile weiter schreiben. Prof. Martin Trauth Folie 20 / 25

21 1.20 Logikoperationen und der Typ boolean Logikausdrücke haben in Java das Ergebnis true oder false. Will man diese Werte speichern, benötigt man eine Variable vom Typ boolean. Wenn man die Werte ausgeben läßt, werden sie als true oder false dargestellt. Ein Beispiel: class MeinTest3 { public static void main(string[] args) { int a = 5, b = 10; boolean bool1; System.out.println("a < b: " + (a < b)); System.out.println("a == b: " + (a == b)); bool1 = a >= b; System.out.println("a >= b: " + bool1); Die Ausgabezeilen dieses Programms: a < b: true a == b: false a >= b: false Prof. Martin Trauth Folie 21 / 25

22 1.21 Pseudokonstanten, Schlüsselwort final Wenn man in Java eine Variable unveränderbar machen möchte, sie also als Konstante benutzt, dann verwendet man das Schlüsselwort final in ihrer Deklaration. Sie kann dann nur einmal einen Wert zugewiesen bekommen. Jede folgende Wertzuweisung würde einen Compilerfehler auslösen. Man spricht von konstanten Variablen oder Pseudokonstanten. Beispiel: final double UST_SATZ = 19. ; final char EURO; EURO = ; Deklaration und Wertzuweisung in einer Zeile. Deklaration und Wertzuweisung getrennt. Konstantennamen werden wie in C üblicherweise mit Großbuchstaben geschrieben (final funktioniert genau so wie const in C). Auch die Schreibweise einzelner Zeichen in einfachen Hochkommata entspricht der C-Schreibweise. Prof. Martin Trauth Folie 22 / 25

23 1.22 Klassenpakete (packages) verwenden Klassenpakete (packages) sind Sammlungen von Klassen. Ihre Hauptbedeutung haben sie als Bestandteile von Klassenbibliotheken. Die Packages sind so etwas wie die Bücher in der Java-Bibliothek. Sie fassen Klassen zusammen, die zu einem Thema gehören. Paketnamen werden klein geschrieben und können aus mehreren Namensbestandteilen zusammengesetzt sein, die durch Punkte getrennt werden. Beispiele: java.lang java.math java.awt.event grundlegende Klassen von Java Mathematik-Klassen Ereignisbehandlung Will man eine oder mehrere Klassen aus einem solchen Paket verwenden, dann muss man es importieren. Dazu schreibt man das Schlüsselwort import vor <paketname>.<klassenname> oder <paketname>.* (dann werden alle Klassen des Pakets importiert). Wichtig: die import-anweisung muss vor nachfolgenden Klassendefinitionen stehen, die Klassen des Pakets verwenden. Das paket java.lang wird automatisch verwendet, das muss man nicht explizit importieren. import java.awt.event.*; // alle Klassen des Pakets werden importiert import java.applet.applet; // nur die Klasse Applet wird importiert public class MeineKlasse { /* Code der Klasse */ Eine Klasse im importierten Paket muss als public definiert sein, sonst kann sie von einer anderen Klasse nur dann verwendet werden wenn diese dem gleichen Paket angehört. Prof. Martin Trauth Folie 23 / 25

24 1.23 Packages erstellen Man kann auch eigene Packages erstellen. Dazu wird im Quelltext vor allen Importanweisungen das Schlüsselwort package, gefolgt vom gewünschten Paketnamen geschrieben. Beispiel: package mypackage.first; import java.awt.*; public class MeineKlasse1 { /* Code der Klasse */ Der Programmcode wird dann im Unterordner mypackage\first des aktuellen Arbeitsverzeichnisses gespeichert. Dieses Unterverzeichnis muss man selbst erstellen, es sei denn das Java-Entwicklungssystem sorgt dafür. Importiert ein anderes Programm dieses Paket, dann wird es dort gesucht. Liegt dieses importierende Programm aber in einem anderen Arbeitsverzeichnis, dann muss man dem Compiler durch Angabe eines classpath das Package-Verzeichnis mitgeteilen (das Thema soll aber hier nicht weiter vertieft werden. Bei Interesse bitte Fachliteratur lesen). Es können auch bereits compilierte Java-Klassen (Bytecode, Extension.class) im Paketverzeichnis gespeichert werden. Wenn sie importiert werden, muss der Compiler nicht mehr übersetzen. Packages mit dem ersten Teil java oder javax liegen in einem speziellen Bibliotheksverzeichnis, das dem Compiler und der VM bekannt ist. In dem Fall braucht man sich nicht um den Suchpfad zu kümmern. Diese Bibliotheks-Packages sind immer compiliert und zusätzlich in Archiv-Dateien komprimiert (Extension.jar). Prof. Martin Trauth Folie 24 / 25

25 1.24 Bemerkungen zur Wortwahl In der Literatur werden die gleichen Sachverhalte in Java leider verschieden bezeichnet. Statt von Objekten wird z.t. von Instanzen (einer Klasse) geschrieben. Eigenschaften werden manchmal (Objekt-) Variable genannt. Außerdem gibt es alle möglichen Kombinationen dieser Bezeichnungen, z.b. Instanzvariable was das gleiche ist wie eine Objekteigenschaft. Spezialisten unterscheiden zwischen Instanzen und Objekten. Die Bedeutungen sind etwas verschieden jedenfalls für Spezialisten. Für die meisten Fälle (und auch in diesem Skript) sind solche Details nicht wichtig. Schon deshalb weil sich die Spezialisten ohnehin nie einig sind... Einig ist man sich (weitgehend) darin, dass man von Methoden statt von Funktionen spricht und schreibt. Variablen und Eigenschaften sind aber durchaus verschieden. Eine Variable ist alles was einen Wert speichern kann. Daher sind in OOP alle Eigenschaften Variable. Aber umgekehrt beschreibt nicht jede Variable eine Eigenschaft. Auch Methoden können interne Variable benutzen. Diese werden aber nicht zu Objekt- oder Klasseneigenschaften. Prof. Martin Trauth Folie 25 / 25

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

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

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

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

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Computeranwendung und Programmierung (CuP)

Computeranwendung und Programmierung (CuP) Computeranwendung und Programmierung (CuP) VO: Peter Auer (Informationstechnologie) UE: Norbert Seifter (Angewandet Mathematik) Organisatorisches (Vorlesung) Vorlesungszeiten Montag 11:15 12:45 Freitag

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

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

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Programmieren in Java

Programmieren 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

Mehr

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

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

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

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11

Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe

Mehr

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

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005 Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Diana Lange. Generative Gestaltung Operatoren

Diana Lange. Generative Gestaltung Operatoren Diana Lange Generative Gestaltung Operatoren Begriffserklärung Verknüpfungsvorschrift im Rahmen logischer Kalküle. Quelle: google Operatoren sind Zeichen, die mit einer bestimmten Bedeutung versehen sind.

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Abschnitt 12: Strukturierung von Java-Programmen: Packages

Abschnitt 12: Strukturierung von Java-Programmen: Packages Abschnitt 12: Strukturierung von Java-Programmen: Packages 12. Strukturierung von Java-Programmen: Packages 12.1 Strukturierung durch Packages 12.2 Zugriffsspezifikationen 12.3 Zusammenfassung 12 Strukturierung

Mehr

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

13 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,

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

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

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

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

Verhindert, 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:

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7

Java 7. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Dezember 2011 JAV7 Java 7 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Dezember 2011 JAV7 5 Java 7 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

Mehr

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

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

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java 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

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm Hintergrundinformationen zur Vorlesung GRUNDLAGEN DER INFORMATIK I Studiengang Elektrotechnik WS 02/03 AG Betriebssysteme FB3 Kirsten Berkenkötter 1 Vom Problem zum Programm Aufgabenstellung analysieren

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16 Fakultät für Informatik Lehrstuhl 14 Lars Hildebrand, Marcel Preuß, Iman Kamehkhosh, Marc Bury, Diana Howey Übungsblatt

Mehr

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife Praktikum Ingenieurinformatik Termin 2 Verzweigungen (if-else), printf und scanf, while-schleife 1 1. Import/Export von Eclipse-Projekten 2. Verzweigungen (if-else-anweisung) 3. printf und scanf 4. Übungsaufgaben

Mehr

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3.

Hello World. Javakurs 2014, 1. Vorlesung. Sebastian Schuck. basierend auf der Vorlage von Arne Kappen. wiki.freitagsrunde.org. 3. Hello World Javakurs 2014, 1. Vorlesung Sebastian Schuck basierend auf der Vorlage von Arne Kappen wiki.freitagsrunde.org 3. März 2014 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Delegatesund Ereignisse

Delegatesund Ereignisse Delegatesund Ereignisse «Delegierter» Methoden Schablone Funktionszeiger Dr. Beatrice Amrhein Überblick Definition eines Delegat Einfache Delegate Beispiele von Delegat-Anwendungen Definition eines Ereignisses

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Viele Bilder auf der FA-Homepage

Viele Bilder auf der FA-Homepage Viele Bilder auf der FA-Homepage Standardmäßig lassen sich auf einer FA-Homepage nur 2 Bilder mit zugehörigem Text unterbringen. Sollen es mehr Bilder sein, muss man diese als von einer im Internet

Mehr

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

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

Mehr

Enigmail Konfiguration

Enigmail Konfiguration Enigmail Konfiguration 11.06.2006 Steffen.Teubner@Arcor.de Enigmail ist in der Grundkonfiguration so eingestellt, dass alles funktioniert ohne weitere Einstellungen vornehmen zu müssen. Für alle, die es

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur zur Einführung in die objektorientierte Programmierung mit Java Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007 Fachhochschule Bonn-Rhein-Sieg University of Applied Sciences Fachbereich Informatik Prof. Dr. Peter Becker Klausur WS 2006/07 Programmiersprache Java Objektorientierte Programmierung II 15. März 2007

Mehr

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering und Optimierungsanwendungen in der Thermodynamik Software-Engineering 5 Programmentwicklung und Debuggen mit IDE und CASE-Tools Übungen Prof. Dr. Rolf Dornberger OPTSWE_SWE: 5 Programmentwicklung

Mehr

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

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ IBBB 2010 Workshop 6 Einführung in die objektorientierte Programmierung Dozenten: J. Penon, J. Frank, A. Schindler Teil: Java mit BlueJ Dozent: A. Schindler Einf. i. d. OOP - Java u. BlueJ / A. Schindler

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

5. Abstrakte Klassen

5. Abstrakte Klassen 5. Abstrakte Klassen Beispiel 5. Abstrakte Klassen Angenommen, wir wollen die folgende Klassenhierarchie implementieren: Vogel Amsel Drossel Fink Peter Becker, Programiersprache Java FH Bonn-Rhein-Sieg,

Mehr

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

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

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

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Vorlesung Informatik II

Vorlesung Informatik II Vorlesung Informatik II Universität Augsburg Wintersemester 2011/2012 Prof. Dr. Bernhard Bauer Folien von: Prof. Dr. Robert Lorenz Lehrprofessur für Informatik 02. JAVA: Erstes Programm 1 Das erste Java-Programm

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Vererbung & Schnittstellen in C#

Vererbung & 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

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek

Proseminar C-Programmierung. Strukturen. Von Marcel Lebek Proseminar C-Programmierung Strukturen Von Marcel Lebek Index 1. Was sind Strukturen?...3 2. Padding 5 3. Vor- und Nachteile von Padding..8 4. Padding gering halten 9 5. Anwendungsgebiete von Strukturen.11

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Java 1 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 12.10.2015 Technische Universität Braunschweig, IPS Überblick Organisatorisches Arbeitsablauf Hello! 12.10.2015 Dr. Werner Struckmann / Stephan

Mehr

Innere Klassen in Java

Innere Klassen in Java Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird

Mehr

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten

Testklausur 1 zur Vorlesung. Modellierung und Programmierung I. Dr. Monika Meiler Zeit: 60 Minuten Matrikelnummer: Punkte: Testklausur 1 zur Vorlesung Modellierung und Programmierung I Dr. Monika Meiler Zeit: 60 Minuten Bemerkungen: Jedes Blatt ist mit der Matrikelnummer zu versehen. Jede Aufgabe ist

Mehr

Graphic Coding. Klausur. 9. Februar 2007. Kurs A

Graphic Coding. Klausur. 9. Februar 2007. Kurs A Graphic Coding Klausur 9. Februar 2007 Kurs A Name: Matrikelnummer: Hinweise - Es sind keine Hilfsmaterialien erlaubt. (Keine Bücher, Taschenrechner, Handys) - Sie haben zwei Stunden Zeit. - Insgesamt

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt

14.4.2016. Technische Hochschule Georg Agricola WORKSHOP TEIL 3. IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt 14.4.2016 Technische Hochschule Georg Agricola WORKSHOP TEIL 3 IKT (Informations- und Kommunikationstechnik) an einer MorseApp erklärt Inhaltsverzeichnis 1. Kurzfassung zur Projekterstellung... 2 2. Morse-Tabelle...

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Objektorientierte Programmierung OOP

Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte

Mehr

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

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

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

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den

Mehr

25 kann ohne Rest durch 5 geteilt werden! ist wahr

25 kann ohne Rest durch 5 geteilt werden! ist wahr Lehrbrief 2: Lektion 8 - C -Praxis 4-1 - 5.2 Einfache Entscheidungen mit if und die Vergleichsoperatoren Nun tauchen wir immer tiefer in die Geheimnisse von C ein und beschäftigen uns mit einem sehr wichtigen

Mehr

Visual Basic Express erstes Projekt anlegen

Visual Basic Express erstes Projekt anlegen Inhalt Dokument Beschreibung... 1 Erstes Projekt anlegen... 1 Verweise hinzufügen... 2 Imports setzen... 5 Public Class vorbereiten... 6 Mehrere Tools programmieren... 7 Dokument Beschreibung Nach der

Mehr

3 Objektorientierte Konzepte in Java

3 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

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl

Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut wird, dass sie für sich selbst sprechen können Von Susanne Göbel und Josef Ströbl Persönliche Zukunftsplanung mit Menschen, denen nicht zugetraut Von Susanne Göbel und Josef Ströbl Die Ideen der Persönlichen Zukunftsplanung stammen aus Nordamerika. Dort werden Zukunftsplanungen schon

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

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

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

.NET Code schützen. Projekt.NET. Version 1.0

.NET Code schützen. Projekt.NET. Version 1.0 .NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Rundung und Casting von Zahlen

Rundung und Casting von Zahlen W E R K S T A T T Rundung und Casting von Zahlen Intrexx 7.0 1. Einleitung In diesem Werkstattbeitrag erfahren Sie, wie Zahlenwerte speziell in Velocity, aber auch in Groovy, gerundet werden können. Für

Mehr

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12

Mehr

Wie Sie mit Mastern arbeiten

Wie Sie mit Mastern arbeiten Wie Sie mit Mastern arbeiten Was ist ein Master? Einer der großen Vorteile von EDV besteht darin, dass Ihnen der Rechner Arbeit abnimmt. Diesen Vorteil sollten sie nutzen, wo immer es geht. In PowerPoint

Mehr

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

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Programmieren I. Kapitel 15. Ein und Ausgabe

Programmieren I. Kapitel 15. Ein und Ausgabe Programmieren I Kapitel 15. Ein und Ausgabe Kapitel 15: Ein und Ausgabe Ziel: einen kleinen Einblick in die vielfältigen IO Klassen geben Grober Überblick Klasse File zur Verwaltung von Dateien Random

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: 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,

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Java Einführung Methoden in Klassen

Java 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

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Serienbrief aus Outlook heraus Schritt 1 Zuerst sollten Sie die Kontakte einblenden, damit Ihnen der Seriendruck zur Verfügung steht. Schritt 2 Danach wählen Sie bitte Gerhard Grünholz 1 Schritt 3 Es öffnet

Mehr

Wie halte ich Ordnung auf meiner Festplatte?

Wie halte ich Ordnung auf meiner Festplatte? Wie halte ich Ordnung auf meiner Festplatte? Was hältst du von folgender Ordnung? Du hast zu Hause einen Schrank. Alles was dir im Wege ist, Zeitungen, Briefe, schmutzige Wäsche, Essensreste, Küchenabfälle,

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

Mehr

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

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

Mehr