ID1004 Laboration 4, November 2012

Relevanta dokument
ID1004 Laboration 3, 5-6 November 2012

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

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

Objektorienterad programmering i Java

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

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

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

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

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

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

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

Del A (obligatorisk för alla)

TENTAMEN OOP

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

TENTAMEN OOP

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN OOP

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

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

Kopiering av objekt i Java

Laboration 1 - Grunderna för OOP i Java

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.

Laboration 1: Figurer i hierarki

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

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

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

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

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Laboration A Objektsamlingar

Malmö högskola 2008/2009 CTS

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

OOP Objekt-orienterad programmering

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

Classes och Interfaces, Objects och References, Initialization

Objektorienterad programmering D2

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

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

Föreläsning 13 Innehåll

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

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

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

Objektorienterad programmering i Java I

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

Agenda. Objektorienterad programmering Föreläsning 13

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

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

trafiksimulering Intro OU5 trafiksimulering

Design av en klass BankAccount som representerar ett bankkonto

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Tentamen ID1004 Objektorienterad programmering May 29, 2012

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

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

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

Tentamen i Programmeringsteknik I

Laboration 3, uppgift En klass för en räknare

Objektorienterad Programmering (TDDC77)

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

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

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

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

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

CHALMERS TENTAMEN. 2018/2019, lp 1 DAT050. Uno Holmer

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

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, 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

Objektorienterad programmering med Java, Generics

Föreläsning 5-6 Innehåll

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

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

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

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

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 vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Programmering för språkteknologer II, HT2014. Rum

TUTORIAL: KLASSER & OBJEKT

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

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

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

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

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

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 )

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Arrayer (fält)

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Del A (obligatorisk för alla)

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

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

PROGRAMMERINGSTEKNIK TIN212

Konstruktion av klasser med klasser

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Objektsamlingar i Java

Tentamen i Algoritmer & Datastrukturer i Java

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Generisk klass med typparameter Inre klass - ListIterator

Transkript:

06-Nov-2012/FK ID1004 Laboration 4, 14-16 November 2012 Beräknad tid ca 1-2 timmar. Instruktionen antar att labben utförs i datasal, med hjälp av den integrerade utvecklingsmiljön Eclipse. Alternativt kan du använda egen dator, någon lämplig texteditor, Java JDK och kompilera och köra själv. Om du väljer editorn TextPad, tänk att ha installerat Java JDK innan du installerar TextPad, eftersom TextPad vid sin installation då konfigureras för att stödja källkod i Java. Labben innehåller uppgifter av olika karaktär och svårighetsgrad. Försök att bli helt klar med en lättare uppgift innan du ger dig på en av de svårare. Resurser online Java version 6 API dokumentation http://download.oracle.com/javase/6/docs/api/ Java JDK download (SE version 6) http://www.oracle.com/technetwork/java/javase/downloads/index.html TextPad editor for Windows http://www.textpad.com/ Eclipse IDE (välj Classic) http://www.eclipse.org/downloads/

Uppgift L4.1 Modellering av rollspelstärningar (lätt) Den här uppgiften går ut på att modellera rollspelstärningar. I rollspel med tärningar används vanliga sexsidiga tärningar men också ofta tärningar med 4, 6, 8, 10, 12, 16, eller 20 sidor. Superklassen Tärning Skapa först en klass Tärning (utan metoden main). Låt klass Tärning ha en variabel private final int antalsidor; som sätts av konstruktorn: public Tärning(int sidor) Låt klass Tärning ha en metod public int kasta() som returnerar ett heltal mellan 1 och det antal sidor som tärningen har. Ett sådant slumptal kan genereras från Math.random() på detta sätt: 1 + (int) (Math.random() * antalsidor); Skriv metoden public String tostring() så att antalet sidor syns i den returnerade strängen. Till exempel: Tärning 12 Subklasserna T4 T20 Skapa därefter tre subklasser (utan metoden main) för tärningar med olika sidor. Välj mellan T4 (fyra sidor), T6 (sex sidor), T8, T10, T12, T16 och T20. Låt dina klasser ärva (extends) från Tärning. I var och en av de tre subklasser du väljer, skapa en konstruktor som i sin tur anropar konstruktorn i Tärning för att sätta antalet sidor som just den klassen ska ha. Till exempel för en tärning med 16 sidor: public T16 () { super(16); } Eftersom ingen av klasserna Tärning eller Tn ska innehålla någon metod main, skriv ett separat testprogram som instantierar dina valda tärningar och lägger dem i en array av Tärning, t ex: Tärning [] minatärningar = {new T4(), new T12(), newt20()}; Skriv sedan kod som går igenom arrayen med en for-each loop och kastar varje tärning tre gånger. I varje kast, skriv ut vad det är för tärning och vad kastet blev.

Uppgift L4.2 Behållare (medium) Modellera och implementera behållare. En behållare har en storlek (dvs kräver ett visst utrymme) (ett tal), och har en viss kapacitet (dvs hur många storlekar den rymmer) (ett tal). Varje behållare ska ha en etikett i form av en sträng så att den går att identifiera, t ex blå kartong eller plastask. Etikett, storlek och kapacitet ska gå att sätta med konstruktorn. Om kapaciteten överskrider storleken ska en IllegalArgumentException kastas från konstruktorn. En exception är också ett objekt och kan skapas och kastas så här: throw new IllegalArgumentException( Capacity exceeds size for + label); Det innebär att konstruktorn får denna deklaration: public Behållare(String label, int size, int capacity) throws IllegalArgumentException { } Klassen Behållare ska även ha: En metod protected int sizeofcontents() som returnerar summan av innehållets storlek. En metod public boolean add(behållare) som lägger en behållare i en annan, om den får plats, dvs om den återstående kapaciteten räcker till. Om den fick plats returneras true annars false. Använd gärna en ArrayList<Behållare> för att hålla reda på innehållet. En metod public String tostring(string prefix) som returnerar en lista över behållarens innehåll. Listan kan byggas upp med hjälp av en StringBuffer. Första raden i listan innehåller prefix och behållarens etikett. Om behållarens inte är tom, så lägg även till texten innehåller till anropa därefter b.tostring(prefix + ) för varje behållare b i innehållet. De returnerade strängarna läggs till i den returnerade strängen. En metod public String tostring() som returnerar tostring( ). Resultatet kan då se ut så här: koffert innehåller: ryggsäck innehåller: vit ask blå ask grön ask skokartong Skriv ett separat testprogram som modellerar tre askar, en vit en blå och en grön. Lägg de tre askarna i en ryggsäck. Lägg ryggsäcken i en koffert. Lägg också en tom skokartong i kofferten. Skriv ut innehållet i kofferten och kontrollera att allting syns, ända ner till askarna.

Uppgift L4.3 Designa digitala filter (svår) Skapa ett nytt projekt i Eclipse. Hämta filen Filter.java från kth/social och lägg in den i projektet. Studera speciellt metoderna setfilter() och setfiltercharacter(). Titta på filterdefinitionerna nedan och skapa sedan en ny klass (utan main) som ärver från klass Filter; till exempel LowPassFilter, HighPassFilter, eller BandPassFilter. Låt klassen åsidosätta metod setfiltercharacter() med motsvarande beräkning. Skapa sedan ett testprogram (en ny klass med main) som instansierar det skapade filtret, sätter lämpliga parametrar med setfilter() skickar in en array med 1000 samples där första elementet är 1 och resten 0 (impuls) skriver ut de 50 första samplen i impulssvaret. Namnen cos, sin och alpha i filterberäkningarna nedan refererar till variablerna i klassen Filter. Low pass filter b0 = (1 cos) / 2 b1 = 1 cos b2 = (1 cos) / 2 a1 = -2 * cos High pass filter b0 = (1 + cos)/2 b1 = -(1 + cos) b2 = (1+ cos)/2 a1 = -2 * cos Band pass filter b0 = sin / 2 b1 = 0 b2 = -sin / 2 a1 = -2 *cos Metoden setfilter Parametrarna till setfilter kan inte vara tagna ur luften: Filterfrekvensen (där det händer) fqhz får inte vara större än samplerate/2 Q-värdet bör hållas i området 0.2 3

Parametern gaindb används inte och kan sättas till 0 Exempel Ett low pass (lågpass) filter definierat som f.setfilter(8000d, 1000d, 0.5d, 0d); ger följande impulssvar 0.08578644 0.24264069 0.27207792 0.18376616 0.10555567 0.055915885 0.028211748 0.013777727 0.0065734712 0.0030817576 0.0014251819 6.5191323E-4 2.9553997E-4 1.3298269E-4 5.9459817E-5 2.6441896E-5 1.1703491E-5 5.1587763E-6 2.2656682E-6 9.918349E-7 4.3293565E-7 1.8848365E-7 8.1864954E-8 3.548046E-8 1.5347167E-8 6.6265233E-9 2.8564338E-9 Mer information för den intresserade kan hittas bl a här: http://www.musicdsp.org/files/audio-eq-cookbook.txt