Laboration 13, Arrayer och objekt



Relevanta dokument
Laboration 12, Arrayer

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

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

Malmö högskola 2008/2009 CTS

Malmö högskola 2012/2013 Teknik och samhälle

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

Malmö högskola 2008/2009 CTS

Lösningsförslag till exempeltenta 2

Laboration A Objektsamlingar

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

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Objektorienterad programmering i Java

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

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

Laboration 24 Databasen MySQL och java

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

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

kl

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

PROGRAMMERING-Java TENTAMINA

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

Arrayer (fält)

Lösningsförslag, tentamen FYTA11 Javaprogrammering

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.

1 Standardalgoritmer. 1.1 Swap. 1.2 Sök minsta värdet i en array

Arrayer. results

DAT043 - föreläsning 8

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

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

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

OOP Tentamen

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

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

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

DELPROV 1 I DATAVETENSKAP

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Tentamen FYTA11 Javaprogrammering

Lösningar för tenta 3 DAT043,

Föreläsning 2, vecka 8: Repetition

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

Tentamen för TTIT71 Programmering kl Institutionen för datavetenskap Linköpings universitet. Uppgift 1. (2 p)

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Tentamen i Programmeringsteknik I

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

Del A (obligatorisk för alla)

OOP Omtenta

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.

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

Tentamen i Programmeringsteknik I,, KandMa/Fy,

OOP Objekt-orienterad programmering

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

2 b) Följande finns definierat: import java.awt.*; public class Uppgift1b public static void main(string[] mupp) Color färg = Color.blue; Bil[] bilar

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

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

Tentamen , Introduktion till Java, dtaa98, dtea53

JAVAUTVECKLING LEKTION 8

Laboration 1 - Grunderna för OOP i Java

PROGRAMMERING-Java Omtentamina

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

Föreläsning 3-4 Innehåll

Föreläsning 3. Stack

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

Laboration 3. Uppgift 1

Laboration 16. Uppgift 1

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

Generisk klass med typparameter Inre klass - ListIterator

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

OOP Omtenta

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

OOP Objekt-orienterad programmering

Tentamen. Lösningsförslag

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Dugga i Grundläggande programmering STS, åk

Konstruktion av klasser med klasser

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

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

DAT043 - Föreläsning 7

DAT043 Objektorienterad Programmering

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

Föreläsning REPETITION & EXTENTA

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

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

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

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

OOP Omtenta

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

Tentamen i Grundläggande programmering STS, åk 1 lördag

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

Algoritmer. Två gränssnitt

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

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

OOP Objekt-orienterad programmering

OOP Tenta

TENTAMEN OOP

Begreppet subtyp/supertyp i Java. Mera om generik. Generik och arv. Generik och arv. Innehåll

Tentamen i Objektorienterad programmering

Omentamen FYTA11 Javaprogrammering

Transkript:

Laboration 13, Arrayer och objekt Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration13 i ditt laborationsprojekt innan du fortsätter med laborationen. Uppgift 1 Komplettera klassen Betyg med kod. Följande gäller: * När metoden inmatning anropas så ska användaren få mata in ett antal betyg. Vilka betyg som ska matas in styrs av innehållet i fältet ämnen. * När metoden statistik anropas så ska betygsstatistik skrivas ut. * Du får gärna lägga till egna metoder i klassen. public class Betyg { private String[] ämnen = {"Matematik","Svenska","Engelska","Idrott", "Bild","Fysik","Biologi","Kemi","Historia","Geografi", "Samhällskunskap","Religionskunskap"; private String[] betyg = new String[ämnen.length]; // Lika många element som ämnen public void inmatning() { // Låt användaren mata in betyget i olika ämnen // Betygen ska vara "IG", "G", "VG" eller "MVG" och lagras i betyg // Den ambitiöse ser till att varje betyg är ett tillåtet betyg public void statistik() { // Beräkna antalet "IG", "G", "VG" resp "MVG". Lagra t.ex. // beräkningarna i 4 olika räknare // Beräkna betygspoäng // Skriv ut betygsstatistik public static void main(string[] args) { Betyg prog = new Betyg(); prog.inmatning(); prog.statistik(); Exempel på programkörning,..., DA129A, Programmering 1 1

Uppgift 2 Skriv ett program vilket 1. Skapar en int-array med 10 element 2. Tilldelar elementen i arrayen slumpvärden i intervallet 100-200. 3. Skriver ut elementen i arrayen med start på det första (skriv en metod som gör detta) 4. Sorterar arrayen 5. Skriver ut elementen i arrayen med start på det första 6. Låter elementen i arrayen byta plats så att det första elementet kommer sist och det sista elementet kommer först. (skriv en metod som gör detta) 7. Skriver ut elementen i arrayen med start på det första Ett körresultat av programmet kan vara så här: 193 167 134 135 187 165 101 162 152 107 101 107 134 135 152 162 165 167 187 193 193 187 167 165 162 152 135 134 107 101 Uppgift 3 I laboration 9 arbetade du med klassen Bostad. Skapa en ny klass, Bostad, i paketet laboration13 och kopiera koden från laboration 9. Låt klassen implementera interfacet Comparable på så sätt att Bostadobjekt sorteras växande med avseende på bostadsyta. Testprogram (glöm ej importera java.util.* och extra.*) String txt = ""; Bostad[] bostäder = new Bostad[5]; bostäder[0] = new Bostad(145,6); bostäder[1] = new Bostad(78,2); bostäder[2] = new Bostad(75,2); bostäder[3] = new Bostad(75,3); bostäder[4] = new Bostad(65,2); java.util.arrays.sort(bostäder); for(int i=0; i<bostäder.length; i++) txt += bostäder[i].tostring()+"\n"; extra.output.meddelande(txt); Uppgift 4 I laboration 9 arbetade du med klassen Vara. Skapa en ny klass, Vara, i paketet laboration13 och kopiera koden från laboration 9. Låt klassen implementera interfacet Comparable på så sätt att Vara-objekt sorteras växande med avseende på varunamnet. Testprogram (glöm ej importera java.util.* och extra.*) String txt=""; Vara[] varor = {new Vara("Standardmjölk", 8.20, 120), new Vara("Crescent", 3500, 4), new Vara("Japp", 7.25, 29), new Vara("Mugg", 27.50, 40), new Vara("Kamera", 1399, 8); Arrays.sort(varor); for(int i=0; i<varor.length; i++) { txt += varor[i].tostring()+"\n"; Output.meddelande(txt); DA129A, Programmering 1 2

Uppgift 5 Skriv klassen AntalRumVaxande vilken ska implementera gränssnittet Comparator. AntalRumVaxande -klassen ska användas vid sortering av Bostad-objekt och se till att Bostadobjekten sorteras med minst antal rum först. Testprogram String txt = ""; Bostad[] bostäder = new Bostad[5]; bostäder[0] = new Bostad(145,6); bostäder[1] = new Bostad(78,2); bostäder[2] = new Bostad(75,2); bostäder[3] = new Bostad(75,3); bostäder[4] = new Bostad(65,2); java.util.arrays.sort(bostäder, new AntalRumVaxande()); for(int i=0; i<bostäder.length; i++) txt += bostäder[i].tostring()+"\n"; extra.output.meddelande(txt); Extrauppgift 1 Skriv klassen AvtagandePris vilken ska implementera gränssnittet Comparator. AvtagandePris-klassen ska användas vid sortering av Vara-objekt och se till att Vara-objekten sorteras med högsta priset först och lägsta priset sist. Testprogram String txt=""; Vara[] varor = {new Vara("Standardmjölk", 8.20, 120), new Vara("Crescent", 3500, 4), new Vara("Japp", 7.25, 29), new Vara("Mugg", 27.50, 40), new Vara("Kamera", 1399, 8); Arrays.sort(varor, new AvtagandePris()); for(int i=0; i<varor.length; i++) { txt += varor[i].tostring()+"\n"; Output.meddelande(txt); Extrauppgift 2 Skriv klassen SortBostad vilken ska implementera gränssnittet Comparator. SortBostad - klassen ska användas vid sortering av Bostad-objekt och se till att Bostad-objekten sorteras med minst antal rum först. Har två bostäder lika många rum ska bostaden med störst yta sorteras först. Testprogram String txt = ""; Bostad[] bostäder = new Bostad[5]; bostäder[0] = new Bostad(145,6); bostäder[1] = new Bostad(78,2); bostäder[2] = new Bostad(75,2); bostäder[3] = new Bostad(75,3); bostäder[4] = new Bostad(65,2); java.util.arrays.sort(bostäder, new SortBostad()); for(int i=0; i<bostäder.length; i++) txt += bostäder[i].tostring()+"\n"; extra.output.meddelande(txt); DA129A, Programmering 1 3

Förslag till lösningar Uppgift 1, inklusive inmatningskontroll public class Betyg { private String[] ämnen = {"Matematik","Svenska","Engelska","Idrott", "Bild","Fysik","Biologi","Kemi","Historia","Geografi", "Samhällskunskap","Religionskunskap"; private String[] betyg = new String[ämnen.length]; // Lika många element som ämnen private String[] grader = {"IG","G","VG","MVG"; private int[] poäng = {0,10,15,20; private int indexof(string txt, String[] texter) { for(int i=0; i<texter.length; i++) if(txt.equals(texter[i])) return i; private String getbetyg(string txt) { String betyg; do { betyg = extra.input.readline(txt); while(indexof(betyg,grader)==-1); return betyg; public void inmatning() { for(int i=0; i<betyg.length; i++) { betyg[i] = getbetyg(ämnen[i]); public void statistik() { int[] stat = new int[grader.length]; String res;; int index, betygspoäng=0; for(int i=0; i<betyg.length; i++) { index = indexof(betyg[i],grader); stat[index]++; // Går bra - inmatningskontroll! betygspoäng += poäng[index]; res="betygsstatistik\n"; for(int i=0; i<grader.length; i++) { res += grader[i]+": "+stat[i]+"\n"; res += "Betygspoäng: "+betygspoäng; extra.output.meddelande(res); public static void main(string[] args) { Betyg prog = new Betyg(); prog.inmatning(); prog.statistik(); DA129A, Programmering 1 4

Uppgift 2 public class Uppgift3 { private void slumpa(int[] array, int min, int max) { for(int i=0; i<array.length; i++) { array[i] = (int)(math.random()*(max-min+1)+min); private void skrivut(int[] array) { for(int i=0; i<array.length; i++) { System.out.print(array[i]+" "); System.out.println(); private void vänd(int[] array) { int temp, sistaindex = array.length-1; for(int i=0; i<array.length/2; i++) { temp = array[i]; array[i] = array[sistaindex-i]; array[sistaindex-i] = temp; public void program() { int[] tal = new int[10]; slumpa(tal,100,200); skrivut(tal); java.util.arrays.sort(tal); skrivut(tal); vänd(tal); skrivut(tal); public static void main(string[] args) { Uppgift3 u3 = new Uppgift3(); u3.program(); Uppgift 3 public class Bostad implements Comparable { private double bostadsyta; private int antalrum; // diverse konstruktorer och metoder public int compareto(object obj) { Bostad bostad = (Bostad)obj; if(bostadsyta<bostad.getbostadsyta()) else if(bostadsyta>bostad.getbostadsyta()) return 1; else return 0; DA129A, Programmering 1 5

Uppgift 4 public class Vara implements Comparable { private String namn; private double pris; private int antal; // diverse konstruktorer och metoder public int compareto(object obj) { Vara vara = (Vara)obj; return namn.compareto(vara.getnamn()); Uppgift 5 import java.util.*; public class AntalRumVaxande implements Comparator { public int compare(object obj1, Object obj2) { Bostad b1 = (Bostad)obj1; Bostad b2 = (Bostad)obj2; int antal1 = b1.getantalrum(); int antal2 = b2.getantalrum(); if(antal1<antal2) else if(antal1>antal2) return 1; else return 0; Extrauppgift 1 import java.util.*; public class AvtagandePris implements Comparator { public int compare(object o1, Object o2) { Vara vara1 = (Vara)o1; Vara vara2 = (Vara)o2; double pris1 = vara1.getpris(); double pris2 = vara2.getpris(); if(pris1<pris2) return 1; else if(pris1>pris2) else return 0; DA129A, Programmering 1 6

Extrauppgift 2 public class SortBostad implements Comparator { private AntalRumVaxande arv = new AntalRumVaxande(); public int compare(object obj1, Object obj2) { int res = arv.compare(obj1, obj2); double bytaa = ((Bostad)obj1).getBostadsyta(); double bytab = ((Bostad)obj2).getBostadsyta(); if(res==0) { if(bytaa<bytab) res = 1; else if(bytaa>bytab) res = -1; return res; DA129A, Programmering 1 7