Objektorientiertes JavaScript



Ähnliche Dokumente
Objektorientierte Programmierung OOP

Prinzipien Objektorientierter Programmierung

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

Programmieren in Java

Objektorientierte Programmierung

Einführung in die Programmierung

Objektorientierte Programmierung. Kapitel 12: Interfaces

Abschnitt 9: Schnittstellen: Interfaces

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

Objektorientierung: Klassen und Objekte

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

Vererbung & Schnittstellen in C#

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

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Objektorientierte Programmierung

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Klassenbeziehungen & Vererbung

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

Grundkonstrukte der Objektorientierung in Java, C# und C++

Einführung in die Java- Programmierung

Java: Vererbung. Teil 3: super()

3. Konzepte der objektorientierten Programmierung

Klassendiagramm. Kurzer Überblick über UML - Stand BlaBla

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

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

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Grundlagen von Python

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

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

Vorkurs C++ Programmierung

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

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

SEP 114. Design by Contract

Kapitel 6. Vererbung

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

Kapitel 6. Vererbung

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

Vererbung in der OOP

OO Softwareentwicklung

GetName(), GetName(), GetGeschlecht() und AelterWerden().

Factory Method (Virtual Constructor)

Kapitel 6. Vererbung

4 Vererbung, Polymorphie

U08 Entwurfsmuster (II)

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Große Übung Praktische Informatik 1

Robot Karol für Delphi

Wie ist das Wissen von Jugendlichen über Verhütungsmethoden?

Computeranwendung und Programmierung (CuP)

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

5. Abstrakte Klassen

8 Design Patterns. Events

Java Einführung Abstrakte Klassen und Interfaces

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

Behandeln Sie»undefined«als»nicht vorhanden«thema 54

3 Objektorientierte Konzepte in Java

Wir machen neue Politik für Baden-Württemberg

Erfahrungen mit Hartz IV- Empfängern

Tutorium 5 - Programmieren

Der Kopf ist rund, damit das Denken die Richtung

Probeklausur: Programmierung WS04/05

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

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

Zählen von Objekten einer bestimmten Klasse

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

Objektorientiertes Software-Engineering

GI-Technologien zur Umsetzung der EU-Wasserrahmenrichtlinie (WRRL): Wissensbasen. Teil 1: Einführung: Wissensbasis und Ontologie.

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Institut für Programmierung und Reaktive Systeme 26. April Programmieren II. 10. Übungsblatt

Funktionale Programmierung (in Clojure)

Java Kurs für Anfänger Einheit 5 Methoden

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

Objektbasierte Entwicklung

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Konzentration auf das. Wesentliche.

Integrierte und automatisierte GUI-Tests in Java

Glaube an die Existenz von Regeln für Vergleiche und Kenntnis der Regeln

ecommerce Deshalb ist es für Unternehmen jeder Grösse wichtig, den Schritt in den Online-Verkauf nicht zu verpassen.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

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

Programmieren Lernen mit BYOB. Gerald Futschek 5. November 2012

Xcode/Cocoa/Objective-C Crashkurs Programmieren unter Mac OS X

Von Turbo Pascal zu Object Pascal

Studentische Lösung zum Übungsblatt Nr. 7

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

AUFGABE 1 - INTERAKTION AUFGABENSATZ 1

4. AuD Tafelübung T-C3

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Ausgangslage, Rolle und Auftrag

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

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

Anbindung des eibport an das Internet

Grundlagen der Softwaretechnik

Namibiakids e.v./ Schule, Rehoboth, Namibia

Objects First With Java A Practical Introduction Using BlueJ. Mehr über Vererbung. Exploring polymorphism 1.0

Projektmanagement in der Spieleentwicklung

affilinet_ Flash-Spezifikationen

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

Transkript:

Objektorientiertes JavaScript Christoph Fabritz dm121506@fhstp.ac.at http://goo.gl/jzqxnw

Inhalt JavaScript Objektorientierung OO in JavaScript Literatur

JavaScript Interpretiert / gescriptet Dynamische Typisierung Objektorientiert, aber klassenlos Mögliche Stile: prozedural, funktional, objektorientiert

JavaScript Interpretiert / gescriptet Es wird nicht in eine maschinennahe Sprache kompiliert. Da es keinen Compiler gibt, kann dieser auch nicht auf Fehler hinweisen.

JavaScript Dynamische Typisierung Variablen können im Laufe des Programms verschiedene Typen annehmen. Erst zur Laufzeit ist klar, welchen Typ eine Variable hat.

JavaScript + Programm schnell erstellt + Viele Wege zum Ziel aber - Schnell unübersichtlich - Viele Wege zum Ziel - Fehleranfällige Programme

Sicheres JavaScript JSLint http://www.jslint.com/ = Syntaxchecker und Validator + Erzwingt Stilkonventionen

Objektorientierung Eine Möglichkeit (von vielen), Kode zu organisieren und übersichtlicher zu gestalten. Vorsicht: Muss nicht auf alle Probleme passen. Möglichkeiten abwägen und den Objekte- Blick vermeiden. Ist mit einem höheren Aufwand verbunden.

Objektorientierung Verbundene Konzepte Kapselung Polymorphie Vererbung

Objektorientierung Kapselung Verbergen von Implementierungs-Details, Abschottung von Variablen und Funktionen von Außen. Es gibt alleinig eine definierte Schnittstelle. (Blackbox)

Objektorientierung Kapselung + Innere Implementierung kann jeder Zeit verändert werden + Übersichtlicher + Vermeidet unerwünschte Interaktions- Möglichkeiten

Objektorientierung Polymorphie Vielgestaltigkeit Ein Objekt/Methode kann je nach Verwendung/Klasse, unterschiedliches Verhalten zeigen. Z.B.: ToString()

Objektorientierung Vererbung Abgeleitete Klassen besitzen ebenfalls die Methoden und Attribute der Basisklasse. ist ein -Verhältnis

OO in JavaScript In JavaScript durch Prototypisierung realisiert und verzichtet somit auf Klassen. Will man vergleichbare Konzepte der klassischen OO-Programmierung, muss man sie sich selbst implementieren. Unterschiedliche Ansätze zur Realisierung von OO-Konzepten.

OO in JavaScript Klassen Es gibt kein class -Schlüsselwort. Es werden Funktionen verwendet, um Klassen zu realisieren. Definieren Klassen- (statische) und Objektmethoden (brauchen ein Objekt), mit unterschiedlicher Zugänglichkeit (private, public, ).

OO in JavaScript var Person = (function () { Klassen & Kapselung function Person(gender) { } Konstruktor Klassendefinition return Person; }()); var p1 = new Person('male'); Verwendung des Konstruktors

OO in JavaScript Klassen & Kapselung var Person = (function () { var private_klassen_variable = 'text'; function Person(gender) { Private Klassenvariable } Person.public_klassen_function = function () {}; return Person; }()); Public Klassemethode var p1 = new Person('male'); Person.public_klassen_function(); Verwendung

OO in JavaScript Klassen & Kapselung var Person = (function () { var private_klassen_variable = 'text'; function Person(gender) { var private_variable = 23; this.public_function = function() {}; } Person.prototype.public_function2 = function () {}; Person.public_klassen_function = function () {}; return Person; }()); Private Variable und public Methode Alternative Schreibweise var p1 = new Person('male'); p1.public_function(); p1.public_function2(); Person.public_klassen_function(); Verwendung

OO in JavaScript Vererbung Prototypische Vererbung

OO in JavaScript Vererbung function Person(name) {} // Superklasse function Author(name, books) { // SubKlasse } var a1 = new Author('Ein Name', ['Buch 1', 'Buch 2']); console.log(a1 instanceof Person); // false console.log(a1 instanceof Author); // true

OO in JavaScript Vererbung function Person(name) {} // Superklasse function Author(name, books) { Person.call(this, name); } // SubKlasse // Konstruktor der Superklasse Author.prototype = new Person(); // Person als Prototype Author.prototype.constructor = Author; // Konstruktor zurücksetzen var a1 = new Author('Ein Name', ['Buch 1', 'Buch 2']); console.log(a1 instanceof Person); // true console.log(a1 instanceof Author); // true

OO in JavaScript Vererbung function Person(name) {} // Superklasse Person.prototype.say = function () { console.log('in Person'); }; function Author(name, books) { // SubKlasse Person.call(this, name); // Konstruktor der Superklasse } Author.prototype.say = function () { // Überschreiben Person.prototype.say.call(this); // Funktion der Superklasse console.log('in Author'); }; Author.prototype = new Person(); // Person als Prototype Author.prototype.constructor = Author; // Konstruktor zurücksetzen var a1 = new Author('Ein Name', ['Buch 1', 'Buch 2']); console.log(a1 instanceof Person); // true console.log(a1 instanceof Author); // true

OO in JavaScript Vererbung Bequemlichkeits-Funktion: http://goo.gl/ary8sl extend(author, Person);

OO in JavaScript Interfaces Program to an interface, not an implementation. Spezifiziert, welche Methoden ein Objekt haben soll, aber nicht, wie diese implementiert sein sollen.

OO in JavaScript Interfaces + Selbst-Dokumentierender Kode + Wiederverwendbarkeit +Können an andere Programmierer weitergereicht werden, um vorab die Anforderungen festzulegen

OO in JavaScript Interfaces durch Kommentare /* interface Composite { function add(child); function remove(child); function getchild(index); } interface FormItem { function save(); } */ var CompositeForm = function() { // implements Composite, FormItem... };

OO in JavaScript Interfaces durch Duck-Typing http://goo.gl/hrl8af var Composite = new Interface('Composite',['add','remove','get']); var FormItem = new Interface('FormItem', ['save']); var CompositeForm = function() { // implements Composite, FormItem... }; function addform(forminstance) { Interface.ensureImplements(formInstance, Composite, FormItem);... }

Literatur (1) Pro JavaScript Design Patterns Apress Ross Harmes, Dustin Diaz http://goo.gl/1rzzzs

Literatur (2) Secrets of the JavaScript Ninja Manning John Resig, Bear Bibeault http://goo.gl/1mqpoi

Danke für Ihre Aufmerksamkeit