E13 "Behind the Wild"

Relevanta dokument
E13 Behind the Wild. Dagens agenda. Cookies Context/ändra context Augmentation (förstärkning) Klassiskt arv Att låna metoder Namespaces Postludium

E12 "Evil is going on"

E12 "Evil is going on"

E03 "Day 3: 2:00 p.m 3:00 p.m"

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

E07 "Greased Lightning"

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Metoder. Inledande programmering med C# (1DV402)

Avancerade Webbteknologier

Objektorienterad programmering Föreläsning 12. Copyright Mahmud Al Hakim

EDA095 JavaScript. Per Andersson. Maj 4, Lund University Per Andersson EDA095 JavaScript Maj 4, / 23

F15 Tillgänglighet/Accessibility Dagens agenda

TDP013 Node.js, JSCoverage, Mocha. Marcus Bendtsen Institutionen för Datavetenskap

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Det ska endast finnas två bilder av samma typ på spelplanen.

E11 "Protection" Föreläsning 11, HT2014 Säkerhet, tillgänglighet. Johan Leitet. Kurs: 1dv403 Webbteknik I

Inledande programmering med C# (1DV402) Introduktion till. eller så här är det tänkt att fungera.

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Classes och Interfaces, Objects och References, Initialization

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

1ME323 Webbteknik 3 Lektion 6 API. Rune Körnefors. Medieteknik Rune Körnefors

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

OOP Objekt-orienterad programmering

Objektorienterad Programmering (TDDC77)

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Malmö högskola 2007/2008 Teknik och samhälle

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Statistik över heltal

TDP013. Webbprogrammering och interaktivitet. AJAX, CORS & jquery. Marcus Bendtsen Institutionen för Datavetenskap (IDA)

Laboration 1 XML, XPath, XSLT och JSON

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

Laboration 1 - Grunderna för OOP i Java

Har du läst kursen på Campus eller distans Campus 8 53% Distans 7 47%

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

OOP Objekt-orienterad programmering

JAVASCRIPT. Beteende

"HTML5 och relaterade API:er"

Karlstads Universitet, Datavetenskap 1

Föreläsning 16 Arv. Jan Lönnberg T Grundkurs i programmering

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

Välkomna! Webbprogrammerare. Linnéuniversitetet, institutionen för datavetenskap. 120hp Campus/ distans. #wplnu.

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

E09 - Totally Tool Time

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Laboration 1: Figurer i hierarki

Modul 8 Hantering av indata

Klasser och objekt, referenser Grundkurs i programmering med Python

TDDC76 - Programmering och Datastrukturer

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

F8 Webbteknologier 2. PHP PHP: Hypertext Preprocessor

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Labora&on 1 Variabler och beräkningar övningar/uppgi9er

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

Lösningsförslag övning 2.

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Objektorienterad programmering

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

F8 Webbteknologier 1. Dynamiska webbsidor

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Fönsterhanterare i JavaScript PWD, Personal Web Desktop

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

INTRODUKTION TILL ANGULAR JS

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Objektorienterad programmering Föreläsning 8. Copyright Mahmud Al Hakim Agenda (halvdag)

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Föreläsning 5-6 Innehåll

Agenda. Objektorienterad programmering Föreläsning 13

Objektorienterad Programmering (TDDC77)

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Välkomna! Utveckling och drift av mjukvarusystem. Webbprogrammerare. #wplnu #udmlnu.

F8 Webbteknologier 2. EDA095 Nätverksprogrammering. Roger Henriksson Datavetenskap Lunds universitet

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Kopiering av objekt i Java

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

PHP. Dynamiska webbsidor

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Exemple på Tentauppgifter Webbprogrammering

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

Föreläsning 13 Innehåll

Programmering B med Visual C

Objektbaserad programmering

Övningsuppgift. Bankkonton. Steg 2. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

Exempel på användning av arv: Geometriska figurer

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Projektuppgift- Mashup- Applikation

Transkript:

E13 "Behind the Wild" Föreläsning 13, HT2014 Det vi missat och lite till Kurs: 1dv403 Webbteknik I Johan Leitet

E13 Behind the Wild Dagens agenda Cookies Web storage Context/ändra context Augmentation (förstärkning) Klassiskt arv Att låna metoder Templates Namespaces Postludium

Cookies Alterna(v: IP- adress URL <input type= hidden /> Web Storage Undvik att använda mer än 20 cookies per domän Håll dig under 4095 tecken per cookie Du kommer åt cookies via document.cookie

Web Storage Local Storage & Session Storage

h"ps://github.com/mdn/web- storage- demo

Lagen om elektronisk kommunikation

Context this. refererar alltid till det objekt som exekverar koden. window.onload = myobject.mymethod; var myobject = { mymethod: function() { // this hänvisar nu till Window-objektet som är det // objekt som exekverar metoden i myobject. console.log(this === window); //true } } myhyperlink.onclick = myobject.handlemouseclick; var myobject = { handlemouseclick: function() { // På samma sätt refererar nu this till a-taggen. this.href = gotothispage.html ; } }

Ändra context Med metoden call() kan vi tala om i vilken context en funktion ska anropas: function changecolor(color) { this.style.color = color; } var body = document.getelementsbytagname( body )[0]; changecolor.call(body, red ); Första argumentet talar om vilken context som gäller och restrerande parametrar är de parametrar som ska skickas till funktionen. (Det går även att använda.apply() som gör samma sak men tar parametrarna som en array)

Augmentation function Bear(strength){ this.strength = strength; } var oldbear = new Bear(10); var strongbear = new Bear(200); strongbear.addstrength = function(){ this.strength += 100; }; console.log(oldbear.strength); //10 console.log(strongbear.strength); //200 strongbear.addstrength(); console.log(oldbear.strength); //10 console.log(strongbear.strength); //300

Augmentation Vi kan till och med förstärka, bygga ut alla inbyggda objekt! Låna foreach från Array till NodeList? Var dock väldigt försiktig med att lägga till funktionalitet på de inbyggda objekten.

Klassiskt arv Djur

Superklassen function Animal(name){ this.name = name; } Animal.prototype.scream = function(){ console.log("wooooaaaa säger "+this.name); }; Animal.prototype.getName = function(){ return this.name; };

Subklassen function Tiger(name, color){ // Kalla på superklassens konstruktor // (Kopiera egenskaperna från Animal till Tiger) Animal.call(this, name); } this.color = color; // Se till att Tiger ärver från Animal och inte Object Tiger.prototype = new Animal(); // Utöka funktionaliteten Tiger.prototype.roar = function(){ } console.log(this.name.touppercase());

Användning Detta kallas Prototyp-arv (prototype inheritance) animal = new Animal("Gösta"); tiger1 = new Tiger("Janne"); tiger2 = new Tiger("Kalle"); tiger1.roar(); // JANNE tiger2.roar(); // KALLE tiger1.scream(); // Woooaaa säger Janne tiger2.scream(); // Woooaaa säger Kalle animal.scream(); // Woooaaa säger Gösta

Nackdelar, klassiskt arv Konstruktorn körs en extra gång! Egenskaper på objektet kopieras dubbelt.

function Tiger(name){ this.name = name "Janne"; } Att låna metoder Tiger.prototype.roar = function(){ console.log(this.name.touppercase()); }; // ----------------------------------------- function Bear(name){ this.name = name "Grylls"; } var sa = {name: Johan }; var t = new Tiger(); var b = new Bear(); t.roar.call(sa); b.hit.call(sa); Bear.prototype.hit = function(){ console.log(this.name+" ger dig en smäll"); };

Låna foreach

Templates Mycket HTML -kod i JS Svårt att underhålla Svårt att felsöka

Templates

Templates

Templates

Templates Det går att göra mycket mer. Ladda templates asynkront

Templates

Namespaces För att undvika kollisioner i vår kod kan vi paketera vår kod i objekt Namespacing (namnrymder): var LNU = LNU {}; För LNU.util att skapa = LNU.util organisationen {}; kring ditt name space skriver du: LNU.util.shapes = LNU.util.shapes {}; LNU.util.shapes.sayHello = function() { alert( Hello World ); }; Vi kommer nu åt vår funktion genom: LNU.util.shapes.sayHello(); Men om vi vill stoppa in t.ex. en rektangelklass i namnrymden?

Namespaces var LNU = LNU {}; LNU.util = LNU.util {}; LNU.util.shapes = LNU.util.shapes {}; LNU.util.shape.Rectangle = function(width, height) { this.width = width; this.height = height; } LNU.util.shape.Rectangle.prototype.getArea = function() { return (this.width * this.height); } var rect1 = new LNU.util.shapes.Rectangle(10, 20);

Modules AMD Asynchronous Module Definition Används främst asynkront i webbläsaren CJS Common JS Används främst synkront i node.js ES6-modules h"p://addyosmani.com/wri9ng- modular- js/

Require.js (AMD)

Skapa en modul

Vårt huvudprogram

Alternativ om MessageBoard vore en konstrukturfunktion

Få hjälp

Postludium Kapitel 1-14 Kapitel 17, 20-24

Postludium Projektredovisningar: v1503 (Mån, campus, tis distans) Muntlig examination: v1503 (Tidsbokas) Restpass: Håll koll på kursen webbplats.

Postludium HTML/CSS Webbteknisk introduk?on JavaScript, DOM Webbteknik I JS- API:ER Webb- API:er Mashup Webbteknik II Avancerad JS RIA- utveckling med JS Objektorienterad programmering PHP OOAD

I m your father, John Källa: twitter.com/crockfordfacts