TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Relevanta dokument
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

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

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

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

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

ID1004 Laboration 3, 5-6 November 2012

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

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

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar

DAT043 - föreläsning 8

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

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

Lektion Händelsehanterare

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

Föreläsning 10. ADT:er och datastrukturer

Rita Egna Bilder, Timer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

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

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Lab5 för prgmedcl04 Grafik

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Objektorienterad programmering med Java Swing. Programexempel. Swing och AWT AWT. = Abstract windowing toolkit

Föreläsning 15: Repetition DVGA02

725G61 - Laboration 8 Ett enkelt GUI. Sahand Sadjadee och Johan Falkenjack

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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

Facit Tentamen TDDC (7)

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Föreläsning REPETITION & EXTENTA

Introduktionsmöte Innehåll

EDAA01 Programmeringsteknik - fördjupningskurs

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

Grafiska användargränsnitt i Java. Föreläsning 7 Innehåll. Använda klasspaketet Swing. Klasspaket i Java. Grafiska användargränsnitt i Java

Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

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

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

Laboration 3 GUI-programmering

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

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

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

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

PROGRAMMERINGSTEKNIK TIN212

Lösningar för tenta 3 DAT043,

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

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

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

OOP Objekt-orienterad programmering

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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

Laboration 4: Game of Life

Tentamen i Objektorienterad programmering

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

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

Sökning och sortering

Föreläsning 7. Grafiska användargränssnitt

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

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

Applets med komponenter

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

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

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

Mer om grafiska komponenter. Händelsestyrda program

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

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Laboration 13, Arrayer och objekt

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Algoritmer. Två gränssnitt

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

729G75: Programmering och algoritmiskt tänkande. Tema 1. Föreläsning 1 Jody Foo

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

TENTAMEN I. OBJEKTORIENTERAD PROGRAMMERING för Z1. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

Föreläsning 14: Grafik & mera händelsehantering

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

OOP Objekt-orienterad programmering

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

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

Laboration 1 - Grunderna för OOP i Java

Transkript:

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 Laboration 3 Visualisering (och implementering) av sortering Exempel på grafik (med Swing-paketet) Frågor 1

Laboration 3 Visualisering av sortering Uppgiften - Implementera och visualisera olika sorteringsalgoritmer. Det som skall sorteras är samlingar av heltal. Syftet är att lära sig Javas standardklasser för grafiska komponenter. Vanliga sorteringsalgoritmer. Ett befintligt kodskelett finns. 2

Laboration 3 Visualisering av sortering (forts.) Kodskelettet Följande är klasser är helt eller delvis implementerade: AnimationStarter (main) Animator Algorithms AlgorithmHandler AlgorithmStatus AnimationWidget Examination ButtonPanel DataSet SortAlgorithm BubbleSortAlgorithm ImprovedBubbleSortAlgorithm DataOrder Källkoden för de klasser som du skrivit själv eller uppdaterat (även via mail) En diskussion (1/2-1 A4) där ni diskuterar hur bra olika algoritmer är vid olika förutsättningar. En separat sida där ni anger hur mycket tid som ni lagt på labben och reflektioner kring uppgiften. 3

Laboration 3 Visualisering av sortering (forts.) AnimationStarter JButton JTextField Runnable ButtonPanel Animator JPanel Algorithms AlgorithmHandler ArrayList DataSet AlgorithmStatus AnimationWidget SortAlgorithm JComponent BubbleSortAlgorithm ImprovedBubble SortAlgorithm? 4

Laboration 3 Visualisering av sortering (forts.) Vad skall göras Uppgift 1 Komplettera AnimationWidget.java Uppdatera AlgorithmHandler.java Skall gå att visualisera BubblesortAlgorithm Uppgift 2 Visa flera algoritmer samtidigt Lägg till ImprovedBubbleSortAlgortihm Uppgift 3 Implementation av nya algoritmer InsertionSortAlgorithm, QuickSortAlgorithm och ShellSortAlgorithm Använd befintliga swap och cmp. VG-del (Frivilligt) 5

BubbleSortAlgorithm.java public class BubbleSortAlgorithm extends SortAlgorithm { public BubbleSortAlgorithm() { super("bubble sort"); public void sort() { for (int i = 1; i < getelementcount() ; ++i) { for (int j = getelementcount()-1; j >= i; --j) { if (cmp(j, j-1) < 0) { swap(j, j-1); Notera att: Heltalen som ska sorteras är dolda i SortAlgorithm cmp(i, j): Ligger element i och j rätt ordnade? swap(i, j): Byt plats på element i och j. getelementcount(): Ger storleken på vektorn. 6

Debugger i Eclipse Ett avancerat verktyg för att lokalisera buggar i kod Behovet uppstår när kodbasen är stor och spårutskrifter inte hjälper längre Med debuggern kan du pausa programmet och kika på variabler ändra på variablers värden manuellt köra koden rad för rad och se vad som händer pausa, ändra koden och köra vidare! 7

Laboration 3 Grafisk uppbyggnad JFrame Fönster, lägg till komponenter som innehåll JComponent En komponent, går att rita på Alla komponenter innehåller följande metod: public void paint(graphics g) Denna metod definierar hur en utritning kommer att se ut genom att använda ett Graphics objekt. 8

Exempel på grafik - Trianglar Skapa ett program som ritar ut trianglar med hjälp av en JComponent som agerar som rityta. Komponenten ska ha en association till en Triangel klass. Trianglarna skall ritas upp i ett fönster Klassen JFrame beskriver ett fristående fönster på skärmen. Själva bilden ska vara en subklass till JComponent 9

Grafik med Swing-paketet Swing är ett standardbibliotek med klasser som används för att skapa grafiska gränssnitt. Importera följande paket import javax.swing.*; import java.awt.*; Klasser som implementerar vanliga grafiska komponenter Knappar: JButton Fönster: JWindow eller JFrame Textfält: JTextField, JTextArea, m.fl. 10

Notera att Exempel på grafik - Snögubben paint(graphics g) anropas då Container-klassen ritas upp. paintcomponent(graphics g) anropas för att rita ut själva komponenten. repaint() anropas för att be om en ny utritning av komponenten, som kommer ske nån gång snart. Använd denna istället för att försöka anropa paint direkt. 11