Grafiska System APIer mm. Innehåll Grafiska System en intro Primitiver Inmatning Grafik-APIer Exempel Java OpenGL. Grafikprogrammering.

Storlek: px
Starta visningen från sidan:

Download "Grafiska System APIer mm. Innehåll Grafiska System en intro Primitiver Inmatning Grafik-APIer Exempel Java OpenGL. Grafikprogrammering."

Transkript

1 Grafiska System APIer mm Björn Eiderbäck Innehåll Grafiska System en intro Primitiver Inmatning Grafik-APIer Exempel Java OpenGL Varför intressera sig för grafik och interaktion? Användarsynvinkel Grafiska gränssnitt ger (om rätt konstruerade) överskådlighet enkel och effektiv inlärning rolig och inbjudande presentation och interaktion ökad kreativitet hos användarna Utvecklarsynvinkel Vad är ett bra grafiskt/interaktivt gränssnitt? Vilka olika möjligheter finns det? Hur konstruerar jag en sådan applikation rent tekniskt? Finns det bra verktyg för att konstruera tillämpningarna? previous next previous next 2 Vad behöver vi veta för att konstruera grafiska applikationer? Grafik Matematiska modeller, grundläggande grafiska algoritmer, visualisering, modellering, termer, tekniker och något om hårdvara Grafikprogrammering Kan delas upp på tre inbördes beroende delar Grsfikprogrammering Interaktion Utformning, konstruktion, design och tekniker för att fabricera interaktiva grafiska applikationer Programmering Tekniker Språk Grafik Tekniker Mjukvara Interaktion Tekniker Hårdvara Programmering Programmeringsverktyg för att skapa grafiska interaktiva tillämpningar APIer Utvecklingsmiljöer Gränssnitt WWW, Internet Visualisering Dimensioner Hårdvara Människan Modeller Ergonomi previous next 3 previous next 4 Programmering Grafik Grafik Programmering Tekniker Visualisering Interaktion Frameworks Komponentbaserade Språk C Java Smalltalk Lingo Utvecklingsmiljöer Smalltalkmiljöer Javamiljöer Director Andra Gränssnitt Tekniker Anpassningsbara Gränssnittsbyggare WWW, Internet, mm Applets Distribuerade applikationer HTML Tekniker Algoritmer Primitiver Modellering Mjukvara OpenGL GKS, PHIGS, mfl VRML Visualisering Grafisk presentation Färg, belysning Perceptuella aspekter Dimensioner 2D 2.5D 3D Hårdvara Maya Maya Inmatningsverktyg Utmatning Bildminne previous next 5 previous next 6

2 Interaktion Interaktion Tekniker Presentations Interaktions Programmerings Hårdvara Grafik kort historik (som ni sett på videon) Men några Milstolpar redan tidigt i datorhistorien (50-talet) fanns halvdumma utskriftsenheter som teleprintrar och radskrivare Pekverktyg Skärm Hjälm, handske Människan Förutsättningar Deltagande under utvecking Seendet Modeller omkring 1950 kom datordrivna katodstrålerör (CRT) Konceptuella Programmeringsmodeller Styrd av människans krav previous next 7 previous next 8... historik... under tidigt 60-tal utvecklades Sketchpad av Ivan Sutherland på MIT Lincoln lab här användes eleganta sätt att rita och manipulera grafiska objekt med en ljuspenna man introducerade många intressanta tekniker bl.a. hierarkier av bilder och delbilder, gummibandslinjer, restriktioner (eng. constraints), gester för vissa operationer många av dessa tekniker hittar vi i dagens system... historik... Samtidigt såg bil- och flygindustrin möjligheterna att använda grafiska tekniker Computer Aided Design (CAD) och Computer Aided Manufacturing (CAM) Arkadspelen som kom i mitten av sjuttiotalet bidrog också starkt till populäriseringen av datorstödda grafiska lösningar. PONG (dvs ett sorts enkelt tennisspel) mitten av 70-talet. previous next 9 previous next historik... Under sjuttiotalet utvecklades också grafiska arbetsstationer med bl.a. fönster och möss. Under 80-talet då billiga persondatorer med bitmappade skärmar kom tog den grafiska användningen riktig fart. (även om hårdvaruteknikerna till stora delar utvecklades under 60-talet)... historik Många grafiska standarder har utvecklats Med en strävan att enklare skriva komplexa grafiska applikationer flyttbar kod som kan köras på flera olika plattformar och hårdvaror Några betydelsefulla grafikpaket 80-talet GKS, PHIGS, NeWS mfl 90-talet OpenGL VRML previous next 11 previous next 12

3 Interaktiva grafiska system Milstolpar (några axplock): Douglas Engelbart, mitten av 1960-talet NLS, on Line System, innehöll , hypertext, direkmanipulation, konferenssystem med videolänk, mm Smalltalk, på Xerox under 1970-talet Introducerade bitmappade skärmar, fönstersystem, pop-upmenyer, användning av mus, reflexiv öppen omgivning, maskinoberoende portabel kod, MVC, objektorientering, stort klassbibliotek....milstolpar... Xerox Star, 1981 Desktopmetafor med ikoner och överlappande fönster. What You See Is What You Get (WYSIWYG) MAC, 1984 Första billiga alternativet. Genomgående grafisk direkmanipulativ filosofi. X-windows, 1987 Windows 3, 1990 Sålde idéerna till en bredare publik (även om gränssnittet var ett :-)) IDE, Integrated Development Environment, med utvecklingsverktyg previous next 13 previous next 14...milstolpar Videospel Gjorde oss vana vid idéerna. Grundläggande grafiskt system Windows 95/NT gav vidare spridning (Det börjar se snyggare ut.) HTML, WWW med browsrar som Mosaic och Netscape, tidigt tal Har (indirekt) ökat intresset och spritt idéerna till en riktigt bred marknad Java (första versionen släpptes 1995) Ökade möjligheter att skriva plattformsoberoende interaktiva system, enkelt att sprida med sin koppling till Internet Modernare IDEer VisualWorks\Smalltalk med SUnit, refactoring, mm Eclipse Inmatningsenhet Bilden skapad i FB Utmatningsenhet previous next 15 previous next 16 Inmatningsverktyg Katodstrålerör mouse trackball light pen data tablet joy stick space ball Kan antingen användas som linjeritande enhet eller innehållet i en frame buffer (rastergrafik) previous next 17 previous next 18

4 Datorgrafik: Som tidigare sagts går datorgrafik tillbaks till datorernas barndom Datorgrafik : Trådmodeller Kostnaden för omritning via katodstrålerör var då hög Datorerna var långsamma, dyra och inte tillförlitliga previous next 19 previous next 20 Grafikprocessor (eng Display Processor) Istället för att den vanliga datorn ska behöva uppdatera skärmen finns en speciell grafikprocessor (display processor (DPU)) Dom grafiska elementen lagras i en utritningslista (eng display list (display file)) i grafikprocessorn Värddatorn kompilerar display-listan och skickar den till DPU Datorgrafik : Rastergrafik Grafiska standardpaket började komma Ett par av dom största GKS: Europeiskt Blev ISO 2D standard Core: Nordamerikanskt 3D men blev aldrig ISO standard Arbetstationer och PC previous next 21 previous next 22 Rastergrafik En bild skapad som en vektor (ett raster) av bildelement (pixels) i frame bufferten Rastergrafik Låter oss gå från linjer och trådmodeller till fyllda polygoner previous next 23 previous next 24

5 PCar och arbetsstationer Även om vi inte längre skiljer på PCar och arbetsstationer så har dom utvecklats från olika källor Tidiga arbetsstationer karaktäriseras av Nätverksanslutning: klient-server Hög nivå av interaktivitet Tidiga PCar inkluderade bildminne som del av användarminnet Datorgrafik : Realism kommer till datorgrafiken smooth shading environmental mapping bump mapping previous next 25 previous next 26 Datorgrafik: Specialhårdvara Silicon Graphics geometrimotor VLSI implementation av grafisk pipeline Industristandard PHIGS RenderMan Nätverksbaserad grafik: X Window System Datorgrafik: OpenGL API Helt datorgenerarade filmer (Toy Story) gör succe Nya hårdvarumöjligheter Texture mapping Blending Accumulation, stencil buffer Human-Computer Interaction (HCI) previous next 27 previous next 28 Datorgrafik: Fotorealism Utmatningstekniker Vektoriserade (linjeritande) skärmar Grafikkort till PCs dominerar marknaden Nvidia, ATI, 3DLabs var ganska vanliga fram till en bit in på 80-talet utritning sker genom att linje för linje i en slumpmässig ordning ritas ut på skärmen, därför den engelska termen random scan kunde rita linjer mellan godtyckliga punkter på skärmen Spelkonsoler leder marknadsutveckoingen Datorgrafik blir rutin i filmindustrin: Maya, Lightwave Refresh rate Skärmens fosforyta efterlyser endast en viss tid måste uppdateras flera gånger i sekunden (typiskt 30-70) för att undvika flimmer. previous next 29 previous next 30

6 ... Rasterskärm... Interlacing (sve. radsprång) skärmen uppbyggd som en bitkarta varannan sveplinje uppdateras i varje svep bilderna lagras i en speciell refresh buffer Raster hela bilden skapas från ett raster, som är en uppsättning horisontella svep-linjer bra för skärmar med låg uppdateringshastighet (med typiskt 30 ggr per sekund). Reducerar flimmer. previous next 31 previous next Monokrom skärm... Element konstrueras som bitkartor Exempel bitkarta till bild (från VisualWorks) ritar med två färger Pixmap (pixel map), bitkarta en representation av en rektangulär area med en vektor av punkter bestående av heltal Namnet pixmap kan betyda både innehållet i refreshbufferten och buffertens minne. För att inte skapa förvirring brukar det senare kallas för frame buffer Cursor normal Cursor hand previous next 33 previous next Matematisk beskrivning till raster Svepkonvertering/rastrering (matematiska) (linje-)beskrivningar översätts till rasterpunkter Ett problem: Aliasing en term från signalprocessing för fel som uppstår då en kontinuerlig signal diskretiseras I grafiska sammanhang syns detta genom att räta linjer blir trappor. y = mx + b R2 R 2 = x 22 + y 22 previous next 35 previous next 36

7 En lösning: Antialiasing tekniker för att reducera aliasing-effekter vanlig teknik är att låta intensiteten vara proportionell mot hur mycket en viss rasterpunkt befinner sig inom den ideala linjen Koordinatsystem och koordinater Vanligen jobbar vi i Cartesiska koordinater Vissa system har origo nere till vänster andra uppe till vänster Världskoordinater Är dom koordinater vi använder i våra applikationer Här bryr vi inte oss om vilka pixlar på skärmen som kommer representera dem Utan antialiasing Antialiasing Skärmkoordinater De koordinater som verkligen representerar punkter på skärmen previous next 37 previous next 38 Kameramodell projektor p bildplan projektion av p Projektionscentrum (center of projection, cop) Världen med världskoordinater Skärmen med skärmkoordinater Vanliga ritrutiner och attribut Dom flesta grafiska paket innehåller åtminstone stöd för att rita (2D) Punkter Av olika storlek Linjer Heldragna, streckade, prickade osv Polygoner Fyllda eller icke fyllda Text Med olika storlek och typsnitt Kurvor Som splines och Bezierkurvor previous next 39 previous next 40 OpenGL-primitiver GL_POINTS GL_LINES GL_TRIANGLES GL_LINE_STRIP GL_LINE_LOOP GL_POLYGON GL_QUAD_STRIP Attribut Det finns också stöd för att ange Färg eller mönster Linjebredd Prickad streckad I OpenGL kommer ni senare se prov på fler attribut, tex för att ange olika typer av polygoner och (självklart) i tre dimensioner GL_TRIANGLE_STRIP GL_TRIANGLE_FAN previous next 41 previous next 42

8 Klippning Då man konstruerar ett fönster att rita i brukar (eller kan) man också ange klipprektanglar Dvs ange dom områden där objekten skall synas Objekt utanför, eller delvis utanför, klipps mot området Fönster och vyer Ett fönster brukar ofta delas in i delvyer (viewports) I varje viewport jobbar man med ett lokalt koordinatsystem (fönstret har också ett koordinatystem) Med klipprektangel satt snabbas ofta utritningen upp previous next 43 previous next 44 Attribut Linjetjocklek Linjeändor Linjehörn previous next 45 3 huvudtyper 1 2 Olika inmatningstyper Det är centralt att ta hand om inmatning från olika inenheter i alla typer av interaktiva tillämpningar Request mode Vänta tills dess att något sker tex på inmatning via tangentbordet eller klick på mus traditionell inmatning från tangentbord, scanf (C), readln (Pascal) sensor.waitbutton(); gc.displaystring("inmatning ", sensor.pos()); Där sensor är ett (tänkt) objekt som ger oss möjlighet att läsa av inmatningsverktygens status (dvs tex tangentbord och mus) Samplad/pollad Kontrollera status för enhet Omedelbar avläsning tex är någon knapp på musen nertryckt while(sensor.anybuttonpressed()) { pen.moveto(sensor.mousepoint()); previous next inmatningstyper Händelsestyrd Förändringar hos enheter placeras i en kö intresserade program meddelas om att händelse inträffat från början av kön (flera kan alltså meddelas om samma händelse) API:er Genom åren har flera APIer (Application Programmer s Interface) skapats, tex GKS, Phigs mfl Smalltalk-APIer Java-APIer OpenGL-APIer (med bla GLUT, GLU) Det är sedan upp till varje program att själv bestämma hur det skall (eller inte skall) reagera Exempel, en metod som reagerar om händelsen dubbeklick inträffar public void doubleclickevent(event event) { frame.setlocation(event.position()); Gör det relativt enkelt att programmera både grafiska och interaktiva gränssnitt previous next 47 previous next 48

9 Inmatningstyper och APIer Dom modernare APIerna för grafik och interaktion använder en händelsebaserad inmatning Används i exempelvis Java Utnyttjar polymorfism och andra oo-tekniker Händelsehanterare Smalltalk OO-tekniker Shockwave och Flash Olika händelser resulterar i olika funktionsanrop OpenGL Bakomliggande system anropar metoder som programmeraren definerat och bundit till specifika händelser previous next 49 Javas API (Application Programmer s Interface) Java:s API innehåller bla awt (abstract windowing toolkit) som delvis kan användas som ett FrameWork som bla stödjer konstruktion av applikationer med fönster Konstruktion av egna fönster Fundamental fönsterklass AWT: Frame Swing: JFrame Ett sätt att konstruera fönster med egna egenskaper (tex speciell utritning) är att subklassa fönsterklassen Beteendet ändras, dvs anpassas till dom egna önskemålen, genom att lämpliga metoder skrivs om i den konkreta (egna) subklassen Tex paint(...) eller paintcomponent(...) för att beskriva utritning Olika händelsehanterare definieras för att ta hand om olika inmatningshändelser I Swing subklassar man ofta JComponent previous next 50 Frame och Applet java.lang java.awt java.applet Object Object Component Component Container Container Window Window Panel Panel Frame Frame Applet Applet Ofta importeras alla klasser i java.awt Java-exempel 1 (AWT) import java.awt.*; // Klassdefinition (utan extends medför subklass till Object) public class MyApplication { Ofta är det tillräckligt att (Java 1.1) subklassa Frame och implementera tex WindowListener, MouseListener och MouseMotionListener senare skall vi titta på hur vi istället kan använda adaptorer skriva public static void main(string [] args) instansiera den egna klassen, ange fönsterstorlek och ange att fönster och mushändelser skall tas emot (addwindowlistener(this) osv), öppna det hela skriva public void paint(graphics g) rita på skärmen konstruera metoder för dom gränssnitt för dom "lyssnare" vi angett att vi skall implementera Instansiera Frame Sätt storlek Och öppna public static void main(string [] s) { Frame f = new Frame("Mitt första fönster"); f.setsize(200, 300); f.setvisible(true); previous next 51 previous next och så sparar vi, kompilerar och kör Spara Spara filen med samma namn som klassen med extension.java, dvs här MyApplication.java Kompilera javac MyApplication.java Skapar en fil MyApplication.class Kör java MyApplication previous next 53 Vi definierar hur omritning av fönstret ska gå till Java-exempel 2 (AWT) import java.awt.*; public class MyFrame extends Frame { public MyFrame() { public MyFrame(String s) { super(s); public void paint(graphics g) { int x = 100, y = 200; for (int i = 0; i < 100; i++) { g.drawoval(x, y, i, i); public static void main(string [] s) { MyFrame f = new MyFrame("Mitt andra fönster"); f.setsize(200, 300); f.setvisible(true); previous next 54

10 Java2D: hur Java har ett rikt API för att konstruera grafiska tillämpningar Graphics och Graphics2D är dom centrala utritningsklasserna För att komma åt Graphics2D:s rutiner måste vi dock göra en cast (i tex paint-metoden) public void paint(graphics g) { Graphics2D g2 = (Graphics2D) g; // Nu kan vi använda rutiner i Graphics2D utan att // komplikatorn klagar... Java2D: några primitiver och enkla ritrutiner linjetjocklek float width = 10; BasicStroke bs = new BasicStroke(width); gc2.setstroke(bs); gc2.drawline(10, 10, 100, 200); streckad linje float [] dash = {10; BasicStroke b = new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f); g2.setstroke(b); previous next 55 previous next Polygon (beskriv först rita sedan) GeneralPath p = new GeneralPath(); p.moveto(0, 0); p.lineto(w/12, h/10); p.lineto(0,h/5); p.closepath(); g2.draw(p); //Rita ut det hela nu Java2D: ange typ av linje och hörn I många grafikpaket kan man ange om ändor av linjer skall vara räta, rundade eller projicerade CAP_BUTT, CAP_ROUND, CAP_SQUARE Motsvarande gäller för hörn i polygoner BasicStroke.JOIN_MITER, BasicStroke.JOIN_ROUND, BasicStroke.JOIN_BEVEL BasicStroke bs = new BasicStroke(20.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND); Antialiasing g2.setrenderinghint(renderinghints.key_antialiasing, RenderingHints.VALUE_ANTIALIAS_ON); Rita sen som vanligt previous next 57 previous next 58 För JFrame importerar vi javax.swing För mer avancerad grafik importerar vi java.awt.geom Med Graphics2D kan vi göra mer avancerade 2Dsaker Java-exempel 3, Swing, Graphics2D och JFrame import java.awt.*; import javax.swing.*; import java.awt.geom.*; public class MyJFrame extends JFrame { public void paint(graphics g) { Graphics2D g2 = (Graphics2D)g; g2.setstroke(new BasicStroke(8.0f)); g2.setcolor(color.magenta); g2.draw(new Arc2D.Double(40, 70, 200, 100, 120, 135, Arc2D.OPEN)); public static void main(string [] s) { MyJFrame f = new MyJFrame(); f.setsize(200, 300); f.setvisible(true); previous next 59 Java-exempel 4 import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.image.*; import javax.swing.*; public class Demo1Java2D extends JFrame { public Demo1Java2D(){ super( Some 2D graphics"); public void paint(graphics g){ super.paint(g); Graphics2D graphics2d = (Graphics2D) g; graphics2d.translate(0, 20); graphics2d.setpaint(new GradientPaint (5, 30, Color.blue, 35, 100, Color.yellow, true)); graphics2d.fill(new Ellipse2D.Double(5, 30, 65, 100)); previous next 60

11 graphics2d.setpaint(color.red); graphics2d.setstroke(new BasicStroke(10.0f)); graphics2d.draw( new Rectangle2D.Double(80, 30, 65, 100)); graphics2d.setpaint(new TexturePaint( bufferedimage, new Rectangle(10, 10))); graphics2d.fill(new RoundRectangle2D.Double( 155, 30, 75, 100, 50, 50)); BufferedImage bufferedimage = new BufferedImage( 10, 10, BufferedImage.TYPE_INT_RGB); Graphics2D graphics= bufferedimage.creategraphics(); graphics.setcolor(color.yellow ); graphics.fillrect(0, 0, 10, 10 ); graphics.setcolor(color.black ); graphics.drawrect(1, 1, 6, 6 ); graphics.setcolor(color.blue ); graphics.fillrect(1, 1, 3, 3 ); graphics.setcolor(color.red ); graphics.fillrect(4, 4, 3, 3 ); graphics2d.setpaint(color.white); graphics2d.setstroke(new BasicStroke(6.0f)); graphics2d.draw( new Arc2D.Double( 240, 30, 75, 100, 0, 270, Arc2D.PIE)); graphics2d.setpaint(color.green ); graphics2d.draw(new Line2D.Double(395, 30, 320, 150)); float[] dashes = {10, 2; graphics2d.setpaint(color.yellow); graphics2d.setstroke(new BasicStroke( 4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 10, dashes, 0)); graphics2d.draw(new Line2D.Double(320, 30, 395, 150)); previous next 61 previous next 62 public static void main(string[] args){ Demo1Java2D application = new Demo1Java2D (); application.setdefaultcloseoperation( JFrame.EXIT_ON_CLOSE); application.setsize(425, 180); application.setvisible(true); Inkludera nödvändiga bibliotek Beskriv vad som ska göras om fönstret behöver ritas om OpenGL ett första exempel (simple1.c) #include <GL/glut.h> /* glut.h inkluderar gl.h och glu.h*/ void mydisplay(void) { glclear(gl_color_buffer_bit); /* Rensa fönstret */ glbegin(gl_polygon); /* Beskriv en polygon */ glvertex2f(-0.5, -0.5); glvertex2f(-0.5, 0.5); glvertex2f(0.5, 0.5); glvertex2f(0.5, -0.5); glend(); glflush(); /* Töm bufferten, dvs rita polygonen */ int main(int argc, char** argv) { glutcreatewindow("simple 1"); glutdisplayfunc(mydisplay); glutmainloop(); Skapa ett fönster Ange att mydisplay ska anropas vid omritning Låt glut:s huvudloop ta över (måste alltid vara med och sist i koden) previous next 63 previous next kompilera och köra... På NADAs Solaris/Unix-maskiner gcc simple1.c o simple1 -lglut -lgl -lglu -lxmu -lx11 -lm Under Windows med Cygwin och gcc/g++ och glut installerat gcc simple1.c o simple1 -lopengl32 -lglu32 -lglut32 -lm -LC:\GLUT\glut bin Där jag placerat glut-binärerna i C:\GLUT\glut bin Kör genom att skriva (eller kanske dubbelklicka på simple1.exe) simple1... det blir enklare att kompilera med hjälp av en make-fil... Alexander pratar mer om detta senare i kursen # This sample Makefile allows you to make an OpenGL application # whose source is exactly one.c file. # # To use this Makefile, you type: # make xxxx # where # xxxx.c is the name of the file you wish to compile # # A binary named xxxx will be produced CC = gcc #Windows LDLIBS = -lopengl32 -lglu32 -lglut32 -lm -LC:\GLUT\glut bin #UNIX #LDLIBS = -lglut -lgl -lglu -lxmu -lx11 -lm.c: $(CC) $@.c $(LDLIBS) -o $@ previous next 65 previous next 66

12 ... då kan vi kompilera på följande sätt make simple1 Då kommer kompilering bara ske om simple1.c är förändrad I så fall skapas simple1.exe En egen initrutin Sätt upp fönstrets koordinater Vi utvidgar exemplet en aning (simple2.c) I förra exemplet använde vi en hel del defaultvärden Vi ändrar lite #include <GL/glut.h> void mydisplay(void) { /* Som i förra versionen void init() { /* Vi rensar med grönt den här gången */ glclearcolor (0.0, 1.0, 0.0, 1.0); /* och ritar med rött */ glcolor3f(1.0, 0, 0); glmatrixmode (GL_PROJECTION); glloadidentity (); previous next 67 /* left, right, bottom, top, near, far */ glortho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0); previous next 68 Anropa den egna init() int main(int argc, char** argv) { glutinit(&argc,argv); glutinitdisplaymode (GLUT_SINGLE GLUT_RGB); glutinitwindowsize(500,500); glutinitwindowposition(20,50); glutcreatewindow("simple 2"); glutdisplayfunc(mydisplay); init(); glutmainloop(); En buffer för omritning vidd, höjd Använd RGB för att definiera färger Fönstrets övre vänstra hörn origo i skärmens övre vänstra hörn previous next 69

Utmatningstekniker Vektoriserade (linjeritande) skärmar

Utmatningstekniker Vektoriserade (linjeritande) skärmar previous 2D-grafik. Något om FrameWorks. Java en kort introduktion och något exempel med AWT, något om Swing och Graphics2D, samt OpenGL ett litet exempel Föreläsning 2 Innehåll Något om utmatning hårdvara,

Läs mer

Kursens uppläggning. GRIP 2D1640 Föreläsning 1. Sidan borttagen!! Grafik och Interaktionsprogrammering

Kursens uppläggning. GRIP 2D1640 Föreläsning 1. Sidan borttagen!! Grafik och Interaktionsprogrammering GRIP 2D1640 Föreläsning 1 Grafik och Interaktionsprogrammering och översikt Hemsida: http://www.nada.kth.se/kurser/kth/2d1640 Registrering: res checkin grip05 Hemkatalog: /info/grip05 Kursansvarig Björn

Läs mer

GRIP 2002, 2D1953-föreläsning 1a

GRIP 2002, 2D1953-föreläsning 1a *5,3' ) UHOlVQLQJD *UDILNRFK,QWHUDNWLRQVSURJUDPPHULQJ Introduktion och översikt Hemsida: http://www.nada.kth.se/kurser/kth/2d1953 Registrering: res checkin grip02 Hemkatalog: /info/grip02 previous next

Läs mer

2D-grafik. Gustav Taxén

2D-grafik. Gustav Taxén 2D-grafik Gustav Taxén gustavt@csc.kth.se 2D164 Grafik och Interaktionsprogrammering VT 27 Framebuffer Datorminne som lagrar information för pixlarna som ska visas på skärmen Grafikkortet hämtar värdena

Läs mer

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

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

Läs mer

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

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

Läs mer

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

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur

Läs mer

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

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

Läs mer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se

Läs mer

Varför behövs grafikbibliotek? Introduktion till OpenGL. OpenGL är ett grafikbibliotek. Fördelar med OpenGL. Allmänt om OpenGL. Nackdelar med OpenGL

Varför behövs grafikbibliotek? Introduktion till OpenGL. OpenGL är ett grafikbibliotek. Fördelar med OpenGL. Allmänt om OpenGL. Nackdelar med OpenGL Introduktion till OpenGL Battlezone Atari corp., 1980. Gustav Taxén CID gustavt@nada.kth.se Varför behövs grafikbibliotek? Grafikhårdvara Skillnader i funktionalitet och möjligheter. Skillnader i styrning.

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 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

Läs mer

Transformationer. Translation. Skalning. Homogena koordinater. Rotation. 2D-grafik. x y. Inom datorgrafik är transformationer den. Många. bevaras.

Transformationer. Translation. Skalning. Homogena koordinater. Rotation. 2D-grafik. x y. Inom datorgrafik är transformationer den. Många. bevaras. Transformationer D-grafik Gustav Taén gustavt@nada.kth.se Inom datorgrafik är transformationer den kanske viktigaste formen av operation. De vanligaste transformationerna är linjära och kan skrivas som

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 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

Läs mer

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

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets Objektorienterad programmering i Java Föreläsning 5 Kort om Java-Applets 1 Läsanvisningar Den här föreläsningen syftar till att ge en bild av vad en Java-Applet är och är ganska fristående från föregående

Läs mer

Laboration 3 GUI-programmering

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äs mer

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

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing Föreläsning 15 (16) Introduktion till Swing Historik (java.awt) JDK 1.0 AWT (Abstract Window Toolkit) Paket för gränssnittsprogrammering Har en del nackdelar: Använder s.k. native code Stödjer endast komponenter

Läs mer

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Grafiskt användargränssnitt, Swing Layout och komponenter Göra

Läs mer

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

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

Läs mer

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

Föreläsnings 11 - GUI, Händelsestyrda program, MVC Föreläsnings 11 - GUI, Händelsestyrda program, MVC Josef Svenningsson Tisdag 20/11 Boken Denna föreläsning går igenom följande sektioner i boken: 10.1 och 10.2 11.1 Notera att kapitel 11 inte finns i boken

Läs mer

ID1004 Laboration 3, 5-6 November 2012

ID1004 Laboration 3, 5-6 November 2012 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

Läs mer

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

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

Läs mer

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.

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. Datateknik A, Syfte: 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. Att läsa: Lektion 2 Uppgifter:

Läs mer

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

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering 2I1049 Föreläsning 8 Grafiska gränssnitt, Java interface och händelsehantering 1 KTH-MI Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste

Läs mer

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

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

Läs mer

TDDD78, TDDE30, 729A Grafik: Att "rita" egna komponenter

TDDD78, TDDE30, 729A Grafik: Att rita egna komponenter TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Grafik: Att "rita" egna komponenter Intro 1: Rita Allt på skärmen ritas som pixlar Även de vanliga GUI-komponenterna 2 Gradienter, skuggning Matematisk

Läs mer

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 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:

Läs mer

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

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).

Läs mer

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

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2 Strukturerad programmering l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll 1 2 Olika ansatser Begrepp Den manipulativa/imperativa

Läs mer

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

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets GUI (forts) Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets Sven-Olof Nyström Uppsala Universitet 18 mars 2005 Skansholm: Kapitel 6 Användaren kan kommunicera med programmet

Läs mer

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

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

Läs mer

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

TENTAMEN PROGRAMMERING I JAVA, 5P SOMMARUNIVERSITETET

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

Läs mer

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

Föreläsning 14: Grafik & mera händelsehantering TDA 545: Objektorienterad programmering Föreläsning 14: Grafik & mera händelsehantering Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Idag: grafik läs kap 17 Viktigt i denna föreläsning: att rita

Läs mer

OOMPA 2D1359 Föreläsning 3

OOMPA 2D1359 Föreläsning 3 OOMPA 2D1359 Föreläsning 3 Objektorienterad Modellering Programmering och Analys Objektorientering grunder-2 l Komponenter och beteende l CRC-kort Teknik för att beskriva och ta fram objekt, klasser och

Läs mer

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Denna laboration är frivillig och syftar till att låta dig lära mer om grafik i java. Labben är ganska grundlig och går igenom vad du skall

Läs mer

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

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) Objektorienterad Programmering DAT043 Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Repetition: Arv En subklass ärver alla variabler och metoder från sin superklass.

Läs mer

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

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:

Läs mer

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02) UMEÅ UNIVERSITET Institutionen för datavetenskap Thomas Johansson Oktober 1998 Programutveckling med Java Development Kit (JDK 1.1.x) och Programmers File Editor (PFE 7.02) Umeå universitet 901 87 Umeå.

Läs mer

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

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 18 Igår: Genomgång av dugga Rekursion Idag och på måndag: Om essän Lite, lite teori om konstanter Grafiska användargränssnitt Grundläggande

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad

Läs mer

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

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Rita Egna Bilder, Timer

Rita Egna Bilder, Timer Rita Egna Bilder, Timer Josef Svenningsson November 27, 2012 Grafik Varje gång ett fönster behöver ritas om, pga av att det flyttas eller varit övertäckt, anropas automatiskt en metod som har namnet paintcomponent.

Läs mer

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna

Läs mer

Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1

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

Läs mer

DOA GUI-del 1. Java och enkla grafiska gränssnitt. Kodexempel. Steg för steg 1. Skapa fönster. 1. Skapa fönster. 2. Skapa knapp

DOA GUI-del 1. Java och enkla grafiska gränssnitt. Kodexempel. Steg för steg 1. Skapa fönster. 1. Skapa fönster. 2. Skapa knapp DOA GUI-del 1 Grafik och Interaktionsprogrammering Skapa fönster, rita och ta hand om inmatning i Java Java och enkla grafiska gränssnitt Då man konstruerar enkla grafiska gränssnitt kan man med fördel

Läs mer

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Stora delar har

Läs mer

Classes och Interfaces, Objects och References, Initialization

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

Läs mer

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Algoritmanalys, Ordo Sortering, Insertionsort

Läs mer

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

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

Läs mer

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort?

I rastergrafikens barndom...gjorde man grafik genom att skriva i ett videominne. Operationer på buffert och pixlar. Idag... Varför grafikkort? Operationer på buffert och pixlar I rastergrafikens barndom......gjorde man grafik genom att skriva i ett videominne. Lapped textures Emil Praun et al., SIGGRAPH 2000. Gustav Taxén CID gustavt@nada.kth.se

Läs mer

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

Objektorienterad programmering med Java Swing. Programexempel. Swing och AWT AWT. = Abstract windowing toolkit Swing och AWT Objektorienterad programmering med Java Swing Sven-Olof Nyström Uppsala Universitet March 14, 2006 Skansholm: Kapitel 6 AWT = Abstract windowing toolkit använder värddatorns fönstersystem

Läs mer

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik Fortsättningskurs i programmering F 5 GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 1 Abstract Window Toolkit Paket för hantering av grafik dvs skapa grafisk användargränssnitt java.awt

Läs mer

Exempel på användning av arv: Geometriska figurer

Exempel på användning av arv: Geometriska figurer (9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. (9 maj 2014

Läs mer

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java jonas.kvarnstrom@liu.se 2017 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Till stor del ersatt av Swing: Mer omfattande,

Läs mer

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål,

Läs mer

Labbinstruktioner för Java/Swing

Labbinstruktioner för Java/Swing Labbinstruktioner för Java/Swing Grafik- och interaktionsprogrammering 2008 Martin Berglund Allmänt Dessa instruktioner är på intet sett den enda möjliga lösningen på labben, tvärtom finns

Läs mer

Fönstersystem. Objektorientering och händelsebaserad programmering. Applikation. Interaktionstoolkit. Händelsehanterare och grafiktoolkit

Fönstersystem. Objektorientering och händelsebaserad programmering. Applikation. Interaktionstoolkit. Händelsehanterare och grafiktoolkit Objektorientering och händelsebaserad programmering Gustav Taxén gustavt@nada.kth.se Fönstersystem Applikation Interaktionstoolkit Händelsehanterare och grafiktoolkit Operativsystem Hårdvara 1 Frameworks

Läs mer

In- och utenheter. Händelsebaserad programmering i GLUT. Interrupt-baserad interaktion. Sampling / polling. Händelsebaserad interaktion (forts.

In- och utenheter. Händelsebaserad programmering i GLUT. Interrupt-baserad interaktion. Sampling / polling. Händelsebaserad interaktion (forts. Den första datormusen Douglas Englebart, 1968. programmering i GLUT Gustav Taxén CID gustavt@nada.kth.se In- och utenheter Alla datorsystem har in- och utenheter som behandlar information. Data skickas

Läs mer

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 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:

Läs mer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

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

Läs mer

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

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas. Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod

Läs mer

Lektion Händelsehanterare

Lektion Händelsehanterare Lektion Händelsehanterare Händelsehanterare kallas även lyssnare. En lyssnare har som uppgift att ta hand om olika händelser som kan inträffa. För att lyssnaren skall reagera på händelser måste den registreras

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: 2:a september 200, klockan 8:30-12:30. Plats: V Ansvarig lärare: Katarina Blom, tel 772 10 0. Läraren besöker tentamen kl 9:30

Läs mer

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

Läs mer

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)

Läs mer

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

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015 Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora

Läs mer

Java-concept och Swing. Swing low, sweet chariot

Java-concept och Swing. Swing low, sweet chariot Java-concept och Swing Swing low, sweet chariot Javas Swing-API En del av Javas standard-api API - application programming interface Ett klassbibiliotek som följer med Java Är designat med många OO-concept

Läs mer

3.5 Visuell programmering

3.5 Visuell programmering 3.5 Visuell programmering Alla våra program hittills har varit C# Console Applications (sid 41) inkl. programmet MessageBox fast det genererade en grafisk meddelanderuta. Nu vill vi utnyttja grafikens

Läs mer

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

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Magnus Myréen Modelsvar för Tentamen för Objektorienterad programvaruutveckling,

Läs mer

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud. Analog Digitalitet Kontinuerlig Direkt proportionerlig mot källan Ex. sprittermometer Elektrisk signal som representerar ljud Diskret Digital Representation som siffror/symboler Ex. CD-skiva Varje siffra

Läs mer

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om

Läs mer

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas (inbyggda monitor) synchronized. 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized. previous next Java Java är konstruerat på

Läs mer

NetBeans 7. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

Läs mer

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

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

Läs mer

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

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) 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/2d1310/

Läs mer

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

Föreläsning 10. ADT:er och datastrukturer Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad

Läs mer

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 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

Läs mer

DAT043 - föreläsning 8

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

Läs mer

Programmering B med Visual C++ 2008

Programmering B med Visual C++ 2008 Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,

Läs mer

Föreläsning 1 & 2 INTRODUKTION

Föreläsning 1 & 2 INTRODUKTION Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga

Läs mer

En introduktion till OpenGL. Gustav Taxén gustavt@csc.kth.se

En introduktion till OpenGL. Gustav Taxén gustavt@csc.kth.se En introduktion till OpenGL Gustav Taxén gustavt@csc.kth.se 2D164 Grafik och Interaktionsprogrammering VT 27 Labb 4 görs på PC! Följ det nya labbpeket - eller: Följ stegen i labbpeket för labb 5 för att

Läs mer

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.axelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Klassen javax.swing.timer

Klassen javax.swing.timer Klassen javax.swing.timer I Swing finns en klass Timer som man kan använda för att upprepa en vis kodsekvens med jämna tidsmellanrum. Ett objekt av klassen Timer exekveras som en egen tråd. Ett objekt

Läs mer

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

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se. Datorgrafik i spel

Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se. Datorgrafik i spel Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se Datorgrafik i spel 1 Sammanfattning Dator grafik kan delas in i fyra olika områden: information, design, simuleringar och

Läs mer

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program

Föreläsning 1. Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program Föreläsning 1 Presentation av kursen Vad är programmering? Lite om java och utvecklingsmiljöer Aktivitetsdiagram Ett första program Deitel: 1.1-1.9, 2.1-2.3 DA101A Programmering Programmering, DA101A Kursansvarig:

Läs mer

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 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

Läs mer

Föreläsning 3 sept 10 (Måndag v 37). DD Chapter 3.

Föreläsning 3 sept 10 (Måndag v 37). DD Chapter 3. Föreläsning 3 sept 10 (Måndag v 37). DD Chapter 3. Applikationer och s. Det finns två sorters java-program som används på olika sätt: Körning av applikation (vanliga, fristående program):...>java klass

Läs mer

Föreläsning 2. Operativsystem och programmering

Föreläsning 2. Operativsystem och programmering Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data

Läs mer

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Stora delar har

Läs mer

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

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

Mobila applikationer. Mobil applikationer. Java ME. Konfigurationer. Grunderna i ME

Mobila applikationer. Mobil applikationer. Java ME. Konfigurationer. Grunderna i ME Johan Eliasson Tentan 12/1 9-12 i skrivsal 7 östra paviljongen (om de inte flyttat den till ngn annan lokal) Förklara begrepp Ex: Vad är en tråd? Vad gör en LayoutManager? Hur fungerar Observer-Observable

Läs mer

Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8)

Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8) Gran Canaria - Arbetsbeskrivning knapplänkar (Mediator 8) I detta exempel kommer du att lära dig Att skapa en ny presentation från början Att skapa en enkel knapp Att använda händelseinställningar, events

Läs mer

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson Lösningar till TENTAMEN I IXC003 SYSTEMUTVECKLING MED INTERNET/INTRANET, del 1 (5p) för IT3 och INTERNETPROGRAMMERING MED JAVA

Läs mer

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard

Avalanche Studios. OpenGL. Vår teknik. Våra spel. Lite inspiration... Stora, öppna spelvärldar. Sandbox-gameplay. Hög audiovisuell standard OpenGL Avalanche Studios Sveriges ledande oberoende spelutvecklare Fokus på egenutvecklade IPn Finns på Söder i Stockholm ~6 anställda Just Cause för PS2, PC, XBox, och XBox 36 släpptes 26 Gustav Taxén

Läs mer