/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

Relevanta dokument
Tentamen Programmering fortsättningskurs DIT950

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Generisk klass med typparameter Inre klass - ListIterator

Tentamen Programmeringsteknik II och NV2 (alla varianter) Skriv bara på framsidan av varje papper.

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

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

F4. programmeringsteknik och Matlab

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Föreläsning 2. Länkad lista och iterator

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 2. Länkad lista och iterator

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Concurrency Saker händer samtidigt. Process En instans av ett program

Lösningsförslag till tentamen

Lösningsförslag till tentamen i OOP, HI1027 Fredag 21 oktober 2011

Kopiering av objekt i Java

Föreläsning 9. Generiska enheter Inre klasser Anonyma klasser Kloning

Objektorienterad programutveckling, fk

Lösningsförslag. 1 Lösningsförslag. Uppgift 1

Föreläsning 4 Innehåll

Fördjupad Java. Undantagshantering. Fel

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

List.java. List.java. Printed by Tom Smedsaas

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

2. Palindrom. Exempel: 1,2,3,2,1 är ett palindrom, och även 0, men inte 1,2,3,1,2,3.

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

LÖSNINGSFÖRSLAG

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

if (n==null) { return null; } else { return new Node(n.data, copy(n.next));

Objektorienterad programutveckling, fk

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

BST implementering, huvudstruktur

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

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

Institutionen för TENTAMEN CTH VT-14 Datavetenskap TDA550 DAG: TID: 8:30 12:30

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

Länkade strukturer, parametriserade typer och undantag

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Föreläsning 3. Stack

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

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Övning 4. I denna övning ska vi titta på icke-muterbarhet kontra muterbarhet, samt metoderna equals, hashcode och clone.

Objektorienterad Programmering (TDDC77)

Värde och typ? Problem. Vad skrivs ut? Referenssematik (1) Joachim von Hacht. Förklara (i detalj)! int x; int y; x = y = 1; out.println(x + ":" + y);

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Föreläsning 3. Stack

Objektorienterad Programkonstruktion. Föreläsning dec 2015

Tentamen LÖSNINGSFÖRSLAG

Recitation 4. 2-D arrays. Exceptions

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

Lösningsförslag till tentamen i EDAA01 programmeringsteknik fördjupningkurs

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista Läsanvisningar och uppgifter

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Språkkonventioner och redigering av tal.

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

OOP Objekt-orienterad programmering

Lösningsförslag till tentamen i EDA690 Algoritmer och Datastrukturer, Helsingborg

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

TENTAMEN OOP

Tentamen. Lösningsförslag

OOP Objekt-orienterad programmering

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

TENTAMEN OOP

Grundläggande termer. Några olika system. F11 Grunderna i Versionshantering. Git basic. Origin. Git basic. Git basic. Local #1. Local #3.

Tentamen Objekt-orienterad programmering i Java, 5p distanskurs

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

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

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

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Parallellism, återblick

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

Den som bara har en hammare tror att alla problem är spikar

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

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

DAT043 - Föreläsning 7

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Transkript:

* * Lösningsförslag tentamen DIT950 * Datum 150317 * * -1 - För samtliga gäller,se föreläsningsanteckningar. * - 2 - (Diagram visas inte, kontakta mig för ev frågor) // a C c = new A(); // Compile! Sub assigned super c.doit(); // b A a = new B(); // Ok a.doit(); // "doit B" // c IA ia = new C(); // Ok ia.doit(); //"doit A" // d IA a = new B(); IX x = (IX) a; // ClassCastException x.doother(); // e IX x = new C(); A a = x; // Compile! IX not sub to A a.doit(); // f A a1 = new B(); // Ok a1.doyetother(1); // "doyetother A 1.0 * - 3 - Se föreläsningsanteckningar. Kan t.ex. visa m.h.a Integer/int i >= Integer/int j eller metodanrop (olika swapper exempel) * - 4 -

a) Se föreläsningar b) Switch satsen gör att klassen måste modifieras om fler djur läggs till c) Använd polymorfism t.ex. public abstract class Animal { abstract void doit(); // Same for all case in switch statement public class Dog extends Animal { public doit(){ // Complex code special for Dog public void feedtheanimals(animal animal){ animal.doit(); // Switch statement gone * - 5 - Utskrift enter doit enter doother doit IllegalArgumentException doit finally main RuntimeException * - 6 - Se föreläsningsanteckningar. * - 7 - Trådar använd i denna kurs då vi har metoder som kan ta lång tid (eftersom alla anrop blockerar så måste resten av programmet vänta, t.ex kan GUI:et låsas). Genom att använda trådar verkar programmet göra flera saker samtidigt, användaren kan t.ex. uppleva programmet som mer responsivt. I verkligheten (med en processor) byter programmet mellan de olika trådarna. GUI:et får då viss processort tid och kan på så sätt reagera på användarens kommandon. Ett problem med trådar är att de delar icke-lokala variabler. Om flera trådar samtidigt skriver/läser

samma variabler kan slutresultatet bli odefinierat (ogiltigt tillstånd). Exempel: Se Color från övningar 6 Genom att skapa atomära operationer mha synchronized garanterar vi att en tråd får köra klart och att därmed att tillståndet förblir korrekt. Dock kan vi råka ut för sk deadlock om vi överanvänder synchronized eftersom detta låser objektet (inga synchronized metoder kan köras av andra trådar). Om tråd T1 håller (låser) objekt A och tråd T2 objekt B samtidigt som A gör anrop på B och omvänt så kommer programmet att låsa sig. * - 8 - public class CircularList<T> implements Iterable<T>, Cloneable { private Node head = new Node(null, null); private int size = 0; private class Node { T value; Node next; public Node(T value, Node next) { this.value = value; this.next = next; NOTE: Can't use clone * T after compilation is Object * Objects.clone protected public Node clone(){ Node n = (Node) super.clone(); n.value = value.clone(); // Bad n.next = null; public CircularList() { head.next = head; // If not this problems at iterator public void add(t t) { Node n = new Node(t, head.next); head.next = n; size++; public Iterator<T> iterator() {

return new Iterator<T>() { private final int expectedsize = size; private Node pos = head; public boolean hasnext() { // return true is not good, see clone() return pos.next.value!= null; public T next() { if (expectedsize!= size) { throw new ConcurrentModificationException(); if(!hasnext()){ throw new NoSuchElementException(); pos = pos.next; return pos.value; ; public void remove() { // TODO Auto-generated method stub public Object clone() { CircularList<T> copy; try { copy = (CircularList<T>) super.clone(); copy.head = new Node(null, null); copy.head.next = copy.head; Iterator<T> i = this.iterator(); while (i.hasnext()) { T t = i.next(); copy.add(t); return copy; catch (CloneNotSupportedException e) { throw new InternalError(); * - 9 -

a) och b) Se vidare http://docs.oracle.com/javase/tutorial/extra/generics/ morefun.html public static <T> T writeall(collection<? extends T> coll, Sink<? super T> snk) { T last = null; for (T t : coll) { last = t; snk.flush(last); return last;