AngularJS MODERNE WEBANWENDUNGEN UND SINGLE PAGE APPLICATIONS MIT JAVASCRIPT. Manfred Steyer, Vildan Softic

Größe: px
Ab Seite anzeigen:

Download "AngularJS MODERNE WEBANWENDUNGEN UND SINGLE PAGE APPLICATIONS MIT JAVASCRIPT. Manfred Steyer, Vildan Softic"

Transkript

1 AngularJS MODERNE WEBANWENDUNGEN UND SINGLE PAGE APPLICATIONS MIT JAVASCRIPT Manfred Steyer, Vildan Softic

2 AngularJS Moderne Webanwendungen und Single Page Applications mit JavaScript Manfred Steyer & Vildan Softic Beijing Cambridge Farnham Köln Sebastopol Tokyo

3 Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen. Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen. Kommentare und Fragen können Sie gerne an uns richten: O Reilly Verlag Balthasarstr Köln Copyright: 2015 by O Reilly Verlag GmbH & Co. KG Bibliografische Information Der Deutschen Bibliothek Die Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über abrufbar. Lektorat: Ariane Hesse, Köln Fachlektorat: Florian Helmchen, München Korrektorat: Dorothee Klein, mediaservice, Siegen Satz: Gerhard Alfes, mediaservice, Siegen, Umschlaggestaltung: Michael Oreal, Köln Produktion: Andrea Miß, Köln, Karin Driesen, Köln Belichtung, Druck und buchbinderische Verarbeitung: Druckerei Kösel, Krugzell; ISBN Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.

4 Inhalt Vorwort Paradigmen in JavaScript Die prozedurale Seite von JavaScript Die funktionale Seite von JavaScript Die objektorientierte Seite von JavaScript Die modulare Seite von JavaScript Zusammenfassung Einführung in AngularJS Überblick zu Single Page Applications und AngularJS Erste Schritte mit AngularJS AngularJS näher betrachtet Zusammenfassung HTTP-Services HTTP Mit dem Service $http auf Web-Ressourcen zugreifen REST-Services mit ngresource konsumieren Zusammenfassung Formulare und Validierung Objekte an Formularfelder binden Eingaben validieren Benutzerdefinierte Erweiterungen Zusammenfassung

5 5 Routing Logische Seiten mit ng-switch Routing mit dem Modul ngroute Routing mit dem externen Modul UI-Router Zusammenfassung Internationalisierung Übersetzungen mit angular-translate nutzen Länderbezogene Datums- und Zahlenformate mit Globalize unterstützen Zusammenfassung Animationen und Touch Methoden zum Erstellen von Animationen Animieren von AngularJS-Kern-Direktiven Behandeln von Touch-Interaktionen mit ngtouch Animationen von der Stange mit Animate.css Benutzerdefinierte Direktiven mit Animationen Zusammenfassung Asynchroner Code mit Promises Überblick zu Promises Promises in AngularJS Zusammenfassung Testing Jasmine Unit-Tests für AngularJS-Konstrukte End-2-End Tests mit Protractor Zusammenfassung Modularisierung und Verwaltung von Abhängigkeiten mit RequireJS Das JavaScript Modul-Muster Verwaltung von Abhängigkeiten RequireJS kennenlernen AngularJS mit RequireJS verwenden Zusammenfassung Authentifizierung und Autorisierung Authentifizierung via HTTP BASIC Single Sign On mit OAuth 2.0 und OpenId Connect Zusammenfassung Inhalt

6 12 Interaktion mit dem Browser Zugriff auf das document-objekt Verwenden von $window Daten persistieren mit ngcookies Verzögerte Ausführung mit $interval und $timeout Zusammenfassung Services näher betrachtet Funktionsweise von Services im Detail Optionen zum Erstellen von Services Services direkt mittels Provider erstellen Verwenden eines Decorators Zusammenfassung Benutzerdefinierte Direktiven Eine erste (zu) einfache Direktive Eigener Scope für Direktive Isolierte Scopes Link-Phase Manuelle Transklusion Compile-Phase Kommunikation zwischen Direktiven Zusammenfassung User Interface Design Twitter Bootstrap Bootstrap mit AngularJS verwenden Datengitter mit nggrid Kendo UI Grid Zusammenfassung Werkzeugunterstützung Paket-Verwaltung mit Bower Aufgabenautomatisierung mit Grunt Projektvorlagen mit Yeoman TypeScript Zusammenfassung Index Inhalt 5

7

8 Vorwort Während für gute Web-Anwendungen vor rund zehn Jahren noch die Regel galt, so viele Aufgaben wie möglich auf dem Server zu erledigen, stützen sich moderne Web-Anwendungen auf clientseitige Techniken, allen voran JavaScript. Dies steigert die Benutzerfreundlichkeit und schafft die Möglichkeit der Anpassung an die Auflösungen und Formfaktoren der vielen unterschiedlichen klassischen und mobilen Plattformen. Single Page Applications (SPA) spiegeln einen derzeit äußerst beliebten Architekturstil für solche Web-Anwendungen wieder. Wie der Name schon vermuten lässt, bestehen solche Anwendungen aus lediglich einer einzigen Seite, die ein Browser auf klassischem Weg abruft und anzeigt. Alle weiteren Seiten und Daten bezieht die SPA bei Bedarf via AJAX. Das populäre JavaScript-Framework AngularJS, welches aus dem Hause Google stammt, hilft bei der Erstellung von Anwendungen, die diesen Architekturstil verfolgen. Es bietet unter anderem Unterstützung für Datenbindung, beim Validieren von Daten oder dem Arbeiten mit Vorlagen. Darüber hinaus bietet es Konzepte zum Strukturieren von Quellcode sowie zur Schaffung wartbarer, wiederverwendbarer, aber auch gut testbarer Programmteile. Das vorliegende Buch präsentiert die Möglichkeiten von AngularJS. Dabei beschränkt es sich nicht nur auf die Grundlagen, sondern präsentiert auch Lösungen für Fälle, die das SPA-Framework nicht direkt abdeckt. Zielgruppe Das Buch richtet sich an Web-Entwickler, die bereits grundlegende Erfahrung mit HTML, CSS und JavaScript haben und nun mit AngularJS Single Page Applications entwickeln wollen. Dabei bezieht es sich auf die Version 1.3, welche beim Verfassen der Texte die aktuellste Version war. Zielsetzung des Buchs Zielsetzung dieses Buchs ist es, dem Leser anhand von Beispielen zu zeigen, wie er AngularJS zur Entwicklung von Single Page Applications nutzen kann. Dabei geht es auf die 7

9 Möglichkeiten von AngularJS ein und präsentiert auch Lösungen für Aspekte, die AngularJS nicht direkt unterstützt. Für eine vollständige Funktionsauflistung verweist es auf die online vorliegende Dokumentation. Aufbau des Buchs Das Buch besteht aus 16 Kapiteln. Die nachfolgende Auflistung zeigt, was diese bieten: Kapitel 1, Paradigmen in JavaScript: Obwohl das vorliegende Buch JavaScript-Kenntnisse voraussetzt, weist es mit dem ersten Kapitel auf einige Merkmale der Sprache hin, die Entwicklern, die JavaScript bereits benutzt haben, nicht immer geläufig sind. Dazu gehört die Beschreibung von funktionalen, objektorientierten und modularen Aspekten wie Closures, Konstruktorfunktionen, Vererbung über Prototypen und dem Revealing Module Pattern. Wer diese Grundlagen beherrscht, kann dieses Kapitel getrost überspringen. Kapitel 2, Einfühung in AngularJS: Nach einer Diskussion der Ideen hinter Single Page Applications und des Architekturmusters MVC zeigt dieses Kapitel zunächst die Möglichkeiten von AngularJS anhand eines Beispiels auf. Danach geht es auf einige Konzepte von AngularJS näher ein. Kapitel 3, HTTP-Services: Die Ideen hinter HTTP sowie das Nutzen von HTTP-basierten Ressourcen, wie HTTP-Services, sind Themen dieses Kapitels. Es geht auf die Möglichkeiten von $http ein und zeigt, wie Anwendungen REST-basierte Services mit ngresource konsumieren können. Kapitel 4, Formulare und Validierung: Dieses Kapitel zeigt, wie Anwendungen via AngularJS Daten an Formulare binden und Eingaben validieren können. Dabei geht es auf die Validierungsregeln von AngularJS ebenso ein wie auf die Möglichkeit zur Erstellung eigener Validierungsregeln. Daneben zeigt es, wie AngularJS das Konzept der Formatter zum Aufbereiten von Daten für Formularfelder sowie das Konzept der Parser zum Überführen von Eingaben ins Model nutzt. Kapitel 5, Routing: Dieses Kapitel zeigt, wie eine Single Page Application dem Benutzer mittels Routing verschiedene Seiten, die sie bei Bedarf nachlädt, präsentieren und dabei sowohl Lesezeichen als auch die Nutzung der Schaltfläche Zurück unterstützen kann. Neben dem vom AngularJS-Team angebotenen Modul ngroute geht es dazu auch auf das freie Modul UI-Router ein. Kapitel 6, Internationalisierung: Das Anpassen von AngularJS-Anwendungen für Benutzer verschiedener Länder und Sprachen ist Thema dieses Kapitels. Dazu geht es auf die Nutzung von Übersetzungen mit dem freien Modul angular-translate sowie auf die Arbeit mit verschiedenen Datenformaten unter Verwendung des Frameworks Globalize ein. Kapitel 7, Animationen und Touch: Um dem Entwickler möglichst einfache Werzeuge zum Einbau von Animationen zu bieten, befasst sich dieses Kapitel mit den Funktionen 8 Vorwort

10 des Moduls nganimate und geht insbesondere auf dessen zahlreiche Änderungen in der vorliegenden Version 1.3 ein. Zusätzlich ist auch das Zusammenspiel mit der Animations-Bibliothek animate.css sowie der Einsatz von Touch-Gesten in AngularJS demonstriert. Kapitel 8, Asynchroner Code mit Promises: Dieses Kapitel geht auf die Notwendigkeit asynchroner Aufrufe in JavaScript ein und zeigt, wie das Konzept der Promises bei der Arbeit mit solchen Aufrufen unterstützen kann. Dieses stellt es zunächst anhand der populären Bibliothek Q vor. Anschließend zeigt es, wie AngularJS die Ideen von Q mit dem daran angelehnten Service $q verfügbar macht. Kapitel 9, Testing: Wie die Qualität von AngularJS-Code mit automatisierten Tests geprüft werden kann, zeigt dieses Kapitel. Es geht dazu auf das Testing-Framework jasmine ein und zeigt, wie der Entwickler damit isolierte Komponententests für AngularJS- Code schaffen kann. Dazu bespricht es auch das Modul angular-mocks, das dabei unterstützt. Im Anschluss daran bespricht es die Möglichkeiten zur Schaffung von End-2-End- Tests mit Protractor. Kapitel 10, Modularisierung und Verwaltung von Abhängigkeiten mit RequireJS: Hinter diesem sperrigen Titel verbirgt sich ein Blick auf Ansätze, mit welchen sich auch größere Projekte bewältigen lassen. Dazu stellt das Kapitel Konzepte der Modularisierung von JavaScript-Code anhand der Asynchronouos Module Definition (AMD) unter Verwendung von RequireJS vor. Kapitel 11, Authentifizierung und Autorisierung: Dieses Kapitel zeigt, wie eine AngularJS-Anwendung im Namen des Benutzers auf HTTP-Services zugreifen kann. Dazu geht es auf HTTP BASIC ebenso ein wie auf die Standards OAuth 2.0 und OpenId Connect, welche unter anderem Single-Sign-On-Szenarien unterstützen. Kapitel 12, Interaktionen mit dem Browser: In diesem Kapitel sind die Möglichkeiten zur Bearbeitung des DOM-Baums mit jqlite vorgestellt. Anschließend daran sind die von AngularJS zur Verfügung gestellten Ummantelungen des document- und window-objekts sowie die leichter zu testenden Services $interval und $timeout vorgestellt. Zusätzlich dazu ist das Thema Datenpersistierung mit dem Service ngcookies erläutert. Kapitel 13, Services näher betrachtet: Die verschiedenen Optionen, um Services in AngularJS zu erstellen, sowie die Erläuterung der zahlreichen Fachbegriffe und was dahinter steckt, sind das Thema dieses Kapitels. Ein aufbauendes Beispiel hilft zudem verständlich zu machen, wann welche Variante in Betracht zu ziehen ist. Abschließend geht das Kapitel auf die Verwendung von Dekoratoren sowie deren Möglichkeiten ein. Kapitel 14, Benutzerdefinierte Direktiven: Dieses Kapitel beschreibt die Schaffung wiederverwendbarer Komponenten, welche unter anderem in Form eigener Attribute und Elemente genutzt werden können. Kapitel 15, User Interface Design: Da Web-Anwendungen stark visuell geprägt sind, stellt dieses Kapitel mit Twitter Bootstrap ein CSS-Framework für einfache und schön gestaltete Oberflächen ein. Danach zeigt es, wie mit dem Direktiven-Paket Angular UI 9

11 Bootstrap dieses mit AngularJS vereint wird. Den Abschluss bilden die Demonstration von zwei Implementierungen eines Datengitters. Kapitel 16, Werkzeugunterstützung: Im abschließenden Kapitel sind Werkzeuge vorgestellt, welche die alltägliche Entwicklungsarbeit vereinfachen und zum Teil automatisieren können. Dazu ist der Frontend-Paket-Manager Bower, das Automatisierungswerkzeug Grunt sowie der Projektgenerator Yeoman vorgestellt. Anschließend daran ist das JavaScript Superset TypeScript vorgestellt, welches mit einem statischem Typsystem, Konstrukten wie Interfaces, Klassen, Modulen und Lambda-Ausdrücken aufwartet. Wie Sie dieses Buch lesen sollten Während die ersten beiden Kapitel ausgwählte Aspekte von JavaScript sowie eine Einführung in AngularJS und dessen Konzepte bietet, widmen sich alle weiteren Kapitel ausgewählten Themen aus dem Umfeld von AngularJS. Leser, die sich mit den ersten beiden Kapiteln oder schon mit den darin vermittelten Aspekten beschäftigt haben, können alle weiteren Kapitel prinzipiell unabhängig voneinander lesen. Da jedoch die einzelnen Komponenten von AngularJS teils sehr stark voneinander abhängen, müssen Sie bei einer nicht-sequentiellen Vorgehensweise ggf. den vorherrschenden kapitelübergreifenden Verweisen folgen. Quellcodebeispiele, Online-Services und Errata Die Autoren stellen auf sämtliche in diesem Buch präsentierten Quellcodebeispiele sowie Online-Services, die die Beispiele zu Demonstrationszwecken nutzen und auch in eigene Beispiele eingebunden werden können, zur Verfügung. Darüber hinaus werden die Autoren auf dieser Seite weitere Informationen zu AngularJS sowie ggf. Errata zum vorliegenden Buch veröffentlichen. Daneben bietet es die Möglichkeit, mit den Autoren direkt in Kontakt zu treten. Danksagungen Unseren Dank für ihre Mitwirkung an diesem Buch möchten wir aussprechen an unsere Familienangehörigen, die uns neben unserem Hauptberuf das Umfeld geschaffen haben, auch an manchen Abenden und Wochenenden an diesem Buch arbeiten zu können die O Reilly Lektoren Florian Helmchen und Ariane Hesse, die dieses Buch von der Verlagsseite aus betreut und sprachlich verbessert haben Gerhard Alfes von mediaservice, die sich um die optischen Aspekte des Buchs gekümmert hat Manfred Steyer und Vildan Softic, Graz im Januar Vorwort

12 KAPITEL 1 Paradigmen in JavaScript Obwohl das vorliegende Werk auf AngularJS fokussiert und JavaScript-Kenntnisse voraussetzt, geht dieses Kapitel auf die in JavaScript vorherrschenden Paradigmen ein. Der Grund dafür ist, dass Entwickler diese kennen sollten, um Frameworks wie JavaScript verstehen und effizient nutzen zu können. Dieser Abschnitt kann und soll jedoch kein Ersatz für die einschlägige Literatur zu JavaScript sein, sondern lediglich einige Konstrukte veranschaulichen, die später im Buch sowie in AngularJS-Projekten immer wieder genutzt weden. Leser, die bereits die funktionale und objektorientierte Seite von JavaScript kennen und die wissen, wie sie mit JavaScript Vererbung, Module und Closures nutzen, können diesen Abschnitt getrost überspringen. Die prozedurale Seite von JavaScript Das wohl bekannteste Paradigma, das sich in der Programmiersprache JavaScript wiederfindet, ist der prozedurale Ansatz: Der Entwickler kann Befehle zu Funktionen kombinieren und bei Bedarf zur Ausführung bringen. Beispiel 1-1 zeigt ein Beispiel dafür. Es definiert die Funktion calczins. Da es sich bei JavaScript um eine dynamische Sprache handelt, werden weder die Typen der verwendeten Parameter bzw. Variablen noch der Datentyp des Rückgabewerts festgelegt. Allerdings gehört es zum guten Ton, Variablen mit dem Schlüsselwort var zu deklarieren und ihren Gültigkeitsbereich somit auf die aktuelle Funktion 1 zu beschränken. Dies führt im betrachteten Fall dazu, dass result lediglich innerhalb der Funktion calczins bekannt ist. Verwendet der Entwickler eine Variable, ohne sie vorher zu deklarieren, sieht JavaScript sie als globale Variable an. Aus Gründen der Wartbarkeit sollte der Entwickler jedoch davon absehen. Neuere Versionen von JavaScript kann er sogar dazu bringen, solche Fälle zu verbieten (mehr Informationen zu diesem Mechanismus, der sich Strict Mode nennt, finden sich später in diesem Kapitel im Abschnitt»Die modulare Seite von JavaScript«). 1 Variablen sind unter JavaScript nach ihrer Deklaration mit var tatsächlich innerhalb der gesamten Funktion, in der sie deklariert wurden, sichtbar. Um den Gültigkeitsbereich einer Variablen auf den Block (z.b. auf den Schleifenkörper oder auf den jeweiligen Zweig einer Bedingung) zu beschränken, in dem sie deklariert wurde, bieten neuere JavaScript-Interpreter das Schlüsselwort let (let x = 10; anstatt var x = 10;). 11

13 Beispiel 1-1: Beispiel für eine einfache JavaScript-Funktion <html> <head> <title></title> <script language="javascript"> </script> </head> [ ] </html> function calczins(k, p, t) { var result = k * p * t / 36000; return result; var result = calczins(200,2,360); alert("ergebnis: " + result); Ein weiteres Beispiel für eine Funktion in JavaScript bietet Beispiel 1-2. Im Gegensatz zum zuvor betrachteten Beispiel handelt es sich hier um eine Funktion, die eine weitere Funktion aufruft. Beispiel 1-2: Weitere JavaScript-Funktion function showzins(k, p1, p2) { var msg = k + " bei...\n\n"; for (var p = p1; p <= p2; p++) { var zins = calczins(k, p, 360); msg += " " + p + "% p.a.: " + zins + "\n"; alert(msg); showzins(500, 1, 3); Der Entwickler muss nicht sämtliche Parameter beim Aufruf einer Funktion angeben. Parameter, die nicht übergeben wurden, weisen innerhalb der Funktion den Wert undefined auf. Da JavaScript-Interpreter die Werte undefined, 0 und null bei logischen Vergleichen wie false sowie alle anderen Werte wie true behandeln, kann der Entwickler, wie in Beispiel 1-3 gezeigt, sehr einfach prüfen, ob ein Wert (der von den genannten drei Werten abweicht) für einen Parameter vorliegt. Um direkt gegen den Wert undefined zu prüfen, kann der Entwickler auch, wie mit dem Kommentar in Beispiel 1-3 angedeutet, den Operator typeof heranziehen. 12 Kapitel 1: Paradigmen in JavaScript

14 Beispiel 1-3: Optionale Parameter function calczins(k, p, t) { if (!t) t = 360; // if (typeof t === 'undefined') t = 360; var result = k * p * t / 36000; return result; Der Operator typeof liefert einen String mit einem der folgenden Werte: undefined, object, boolean, number, string, function und xml. Der Wert xml kommt für Objekte zum Einsatz, die XML-basierende Informationen repräsentieren. Den Wert object liefert typeof hingegen für alle anderen Objekte und für den Wert null zurück. Um den Typ eines Objekts näher zu bestimmen, kann der Entwickler, wie das vorliegende Kapitel später noch zeigt, den Operator instanceof heranziehen. Neben der Möglichkeit, benutzerdefinierte Funktionen zu erstellen, bietet JavaScript auch einen Satz an vordefinierten Funktionen (Beispiel 1-4): parseint wandelt eine Zeichenkette in einen Integer-Wert um. Sie nimmt den umzuwandelnden Wert und die Basis des Zahlensystems entgegen. Für das Dezimalsystem ist 10 zu übergeben. Auch wenn die Angabe der Basis optional ist und in den meisten Fällen vom Dezimalsystem auszugehen ist, kann die explizite Angabe der Basis einige Probleme verhindern. Beispielsweise nutzen ältere Browser beim Vorhandensein einer führenden Null das Oktalsystem und somit die Basis 8. Deswegen ist die Angabe dieses Parameters gute Praxis. Bei parsefloat handelt es sich hingegen beim Zieldatentyp um eine Fließkommazahl. Die Funktion String erzeugt einen String und isnan prüft, ob es sich beim übergebenen Element um keine Zahl (Not a Number) handelt. Zu den»nicht-zahlen«gehören zum Beispiel Strings, aber auch zum Beispiel nicht definierte Werte, wie zum Beispiel das Ergebnis einer Division durch Null. Beispiel 1-4: Ausgewählte vordefinierte Funktionen var two = parseint("2", 10); var twopointtwo = parsefloat("2.2"); var somestring = String(two + twopointtwo); alert(somestring); var issevennan = isnan("seven"); alert("issevennan: " + issevennan); var isthisnan = isnan(1 / 0); alert("isthisnan: " + issevennan); var is42nan = isnan(42); alert("is42nan: " + is42nan); Die prozedurale Seite von JavaScript 13

15 Die Operatoren == und!= gehen auch dann von Gleichheit aus, wenn die beiden Werte nach einer Typumwandlung gleich sind. Aus diesem Grund liefert der Ausdruck ("5" == 5) den Wert true. Möchte der Entwickler dies verhindern, kann er auf die Operatoren === und!== zurückgreifen, welche sowohl den Inhalt als auch die Typen vergleichen. Die funktionale Seite von JavaScript Die Tatsache, dass es sich bei JavaScript auch um eine funktionale Sprache handelt, dürfte weniger bekannt sein. Beispiel 1-5 demonstriert dies. Die Funktion foreach erwartet zwei Parameter: ein Array sowie eine Funktion, die für jeden Eintrag im Array aufzurufen ist. Dies ist möglich, da unter JavaScript Funktionen gleichzeitig auch Objekte sind. Als solche kann der Entwickler sie Variablen zuweisen, aber auch an andere Funktionen weiterreichen. Bei showitem handelt es sich um eine weitere Funktion, die den übergebenen Wert darstellt und myints ist ein Array mit vier vordefinierten Werten, wobei hier auffällt, dass JavaScript-Arrays eckige Klammern verwendet. Interessant wird es, wenn man den Aufruf von foreach betrachtet: Als erstes Argument übergibt das betrachtete Beispiel das Array, als zweites die Funktion showitem. Hätte der Entwickler an dieser Stelle stattdessen showitem() (man achte auf die runden Klammern) geschrieben, würde der JavaScript- Interpreter die Funktion an dieser Stelle ausführen und ihren Rückgabewert an foreach übergeben. Beispiel 1-5: Die Funktion foreach erwartet für den Parameter action eine weitere Funktion function foreach(ary, action) { for (var i = 0; i < ary.length; i++) { action(ary[i]); function showitem(item) { alert(item); var myints = [1, 2, 3, 4]; foreach(myints, showitem); Der Entwickler kann Funktionen, die er an andere Funktionen übergibt, auch an Ort und Stelle definieren, ohne einen Funktionsnamen zu vergeben (Beispiel 1-6). Daneben besteht auch die Möglichkeit, Variablen Funktionen zuzuweisen (Beispiel 1-7). Behandelt eine Anwendung eine Variable wie eine Funktion, indem sie ihr runde Klammern nachstellt, bringt der JavaScript-Interpreter die Funktion zur Ausführung, auf die die Variable verweist. 14 Kapitel 1: Paradigmen in JavaScript

16 Beispiel 1-6: Anonyme Funktion foreach(myints, function (item) { alert(item); ); Beispiel 1-7: Variablen können auf Funktionen verweisen var fn = function (item) { alert(item); foreach(myints, fn); fn("hallo Welt"); Beim Einsatz des Schlüsselworts function bildet JavaScript einen sogenannten Closure (Funktionsabschluss). Das bedeutet, dass Funktionen Zugriff auf alle Variablen haben, die sich in sämtlichen übergeordneten Gültigkeitsbereichen (Scopes) befinden. Die Funktion createlamp in Beispiel 1-8 erzeugt zum Beispiel eine neue Funktion, die sie der Variable controller zuweist. Diese Funktion hat nun Zugriff auf die Variable dimfactor, da sie in einem übergeordneten Gültigkeitsbereich definiert wurde. Deswegen, sowie aufgrund der Tatsache, dass controller diese Funktion zurückliefert, verwirft der Interpreter diese lokale Variable nicht nach der Ausführung von createlamp. Vielmehr kommt sie bei jedem Aufruf dieser zurückgelieferten Funktion zum Einsatz (Beispiel ). Auf diese Weise kann der Entwickler eine private Variable schaffen, die im betrachteten Fall nur dieser Funktion zur Verfügung steht und außerhalb dieser nicht existiert. Beispiel 1-8: Definition von Closures function createlamp(lampid) { var dimfactor = 0; var controller = function (command) { switch (command) { case 'dimup': if (dimfactor < 100) { dimfactor = dimfactor + 10; alert(lampid + ": " + dimfactor); break; case 'dimdown': if (dimfactor > 0) { dimfactor = dimfactor - 10; alert(lampid + ": " + dimfactor); break; case 'dimfactor': default: Die funktionale Seite von JavaScript 15

17 return dimfactor; return controller; Beispiel 1-9: Einsatz von Closures var lamp1 = createlamp("lamp #1"); var lamp2 = createlamp("lamp #2"); lamp1("dimup"); lamp1("dimup"); lamp1("dimup"); lamp1("dimdown"); lamp2("dimup"); Die objektorientierte Seite von JavaScript Dieser Abschnitt widmet sich der objektorientierten Seite von JavaScript. Dazu zeigt er Möglichkeiten zum Definieren von Objekten und Konstruktorfunktionen, die eine Alternative zu Klassen darstellen. Daneben erörtert dieser Abschnitt auch Möglichkeiten zur Erstellung von Vererbungshierarchien in JavaScript sowie Ansätze zum Erstellen von Namensräumen. Objekte mit Objekt-Literalen beschreiben Die einfachste Möglichkeit zum Definieren von Objekten stellt der Einsatz von sogenannten Objekt-Literalen dar (Beispiel 1-10). Der Entwickler beschreibt dabei Objekte durch geschweifte Klammern und Objekteigenschaften in Form von Name/Wert-Paaren, die durch einen Doppelpunkt zu trennen sind. Bei den Werten kann es sich um atomare Werte handeln (z.b. Strings), um weitere Objekte (in geschweiftem Klammern) oder um Arrays (in eckigen Klammern). Dasselbe gilt für Werte, die sich innerhalb von Arrays wiederfinden. Beispiel 1-10: Objekte mit JSON beschreiben var flugbuchung = { von: "Graz", nach: "Mallorca", passagiere: [ { vorname: "Max", nachname: "Mustermann", { vorname: "Susi", 16 Kapitel 1: Paradigmen in JavaScript

18 ; nachname: "Sorglos" ], bezahlung: { art: "Kreditkarte", betrag: 250, bezahlt: true alert(flugbuchung.von + " - " + flugbuchung.nach); alert("bezahlt: " + flugbuchung.bezahlung.bezahlt); alert("anzahl Passagiere: " + flugbuchung.passagiere.length); alert("nachname 1. Passagier: " + flugbuchung.passagiere[0].nachname); Konstruktorfunktionen Anders als die meisten objektorientierten Sprachen kennt JavaScript das Konzept von Klassen nicht. Zumindest nicht in der durch den Standard ECMAScript 5 beschriebenen Version, welche, als dieser Text verfasst wurde, die aktuelle Version war. Die folgende Version 6 wird hingegen Klassen kennen. Als Alternative dazu kommen hier sogenannte Konstruktorfunktionen zum Einsatz (Beispiel 1-11). Eine Konstruktorfunktion hat die Aufgabe, ein Objekt zu erzeugen. Dazu weist sie jene Eigenschaften, die das zu erzeugende Objekt aufweisen soll, der Pseudovariablen this zu. Eigenschaften können dabei auch auf Funktionen (Methoden) verweisen, die das zu erzeugende Objekt anbieten soll. Da sich der Wert von this im Zuge der Ausführung der Konstruktorfunktion ändern kann, hat es sich eingebürgert, dessen Wert am Beginn der Funktion in einer anderen Variable abzulegen und fortan diese zu verwenden. Beispiel 1-11 definiert zur Demonstration eine Konstruktorfunktion Person, welche die Variable self als Ersatz für this verwendet und dem zu erzeugenden Objekt die Eigenschaften vorname, nachname sowie vollername zuweist, wobei letztere auf eine Funktion verweist. Um ein Objekt mit einer Konstruktorfunktion zu erzeugen, ist die Funktion, wie am Ende von Beispiel 1-11 gezeigt, unter Verwendung des Operators new aufgerufen. Das Beispiel weist das Ergebnis der Variable rudi zu. Über den Punktoperator greift es anschließend auf die Eigenschaften des Objekts zu. Im diesem Zuge kommt die Funktion vollername zur Ausführung. Beispiel 1-11: Konstruktorfunktion function Person(vorname, nachname) { var self = this; self.vorname = vorname; self.nachname = nachname; self.vollername = function () { return self.vorname + " " + self.nachname; Die objektorientierte Seite von JavaScript 17

19 var rudi = new Person("Rudolf", "Rentier"); alert(rudi.vorname); alert(rudi.nachname); alert(rudi.vollername()); Jene Eigenschaften, die die Konstruktormethode an this zuweist, sind öffentlich jeder hat darauf Zugriff. Um private Member, auf die im Fall von JavaScript lediglich das Objekt selbst Zugriff hat, zu definieren, sollte man sich daran erinnern, dass mit dem Schlüsselwort function ein Closure erzeugt wird, der seinen Kontext einschließt (vgl.»die funktionale Seite von JavaScript«). Eine Variable, die der Entwickler innerhalb der Konstruktorfunktion definiert, kann somit auch sämtliche Funktionen des erzeugten Objekts verwenden. Ein Beispiel dafür finden Sie in Beispiel Während es die Eigenschaft inhaber über this zweist und es somit öffentlich ist, handelt es sich bei guthaben und protokoll um Variablen der Konstruktorfunktion. Somit sind sie außerhalb dieser nicht sichtbar, die einzelnen Funktionen des erzeugten Objekts haben jedoch Zugriff darauf. Beispiel 1-13 demonstriert die Verwendung dieser Konstruktorfunktion sowie des damit erzeugten Objekts. Beispiel 1-12: Konstruktorfunktion für Objekt mit öffentlichen und privaten Eigenschaften function Konto(inhaber, startguthaben) { var self = this; self.inhaber = inhaber; var guthaben = startguthaben; var protokoll = []; var addtoprotocol = function (action, betrag, text) { // push fügt ein neues Element am Ende des Arrays ein protokoll.push({ aktion: "ein", betrag: betrag, text: text ); self.einzahlen = function (betrag, text) { addtoprotocol("ein", betrag, text); guthaben += betrag; self.abheben = function (betrag, text) { addtoprotocol("aus", betrag, text); guthaben -= betrag; ; 18 Kapitel 1: Paradigmen in JavaScript

20 self.getguthaben = function () { return guthaben; self.getprotokoll = function () { return protokoll; Beispiel 1-13: Verwenden einer Konstruktorfunktion var mykonto = new Konto("Susi Sorglos", 200); mykonto.einzahlen(50); mykonto.abheben(30); var guthaben = mykonto.getguthaben(); var protokoll = mykonto.getprotokoll(); // Sinnlos, denn das vom Konto verwendete Guthaben ist // in einer anderen Variablen 'guthaben' gespeichert... // mykonto.guthaben = 33; alert(guthaben); Während sich die Deklaration von Methoden innerhalb von Konstruktorfunktionen positiv auf die Lesbarkeit des Quellcodes auswirken kann, kann diese Vorgehensweise bei Konstruktorfunktionen, mit denen eine Vielzahl an Objekten erzeugt werden, zu Performance-Einbußen führen. Der Grund dafür liegt darin, dass die Konstruktorfunktion pro Objekt und Methode ein eigenes Funktionsobjekt anlegt. Abhilfe schafft die Nutzung von Prototypen. Ein Beispiel dafür findet sich im Abschnitt»Vererbung«. Objekte als Dictionaries Ein weiteres wissenswertes Detail zu Objekten unter JavaScript ist die Tatsache, dass diese streng genommen assoziative Arrays, auch Dictionaries genannt, sind, die die Namen der Eigenschaften auf deren Werte abbilden. Beispiel 1-14 demonstriert dies. Es greift auf die Eigenschaften eines Kontos sowohl über den Punktoperator als auch über die von Arrays bekannte Schreibweise zu. Da es sich hierbei jedoch um ein assoziatives Array handelt, kommen für die Indizes Zeichenfolgen zum Einsatz. Beispiel 1-14: Objekte als assoziative Arrays nutzen // Objekte sind assoziative Arrays ("Dictionaries") alert(mykonto.inhaber); alert(mykonto["inhaber"]); Die objektorientierte Seite von JavaScript 19

Ü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

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 4: Einführung in JavaScript Stand: 03.11.2014. Übung WS 2014/2015. Benedikt Schumm M.Sc.

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 4: Einführung in JavaScript Stand: 03.11.2014. Übung WS 2014/2015. Benedikt Schumm M.Sc. Übung WS 2014/2015 E-Commerce: IT-Werkzeuge Web-Programmierung Kapitel 4: Stand: 03.11.2014 Benedikt Schumm M.Sc. Lehrstuhl für ABWL und Wirtschaftsinformatik Katholische Universität Eichstätt-Ingolstadt

Mehr

Erwin Grüner 15.12.2005

Erwin Grüner 15.12.2005 FB Psychologie Uni Marburg 15.12.2005 Themenübersicht Mit Hilfe der Funktionen runif(), rnorm() usw. kann man (Pseudo-) erzeugen. Darüber hinaus gibt es in R noch zwei weitere interessante Zufallsfunktionen:

Mehr

JavaScript heute. Mit DVD Arbeitstitel. Sprachparadigmen, Laufzeitumgebungen und Entwurfsmuster

JavaScript heute. Mit DVD Arbeitstitel. Sprachparadigmen, Laufzeitumgebungen und Entwurfsmuster Mit DVD Arbeitstitel 1/2014 Auf der Heft-DVD: Über 5 GByte für Entwickler Visual Studio Express 2013 für Webentwickler, Wakanda, Frameworks wie Ember.js und AngularJS, Bibliotheken und andere nützliche

Mehr

Das Buch zum ipad Air 2 & ipad mini 3

Das Buch zum ipad Air 2 & ipad mini 3 Das Buch zum ipad Air 2 & ipad mini 3 Susanne Möllendorf Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag,

Mehr

3. Auflage. O Reillys Taschenbibliothek. Windows PowerShell 3.0. kurz & gut. Lee Holmes. Deutsche Adaption von Rolf Masuch O REILLY

3. Auflage. O Reillys Taschenbibliothek. Windows PowerShell 3.0. kurz & gut. Lee Holmes. Deutsche Adaption von Rolf Masuch O REILLY O Reillys Taschenbibliothek 3. Auflage Windows PowerShell 3.0 kurz & gut O REILLY Lee Holmes Deutsche Adaption von Rolf Masuch Inhalt Einleitung................................................ 2 Installation.....................................................

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

Kapitel 6. Vererbung

Kapitel 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

Mehr

Kapitel 6. Vererbung

Kapitel 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

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die 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?

Mehr

12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden?

12. ArcView-Anwendertreffen 2010. Workshop Programmierung in ArcGIS. Daniel Fuchs. Wo kann eigene Programmierung in ArcGIS verwendet werden? Wo kann eigene Programmierung in ArcGIS verwendet werden? 12. ArcView-Anwendertreffen 2010 Workshop Programmierung in ArcGIS Daniel Fuchs 1) Makros für die Automatisierung einzelner Arbeitsschritte im

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

Mehr

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

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek Programmieren I Dr. Klaus Höppner Hochschule Darmstadt Wintersemester 2008/2009 1 / 22 2 / 22 Strategie zum Entwurf von Klassen Beispiele Objektorientierte Sichtweise: Mit welchen Objekten habe ich es

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

D.5 Eine Klasse für serielle Geräte schreiben

D.5 Eine Klasse für serielle Geräte schreiben D.5 Eine Klasse für serielle Geräte schreiben 285 D.5 Eine Klasse für serielle Geräte schreiben Man kann viel lernen, wenn man in einer interaktiven Umgebung mit einer neuen Bibliothek herumspielt. Allerdings

Mehr

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

einkonto.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();

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Grundlagen. Kapitel 1

Grundlagen. Kapitel 1 Grundlagen Dieses Kapitel umfasst grundlegende Fragen und Aufgaben zur Erstellung von C++-Programmen. Hierzu zählen auch das Inkludieren von Header-Dateien Eine Header-Datei beinhaltet Informationen, die

Mehr

Objective-C CheatSheet

Objective-C CheatSheet App-Templates: Erstellt automatisch einen Navigation Controller mit editierbarem UITableView und DetailView, der bei Klick auf einzelne UITableViewCell angezeigt wird. Kreiert einen GLKitViewController

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 ActionScript

Einführung in ActionScript Fachbereich Mathematik und Informatik Softwareprojekt: Spieleprogrammierung Einführung in ActionScript Do, Hoang Viet(do@mi.fu-berlin.de) Freie Universität Berlin, SoSe 2012 Agenda Allgemeine Einführung

Mehr

Die freie Programmiersprache Python mit Beispielen für ihren praktischen Einsatz. Python User Group Köln www.pycologne.de

Die freie Programmiersprache Python mit Beispielen für ihren praktischen Einsatz. Python User Group Köln www.pycologne.de Die freie Programmiersprache Python mit Beispielen für ihren praktischen Einsatz Python User Group Köln www.pycologne.de Übersicht Python pycologne Anwendungsbeispiele Python Klar strukturierte Allzweck-

Mehr

XPages Good to know. Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015

XPages Good to know. Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015 XPages Good to know Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015 Agenda 1. Einführung Was sind XPages? 2. Allgemeine Tipps Allgemeine Tipps für die Verwendung von XPages 3. Designer Tipps Tipps für

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

Mehr

Klassenattribute und -methoden, Vererbung

Klassenattribute und -methoden, Vererbung Klassenattribute und -methoden, Vererbung Michael Dienert 27. März 2002 1 Prüfungsaufgabe Anwendungsentwicklung Winter 2001 Die folgende Aufgabe stammt aus der Abschlussprüfung für Fachinformatiker Anwendungsentwicklung

Mehr

Dynamik bis zur DB-Interaktion. Marc Schanne. CGI Möglichkeiten

Dynamik bis zur DB-Interaktion. Marc Schanne. CGI Möglichkeiten CGI einfach PHP Dynamik bis zur DB-Interaktion 1 CGI Möglichkeiten Das Common Gateway Interface (CGI) ermöglicht den Entwurf von interaktiven, benutzergesteuerten Web-Applikationen. Der WWW-Server ruft

Mehr

Der Autor ist seit dem Jahr 2001 bei der Firma GeNUA mbh als Security Consultant und gegenwärtig als Koordinator für Intrusion Detection tätig.

Der Autor ist seit dem Jahr 2001 bei der Firma GeNUA mbh als Security Consultant und gegenwärtig als Koordinator für Intrusion Detection tätig. WLAN-Sicherheit Der Autor ist seit dem Jahr 2001 bei der Firma GeNUA mbh als Security Consultant und gegenwärtig als Koordinator für Intrusion Detection tätig. Seine Aufgabengebiete sind: Penetration Testing/Auditing

Mehr

4 Vererbung, Polymorphie

4 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

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung 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

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

Vorlesung im Herbstwintersemester 2007. Autorisierte studentisch Lösungen zu Aufgabenblatt 2

Vorlesung im Herbstwintersemester 2007. Autorisierte studentisch Lösungen zu Aufgabenblatt 2 Praktische Informatik I Vorlesung im Herbstwintersemester 2007 Autorisierte studentisch Lösungen zu Aufgabenblatt 2 zusammengestellt von Iva Tsvetkova 9.10.2007 1.Präsenzaufgaben 1.1 Entwurf einer Verwaltung

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Inhalt: Version 1.7.5

Inhalt: Version 1.7.5 Inhalt: Objekte ohne Methoden Objekte mit einfachen Methoden Objekte und Methoden mit Parametern Objekte und Methoden mit Rückgabewert Objekte mit einem Array als Attribut Beziehungen zwischen Objekten

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Funktionen und Parameter

Funktionen und Parameter Funktionen in C++ Funktionen und Parameter Wie in Java: Parameter sind lokale Variablen Argumente werden bei Aufruf zugewiesen Extras: Zeiger-Parameter für alle Typen: als Rückgabewerte um große Kopien

Mehr

ISBN 978-3-8273-3232-5 (Print); 978-3-86324-685-3 (PDF); 978-3-86324-250-3 (epub)

ISBN 978-3-8273-3232-5 (Print); 978-3-86324-685-3 (PDF); 978-3-86324-250-3 (epub) Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009

PIWIN 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

Mehr

AJAX SSL- Wizard Referenz

AJAX SSL- Wizard Referenz AJAX SSL- Wizard Referenz Version 1.0.2+ - 04.04.2011 Präambel Die vorliegende Dokumentation beschreibt den AJAX basierten SSL- Wizard der CertCenter AG. Der SSL- Wizard kann mit wenigen Handgriffen nahtlos

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Kapitel 3 Das Projekt Bankkonto Seite 1

Kapitel 3 Das Projekt Bankkonto Seite 1 Kapitel 3 Das Projekt Bankkonto Seite 1 3 Das Projekt Bankkonto Nun wirst du dich etwas gründlicher mit dem Quelltext einer Klasse beschäftigen. Du lernst, wie zwei Objekte eine gemeinsame Aufgabe erledigen.

Mehr

Vorbereitung zu Praktikum 3

Vorbereitung zu Praktikum 3 Vorbereitung zu Praktikum 3 Menü-Toolkit und Command Pattern Fallstudie zu Vererbung und Polymorphie: "Menü-Toolkit" Anwenderfreundliche Programme werden mit Menüs gesteuert In objektorientierten Anwendungen

Mehr

JOB SCHEDULER. Managed User Jobs. Dokumentation Juli 2005. MySQL-Job-Automation

JOB SCHEDULER. Managed User Jobs. Dokumentation Juli 2005. MySQL-Job-Automation MySQL-Job-Automation Managed User Jobs JOB SCHEDULER Dokumentation Juli 2005 Software- und Organisations-Service GmbH Giesebrechtstr. 15 D-10629 Berlin Telefon (030) 86 47 90-0 Telefax (030) 861 33 35

Mehr

Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen

Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Professur für Künstliche Intelligenz und Softwaretechnologie Sommersemester 2009 Überblick Teil 1: Lexen und Parsen Die Sprache LFP +C Professur

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Einführung in das Microsoft.NET-Framework. Programmiersprache C# MEF Das Managed Extensibility Framework. André Kunz

Einführung in das Microsoft.NET-Framework. Programmiersprache C# MEF Das Managed Extensibility Framework. André Kunz Einführung in das Microsoft.NET-Framework Programmiersprache C# MEF Das Managed Extensibility Framework André Kunz 21.09.2010 1 In dieser Einführung bekommen Sie einen kurzen Einstieg in das.net-framework

Mehr

Schäfer: Root-Server. Copyright (C) Open Source Press

Schäfer: Root-Server. Copyright (C) Open Source Press Schäfer: Root-Server Stefan Schäfer Root Server einrichten und absichern Alle in diesem Buch enthaltenen Programme, Darstellungen und Informationen wurden nach bestem Wissen erstellt. Dennoch sind Fehler

Mehr

Client-Server-Beziehungen

Client-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

Mehr

BillSAFE Payment Layer Integration Guide

BillSAFE Payment Layer Integration Guide BillSAFE Payment Layer Integration Guide letzte Aktualisierung: 10.06.2013 Inhaltsverzeichnis 1 Vorwort...2 1.1 Inhalt...2 1.2 Zielgruppe...2 1.3 Voraussetzungen...2 1.4 Feedback...2 1.5 Versionshistorie...3

Mehr

Einführung in PHP. (mit Aufgaben)

Einführung in PHP. (mit Aufgaben) Einführung in PHP (mit Aufgaben) Dynamische Inhalte mit PHP? 2 Aus der Wikipedia (verkürzt): PHP wird auf etwa 244 Millionen Websites eingesetzt (Stand: Januar 2013) und wird auf etwa 80 % aller Websites

Mehr

Inhaltsverzeichnis. Teil 1 Node.js... 1

Inhaltsverzeichnis. Teil 1 Node.js... 1 xiii Teil 1 Node.js... 1 1 Was ist Node.js? 3 1.1 Die Zeitalter des Webs................................... 3 1.1.1 1990 bis 2000: Das Web 1.0....................... 3 1.1.2 2000 bis 2010: Das Web 2.0.......................

Mehr

entweder: zeilenweise fgets() oder: zeichenweise fgetc()

entweder: zeilenweise fgets() oder: zeichenweise fgetc() PHP stellt viele Funktionen zur Verfügung, um mit Dateien effektiv zu arbeiten. Die grundsätzliche Vorgehensweise beim Auslesen einer Datei sieht wie folgt aus: 1. Öffnen der Datei fopen() 2. schrittweises

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Ein Computerprogramm besteht aus Funktionen (Programmabschnitten, die etwas tun) und Variablen (Speicherplätzen für Informationen). Werden Funktionen aktiviert, verändern

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Einführung in die Programmierung - Google Apps Script & JavaScript - Claudia Scheffler 11. September 2013 Claudia Scheffler Einführung in die Programmierung 1/54 Inhaltsverzeichnis 1 Organisatorisches

Mehr

Anleitung E-Mail Konfiguration sowie Übersicht Mailprogramm roundcube Inhaltsverzeichnis

Anleitung E-Mail Konfiguration sowie Übersicht Mailprogramm roundcube Inhaltsverzeichnis Anleitung E-Mail Konfiguration sowie Übersicht Mailprogramm roundcube Inhaltsverzeichnis Einführung... 2-3 Servereinstellungen für die Einrichtung auf dem E-Mail Client... 4 E-Mail Adresse / Postfach einrichten...

Mehr

5.6 Vererbung. Vererbung

5.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

Mehr

Theorie und Praxis einer JSON-RPC-basierten Web-API

Theorie und Praxis einer JSON-RPC-basierten Web-API Theorie und Praxis einer JSON-RPC-basierten Web-API Christian Krause Christian.Krause@raritan.com Raritan Deutschland GmbH Chemnitzer LinuxTage 2015 Gliederung 1 2 Remote Procedure Call Interface Definition

Mehr

Inhaltsverzeichnis. Kapitel 1: Die Shopgründung 7. Kapitel 2: Shopumgebung und Shopkonzept 31. Kapitel 3: Die Shopkonfiguration 59. Vorwort...

Inhaltsverzeichnis. Kapitel 1: Die Shopgründung 7. Kapitel 2: Shopumgebung und Shopkonzept 31. Kapitel 3: Die Shopkonfiguration 59. Vorwort... Inhaltsverzeichnis Inhaltsverzeichnis Vorwort...5 Kapitel 1: Die Shopgründung 7 1.1 Die Shopidee...8 1.2 Die Zielgruppe...9 1.3 Das Alleinstellungsmerkmal... 10 1.4 Die Marktanalyse... 12 1.5 Die persönliche

Mehr

DSLinux Skriptbasierte Inventarisierung für Linux

DSLinux Skriptbasierte Inventarisierung für Linux DSLinux Skriptbasierte Inventarisierung für Linux www.docusnap.com TITEL DSLinux AUTOR Docusnap Consulting DATUM 21.04.2015 Die Weitergabe, sowie Vervielfältigung dieser Unterlage, auch von Teilen, Verwertung

Mehr

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen.

Steht in der ersten Zeile #!/usr/bin/python und hat man die Ausführungsrechte gesetzt kann man es direkt ausführen. Python Unter Windows empfiehlt sich der Download von Python unter folgender URL, http:// www.python.org/download/. Linux Distributionen wie z.b. Ubuntu liefern Python direkt in Ihrer Paketverwaltung mit:

Mehr

Erweiterung für Premium Auszeichnung

Erweiterung für Premium Auszeichnung Anforderungen Beliebige Inhalte sollen im System als Premium Inhalt gekennzeichnet werden können Premium Inhalte sollen weiterhin für unberechtigte Benutzer sichtbar sein, allerdings nur ein bestimmter

Mehr

PHP mit Dreamweaver MX bearbeiten 00

PHP mit Dreamweaver MX bearbeiten 00 teil03.fm Seite 360 Donnerstag, 5. Februar 2004 6:27 18 PHP mit Dreamweaver MX bearbeiten 00 Mit Dreamweaver MX 2004 und PHP effektiv arbeiten PHP kann ausschließlich grafisch im Layoutmodus programmiert

Mehr

PHP Programmierung. Seminarunterlage. Version 1.02 vom

PHP Programmierung. Seminarunterlage. Version 1.02 vom Seminarunterlage Version: 1.02 Version 1.02 vom 27. August 2013 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen sind Warenzeichen

Mehr

Softwaretechnik (WS 11/12)

Softwaretechnik (WS 11/12) Universität Augsburg, LSt. Softwaretechnik, K. Stenzel, H. Seebach, G. Anders Softwaretechnik (WS 11/12) Lösungsvorschlag 5 Aufgabe 1 (System Behavior: System Sequence Diagrams) (10/5 Punkte) a) Was sind

Mehr

Programmieren mit der Windows PowerShell. von. Nils Gutsche. (aka Vellas)

Programmieren mit der Windows PowerShell. von. Nils Gutsche. (aka Vellas) Programmieren mit der Windows PowerShell von Nils Gutsche (aka Vellas) Einleitung Im November 2006 erschien die finale Fassung der Windows PowerShell. Sie gilt als der Nachfolger der Eingabeaufforderung

Mehr

VIII: 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 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:

Mehr

JavaScript in Beispielen

JavaScript in Beispielen 1. HTML und JavaScript JavaScript Programme sind ein Teil von sog. HTML Seiten (Hyper Text Markup Language), wie sie im Internet verwendet werden. Eine reine HTML Seite besteht aus Text und Formatierungsangaben

Mehr

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

Mehr

Installation und Benutzung AD.NAV.ZipTools

Installation und Benutzung AD.NAV.ZipTools Installation und Benutzung AD.NAV.ZipTools Version 1.0.0.0 ALTENBRAND Datentechnik GmbH Am Gelicht 5 35279 Neustadt (Hessen) Tel: 06692/202 290 Fax: 06692/204 741 email: support@altenbrand.de Die Komponente

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

Code 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 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

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

2.4.3 Polymorphie (Wiederholung von Alp2)

2.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

Mehr

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

Objektorientierte 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

Mehr

Windows 8 auf Tablet-PCs

Windows 8 auf Tablet-PCs Windows 8 auf Tablet-PCs Michael Hülskötter Windows 8 auf Tablet-PCs Internet, Office, Multimedia Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Bibliothek verzeichnet diese

Mehr

Das JavaScript-Framework MooTools

Das JavaScript-Framework MooTools Das JavaScript-Framework MooTools Beitrag zum Seminar Internet, Sommersemester 2007 von Mathias Palme und Simon Jockers JavaScript hat eine bewegte Vergangenheit hinter sich. Nachdem es bereits Mitte der

Mehr

Alltagsnotizen eines Softwareentwicklers

Alltagsnotizen eines Softwareentwicklers Alltagsnotizen eines Softwareentwicklers Entkoppeln von Objekten durch Callbacks mit c++-interfaces oder boost.function und boost.bind Tags: c++, entkoppeln, objekt, oop, callback, boost.bind, boost.function,

Mehr

Excel. Funktionen professionell einsetzen

Excel. Funktionen professionell einsetzen Excel Funktionen professionell einsetzen Verlag: BILDNER Verlag GmbH Bahnhofstraße 8 94032 Passau http://www.bildner-verlag.de info@bildner-verlag.de Tel.: +49 851-6700 Fax: +49 851-6624 ISBN: 978-3-8328-0080-2

Mehr

3 Variablen. 3.1 Allgemeines. 3.2 Definition und Verwendung von Variablen

3 Variablen. 3.1 Allgemeines. 3.2 Definition und Verwendung von Variablen 3 Variablen 3.1 Allgemeines Variablen werden in Prozeduren, Mustern und Parameter-Dokumenten definiert und verwendet und bei der Jobgenerierung durch die Werte, die ihnen zugewiesen werden, ersetzt. Variablen

Mehr

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler / 2013-04-18 Software Testing Automatisiert Manuell 100% 70% 1 Überwiegender Teil der Testing Tools fokusiert auf automatisiertes Testen Microsoft

Mehr

16 SQL Server-Zugriff per VBA

16 SQL Server-Zugriff per VBA Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 16 SQL Server-Zugriff per VBA Sie werden an verschiedenen Stellen per VBA auf die Tabellen der SQL Server-Datenbank zugreifen müssen sei

Mehr

Ersetzbarkeit, Client-Server Beziehungen

Ersetzbarkeit, Client-Server Beziehungen Ersetzbarkeit, Client-Server Beziehungen 182.132 VL Objektorientierte Programmierung Raimund Kirner Mitwirkung an Folienerstellung: Peter Puschner, basieren auf den Folien von Franz Puntigam, TU Wien Überblick

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Einführung in die Cross-Plattform Entwicklung Das Intel XDK

Einführung in die Cross-Plattform Entwicklung Das Intel XDK Einführung in die Cross-Plattform Entwicklung Das Intel XDK Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel XDK vertraut. Es wird Schritt für Schritt die erste eigene Hybrid-App entwickelt

Mehr

Einführung in die Cross-Plattform Entwicklung Das Intel App Framework

Einführung in die Cross-Plattform Entwicklung Das Intel App Framework Einführung in die Cross-Plattform Entwicklung Das Intel App Framework Einführung Dieses Hands-on-Lab (HOL) macht den Leser mit dem Intel App Framework vom Intel XDK vertraut. Es wird Schritt für Schritt

Mehr

PHP 4. E i n e K u r z e i n f ü h r u n g. Vortragender: Kevin Bransdor Datum: 08.05.2002 Folie 1

PHP 4. E i n e K u r z e i n f ü h r u n g. Vortragender: Kevin Bransdor Datum: 08.05.2002 Folie 1 PHP 4 E i n e K u r z e i n f ü h r u n g Vortragender: Kevin Bransdor Datum: 08.05.2002 Folie 1 Was ist PHP? PHP ist eine serverseitige, in HTML eingebettete Skriptsprache. Die Befehlsstruktur ist an

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Microsoft Visual C# 2008

Microsoft Visual C# 2008 John Sharp 13 Microsoft Visual C# 2008 Schritt für Schritt 13 13 14 15 15 16 16 17 17 17 21 22 22 23 25 26 II 40 51 Press 53 54 54 55 55 56 56 57 58 63 63 64 Inhaltsverzeichnis Einleitung 13 Einführung

Mehr

Einführung in VisualBasic for Applications. Stefan Mahlitz

Einführung in VisualBasic for Applications. Stefan Mahlitz Einführung in VisualBasic for Applications Stefan Mahlitz Stefan Mahlitz Einführung in VBA 27.08.00 Inhaltsverzeichnis 1. Grundlagen der VisualBasic for Applications (VBA) Programmierung...2 1.1 Variablen,

Mehr

Kurs für Microsoft Online Kurs Microsoft Analysten Programmierer

Kurs für Microsoft Online Kurs Microsoft Analysten Programmierer Kurs für Microsoft Online Kurs Microsoft Analysten Programmierer Akademie Domani info@akademiedomani.de Allgemeines Programm des Kurses für Microsoft Modul 1 Basis Programm Erste Lerneinheit Einführung

Mehr

ubasic Port für STM32F4 von Uwe Becker

ubasic Port für STM32F4 von Uwe Becker ubasic Port für STM32F4 von Uwe Becker Das original ubasic von Adam Dunkels findet sich unter : http://dunkels.com/adam/ubasic/ Die Minimal -Version vom ubasic-port für den STM32F4 beinhaltet folgendes

Mehr

ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC. - Björn Wilmsmann -

ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC. - Björn Wilmsmann - ZenQuery - Enterprise Backend as a Service Single Page Applications mit AngularJS und Spring MVC - Björn Wilmsmann - ZenQuery Enterprise Backend as a Service Unternehmen horten Daten in Silos ZenQuery

Mehr

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion

HEUTE. Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: Was ist Effizienz? vollständige Induktion 17.11.04 1 HEUTE 17.11.04 3 Effizienzbeispiel: bekannte Version (Übung 04.11.04) Mathematik: was ist Effizienz? vollständige Induktion JAVA: Arrays die for -Schleife die Sprunganweisungen break und continue

Mehr

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung

1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung K05 Vererbung & Polymorphie in C++ 1. Grundlegende Eigenscha5en 2. Redefini+on 3. Polymophie 4. Mehrfachvererbung 2 Vererbung in C++: Grundlagen Analog zu Java unterstützt C++ das Konzept der Vererbung:

Mehr

Fortgeschrittene Servlet- Techniken. Ralf Gitzel ralf_gitzel@hotmail.de

Fortgeschrittene Servlet- Techniken. Ralf Gitzel ralf_gitzel@hotmail.de Fortgeschrittene Servlet- Techniken Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Servlet Initialisierung Attribute und Gültigkeitsbereiche Sessions

Mehr

SQL Server 2005. Eine umfassende Einführung

SQL Server 2005. Eine umfassende Einführung SQL Server 2005 Eine umfassende Einführung E-Mail: petkovic@fh-rosenheim.de Lektorat: Barbara Lauer, Bonn Copy-Editing: Sandra Gottmann, Münster Satz: Just in Print, Bonn Herstellung: Birgit Bäuerlein

Mehr

Grundlagen Programmierung

Grundlagen 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

Mehr