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

Relevanta dokument
E13 "Behind the Wild"

E12 "Evil is going on"

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

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

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

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

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

Classes och Interfaces, Objects och References, Initialization

JAVASCRIPT. Beteende

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

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

E12 "Evil is going on"

F15 Tillgänglighet/Accessibility Dagens agenda

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

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

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

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Metoder. Inledande programmering med C# (1DV402)

Objektorienterad Programmering (TDDC77)

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

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

E07 "Greased Lightning"

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

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

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

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

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

TDDC76 - Programmering och Datastrukturer

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

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

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

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

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

JavaScript. En Introduktion

E09 - Totally Tool Time

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

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

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

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

Introduktion till arv

Modul 8 Hantering av indata

Exempel på användning av arv: Geometriska figurer

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

Laboration 1: Figurer i hierarki

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

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

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

F8 Webbteknologier 2. PHP PHP: Hypertext Preprocessor

Objektorienterad programmering

Lösningsförslag övning 2.

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

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

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

JS & beteende. TNMK30 - Elektronisk publicering

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

TENTAMEN OOP

Kopiering av objekt i Java

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

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

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

Laboration 1 - Grunderna för OOP i Java

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

Objektbaserad programmering

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

Innehåll. Konstruktorer vid arv Regler för basklassens konstruktor. Konstruktorer vid arv. Konstruktorer vid arv. Konstruktorer vid arv

Karlstads Universitet, Datavetenskap 1

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

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

! HTML Formulär! JavaScript! Syntax! Events! DOM. ! URL variabler i en query string (get) ! HTTP post request (post)

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

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

Objektorienterad programmering i Java

Klasser och objekt, referenser Grundkurs i programmering med Python

Avancerade Webbteknologier

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

Klasshierarkier - repetition

TENTAMEN OOP

ID1004 Laboration 4, November 2012

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Java, klasser, objekt (Skansholm: Kapitel 2)

JavaScript. DOM Scripting

Statistik över heltal

Spelprogrammering med JavaScript och HTML5

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

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

TENTAMEN OOP

1ME323 Webbteknik 3 Lek0on 6 API. Rune Körnefors. Medieteknik Rune Körnefors rune.kornefors@lnu.se

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Repetition av viktiga begrepp inom objektorienterad programmering

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Modeller, Objekt och Klasser

Objektorienterad Programmering (TDDC77)

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

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

Transkript:

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

Cookies Alternativ: IP-adress URL <input type= hidden /> HTML 5 DOM-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

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. alert(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)

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"); ;

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! Till exempel skulle vi kunna skapa en egen getelementsbyclassname på document-objektet för de webbläsare som ej stödjer denna funktion. 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 Konstruktorn körs en extra gång! Egenskaper på objektet kopieras dubbelt.

Namespaces För att undvika kollisioner i vår kod kan vi paketera vår kod med hjälp av en kär gammal vän, object literals. 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);

Få hjälp

Kapitel 1-14 Kapitel 17- Postludium

Postludium Projektredovisningar: v1202 Restpass: Första veckan i nästa LP.

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