Uppgift 4. Uppgift 4. Uppgift 4. Uppgift 4. Uppgift 4. Uppgift 4. Syfte. Konstruktion av användargränssnitt. Deadline 14/3 kl 10.
|
|
- Malin Månsson
- för 6 år sedan
- Visningar:
Transkript
1 Uppgift Konstruktion av användargränssnitt Uppgift Syfte Under fjärde uppgiften kommer ni att få känna på lite mer om trådning, avbrottsstyrning. Efter denna uppgift ska ni veta varför/hur Swing är enkeltrådat, samt hur man gör avbrottsstyrda funktioner. Dvs t.ex. hur man skapar gränssnitt som inte hänger sig vid tunga operationer. Deadline / kl. IT Informationsteknologi # Uppgift Utritning av grafik i Swing är "enkeltrådat", vilket har vissa konsekvenser. Absolut viktigast i denna uppgift är att swingtråden inte "hänger sig" när jobbiga operationer utförs. Man måste också se till att Swinganrop alltid görs från Swings event-tråd. Uppgift Ni ska bygga ut er applikation med möjligheten att välja att lägga till hela kataloger och alla dess underkataloger till playlisten. Katalogerna ska sökas igenom och samtliga MP-filer som hittas ska efterhand läggas till i playlisten. Denna operation kan ta lång tid och för att hela gränssnittet då inte ska "hänga" sig är det viktigt att man sköter trådningen på rätt sätt. Informationsteknologi # Informationsteknologi # Uppgift Det ska finnas nån form av progressbar för genomsökningen som ger en uppfattning av vad som sker och hur mycket det är kvar att göra. Genomsökningen ska kunna ska även kunna pausas, återupptas och avbrytas. Det ska fortfarande gå att använda spelaren som vanligt under tiden som en genomsökning pågår. Uppgift Man ska kunna ladda och spara en playlist. Det räcker med att den playlist man senast hade laddas när man öppnar programmet, men det är fritt fram att göra mer sofistikerad playlisthantering. Man ska kunna markera flera låtar i en spellista och på något sätt kunna välja att ta bort samtliga markerade (tex popup-meny och/eller snabbtangent) Man ska kunna klicka på en låt och på något sätt välja att hoppa dit i spellistan. Informationsteknologi # Informationsteknologi #
2 Uppgift Spelaren ska vara språkoberoende, enligt samma princip som Uppgift och. Spelaren ska även fortsättningsvis använda themes för all färg- och fonthantering, enligt samma princip som Uppgift och. Ni ska även fortsättningsvis använda er av Actions där det är vettigt. Skapa en ant-regel player som startar klassen player.ui.player (som är den klass som ska köras). (Uppgift ) Extra för de som vill: lägg till möjligheten att välja slumpmässig uppspelning av spellistan och möjligheten att repetera den i all oändlighet. Extra för de som vill: gör det möjligt att släppa filer från filsystemet på spellistan (drag-anddrop). Informationsteknologi #7 Informationsteknologi # (Uppgift ) Om man vill: Eftersom det är sista uppgiften så är det självklart positivt för helhetsintrycket att visa vad man lärt sig under kursens gång. Det är med andra ord helt okej att göra en förbättrad tabellmodell, snyggare actions, bättre hantering av resize etc etc, om man tycker sig ha kommit på bättre lösningar under kursens gång. En stor del av programvarutvecklingen handlar om att lära sig av sina tidigare erfarenheter. Trådar Definition: A thread is a single sequential flow of control within a program. Informationsteknologi #9 Informationsteknologi # Swing är enkeltrådat Once a Swing component has been realized, all code that might affect or depend on the state of that component should be executed in the event-dispatching thread. Undantag: repaint(), revalidate(), invalidate() Samt metoder som enligt javadoc är thread safe Kör vi på event-tråden nu? Om osäker, enkel koll genom: if (EventQueue.isDispatchThread()) { Insikt: public void actionperformed(actionevent e) // klart att vi är event-tråd här! Informationsteknologi # Informationsteknologi #
3 Varför enkeltrådat? Komplicerat göra ett toolkit tråd-säkert Få utvecklare kan hantera UI med flera trådar Händelser kommer i garanterad ordning (slipper icke-determinism) Snabbare UI (slipper synkronisering) Lösningar: SwingUtilities.invokeLater SwingUtilities.invokeAndWait SwingWorker Thread Timer SwingUtilities.invokeLater Mekanism som används för att lägga en referens till ett kodblock på event-kön. När event-tråden kommer till kodblocket så körs den. GUI t kan på det viset uppdateras av kodblocket eftersom det körs på event-tråden. invokelater() metoden returnerar direkt utan att invänta att event-dispatch tråden exekverar koden. Runnable dowork = new Runnable() { public void run() { drawsome(); ; SwingUtilities.invokeLater(doWork); Informationsteknologi # Informationsteknologi # SwingUtilities.invokeAndWait invokeandwait() metoden fungerar som invokelater(), utom att invokeandwait() inte returnerar innan event-dispatching tråden har exekverat kodblocket. void showhellotheredialog() throws Exception { Runnable showmodaldialog = new Runnable() { public void run() { JOptionPane.showMessageDialog(frame, "Hi"); ; SwingUtilities.invokeAndWait(showModalDialog); SwingWorker SwingWorker ingår inte i Java-distributionen utan är en egen klass/fil Finns på uppgift -sidan att ladda hem om man vill final SwingWorker worker = new SwingWorker() { public Object construct() { // do long operation here // NOTE: runs on a background thread public void finished() { // called when construct is done // NOTE: runs on the event dispatching thread ; worker.start(); Informationsteknologi # Informationsteknologi # SwingWorker construct() metoden används till att utföra något som kan vara tidsödande. Exempelvis: Blockera i väntan på disk I/O eller nätverk Utföra omfattande beräkningar Exekvera kod som kan resultera i att många klasser laddas. Vänta på nån annan resurs Timer Om ens program måste utföra en viss sak om och om igen med nåt intervall kan det vara bra att överväga java.util.timer eller javax.swing.timer klassen. Timer klassen är också bra om man vill ha något gjort efter en viss delay. Dvs Task-Scheduling. Informationsteknologi #7 Informationsteknologi #
4 x Timer java.util.timer javax.swing.timer The important difference between using the Swing Timer class and creating your own Thread is that the Swing Timer class uses just one thread for all timers. The other important feature of this timer class is that the actionperformed method runs on the event-dispatching thread. As a result, you don't have to bother with an explicit invokelater call. Trådar och CPU Ej bra att slösa bort processorkraft i onödan Trådar bör ge tillbaka tid till OS:et // fel, tar massor med resurser while (b) { checkfordata(); // bättre while (b) { checkfordata(); Thread.sleep(); try/catch runt sleep behövs Informationsteknologi #9 Informationsteknologi # Uppgift till torsdagen den / Var beredd att kunna beskriva hur invokelater() resp invokeandwait() fungerar och förhåller sig till varandra. Var beredd att kunna förklara hur Java:s keyword synchronized fungerar och hur man kan dra nytta av det. Titta på klasserna java.util.timer och java.util.timertask och fundera över vilken nytta man kan dra av dessa i gränssnittssammanhang. Uppgift till torsdagen den / Kommentera gränssnittet (uppgift ) från annan grupp. Projektor och jar-filer kommer att finnas under gruppträffen. Vid det här laget har ni kanske börjat laborera med att göra saker i separata trådar; vad får det för konsekvenser att Swing är enkeltrådat? Informationsteknologi # Informationsteknologi # Antal svar:, frånvarande:. Vad tycker du om föreläsningarna? [=mycket dåliga, =mycket bra] (.) Series. Vad tycker du om gruppträffarna? [=mycket dåliga, =mycket bra] (.7) Series Informationsteknologi # Informationsteknologi #
5 . Vad tycker du om kursmaterialet (TiJ + länkar + webben) [=mycket dåligt, =mycket bra] (.). Hur bedömer du din arbetsinsats? [=mycket liten, =mycket stor] (.) 7 Series Series Informationsteknologi # Informationsteknologi #. Har du tillräckliga förkunskaper? [=inte alls, =mer än nog] (.). Vad tycker du om kursens svårighetsgrad? [=mycket lätt, =mycket svår] (.) Series Series Informationsteknologi #7 Informationsteknologi # Ni tycker att det är kul att arbeta praktiskt i grupper En del tycker att uppgifterna är svåra att dela upp på fyra personer Inget krav att man delar upp arbetet! Agile utvecklingsmetoder som tex. XP förespråkar att man ska arbeta i par (parprogrammering), detta kan vara effektivare än att jobba som fyra individer. Dagboken strular SunRay:arna har någon form av bugg som dyker upp med just dagboken. Buggar kring inmatning av dagboksposter, några av dessa är nu fixade. Ny dagboks-jar kommer finnas tillgänglig. Föreläsningar En del vill ha längre föreläsningar/mer innehåll. Kursen bygger dock mer på att man ska lära sig genom att göra än att höra. Detta passar inte alla, men på denna kurs frångår vi den vedertagna standarden med föreläsningar/labbar/tenta, därför att vi tror att man bättre lär sig den arbetsmetodik som man måste ha vid gränssnittsutveckling genom praktiskt arbete och egen informationshämtning. Se inte timmarna då ni försöker få något att fungera som bortslösad tid. Det är så man lär sig! Var dock inte allt för envisa, ibland kan det vara betydligt mer produktivt att fråga - det är lätt att bli kodblind! Java. tips Med Java. kom Generics som gör att man bla kan använda sig av typade containers. Detta gör att man slipper den jobbiga konstruktionen med downcasting. Gamla sättet (<.) att göra en typisk iterering över en Collection på: // Otypad lista List songs = new ArrayList(); // Iterera genom listan Iterator it = songs.iterator(); while (it.hasnext()) { // Här måste vi typkonvertera eftersom it.next() // returnerar Object Song s = (Song) it.next(); s.sing(); Informationsteknologi #9 Informationsteknologi #
6 Java. - ny for-loop Med. kan man istället göra så här: // Lista som enbart kan innehålla objekt av typen Song List<Song> songs = new ArrayList<Song>(); // Iterera genom listan med den nya for-loopen: for (Song s : songs) { // För alla Song s i songs s.sing(); Det blir inte bara mindre att skriva, utan man får också compile-time typcheck istället för run-time. Man kan använda den nya for-loop:en även för arrayer. Java. Mer om generics Om man är intresserad av att lära sig mer om generics så rekomenderas länken på hemsidan som behandlar nyheterna i Java.. Vill man skriva egna klasser som använder generics är det ett tips att titta på implementationen av klasserna i java.util. Informationsteknologi # Informationsteknologi # Exempel på filsökningsfunktion private int addfiles(file[] files, double progress, double totalprogress, int pos) { double partprogress = totalprogress / (double) files.length; for (File f : files) { if (f.isdirectory()) { // Add directory content recursively pos = addfiles(f.listfiles(), progress, partprogress, pos); else if (f.isfile()) { // Add the file to the playlist if it is an mp file String filename = f.getname().tolowercase(); int i = filename.lastindexof(".mp"); if (i >= ) { Song s = Song.createSong(f); if (s!= null) { if (pos >= ) { playlistmodel.addsong(pos, s); pos++; else playlistmodel.addsong(s); progress += partprogress; log.debug("p: " + progress); return pos; // Exempel som lägger till filerna först i spellistan: addfiles(filechooser.getselectedfiles(),.,., ); Olika approacher för fil-letandet Föregående funktion lägger till låtar samtidigt som den scannar igenom. Man kan då inte på förhand veta exakt vad varje steg i progressbaren ska motsvara, utan man får istället göra gissningar. Detta gör att progressbaren kommer stega fram olika fort beroende på antalet filer i en katalog. Alternativet är att man gör det som en tvåstegsoperation där man först scannar genom alla kataloger (då kan progress-baren vara indeterminate) för att sen (när man vet hur många filer man har) visa helt korrekt progress. Båda varianterna har sina för- och nackdelar. Använd vilken ni vill. Informationsteknologi # Informationsteknologi # Drag and drop Frivilligt på uppgiften Lite klurigt Men man kan med enkla medel få relativt schysst beteende. Exempel: Vi vill kunna släppa filer från vår filhanterare på vår playlist. Detta är egentligen bara en drop-operation, vilket gör det lite enklare för oss. Exempel: Släppa filer på playlist Först vill vi skapa en DropTargetListener: DropTargetListener tabledtl = new DropTargetAdapter() { public void drop(droptargetdropevent e) { try { Transferable tr = e.gettransferable(); if (tr.isdataflavorsupported(dataflavor.javafilelistflavor)) { e.acceptdrop(dndconstants.action_copy_or_move); Point point = e.getlocation(); java.util.list<file> filelist = (java.util.list) tr.gettransferdata(dataflavor.javafilelistflavor); if (playlisttable!= null) { int row = playlisttable.rowatpoint(point); addfiles(filelist, row); else addfiles(filelist, -); else { log.debug("rejecting: " + e.getcurrentdataflavorsaslist()); e.rejectdrop(); catch (Exception ex) { e.rejectdrop(); ; Informationsteknologi # Informationsteknologi #
7 Skapa DropTarget Därefter skapar vi en DropTarget och sätter den på tabellen. DropTarget tabledroptarget = new DropTarget(playlistTable, tabledtl); playlisttable.setdroptarget(tabledroptarget); Detta är allt som behövs för att det ska fungera att släppa på tabellen. Det finns dock ett problem: innan tabellen har några rader så träffar man istället den omgivande JScrollPane:en med sina drops Lösningen är att skapa en nästan likadan DropTarget och sätta denna på själva JScrollPane:n: Tips: Sätta kolumnbredder Självklart vill man att sin playlist har rätt bredd på respektive kolumn. Problemet är att rätt bredd kan ändras under körning. Hur ska vi få reda på när bredden måste sättas om? DropTarget scrolldroptarget = new DropTarget(scrollPane, scrolldtl); scrollpane.setdroptarget(scrolldroptarget); Informationsteknologi #7 Informationsteknologi # Tips: Sätta kolumnbredder Vi kan registrera en lyssnare på modellen och se till att göra något smart när modellen ändras: playlistmodel.addtablemodellistener(new TableModelListener() { public void tablechanged(tablemodelevent e) { if (playlistmodel!= null && playlisttable!= null) { int rows = playlistmodel.getrowcount(); FontMetrics fm = playlisttable.getfontmetrics(playlisttable.getfont()); int w = fm.stringwidth(integer.tostring(rows) + ""); TableColumn col = playlisttable.getcolumn(lang.get("player.playlist.index")); if (col!= null) { col.setminwidth(w); col.setmaxwidth(w + ); ); Tips: Sätta kolumnbredd Självklart bör man kolla vilket sorts event som kommer och enbart ändra kolumnbredden om eventet är av en sån typ att bredden kan ha ändrats. Informationsteknologi #9 Informationsteknologi # 7
Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013
DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 Innehåll Trådar i Java swing- klassen Timer Klient-Server-program Trådar Tråd = enkel process Ett program kan ha flera trådar, flera
Objektorienterad Programkonstruktion. Föreläsning dec 2015
Objektorienterad Programkonstruktion Föreläsning 12 14 dec 2015 Parallella Problem I program med flera parallella exekveringstrådar kan det uppstå problem, fel och andra fenomen som inte förekommer i enkeltrådade
Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java
DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/4 2014 Innehåll Kort om Javas Exceptions Trådar i Java swing- klassen Timer Klient-Server-program Javas Exceptions Checked måste hanteras,
Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2
Övning vecka 6. TDA550 - Objektorienterad programvaruutveckling IT, fk Denna vecka ska vi titta på undantag, testning, generiska enheter, samlingar och designmönstret Iterator. Uppgift 1 Exceptions a)
Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016
Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter
Föreläsnings 9 - Exceptions, I/O
Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public
Concurrency Saker händer samtidigt. Process En instans av ett program
Concurrency Saker händer samtidigt Hur gör vi flera saker samtidigt på en dator? - Dela på en CPU - Flera CPU Flera processer på en dator. Operativsystemet (OS) tilldelar dem körtid (time slices, prioritet)
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack
Exam Concurrent and Real-Time Programming
LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Exam Concurrent and Real-Time Programming 2018 08 23, 14.00 19.00 1. Vad är prioritetsinversion? Illustrera med ett enkelt exempel. Redogör
The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.
Innehåll The Last Adventure Den sista lektionen Repetition Examination Slutar 14:45 (minnesstund) Många saker "flashar" förbi - hojta Objektorientering Språket Java Class Object Inheritance Polymorphism
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5
TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 5 Daniel Wetterbro 23 november 2009 Sammanfattning Denna vecka ska vi titta på I/O, samlingar och generics. Övningarna är graderade
TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Laboration 2 Datastrukturer En liten uppgift Frågor 1 Laboration 2 - Datastrukturer Länkade datastrukturer Stack Kö (En. Queue) Lista
Laboration 24 Databasen MySQL och java
Laboration 24 Databasen MySQL och java Avsikten med denna laboration är att du ska hämta information ur en eller flera tabeller och visa resultatet i en JTable-komponent. Du ska ändra innehållet i tabellen
9 Aktiva objekt och trådar
9 Aktiva objekt och trådar Skansholm kap 13 arallella program, processer och trådar Aktiva Swing-komponenter Trådar i Java Synkronisering Trådar och Swing arallella program och processer De flesta operativsystem
Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag
Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer
Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016
Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.
Labb 1: Vad, hur, och varför?
Labb 1: Vad, hur, och varför? jonas.kvarnstrom@liu.se 2017 "En sak i taget": Öva grunder innan det blir mer komplicerat Starkt önskemål från studenter: Prova på kontrollstrukturer Labb 1: Intro till grunder
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se
1 F18-20-2006 Denna vecka Måndag: Ett komplext problem Tisdag: Lektion. Kväll: Essäfrågan distribueras via webben. Dead-line onsdag 17 maj, kl 12.00. Inlämning elektroniskt och på papper. Onsdag: Grafik
Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp
Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser
TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,
Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043,
Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043, 2017-02-20 Aktiva objekt och trådar Multitasking, parallella program Vanliga datorer har kunna köra flera program skenbart samtidigt
Att skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016
Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class
Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER
Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Från laboration 3 till 4 I laboration 3 har du implementerat klasser implementerat metoder i klasserna I laboration 4 kommer du att implementera
Gränssnitt för FakeGranska. Lars Mattsson
Gränssnitt för FakeGranska av Lars Mattsson (larsmatt@kth.se) Innehållsförteckning 1 Introduktion...3 2 Genomförande:...3 3 Användning...5 4 Kända buggar:...6 5 Källförteckning...6 2 1 Introduktion Taken
Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling
Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max 30p i denna halvtentamen Hjälpmedel:
Föreläsning 3: Händelsestyrda program och användargränssnitt
(2 september 2015 F3.1 ) Föreläsning 3: Händelsestyrda program och användargränssnitt Idag Från sekventiella till händelsestyrda program Lyssnare Kontroller Layout för ordning av kontroller (2 september
DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (8) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt namn, personnummer och e-postadress på försättsbladet. Skriv rent dina svar.
Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016
Objektorienterad Programkonstruktion Föreläsning 3 7 nov 2016 Klass/instans Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik
TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 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 På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1
F4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Övning vecka 5. Denna vecka ska vi titta pa samlingar, generics och designmönstren Decorator, Singleton och Iterator.
Övning vecka 5. TDA550 - Objektorienterad programvaruutveckling IT, fk Denna vecka ska vi titta pa samlingar, generics och designmönstren Decorator, Singleton och Iterator. Uppgift 1 Kom ihåg att samlingar
Tentamen ID1004 Objektorienterad programmering May 29, 2012
Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :
DAT043 - föreläsning 8
DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Inlupp1 - kommentarer. Uppgift 2. Uppgift 2
Inlupp1 - kommentarer Var gärna mer specifika när ni skriver i dagboken, jämför: arbetade på inlupp1 la in en avsluta-knapp i gränssnittet Servern ska självfallet startas när klienten startas och på samma
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering
Lösningsförslag till omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-6, TDA540 Dag: 207-0-24, Tid: 4.00-.00 Uppgift a) En abstrakt klass kan inte instansieras,
Lösningar för tenta 3 DAT043,
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,
CliMate följer Tre-lager-arkitektur. Domänobjekt - domänlogiklagret. Viktiga domänklasser i CliMate. De tre lagren. Paketen i CliMate:
följer Tre-lager-arkitektur De tre lagren presentation: användarhändelser+grafik+resultat domänlogik: håller systemets funktioner databasaccess: databas + sql-hantering Paketen i : climate.ui (inkl climate.ui.action
Laboration A Objektsamlingar
Laboration A Objektsamlingar Avsikten med laborationen är att du ska träna på att använda ett par objektsamlingar. Uppgift 1 Titta genom föreläsningsunderlaget DA129AFAHT07.pdf och testkör exemplen (se
/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.
* * 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
Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes
Vad kännetecknar en god klass F12 Nested & En odelad, väldefinierad abstraktion Uppgiften kan beskrivas kort och tydlig Namnet är en substantiv eller adjektiv som beskriver abstraktionen på ett adekvat
OOP Objekt-orienterad programmering
OOP F12:1 OOP Objekt-orienterad programmering Föreläsning 12 Mer om JOptionPane Undantagshantering Vad är det? try catch Kasta egna undantag Filhantering spara objekt mellan körningar Användardialog via
Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015
Objektorienterad Programkonstruktion Föreläsning 3 9 nov 2015 Kursnämnd Namn kommer... UML: Klassdiagram UML: Relationer Ärver från superklass Implementerar gränssnitt Dubbelriktad eller oriktad relation
Parallellism, återblick
Parallellism, återblick Josef Svenningsson December 11, 2012 Lab7 Det är problem med lab7. Gå med i den grupp som ni använt tidigare. DEMO Flera saker händer samtidigt Ofta hanterar program olika indata
FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl
Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Trådar. Aktiva objekt
Föreläsning 11 Trådar 1 Aktiva objekt Det är välkänt från vardagslivet att saker händer samtidigt. Aktiva objekt gör saker på eget initiativ, medan passiva objekt endast gör saker när de blir ombedda.
Objektorienterad programmering Föreläsning 2
Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade
Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag
Objektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Laboration 3 GUI-programmering
Laboration 3 GUI-programmering Syfte Erbjuder studenterna en möjlighet att lära sig grunderna i gränssnittsprogrammering i Java. Genomförande Genomförs individuellt eller i grupp om 2 personer. Uppskattad
Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004
Lösningsförslag Programmeringsmetodik, KV: Java och OOP 17 januari 2004 Examinator: Johan Karlsson Skrivtid: 9-15 Hjälpmedel: En av följande böcker: Barnes & Kölling: Objects First With Java a practical
Objekt, Klasser, Paket m. m.
Objekt, Klasser, Paket m. m. Bildserie 3 Objekt Ett objekt karakteriseras av - Identitet, det som gör det möjligt att särskilja objektet från andra objekt - Tillstånd, den data som finns i objektet - Beteende,
OOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
Tentamen FYTA11 Javaprogrammering
Lunds universitet FYTA11 Institutionen för Teoretisk Fysik HT 08 Tentamen FYTA11 Javaprogrammering Fredag 9:e januari 2009, 09:00 13:00 Instruktioner Inga hjälpmedel är tillåtna. Behandla högst en uppgift
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
Föreläsning 2 Datastrukturer (DAT037)
Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
Lösningsförslag tentamen FYTA11 Java
Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Lösningsförslag tentamen FYTA11 Java Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade
Design och konstruktion av grafiska gränssnitt
Design och konstruktion av grafiska gränssnitt Armin Nezirevic Peter Börjesson Interaktionsdesign Tillämpad informationsteknologi Chalmers/GU Idag Vad utmärker ett bra användargränssnitt? Kort kursinfo
Lösningsförslag till tentamen FYTA11 Javaprogrammering
Lunds universitet FYTA11 Institutionen för Teoretisk Fysik HT 08 Lösningsförslag till tentamen FYTA11 Javaprogrammering Fredag 9:e januari 2009, 09:00 13:00 Uppgift 1: Leta buggar Titta på klasserna A,
Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!
Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering! Samlingar Vi kommer att behöva hantera samlingar av objekt - Har oftast använd Array (fält) - Bra om
732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning
Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (
Länkade strukturer, parametriserade typer och undantag
Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer
Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.
-Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och
Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..
Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private
OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1
Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 1 OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer.
1 Comparator & Comparable
1 Comparator & Comparable 1.1 Implementation av Comparable Att implementera Comparable innebär att man gör objekt av sin klass jämförbara med andra och att det därmed antas existera en naturlig ordning
TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET
UMEÅ UNIVERSITET Datavetenskap 010824 TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET Datum : 010824 Tid : 9-15 Hjälpmedel : Inga Antal uppgifter : 7 Totalpoäng : 40 (halva poängtalet krävs normalt
JAVAUTVECKLING LEKTION 4
JAVAUTVECKLING LEKTION 4 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Iterationer (loopar) Algoritmer Mer om felsökning 1 WHILE-SATSEN String s = JOptionPane.showInputDialog("Talet
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016
Objektorienterad Programkonstruktion Föreläsning 11 6 dec 2016 Föreläsningen 13/12 Halvtidsrepetition Maila frågor som ni vill att jag tar upp! ccs@kth.se Processer Vad vi i dagligt tal menar när vi pratar
Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.
Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i
Klassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt
ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter
ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering 1 DSV Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste åren I Java finns
Föreläsning 3. Stack
Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack
Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?
Programmeringsteknik och Matlab Övning 6 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016
Objektorienterad Programkonstruktion Föreläsning 9 30 nov 2016 Collections Ett samlingsnamn på objekt som innehåller en samling av andra objekt Det finns många olika sorters Collections, t.ex listor, träd,
I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else
Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,
EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass
EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet
Föreläsning 8: Exempel och problemlösning
TDA 545: Objektorienterad programmering Föreläsning 8: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 De tre senaste föreläsningarna Läsanvisning: kap 2 & 13 meddelanden och
Recitation 4. 2-D arrays. Exceptions
Recitation 4. 2-D arrays. Exceptions Animal[] v= new Animal[3]; 2 declaration of array v Create array of 3 elements v null a6 Assign value of new-exp to v Assign and refer to elements as usual: v[0]= new
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Stackar, köer, iteratorer och paket
Stackar, köer, iteratorer och paket Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Paket Stackar och köer Array resp länkad struktur Iteratorer Javadoc Kommentarer lab 1 Bra att de flesta
Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.
Introduktion Upplägg Kursen heter konstruktion, ej design eller formgivning. det handlar främst om att lära sig att bygga gränssnitt som är sunda den är praktiskt orienterad; vetenskapliga teorier finns,
Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1
Java Sida 1 av 1 Java Mål och Syfte Målet med denna kurs i Java är att du direkt efteråt ska kunna börja utveckla dina första Javaapplikationer. Kursen ger dig många konkreta exempel på hur detta effektiva
Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna
MER Java Foundation Classes (JFC) Swing Swing Många klasser Vettigt att lära sig dem utantill - Tror inte det -... men det kan vara bra att ha en liten överblick över vad som finns - Idag (och med fortsättning
Tentamen Programmering fortsättningskurs DIT950
Tentamen Programmering fortsättningskurs Datum: 2015-03-17 Tid: 08.30-12.30 Hjälpmedel: Engelskt-Valfritt språk lexikon Betygsgränser: U: -23 G: 24-43 VG: 44-60 (max 60) Lärare:. Någon besöker ca 10.00