Lösningar för tenta 3 DAT043,

Relevanta dokument
Lösningar för tenta 2 DAT043,

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

DEL 1 För att få godkänt på tentan (betyg 3) måste du lösa minst fem av sju uppgifter i denna del.

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

DAT043 - föreläsning 8

DAT043 Objektorienterad Programmering

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

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Laboration 24 Databasen MySQL och java

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

JAVAUTVECKLING LEKTION 11

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

OOP Objekt-orienterad programmering

MVC-mönstret. model-view-control i Swing

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

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

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

Föreläsning 3: Händelsestyrda program och användargränssnitt

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

Laboration A Objektsamlingar

Föreläsning 2, vecka 8: Repetition

Laboration 13, Arrayer och objekt

DAT043 - Föreläsning 7

Föreläsnings 9 - Exceptions, I/O

Objektorienterad Programmering DAT043

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

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

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

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

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Java-concept och Swing. Swing low, sweet chariot

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

Lösningsförslag till tentamen

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

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

Föreläsning 6: Metoder och fält (arrays)

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

Tentamen OOP

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

Objektorienterad programmering med Java, Generics

Lösningsförslag till tentamen

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

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

Properties. Användbara metoder som kan anropas i propertychanged:

Parallellism, återblick

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

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

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

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

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

Del A (obligatorisk för alla)

Tentamen FYTA11 Javaprogrammering

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

PROGRAMMERING-Java TENTAMINA

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

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

DEL 1 För att få godkänt på tentan (betyg 3) måste du lösa minst fem av sju uppgifter i denna del.

Del A (obligatorisk för alla)

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Arrayer (fält)

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

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

TENTAMEN OOP

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

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

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

kl

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

TENTAMEN OOP

Objektorienterad programmering i Java

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

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

TENTAMEN OOP

Algoritmer. Två gränssnitt

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

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

Objektorienterad Programmering DAT043

ID1004 Laboration 3, 5-6 November 2012

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

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

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

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

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

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

Malmö högskola 2008/2009 CTS

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Transkript:

Lösningar för tenta 3 DAT043, 2018-08-22. Uppgift 1 class Person{ public String förnamn; public String efternamn; public int ålder; private double längd; private double vikt; public Person(String förnamn, String efternamn, int å, double l, double v){ this.förnamn = förnamn; this.efternamn = efternamn; ålder = å; längd = l; vikt = v; public Person(String förnamn, String efternamn, int å){ this.förnamn = förnamn; this.efternamn = efternamn; ålder = å; // Eftersom vi låter bli att initiera längd/vikt får dessa // defaultvärdet för double dvs 0.0 Uppgift 2 public static double[][] transponera(double[][] a) { int m = a.length; int n = a[0].length; double[][] b = new double[n][m]; for (int i = 0; i < m; i++) for (int j = 0; j < n; j++) b[j][i] = a[i][j]; return b;

Uppgift 3 Felet är att man glömt lägga till knappen till vår JFrame. Detta görs med metoden add, som även kan ta ett Layout-objekt som argument (här har vi valt BoarderLayout.SOUTH eftersom vi vill ha knappen längst ner). import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Uppgift3 implements Runnable { SwingUtilities.invokeLater(new Uppgift3()); private class ButtonActionListener implements ActionListener { @Override public void actionperformed(actionevent e) { System.out.println("Löst uppgiften!"); public void run() { JFrame frame = new JFrame("Uppgift 3"); frame.setdefaultcloseoperation(jframe.exit_on_close); JButton button = new JButton("Skriv 'Löst uppgiften!'"); button.addactionlistener(new ButtonActionListener()); frame.setpreferredsize(new Dimension(300, 250)); // Denna rad saknades. frame.add(button, BorderLayout.SOUTH); frame.pack(); frame.setvisible(true); Uppgift 4 Vi påminner oss om att variabler av objekttyp i Java egentligen innehåller en referens till en minnesadress där objektets data finns lagrad. Om man bara ger ett objekt direkt som argument till metoden System.out.println, så kommer denna referens att skrivas ut, inte innehållet i objektet (detta beror på att den ärvda metoden tostring från klassen Object anropas av System.out.println, och den skriver ut objektets referens). Vill man skriva ut innehållet i en array är det lämpligt att först gör om den till en sträng som man sedan skriver ut. Detta görs exempelvis med följande biblioteksmetod som finns i lathunden:

import java.util.*; public class Uppgift4{ int [] a = {1,2,3,4; System.out.println(Arrays.toString(a)); Uppgift 5 B, D och H är sanna. Uppgift 6 Klassvariablerna min och max måste deklareras med nyckelordet static, vilket programmeraren har missat. Annars tror Java att min och max är instansvariabler, dvs man kommer ha en kopia av max och min för varje termometer-objekt, vilket inte var avsikten. Det ska bara finns en global variabel min/max som registrerar högsta/lägsta temperatur som någon termometer har mätt upp. De ska inte registrera min/max för varje enskild termometer (i så fall skulle de mycket riktigt ha varit instansvariabler, men det är inte det vi är ute efter här). class Termometer{ public static double max; public static double min;

Uppgift 7 Notera att för att få godkänt på denna uppgift krävs att man även demonstrerar att man förstår hur generics används genom att korrekt kunna skapa objekt som tillhör den generiska klassen, genom att instantiera typvariabeln (se main metoden nedan). Poängen är ju att man inte längre behöver göra någon type cast när man sedan plockar ut objekt ur boxen. Här hade tyvärr många bara kopierat koden i frågan rakt av, vilket inte gett rätt svar. class GenericBox<T>{ private T content; public void put(t thing){ content = thing; public T remove(){ T thing = content; content = null; return thing; GenericBox<String> b1 = new GenericBox<String>(); GenericBox<Integer> b2 = new GenericBox<Integer>(); b1.put("hello"); b2.put(0); b1.put("world"); //b1.put(1); // Kompilerar ej med detta! String s = b1.remove(); Integer i = b2.remove(); Uppgift 8 public static <E extends Comparable<E>> void selectionsort(e[] arr) { for (int i = 0; i < arr.length; i++) { E min = arr[i]; // Håller reda på minsta element den osorterade delen. int minidx = i; // Index för minsta element i osorterad del. // Inre loop går igenom resten av arr för att se om det finns något mindre element for (int j = i + 1; j < arr.length; j++) { int c = arr[j].compareto(min); if (c < 0) { // Om vi hittar något mindre än nuvarande minimum... min = arr[j]; //...updatera min och... minidx = j; //... uppdatera index för minsta element. if (minidx > i) { // Om vi hittade ett mindre elemet! arr[minidx] = arr[i]; // Byt plats på minsta element och arr[i] arr[i] = min; // Byt plats, minsta element hamnar i sorterad del.

Uppgift 9 public static List<Car> getselectedcarlist(string filename, Predicate<Car> p){ Scanner in; ArrayList<Car> l = new ArrayList<>(); try{ in = new Scanner(new File(filename)); catch(filenotfoundexception e){ System.out.println(e.getMessage()); while(in.hasnext()){ String s = in.nextline(); String[] values = s.split(","); if (values.length!= 3){ System.out.println("Faulty entry in input file: "+Arrays.toString(values)); Car c = new Car(values[0],values[1], Integer.parseInt(values[2])); if(p.test(c)){ l.add(c); List<Car> l = getselectedcarlist("uppgift9.txt", c -> c.brand.equals("volvo") && c.year >= 2000);