Objektorientierte Programmierung mit JavaScript
|
|
|
- Linda Förstner
- vor 9 Jahren
- Abrufe
Transkript
1 Ziele Objektorientierte Programmierung mit JavaScript var meta = { author: 'Malte Schmitz', date: new Date(2012, 10, 16), event: 'MetaNook' ; 1. JavaScript-Objekte und -Funkionen verwenden können 2. prototypische (differenzielle) Vererbung verstehen 3. Objektorientierte Konzepte in JavaScript kennen lernen 4. sehen, wie JavaScript-Frameworks diese umsetzen 2 Gliederung Github Teil I Einführung in JavaScript Teil II Objektorientierung mit JavaScript Teil III Objektorientierung mit JavaScript-Frameworks github.com/malteschmitz/js-oop diese Präsentation L A TEX-Quellcode JavaScript-Beispiele 3 4
2 Variablen JavaScript Objekte Vererbung Funktionen Funktionsaufrufe // Deklaration var a; console.log(a); // --> undefined // Initialisierung a = 42; console.log(a); // --> 42 dynamische Typisierung, nicht ungetypt Sichtbarkeitsbereich: ganze aktuelle Funktion console.log(b); // --> undefined // Deklaration und Initialisierung var b = 23; 5 6 Kontrollstrukturen var x = 13; while (x < 15) { console.log(x); // --> 13, 14 x += 1; if (x >= 15) { console.log(x); // --> 15 Objekte keine Instanz einer Klasse dynamische Sammlung von Eigenschaften (Hash, Map,... ) alles ist ein Objekt // Objekt erzeugen var o = {; // Eigenschaft setzen o.foo = 42; // Eigenschaft auslesen console.log(o.foo); // --> 42 // Eigenschaft löschen delete o.foo; 7 // Objekt erzeugen var o = {; 8
3 Objektliterale Iteration über Objekteigenschaften var micia = { name: 'Micia', age: 12 ; for (var key in micia) { var value = micia[key]; console.log(key + ': ' + value); 9 10 && und Duck-Typing // guard operator var name = micia && micia.name; // default operator var obj = micia {; When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck. James Whitcomb Riley if (micia.name) { console.log(micia.name); 11 12
4 globale Variablen differenzielle Vererbung Eigenschaften des globalen Objektes window im Browser Prototyp Prototyp ist ein GoF-Entwurfsmuster. Neue Instanzen basieren auf prototypischen Instanzen (»Vorlagen«). foo = 12; // entspricht window.foo = 12; zwischen Objekten; keine Klassen versteckter Verweis zum Prototypen beim Lesen Rückgriff auf Prototypen alle Objekte erben von Object.prototype differenzielle Vererbung Funktionen micia proto name Micia cody proto name Cody Object.prototype var cody = {name: 'Cody'; var micia = Object.create(cody); console.log(micia.name); //--> Cody micia.name = 'Micia'; console.log(micia.name); //--> Micia delete micia.name; console.log(micia.name); //--> Cody var square = function(x) { return x * x; 15 16
5 Funktionen Funktionsabschluss var sum = function() { var s = 0, i = 0; for (;i < arguments.length; i++) { s += arguments[i]; return s; var makeincrementer = function(n) { return function() { return n++; a = makeincrementer(1); b = makeincrementer(5); console.log(a()); // --> 1 console.log(b()); // --> 5 console.log(a()); // --> 2 console.log(b()); // --> Funktionsaufrufe Funktionsaufrufe Aufruf sum() obj.sum() sum.apply(foo) new sum() this globales Object obj foo neues Object sum(1,2,3); sum.apply(window, [1, 2, 3]); sum.call(window, 1, 2, 3); micia.add = sum; micia.add(1,2,3); sum.apply(micia, [1, 2, 3]); sum.call(micia, 1, 2, 3); 19 20
6 prototype-eigenschaft new-operator var f = function() {; // impliziert f.prototype = { constructor: f ; var a = new Fun(42); // entspricht var a = Object.create(Fun.prototype); var res = Fun.call(a, 42); if (res && (typeof res === 'object' typeof res === 'function')) { a = res; new-operator Funktionen var Animal = function(name) { ; Animal.prototype.say = function(t) { ; var erwin = new Animal('Erwin'); erwin.say('hello'); // --> Erwin: Hello Funktion Methode Klasse Konstruktor Modul function() 23 24
7 Iteration über eigene Objekteigenschaften Object.create for (var key in micia) { if (Object.prototype. hasownproperty.apply(micia, key)) { var value = micia[key]; console.log(key + ': ' + value); if (typeof Object.create!== 'function') { Object.create = function(obj) { var F = function(){; F.prototype = obj; return new F(); von Katzen und Hunden Objektorientierung direkt-prototypische Vererbung direkt-kopierende Vererbung pseudoklassische Vererbung prototypische Vererbung funktionale Vererbung Animal +name: String +say(t: String): void Cat +meow(): void Dog +bark(): void 27 28
8 Objektorientierung direkt-prototypische Vererbung Verweis versteckter Verweis zum Prototypen Kopie Kopien aller Eigenschaften des Prototyps direkt-prototypische Vererbung (Verweis) direkt-kopierende Vererbung (Kopie) pseudoklassische Vererbung (Verweis) prototypische Vererbung (Verweis) funktionale Vererbung (Kopie) var cody = { name: 'Cody', ; var micia = Object.create(cody); micia.name = 'Micia'; micia.meow = function() { ; direkt-kopierende Vererbung direkt-kopierende Vererbung var cody = { name: 'Cody', ; var micia = {; copyproperties(cody, micia); micia.name = 'Micia'; micia.meow = function() { ; var ownprop = Object.prototype.hasOwnProperty; var copyproperties = function(from, to) { for (var key in from) { if (ownprop.call(from, key)) { to[key] = from[key]; 31 32
9 pseudoklassische Vererbung prototypische Vererbung var Animal = function(name) { ; Animal.prototype.say = function(t) { ; var Cat = function(name) { ; Cat.prototype = new Animal(); Cat.prototype.constructor = Cat; Cat.prototype.meow = function() { ; var micia = new Cat('Micia'); var animal = makeconstructor(object, function(name) {, { ); var cat = makeconstructor(animal, function(name) {, { meow: function() { ); var micia = cat('micia'); prototypische Vererbung funktionale Vererbung var makeconstructor = function(extend, initializer, methods) { var proto = Object.create(extend && extend.prototype); copyproperties(methods, proto); var func = function() { var that = Object.create(proto); if (typeof initializer === 'function') { initializer.apply(that, arguments); return that; func.prototype = proto; proto.constructor = func; return func; var animal = function(name) { return { name: name, ; var cat = function(name) { var that = animal(name); that.meow = function() { return that; ; var micia = cat('micia'); 35 36
10 funktionale Vererbung var animal = function(name) { return { console.log(name + ': ' + t); ; var cat = function(name) { var that = animal(name); that.meow = function() { return that; ; Frameworks Underscore.js und _.extend jquery und $.extend YUI und Y.extend Backbone.js und Backbone.Model.extend MooTools und new Class Prototype und Class.create var micia = cat('micia'); Underscore.js und _.extend direkt-kopierende Vererbung var cody = { name: 'Cody', ; var micia = {; _.extend(micia, cody, { name: 'Micia', meow: function() { ); Underscore.js und _.extend var _ = {; _.extend = function(obj) { var sources = makearray(arguments).slice(1); for (var key in sources) { var source = sources[key]; for (var prop in source) { obj[prop] = source[prop]; return obj; 39 40
11 jquery und $.extend direkt-kopierende Vererbung jquery und $.extend direkt-kopierende Vererbung // shallow copy var cody = { food: ['dried food', 'meat'] ; var micia = {; $.extend(micia, cody); micia.food.push('fish'); console.log(micia.food); // --> ['dried food', 'meat', 'fish'] console.log(cody.food); // --> ['dried food', 'meat', 'fish'] // deep copy var cody = { food: ['dried food', 'meat'] ; var micia = {; $.extend(true, micia, cody); micia.food.push('fish'); console.log(micia.food); // --> ['dried food', 'meat', 'fish'] console.log(cody.food); // --> ['dried food', 'meat'] typeof ist kaputt jquery und $.type Typ undefined null Array Boolean Number String Funktion alles andere typeof 'undefined' 'object' 'object' 'boolean' 'number' 'string' 'function' 'object' var class2type = []; var types = ['Boolean', 'Number', 'String', 'Function', 'Array', 'Date', 'RegExp', 'Object']; for (var i = 0; i < types.length; i++) { class2type['[object ' + types[i] + ']'] = types[i].tolowercase(); jquery.type = function(obj) { return obj == null? String(obj) : class2type[object.prototype.tostring.call(obj)] 'object'; ; 43 44
12 YUI und Y.extend prototypische Vererbung var Animal = function() {; Animal.prototype.say = function(t) { ; var Cat = function(name) { ; Y.extend(Cat, // the constructor to modify Animal, // the constructor to inherit { // prototype properties to add/override meow: function() { this.say('meow!'), { // static properties to add/override limit: 'sky' ); var micia = new Cat(); console.log(cat.limit); // --> sky 45 YUI und Y.extend var Y = {; // r - receiver: the function to modify // s - sender: the function to inherit from // px - prototype properties to add to r.prototype // sx - static propoperties to add to r Y.extend = function(r, s, px, sx) { r.prototype = Object.create(s.prototype); r.prototype.constructor = r; // fix constructor property of sender if (s!= Object && s.prototype.constructor == Object.prototype.constructor) { s.prototype.constructor = s; // add prototype overrides if (px) { copyproperties(px, r.prototype); // add object overrides if (sx) { copyproperties(sx, r); return r; ; 46 Backbone.js und Backbone.Model.extend prototypische Vererbung var Animal = Backbone.Model.extend({ console.log(this.get('name') + ': ' + t);, { limit: 'sky' ); var Cat = Animal.extend({ meow: function() {, { border: 'none' ); var micia = new Cat({name: 'Micia'); console.log(cat.border); // --> none console.log(cat.limit); // --> undefined MooTools und new Class prototypische Vererbung var Animal = new Class({ initialize: function(name){, ); var Cat = new Class({ Extends: Animal, this.parent(t + ', Meow!'); ); var micia = new Cat('Micia'); micia.say('hi'); // --> Micia: Hi, Meow! 47 48
13 MooTools und new Class kopierende Vererbung Prototype und Class.create prototypische Vererbung var Animal = new Class({ initialize: function(name){, ); var Dog = new Class({ Implements: Animal, bark: function() { this.say('woof!'); ); var cody = new Dog('Cody'); cody.bark(); // --> Cody: Woof! var Animal = Class.create({ initialize: function(name){, ); var Cat = Class.create(Animal, { say: function($super, t) { $super(t + ', Meow!'); ); var micia = new Cat('Micia'); micia.say('hi'); // --> Micia: Hi, Meow! Zusammenfassung Crockford on JavaScript Prototypische/differenzielle Vererbung ist eine Verallgemeinerung der klassenbasierten Verberbung. Klassenbasierte Vererbung kann in JavaScript simuliert werden. Es muss zwischen Vererbung durch Verweis und Vererbung durch Kopie unterschieden werden. In der Praxis sucht man sich eines der vielen Frameworks für Objektorientierte Programmierung mit JavaScript. Volume One: The Early Years 25. Januar 2010 Chapter 2: And Then There Was JavaScript 5. Februar 2010 Act III: Function the Ultimate 17. Februar 2010 Episode IV: The Metamorphosis of Ajax 3. März 2010 Part 5: The End of All Things 31. März
14 Bücher David Flanagan JavaScript: The Definitive Guide Douglas Crockford JavaScript: The Good Parts partielle Applikation geschützte Eigenschaften Implementierung jquery Implementierung Backbone Implementierung MooTools Implementierung Prototype makearray partielle Applikation var makearray = function(a) { return Array.prototype.slice.call(a); ; var add = function(a,b) { return a + b; ; var inc = partial(add,1); console.log(inc(6)); // --> 7 var partial = function(func) { var fixed = makearray(arguments).slice(1); return function() { var args = makearray(arguments); return func.apply(null, fixed.concat(args)); ; ; 55 56
15 funktionale Vererbung var animal = function(name, secret) { secret = secret {; secret.name = name; return { console.log(secret.name + ': ' + t); var cat = function(name) { var that = animal(name); that.meow = function() { ; that.name = function() { return secret.name; return that; var micia = cat('micia'); console.log(micia.name()); // --> Micia jquery und $.extend var jquery = {, $=jquery; jquery.extend = function(deep) { var options, name, src, copy, clone, i, target = arguments[1] {; for (i = 1; i < arguments.length; i++) { if ((options = arguments[i])!= null) { for (name in options) { src = target[name]; copy = options[name]; if (deep && copy && jquery.isplainobject(copy)) { clone = jquery.isplainobject(src)? src : {; target[name] = jquery.extend(deep, clone, copy); else if (copy!== undefined) { target[name] = copy; return target; ; jquery und $.isplainobject jquery.isplainobject = function(obj) { var ownprop = Object.prototype.hasOwnProperty; if (!obj jquery.type(obj)!== 'object' obj.nodetype obj == obj.window) { return false; if (obj.constructor &&!ownprop.call(obj, 'constructor') &&!ownprop.call(obj.constructor.prototype, 'isprototypeof')) { return false; // Own properties are enumerated firstly, so to speed up, // if last one is own, then all properties are own. Backbone.js und Backbone.Model.extend var Backbone = { Model: function() { ; Backbone.Model.extend = function(protoprops, classprops) { var child = inherits(this, protoprops, classprops); child.extend = this.extend; return child; ; var key; for (key in obj) { return key === undefined ownprop.call(obj, key); ; 59 60
16 Backbone.js und Backbone.Model.extend var inherits = function(parent, protoprops, staticprops) { var child; if (protoprops && protoprops.hasownproperty('constructor')) { child = protoprops.constructor; else { child = function(){ parent.apply(this, arguments); ; // Inherit class (static) properties from parent. _.extend(child, parent); child.prototype = Object.create(parent.prototype); if (protoprops) _.extend(child.prototype, protoprops); if (staticprops) _.extend(child, staticprops); child.prototype.constructor = child; return child; ; 61 MooTools und new Class var Class = function(params){ if (typeof params === 'function') { params = {initialize: params; var newclass = function(){ reset(this); if (this.initialize) { return this.initialize.apply(this, arguments); copyproperties(this,newclass); implementproperties(params,newclass); return newclass; ; Class.Mutators = { Extends: function(parent){ this.prototype = Object.create(parent.prototype);, Implements: function(item){ implementproperties(item, this); ; 62 MooTools und new Class var implementproperties = function(from,to) { for (var key in from) { if (Object.prototype.hasOwnProperty.call(from, key)) { if (Class.Mutators.hasOwnProperty(key)){ Class.Mutators[key].call(to, from[key]); else { to.prototype[key] = from[key]; var reset = function(object){ for (var key in object){ var value = object[key]; if (typeof value === 'object') { object[key] = reset(object.create(value)); return object; ; 63 Prototype und Class.create var Class = {Methods: {; Class.create = function() { var parent = null, properties = makearray(arguments); if (typeof properties[0] === 'function') parent = properties.shift(); var klass = function() { this.initialize.apply(this, arguments); copyproperties(class.methods, klass); if (parent) { klass.prototype = Object.create(parent.prototype) klass.prototype.constructor = klass; for (var i = 0; i < properties.length; i++) klass.addmethods(properties[i]); if (!klass.prototype.initialize) klass.prototype.initialize = function() {; return klass; 64
17 Prototype und Class.create Prototype und Class.create Class.Methods.addMethods = function(source) { var ancestor = this.superclass && this.superclass.prototype; for (var property in source) { var value = source[property]; if (ancestor && typeof value === 'function' && argumentnames(value)[0] === '$super') { value = (function(p,v) { return function() { var a = [ancestor[p].bind(this)]. concat(makearray(arguments)); return v.apply(this, a); ; )(property, value); this.prototype[property] = value; var argumentnames = function(f) { var re = /^[\s\(]*function[^(]*\(([^)]*)\)/; var names = f.tostring().match(re)[1].replace(/\/\/.*?[\r\n] \/\*(?:. [\r\n])*?\*\//g, '').replace(/\s+/g, '').split(','); return names.length == 1 &&!names[0]? [] : names; return this; 65 66
Gebundene Typparameter
Gebundene Typparameter interface StringHashable { String hashcode(); class StringHashMap { public void put (Key k, Value v) { String hash = k.hashcode();...... Objektorientierte
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:
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
Objektorientierung: Klassen und Objekte
Vorlesung und Übung Universität Paderborn Wintersemester 2015/2016 Dr. Peter Pfahler Objektorientierung: Klassen und Objekte EWS, WS 2015/16, Pfahler L-1 Objektorientierung behandelt in "Einführung in
Objektorientiertes JavaScript
Objektorientiertes JavaScript Christoph Fabritz [email protected] http://goo.gl/jzqxnw Inhalt JavaScript Objektorientierung OO in JavaScript Literatur JavaScript Interpretiert / gescriptet Dynamische
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
Ich liebe Java && Ich liebe C# Rolf Borst
Ich liebe Java && Ich liebe C# Rolf Borst Java oder C#? Einführung public class Einfuehrung { private int gesamtzahl = 0; /* Ermittelt die Anzahl der geraden und durch drei teilbaren Zahlen */ public String
Übung 1 mit C# 6.0 MATTHIAS RONCORONI
Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,
Prinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
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
Neue Features in C# 2.0
Neue Features in C# 2.0 (gekürzt) Generische Typen Iteratoren Vereinfachte Delegate-Erzeugung Anonyme Methoden Partielle Klassen Sonstiges University of Linz, Institute for System Software, 2004 published
Studentische Lösung zum Übungsblatt Nr. 7
Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int
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
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
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,
Objektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Übungsblatt 5 Lösungsvorschlag Objektorientierte Programmierung 22. 05. 2006 Lösung 9 (SMS-Eingabe am
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
Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung
Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:
Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
Einführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger [email protected] WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
Factory Method (Virtual Constructor)
Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte
Informatik ist viel mehr als Delphi-Programmierung!
Gliederung 1. Objektorientierte Programmierung mit Object Pascal (5. Studienbrief, Kapitel 5) 9.4. + 16.4. 2. Software-Bausteine am Beispiel der Delphi-Komponenten (5. Studienbrief, Kapitel 5) 23.4. 3.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin
Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein ([email protected].
Java Crashkurs Kim-Manuel Klein ([email protected]) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)
string: Beispiele: Test, test, `Seitentitel: ${document.title}`
JS Crashkurs Einige JavaScript spezifische Dinge zusammengefasst. Datentypen Javascript kennt folgende primitiven Datentypen: undefined number: Beispiele: 1 1.0.0 1. 0x1 1e0 boolean: true oder false string:
Kapitel 6. Vererbung
Kapitel 6 Vererbung Vererbung 1 Ziele Das Vererbungsprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen
Java-Schulung Grundlagen
Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings
C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung
C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung 1. "Hai!" [Konsolenanwendung] Console.WriteLine("Hai, wie geht's?"); 2. Muktiplikation mit sich selbst [Konsolenanwendung] // Ausgabe
7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure
7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte
BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio 16.04.2015 1/9
BTree.dll Realisiert mit Microsoft Visual Studio 16.04.2015 1/9 INHALT 1. Allgemein... 3 2. Class BTree1 (balanciert)... 3 3. Class BTree2 (balanciert und verkettet)... 4 4. Beschreibung BTree1 und BTree2...
Klassenbeziehungen & Vererbung
Klassenbeziehungen & Vererbung VL Objektorientierte Programmierung Raimund Kirner teilweise nach Folien von Franz Puntigam, TU Wien Überblick Arten von Klassenbeziehungen Untertypen versus Vererbung in
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
Das lustige Überlebenshandbuch. Oliver Pehnke, Benjamin Schmid
Das lustige Überlebenshandbuch für JavaScript Oliver Pehnke, Benjamin Schmid nasa.org ist die erfolgreichste Sprache JavaScript JavaScript ist die erfolgreichste Sprache im im bekannten bekannten Universum.
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
javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.
javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline. Inhalts-Verzeichnis 1. Allgemeine Richtlinien...1 1.1 Anzahl
FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen
5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden
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; {
Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"
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
Kontrollstrukturen und Funktionen in C
Kontrollstrukturen und Funktionen in C Lernziele: Vertiefen der Kenntnisse über Operatoren, Kontrollstrukturen und die Verwendung von Funktionen. Aufgabe 1: Quickies: Datentypen in C a) Was sind die elementaren
Objektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
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
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
Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.
Universität Osnabrück 1 Problemstellung 3 - Objektorientierte Programmierung in Java Vorlesung 24: Reflection 1 SS 2006 Prof. Dr. Frank M. Thiesing, FH Osnabrück Um ein Objekt anzulegen, eine seiner Methoden
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
Behandeln Sie»undefined«als»nicht vorhanden«thema 54
Behandeln Sie»undefined«als»nicht vorhanden«151 heitliche Schreibweisen erlauben es den Benutzern, zu erraten, welche Eigenschaften und Methoden zur Verfügung stehen, ohne dass sie sie nachschlagen müssen,
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
Java - Programmierung - Objektorientierte Programmierung 1
Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1
Modul 122 VBA Scribt.docx
Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval
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
PHP Aufbaukurs. Tag 3. PHP5 & Klassen
PHP Aufbaukurs Tag 3. PHP5 & Klassen Organisatorisches 2 Igor Olkhovskiy Dr. Dipl.- Ing. Kontakt: [email protected] PHP Aufbaukurs 19.09.2006 Folie 2 PHP. OOP. Geschichte 3 PHP/FI ( PHP 1
Coffeescript. Javascript the good parts
Coffeescript Javascript the good parts Sebastian Deutsch http://9elements.com Follow me on Twitter: http://twitter.com/sippndipp [email protected] Wenn ich JAVA höre, dann sehe ich... Als
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
Dokumentation für Popup (lightbox)
Dokumentation für Popup (lightbox) Für das Popup muss eine kleine Anpassung im wpshopgermany Plugin vorgenommen werden und zwar in der Datei../wp-content/plugins/wpshopgermany/controllers/WarenkorbController.class.php
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
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
C# im Vergleich zu Java
C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:
Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang
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-
AJAX Implementierung mit Joomla!
Joomla! DAY TM AUSTRIA 2015 AJAX Implementierung mit Joomla! Inhalt AJAX Implementierung mit Joomla! Inhalt Einleitung Was ist AJAX und wie funktioniert es Joomla! & AJAX AJAX in Templates mit Komponenten
EINI WiMa/LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa/LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund [email protected] http://ls1-www.cs.uni-dortmund.de
Code-Organisation in JavaScript
Code-Organisation in JavaScript Webworker-Stammtisch NRW 10. Januar 2013 Frederic Hemberger Codekapselung What happens in Vegas, stays in Vegas. Warum sollte man Code kapseln? Wir haben immer mehr Scripte
Einführung in ActionScript
Fachbereich Mathematik und Informatik Softwareprojekt: Spieleprogrammierung Einführung in ActionScript Do, Hoang Viet([email protected]) Freie Universität Berlin, SoSe 2012 Agenda Allgemeine Einführung
Zusammenfassung des Handzettels für Programmieren in C
Zusammenfassung des Handzettels für Programmieren in C In der handschriftlichen Kopie werden mehr Abkürzungen verwendet. Alles Grün markierte dient zum lernen und wird nicht auf den Handzettel übertragen.
Einführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
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:
Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005
Praktikum Datenbanksysteme Ho Ngoc Duc IFIS - Universität zu Lübeck 01.06.2005 Tomcat-Installation $JAVA_HOME (z.b. /home/dbp00/j2sdk1.4.2) $CATALINA_HOME (/home/dbp00/jakarta-tomcat-4) Skripte zum Start/Stop:
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
C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.
C-Crash-Kurs Eine kurze, keinesfalls erschöpfende Einführung in die Sprache C für Studierende, die eine strukturierte imperative Programmiersprache beherrschen. Die Vorstellung erfolgt am Beispiel von
Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff
Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.
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
Programmierung in Python
Programmierung in Python imperativ, objekt-orientiert dynamische Typisierung rapid prototyping Script-Sprache Funktionales und rekursives Programmieren P raktische Informatik 1, W S 2004/05, F olien P
JavaScript in Drupal
JavaScript in Drupal JavaScript JavaScript ist nicht Java JavaScript ist keine reine Web-Sprache JavaScript ist benutzbar Web 1.0 Dreamweaver Mouseover-Scripts Dinge, die dem Cursor nachfliegen Schneeflocken
Die Programmiersprache C99: Zusammenfassung
Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach
Arrays Fortgeschrittene Verwendung
Arrays Fortgeschrittene Verwendung Gilbert Beyer und Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik http://www.pst.ifi.lmu.de/lehre/wise-11-12/infoeinf WS11/12 Arrays: Wiederholung
Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt Tag 3 - Objektorientierung Warum Objektorientierung Daten und Funktionen möglichst eng koppeln und nach außen kapseln Komplexität der Software besser modellieren
Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen
Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere
Web-Techniken Einführung in JavaScript
Web-Techniken Einführung in JavaScript Prof. Dr. Axel Böttcher Winter 2012/13 15. September 2012 Ausführung von JavaScript Variante 1: Ausführung im Browser durch direktes Einbetten: 1 2
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/
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
Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen
Einleitende Bemerkungen Einleitende Bemerkungen Ideen hinter der objektorientierten Programmierung Objekte (/* Instanzen einer Klasse */) im Mittelpunkt Objekte bilden Einheit aus Daten (/* Attributen,
Objektorientierte Programmierung
Programmierkurs C++ Kapitel 7:Objektorientierte Programmierung Seite 1 Objektorientierte Programmierung If programming in PASCAL is like put in a straightjacket, then programming in C is like playing with
Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten
Objekt Objekt kapselt Variablen und Routinen Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten Eigenschaften jedes Objekts: Identität (identisch = mehrere
Einführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
Assoziation und Aggregation
Assoziation und Aggregation Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Nora Koch 05/03 2 Ziele Verstehen der Begriffe Assoziation und Aggregation Implementierung von Assoziationen in Java schreiben
Besonderheiten von C#
Besonderheiten von C# Wert- und Referenztypen int a, b; a = 3; b = a; a++; Debug.Assert( a==4 && b==3 &&!a.equals(b), "int ist doch kein Werttyp" ); RTyp ra, rb; ra = new RTyp(3); rb = ra; ra.inc(); Debug.Assert(
Objektorientierte Programmierung OOP
Objektorientierte Programmierung OOP Objektorientierte Programmierung OOP Ronja Düffel WS2012/13 08. Oktober 2013 Objektorientierte Programmierung OOP Objektorientierte Programmierung Objektorientierte
WPF Steuerelemente Listbox, ComboBox, ListView,
WPF Steuerelemente Listbox, ComboBox, ListView, Dr. Beatrice Amrhein Überblick Einführung Listen ComboBox Tabellen 2 Einführung 3 Listen- und Tabellen-Elemente Listen und Tabellen-Elemente sind Steuerelemente,
Java Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
12) Generische Datenstrukturen
12) Generische Datenstrukturen Prof. Dr. rer. nat. habil. Uwe Aßmann Lehrstuhl Softwaretechnologie Fakultät für Informatik TU Dresden Version 09-0.2, 24.11.08 Softwaretechnologie, Prof. Uwe Aßmann 1 mpfohlene
Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Arrays: Wiederholung Ein Array ist ein Tupel von Elementen gleichen
Programmieren in Java
Programmieren in Java Vorlesung 07: Composite Classes Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2017 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 23 Inhalt
