ID1004 Laboration 3, 5-6 November 2012

Relevanta dokument
ID1004 Laboration 4, November 2012

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Exempel på användning av arv: Geometriska figurer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

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

Laboration 10 - Eclipse

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

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

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

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

Laboration 3 GUI-programmering

Inlämningsuppgift 1 Programmeringsteknik MN1 vt02

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

NetBeans 7. Avsikt. Projektfönster

2D1339 Programkonstruktion för F1, ht 2004

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

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

Laboration 10 - NetBeans

Att använda Java SE JDK 6

Laboration 4: Digitala bilder

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

Rita Egna Bilder, Timer

Lösningar för tenta 3 DAT043,

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

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

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

TDDC76 - Programmering och Datastrukturer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

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.

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

LYCKA TILL!!! TENTAMEN I Programmeringsteknik F1. Var vänlig och läs detta: CTH TIN 211. DATAVETENSKAP Göteborg ( ) TENTAMEN

NetBeans 5.5. Avsikt. Projektfönster

Övningar Dag 2 En första klass

Föreläsning 13 Innehåll

Laboration 4: Game of Life

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

Lab5 för prgmedcl04 Grafik

Föreläsning 1, vecka 8: Att förbereda sig för tentan

Tentamen i Objektorienterad programmering

Klassen javax.swing.timer

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

Grundläggande programmering DVG A08 & ISG A04. Allmän information. Å vem är jag då. Karlstads Universitet, Johan Öfverberg 1

Objektorienterad programmering

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion

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 )

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

Föreläsning 5-6 Innehåll

Tentamen i Objektorienterad programmering E

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

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

Java-concept och Swing. Swing low, sweet chariot

Att använda Java SE JDK 6

2D1342 Programkonstruktion för F1, ht 2006

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

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

PROGRAMMERINGSTEKNIK TIN212

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

OOP Tentamen

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.

JAVA Mer om klasser och objektorientering

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

Inledande programmering med C# (1DV402) Introduktion till C#

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 4. Klass. Klassdeklaration. Klasser Och Objekt

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

Laboration 1: Figurer i hierarki

Klasser och objekt, referenser Grundkurs i programmering med Python

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

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

Kompilera och exekvera Javakod

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

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

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

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

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

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

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

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

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Klasser och objekt i C#

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

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

Övning 1. Datateknik A, Java I, 5 poäng. Att ladda hem och installera Java Att skriva ditt första Javaprogram Att kompilera och exekvera ditt program

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

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

Editering, Kompilering och Exekvering av Javaprogram

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Klasser som datastrukturer

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

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

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Transkript:

18-okt-2012/FK ID1004 Laboration 3, 5-6 November 2012 Labben bör göras individuellt. Beräknad tid ca 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 fyra uppgifter som bygger på varandra. Det är först i den fjärde uppgiften som det blir ett körbart program. 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 L3.1 Shape För att dessa klasser ska kompilera så måste källkodsfilerna importera java.awt.*. Placera klasserna i ett nytt, gemensamt projekt i Eclipse. Projektet kan heta DrawShapes. Skapa en klass Shape med följande fält och metoder (ingen main): En publik metod draw som inte returnerar något värde, har en tom kropp, och tar dessa parametrar: o Graphics g o int x o int y o int width o int height Uppgift L3.2 Rectangle Skapa en klass Rectangle som ärver från Shape (extends) och som åsidosätter (override) metoden draw. Låt Rectangle.draw rita en fyrkant med bredden width och höjden height. För att rita, använd Graphics-objektet g: Sätt färgen: g.setcolor(color.black) Rita en rektangel: g.drawrect(x, y, width, height) Uppgift L3.3 Triangle Skapa en klass Triangle som ärver från Shape (extends) och som åsidosätter (override) metoden draw. Låt Triangle.draw rita en pyramid med basen width och höjden height. För att rita, använd Graphics-objektet g (ökande x går åt höger, ökande y nedåt): Sätt färgen: g.setcolor(color.blue) Rita en rak linje: g.drawline(x1, y1, x2, y2) Tips: triangeln omsluts av en tänkt rektangel med bredden width och höjden height. A = x, y B = x + width/2, y C = x, y + height D = x + width, y + height Tips: Använd gärna klassen java.awt.point för att hålla reda på triangelns hörn.

Uppgift L3.4 DrawShapes Hämta filerna DrawShapes.java och ShapesPanel.java från kurssidan på kth/social, eller kopiera från källkoderna sist i detta dokument. DrawShapes innehåller huvudprogrammet (metoden main). ShapesPanel förväntar sig att hitta klasserna Shape, Rectangle och Triangle. Kör DrawShapes. Resultatet bör set ut ungefär så här: Studera källkoden till ShapesPanel. Titta på metoden drawshapesomewhere. Den sista parametern har typen Shape. Men en Shape ritar ju ingenting. Hur kommer det sig att det går att rita både rektanglar och trianglar med samma metod? Hur svårt vore det att lägga till ytterligare en Shape, t ex en Ellipse och få den ritad med?

// ShapesPanel.java import java.awt.*; import javax.swing.*; public class ShapesPanel extends JPanel { // Skapa en rektangel och en triangel. Rectangle rect = new Rectangle(); Triangle tri = new Triangle(); public ShapesPanel() { // Tala om vilken första storlek vi önskar ha. setpreferredsize (new Dimension (400,400)); // Denna metod anropas från paintcomponent och dess uppgift är att // rita den Shape som bifogats på ett slumpmässigt valt ställe på // skärmen, och med en storlek mellan 1 och 60. protected void drawshapesomewhere(graphics g, Dimension panelsize, Shape sh) { // Slumpa fram var på ritytan int shapex = (int) (Math.random() * panelsize.getwidth()); int shapey = (int) (Math.random() * panelsize.getheight()); // Slumpa fram bredd och höjd. int shapewidth = 1 + (int) (Math.random() * 60); int shapeheight = 1 + (int) (Math.random() * 60); // Rita denna Shape. sh.draw (g, shapex, shapey, shapewidth, shapeheight); // Metoden paintcomponent anropas varje gång denna JPanel behöver // ritas om. Det sker automatiskt, t ex om storleken har ändrats. public void paintcomponent (Graphics g) { super.paintcomponent(g); Dimension panelsize = getsize(); // Hur stor ritytan är just nu. // Femtio gånger, rita en rektangel och en triangel. for (int i = 0; i < 50; i++) { drawshapesomewhere(g, panelsize, rect); drawshapesomewhere(g, panelsize, tri); // slut på ShapesPanel.

// DrawShapes.java import javax.swing.*; public class DrawShapes { // Huvudprogram för DrawShapes. public static void main (String [] args) { // Skapa ett fönster med namnet på programmet. JFrame frame = new JFrame ("DrawShapes"); // Om man stänger fönstret så avslutas programmet. frame.setdefaultcloseoperation(jframe.exit_on_close); // Skapa en JPanel som innehåller det som visas i fönstret. JPanel panel = new ShapesPanel(); // Stoppa in panelen i fönstret. frame.getcontentpane().add(panel); // Se till att det som är i fönstret får plats frame.pack(); // Gör fönster och innehåll synligt för användaren. frame.setvisible(true); // slut på DrawShapes.