Exemple på Tentauppgifter Webbprogrammering

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

JAVASCRIPT. Beteende

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Modeller, Objekt och Klasser

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Modern webbutveckling. av Robert Welin-Berger

TENTAMEN OOP

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

Föreläsning 13 Innehåll

Objekt, Klasser, Paket m. m.

Innehåll. Pekare Exempel

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

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

Lab5 för prgmedcl04 Grafik

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

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

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

INTRODUKTION TILL ANGULAR JS

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Inledande programmering med C# (1DV402) Tärningarna ska kastas

TENTAMEN OOP

Innehåll. Pekare Exempel

Föreläsning 8: Exempel och problemlösning

Innehåll. Dokumentet gäller från och med version

Retrieve a set of frequently asked questions about digital loans and their answers

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

JavaScript in SharePoint and not just for Apps. Wictor Wilén

DAT043 - Föreläsning 7

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

Innehåll. Användardefinierade typer. Användardefinierade typer Kategorier. Konstruktorer. Konstruktorer Två sätt att skriva initiering av medlemmar

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

TDDD78 Objektorientering: Lagring och livstid

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Ajax TruClient. Erfarenheter, tips och trix från Swedbank IT. Christian Gerdes Performance Engineer, LIGHTS IN LINE AB

Java, klasser, objekt (Skansholm: Kapitel 2)

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

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Tentamen Nätverksprogrammering Lösningsförslag

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

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

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

Föreläsning 5-6 Innehåll

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

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

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

Funktionens deklaration

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Tentamen i Introduktion till programmering

Klassdeklaration. Metoddeklaration. Parameteröverföring

Kursplanering Utveckling av webbapplikationer

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Webbteknik II. Föreläsning 5. Restless farewell. John Häggerud, 2011

OOP. vs procedural programming Design av interaktiv multimedia

Objektorientering: Lagring, räckvidd och livstid

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Objektsamlingar i Java

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Tentamen i Grundläggande Programvaruutveckling, TDA548

Objektorientering: Lagring och livstid

TUTORIAL: KLASSER & OBJEKT

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

OMTENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13: 15

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

Tentamen ID1004 Objektorienterad programmering October 29, 2013

TDDC74 Programmering: Abstraktion och modellering Datortenta

OOP Tentamen

Tentamen Grundläggande programmering

TDP013. Node.js, Mocha, Istanbul. Anders Fröberg Institutionen för Datavetenskap

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

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

Classes och Interfaces, Objects och References, Initialization

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).

Webbutveckling med AngularJS

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

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

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

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

MVC med Javascript och Ajax. Filip Ekberg

TDIU01 - Programmering i C++, grundkurs

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

Objektorienterad programmering

Services + REST och OAuth

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

Introduk+on +ll programmering i JavaScript

Android fortsättning. TDDD80 Mobila och sociala applikationer

Övningar Dag 2 En första klass

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Transkript:

LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Exemple på Tentauppgifter Webbprogrammering 2019 02 28 version 2019-03-20 15:36:14+01:00 Tillåtna hjälpmedel: inga. Detta är ett exempel på frågor som kan finnas på en tentamen. Antalet frågor motsvarar inte det som kommer på en tentamen. 1. Betrakta följande JavaScript kod: class Foo { constructor() { this.text = ; tostring() { return this.text; class Bar extends Foo { constructor(text) { super(text); tostring() { return the special text is + super.tostring(); const message = new Bar( EDAF90 ); Rita upp prototypkedjan till objekten message och Bar. I bilden ska det framgå var de olika metoderna och attributen hamnar. 2. Betrakta följande JavaScript kod: const foo = function() { return this ; class Foo { tostring() { return Foo ; const obj = new Foo(); Foo.prototype.foo = foo; console.log( A = + this); console.log( B = + foo()); console.log( C = + obj.foo()); Vad skriver programmet ut? tips: Object.prototype.toString() returnerar [object Object] för vanliga object och [object global] för det globala objektet. 3. När variabler deklareras med var i JavaScript används function scope. Beskriv synligheten för dessa variabler. 4. Vad menas med hoisting i samband med deklarationer i JavaScript. 5. Vad menas med termen responsive design?

2(6) 6. Komponenterna i en react application formar ett träd. Förklara hur ett barn skicka data till föräldern. 7. I en singel page web application används ofta en router. Vad är routerns uppgift? 8. I ett meddelandesystem finns en REST server. För att hämta ett meddelande används http-request från https://myserver.com/messages/42. Skriv JavaScript kod för att hämta meddelandet med id 42. Skriv ut meddelandet till console.log(); 9. I din applikation finns html-koden <button onclick=mycallback()">. Vad händer internt i webbläsaren när användaren klickar på knappen? Kommer koden i mycallback() att exekveras direkt eller vid en senare tidpunkt? Din förklaring ska innehålla koncepten event och event loop. 10. URLer och URIer används för att identifiera resurser på nätet, t.ex. https://cs.lth.se/edaf90/labs/?no_cache=1. a) Vad är skillnaden på en URL och en URI? b) En URL kan delas upp i flera delar. Vad representerar de olika delarna? 11. Hur vet du om en http-request lyckas? Utgå från strukturen i http-svaret (protokollnivå). 12. I din webbapplikation kan användaren välja språk. Hur kan du spara användarens val i webbläsaren, så valet finns kvar nästa gång användaren kommer tillbaka till din webbapplikation? 13. Beskriv hur komponenter i en angular applikation kan kommunicera via service -konceptet.

3(6) Svar 1. 2. A svaret är för spetsbetyg. Det jag vill se är att du förstår hur this får sitt värde. Att this får olika värden beroende på hur funktionen anropas. För B betraktar jag [object global], [object Object] och undefined som rätt svar. I sloppy mode A = [object global] B = [object global] I strict mode A = [object global] B = undefined In most cases, the value of this is determined by how a function is called. It can t be set by assignment during execution, and it may be different each time the function is called. ES5 introduced the bind() method to set the value of a function s this regardless of how it s called, and ES2015 introduced arrow functions which don t provide their own this binding (it retains the this value of the enclosing lexical context). Out of scope for the course: Note 1, if you run the code in a browser, the global object is called window, giving the output A = [object Window]. Note 2, if you run the code in node.js, you will get (node.js treats the globla object different, each file have their own global): I sloppy mode A = [object Object] B = [object global] I strict mode A = [object Object] B = undefined 3. Alla deklarationer syns i hela funktionen, även utanför det block som de är deklarerade i. Exempel, funktionen skriver ut in if block : function () { if( true ) { var tmp = in if block ; console.log(tmp);

4(6) 4. Alla var- och funktions-deklarationer lyfts till början av sitt scope. För var-deklarationer sker initieringen där den ursprungliga deklarationen gjordes (variabeln har värdet undefined fram tills dess. För funktionsdeklarationer function foo()... lyfts både namn och initieringen till början av dess scope. OBS, var bar = function()... är en variabeldeklaration och initieringen lyfts inte. Hoisting innebär att alla namn är synliga i hela scopet. Exempel: function () { var a = a ; if( true ) { var b = b ; var c = c ; function foo() { c = foo ; var bar = function () { c = bar ; Är identisk med: function () { var a = a ; var b; var c; function foo() { c = foo ; var bar; if( true ) { b = b ; c = c ; bar = function () { c = bar ; Om du läser från, eller skriver till, variabler som deklareras med let och const get det ReferenceError: nosuchvariable is not defined. Mer information hittar du t.ex. här: https://medium.freecodecamp.org/what-is-variable-hoisting-differentiating-between-var-let-and-con http://adripofjavascript.com/blog/drips/variable-and-function-hoisting.html 5. Responsive design är en hemsida som anpassar sig efter de tekniska förutsättningarna, primärt storleken på skärmen. (en app som fungerar väl på dator, läsplatta och telefon) 6. Barnen har ingen referens till föräldrarna. För att skicka data uppåt i trädet måste föräldrarna skicka med en callback-metod i parametrarna (props) till barnen. Barnen kan då anropa den metoden, som kan modifiera tillståndet (t.ex. this.state) i föräldern. Parent: Child: class Parent { constructor() { this.state = {language: ; updateparentlangstate(newlang) { this.setstate({lang: newlang); render() { return <Child onselectlanguage={updateparentstate/> class Child { setlangse() {

5(6) this.props.onselectlanguage( se ); render() { return <button type="button" onclick={setlangse>svenska</button>; 7. Routern ansvarar för navigering mellan sidor i appen. Givet en url bestämmer den vilka react/angularkomponenter som ska visas. Routern ansvarar även för att hålla webbläsarens navigerings-historik uppdaterad, så att användaren kannavigera med bak/fram knapparna och historik-menyn i webbläsaren. 8. var url = new URL( https://myserver.com/messages/42 ); fetch(url).then(response=> response.text()).then(text => console.log(text)); 9. När användaren klickar på knappen skapas ett click-event. Händelsen vandrar från roten i DOMträdet till källan (<button> och tillbaka till roten (event bubbling and capturing). På vägen upp anropas alla hanterare som prenumererat på denna typ av händelser. onclick=mycallback() i exemplet. mycallback placeras i webbläsarens event-loop (en FIFO-kö) där den får vänta till det blir dess tur att köra. JavaScript-funktioner blir aldrig avbrutna och får alltid fortsätta tills de är klara. 10. 1. En URI identifierar en resurs, t.ex. isbn-nummret för en bok. En URL beskriver var resursen finns, t.ex. http://cs.lth.se/edaf90/exam/. 2. URL = scheme:[//authority]path[?query][#fragment] authority = [userinfo@]host[:port] scheme protokollet, t.ex. http authority serven där resursen finns, d.v.s. användarnamn, DNS/IP-nummer och port path identifierare för resursen (traditionellt är det en sökvägen i filsystemet) query extra parametrar/information, t.ex. filter vid sökning?name=per fragment identifierar en del av resursen, t.ex. en rubrik på en html-sida. 11. Första raden i svaret består av tre delar: version, statuskod och status text. Alla statuskoder som börjar på 2 (2xx) är ok. Exempel: HTTP/1.1 200 OK HTTP/1.1 404 Not Found 12. Spara Konfigurationen i window.localstorage. window.localstorage.setitem("config", this.config); this.config = JSON.parse(window.localStorage.getItem("config")); 13. Services i angular är objekt som flera komponenter har referenser till. Ofta är en service ett singelton object, d.v.s. det finns bara en instans i hela applikationen. En komponent får tillgång till en

6(6) service genom att dess konstruktor har en parameter av servicens typ. Kommunikationen från en service till en komponent sker ofta via Observables, så komponenten uppdateras när ny data finns tillgäng. @Component({ selector: app-my-component, templateurl:./my.component.html, styleurls: [./my.component.css ] ) export class MyComponent implements OnInit { constructor(private myservice: MyService) { oninit() { this.myservice.getdata().subscribe( data => dostuffwithdata(data) ); onsubmit(data) { this.myservice.newdata(data);