Vorstellung e.solutions

Ähnliche Dokumente
Frontend-Entwicklung mit JavaScript

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

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Über mich. Daniel Bälz. Softwareentwickler (inovex GmbH) github.com/dbaelz

Repetitorium Informatik (Java)

Objektorientiertes JavaScript

Oliver Zeigermann JavaScript für Java-Entwickler

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Scala & Lift. Ferenc Lajko

Mit AngularJS Projekte schnell an die Wand fahren

Skriptsprachen am Beispiel Python

Wir bringen Ihre Notes/Domino Anwendungen sicher ins Web , Bilster Berg Drive Resort Michael Steinhoff, agentbase AG.

Einführung in die STL

Objektorientierung: Klassen und Objekte

Firefox Add-ons. Präsentation in WAP WS09/10 von Christoph ASCHBERGER, Andreas BERTOLIN, Robert MUTTER und Yunzhou XU

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Alltagsnotizen eines Softwareentwicklers

Ergebnisse der Untersuchung zur Eignung einer Programmiersprache für die schnelle Softwareentwicklung kann der Informatikunterricht davon profitieren?

Java für C++ Programmierer

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

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

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Inhaltsüberblick. I. Grundbegriffe - Objekte und Klassen. Organisatorisches. I. Grundbegriffe - Objektorientierte Konzepte

Einführung in die Programmierung mit Java. Hörsaalübung

Berner Fachhochschule Hochschule für Technik und Informatik HTI. Kapitel 1. Einstieg in Java. Dr. Elham Firouzi

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

Java Vererbung. Inhalt

Java Einführung Methoden. Kapitel 6

Cross-Platform Mobile Apps

Präsentation Interfaces

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Einführung in Eclipse und Java

Kurzeinführung in C/C++ Elementare Datentypen in C++

13 OOP MIT DELPHI. Records und Klassen Ein Vergleich

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

Einführung in die Programmierung 1

Erste Schritte der Programmierung in C

Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell

ConUti GmbH - Ihr starker Partner eai@conuti.de l ConUti Ihr starker Partner. B2B Schulungen

Fachhochschule Wiesbaden - Fachbereich DCSM. Skriptsprachen. Moderne, objekt-orientierte Skriptsprachen mit Betonung auf Ruby

Vorkurs C++ Programmierung

Funktionale Programmiersprachen

Computeranwendung und Programmierung (CuP)

Einführung in das Google Web Toolkit am Beispiel eines Projektes aus der Verkehrstelematik

Dirk Reinemann Working Student Sales Consulting

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Software-Entwurfsmuster

Factory Method (Virtual Constructor)

Programmieren von Webinformationssystemen

Einführung in die objektorientierte Programmierung. mit Squeak

Java I Vorlesung Vererbung und Sichtbarkeit

Objektorientierte Programmierung

Java Einführung Programmcode

Objektorientierte Programmierung OOP Programmieren mit Java

Test Driven Development

Testen und Debuggen von Webanwendungen

Ein UI in zwei Welten - Controls in HTML5 und WPF. Timo Korinth

JS goes mobile: Eine Übersicht. Frederik von Berg w11k / thecodecampus

Einführung in die Programmierung mit Java

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

Probeklausur: Programmierung WS04/05

Zustand und Entwicklung von DSpace

Inhaltsverzeichnis. Geleitwort Einleitung... 13

Web und Mobile Apps Programmieren mit Dart

Einführung in PHP. (mit Aufgaben)

Programmieren von Webinformationssystemen

Moderne Web-Anwendungen mit Vaadin

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

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

Lua Grundlagen Einführung in die Lua Programmiersprache

Algorithmen mit Python

JavaScript: Von einfachen Scripten zu komplexen Anwendungen. MMT Dezember 2011

New Features Oracle Forms 11g Nichts Neu für Forms?

Teil 2: OOP und JAVA (Vorlesung 11)

Wolmerin; Java lernen y. mit Eclipse 3. Galileo Computing

Groovy und CouchDB. Ein traumhaftes Paar. Thomas Westphal

Über den Autor 7. Teil I Los geht s mit Java für die Android-Entwicklung 25. Kapitel 1 Alles über Java und Android 27

Funktionale Programmierung

PHP Aufbaukurs. Tag 3. PHP5 & Klassen

12) Generische Datenstrukturen

Übung 1: Von einer naiven JavaScript Applikation zu einem modernen Front-End Build:

Übung 1: Object Inspector

Inhaltsverzeichnis. Teil 1 Node.js... 1

Typbasierte Analyse von JavaScipt

JavaScript in Drupal

RAP vs. GWT vs. GAE/J + jquery. Web Technologien im Verlgeich

Aspektorientierte Programmierung. Modellierung und Programmierung 2

Programmierung in Python

Lua. June 9, Marcus Brenscheidt Marcin Golkowski ( Dynamische Programmiersprachen Lua )

Transkript:

Vorstellung e.solutions JavaScript, TDD und Code-Katas 1 Copyright e.solutions 5/3/2017

e.solutions

Das Joint Venture von Audi und Elektrobit

Bereiche bei e.solutions

Bereiche bei e.solutions Erlangen (HMI) Ulm Cluster Instrument (FPK) Infotainment (MIBH) Erlangen (HMI), Ingolstadt (Integration) Rear Seat (SDIS)

Audi TT: Audi Virtual Cockpit Classic Skin Cluster View ( Kleine Bühne ) Classic Skin - Infotainment View ( Große Bühne ) Audi Virtual Cockpit (FPK1, MIBH2) Hi-quality graphics experience, dynamic and user-configurable Sport Skin (TTS)

Audi Q7/A4: Infotainment, Cluster, Rear Seat Audi Virtual Cockpit (FPK1) Audi MMI (MIBH2) Audi Tablet

Porsche Panamera Copyright e.solutions 5/3/2017 8

Webtechnologien und AngularJS - Webseiten basteln? Nicht Webseiten-Basteln, sondern Premium-Infotainment 60 fps : Performance sehr wichtig Wie funktioniert der Browser und die Rendering-Pipeline? Unit-Tests, Integrations-Tests, End-To-End-Tests State-Of-The-Art der Webentwicklung für Embedded -Entwicklung nutzen Wir sind keine Web-Bude ;-)

JavaScript Das ist doch keine Programmiersprache für richtige Entwickler(innen)!

JavaScript: The good, the bad, the ugly 1+2=2+1, also [] + [] =??? [] + {} =??? {} + [] =??? {} + {} =??? []+(-~{}-~{}-~{}-~{})+(-~{}-~{}) =???

Bausteine von JavaScript Funktionen Funktionen als Sprachkonstrukte erster Klasse: Parameter, Rückgabewerte, Funktionen definieren einen eigenen Scope function hello() { console.log( hello ); } hello(); function callfunction(f) { f(); } callfunction(hello); function returnhello() { return hello; } returnhello()();

Bausteine von JavaScript Objekte Objekte als Map / Sammlung von Name-Wert-Paaren Funktionen sind mögliche Werte x = { a: "hello", b: [1,2,3], f: function() { console.log("f"); } } x.a = "hallo"; console.log(x.b); x.f();

JavaScript Funktionale Programmierung Funktionen statt Objekte/Daten im Vordergrund (kein globaler Zustand) Funktionen als Sprachkonstrukte erster Ordnung, Kombination und Verkettung von Funktionen Funktionale Programmierung hat eine Renaissance erlebt mit der Verbreitung von JavaScript, funktionale Aspekte in Java 8 (Lambda) JavaScript ist keine reine funktionale Sprache

JavaScript Funktionale Programmierung Map, Reduce, Filter arr = [1,2,3]; arr.map(x => x*x); arr.filter(x => x%2==0); arr.reduce((x, y) => x+y); oder alle zusammen arr.map( ).reduce( ).filter( ) Weiterer Ausbau: RxJS https://github.com/reactive-extensions/rxjs

JavaScript Objektorientierte Programmierung Für OOP benötigt man Objekt-Definitionen In JavaScript dynamische Typisierung Alter Weg: Prototypen übernehmen Rolle der Objektdefinition, können aber zur Laufzeit angepaßt werden Neuer Weg: Ab JavaScript ES6 sind normale Klassendefinitionen möglich Echte Typisierung mit TypeScript

JavaScript - OOP Prototypen Prototypen entsprechen einer Klassendefinition function Dummy(v) { this.value = v; this.print = function() { console.log("print: "+this.value); } } new Dummy("hello").print(); Dummy.prototype.printer = function() { console.log("printer: "+this.value); } new Dummy("hello").printer(); Copyright e.solutions 5/3/2017 17

JavaScript OOP Die neue Welt mit ES6 Naja, das kennt man ja class, constructor, class DummyES6 { constructor(v) { this.value = v; } print() { console.log(this.value); } } new DummyES6("hello").print(); Copyright e.solutions 5/3/2017 18

JavaScript OOP Richtige Typisierung mit TypeScript Was ergänzt TypeScript? U.a. Typen: var num:number = 15; var name:string = 123 ; function bla(arg1:string) { } Klassen Generics TypeScript-Compiler Übersetzung von TS in JS Wird von Toolchain automatisch erledigt Map-Datei zum Debugging

Test-Driven Development

TDD Was ist es? Idee: Tests zuerst schreiben Tests aus Requirements ableiten, Code danach schreiben Warum? Code deckt genau das ab, was man braucht Erfassung der Requirements Code ist optimal auf Unit-Test ausgerichtet Bessere Code-Struktur

TDD in der Praxis Aber in der Praxis? Für viele Features schwierig anzuwenden, z.b. Komponenten, die stark vernetzt sind Nebenläufigkeit/Queues Gut für abgeschlossene Funktions-Komponenten

Code-Katas

Code-Katas Kleine, abgeschlossene Übungen Begriff aus der japanischen Kampfkunst: häufige Wiederholung fürs Lernen eine Fähigkeit Bei uns: Vergleich und Diskussion der Lösungen 03.05.2017 24

JS-Code-Katas mit Codewars https://www.codewars.com/ kata/fibonacci-number/ train/javascript Copyright e.solutions 5/3/2017 25

Beispiel: JavaScript-Kata mit TDD - Fibonacci

und noch eine Aufgabe! Maximum Subarray Sum https://www.codewars.com/kata/maximum-subarraysum/train/javascript Copyright e.solutions 5/3/2017 27

Noch Fragen? https://www.esolutions.de/ Matthias Bezold <matthias.bezold@esolutions.de> 28 Copyright e.solutions 5/3/2017