OOP e uge kursusgang: Grafik (II) class Scribble (Tegnebrættet) Frihåndstegning: repræsentation
|
|
- Jesper Mikkelsen
- 7 år siden
- Visninger:
Transkript
1 OOP e uge 43 class Scribble (Tegnebrættet) Det simplest mulige tegnebræt kun en funktion: tegn streger med musen ingen kontrolknapper/valgmuligheder skal dog kunne "holde til" at ændre størrelse Frihåndstegning: Tegnebrættet har ikke objekter der repræsenterer de streger etc., der er tegnet canvas GUI designes som bestående alene af et canvas Det tegnede ligger kun repræsenteret som pixels i et Image-objekt. Modsat boldappletten, hvor boldene er repræsenteret med x/ykoordinater etc. (evt. som selvstændige objekter) Xiaoping implementerer iteration ved tilføjelser, herunder subklasning. Bogen bliver lettere at læse Den samlede kode bliver sværere at læse, da den indeholder overflødige dele.
2 Det primære objekt er en grafik-"dobbelt"-buffer Skabelse af buffer Objekterne: grafik-bufferen og dens hjælper: class ScribbleCanvas extends JComponent { Graphics offscreengraphics; // Rummer platformsafh. data/metoder Image offscreenimage; // De rå data i platformsuafh. format Tegning i bufferen (når brugeren giver tegne-input) scribblecanvas.offscreengraphics.drawline(..); Visning af bufferen på skærmen: scribblecanvas.repaint();.. update(graphics g) { g.drawimage(offscreenimage,..); // bufferen vises via hjælperen setbounds(int x, int y, int width, int height) { // kaldes af kontekst når canvas bliver synlig offscreenimage = creageimage(width, height); offscreengraphics = createimage.getgraphics();.. Graphics/Image: For at skabe et ny Graphics-objekt, skal vi først skabe et Image-objekt Metoder til at tegne opererer på Graphics-objektet (f.eks. drawline), men opdaterer automatisk det Image-objekt, der er brugt til at skabe det! OOP e uge 43 Skabelse af canvas ved at nedarve fra (J)Component?? class ScribbleCanvas extends JComponent {.. eller uden : class ScribbleCanvas extends Component {..
3 OOP e uge 43 Hændelser der kan opfange brug af "pen" Brug af pen udløser: hændelse = brugerens tegne-bevægelser handling = programmet tegner på brættet Vores musehændelse: museknappen trykkes ned, musen bevæges mens knappen holdes nede, til sidst slippes knappen igen Alle former for musebevægelser, ikke kun lige streger. Men tegn kun streg hvis musen er inde over brættet når knappen trykkes ned (og pen er valgt) Hændelsesstyret programmering - hvilken hændelse? Fremgangsmåde ved implementation af penværktøj Hændelseskilde Hændelse Lytter Vi skal Hændelser repræsenteres af et hændelsesobjekt indeholder hændelsens kilde og helst mange flere oplysninger Handlinger repræsenteres af lyttere (listeners): klasser hvis metoder skal udføres Konteksten lytter til. For at konteksten kan aktivere en lytter i tilfælde af en hændelse, skal lytteren registreres hos hændelseskilden. 1. finde en eller flere passende (dvs. subklasse(r) af class AWTEvent) og 2. implementere værktøjet som en lytter (en klasse, der implementerer et/flere Listener-interfaces) der kan modtage ne.
4 Implementation af penværktøj (ideelt) Hændelses-klasse: class MouseDraggedEvent Lytter-interface: interface MouseDraggedListener { public void MouseDragged(MouseDraggedEvent e); hvor et MouseDraggedEvent-objekt indeholder alle punkter, musen har bevæget sig henover, mens museknappen har været holdt nede. Findes desværre ikke! class java.awt.event.mouseevent Kan repræsentere følgende simple og sammensatte muse: pressed: museknap trykket released:.. sluppet clicked: trykket + sluppet entered: musen er kommet ind over komponenten exited:.. væk.. moved: mus bevæget dragged: mus bevæget med knap holdt nede Indeholdt information: hvilke(n) af ovenstående er indtryffet 1 sæt koordinater (x,y): her foregik (sluttede) hændelsen Opgave: hvordan kan disse kombineres til den hændelse, vi har defineret skal repræsentere en streg? OBS: Hændelser genereres med visse mellemrum (brøkdele af et sekund) Løsning: mouse pressed + dragged + dragged.. mouse pressed ("her") mouse dragged ("hertil") linjestykker der tegnes på tegnebrættet musens virkelige bevægelser Lyttere, som kan modtage et java.awt.event.mouseevent Der findes to "musehændelses-lyttere". De modtager hver sin type af muse-: De "statiske" : interface MouseListener{ mousepressed(mouseevent e);.. De "dynamiske" : interface MouseMotionListener{ mousedragged(mouseevent e);..
5 Pen implementeret som lytter (frit efter XP s323 f) class PenTool implements MouseListener, MouseMotionListener { Point mouse; // musens "gamle" position mousepressed(mouseevent e) { mouse = e.getpoint(); mousedragged(mouseevent e) { Point p = e.getpoint(); tegn_streg_fra_mus_til_p(); mouse = p; canvas.repaint();.. plus tomme definitioner af resten af lytter-metoderne Ikke nødvendigt at "spørge" et MouseEvent-objekt hvilken slags hændelse, det repræsenterer, da dette fremgår af den kaldte lytter-metode. Men nødvendigt at registrere PenTool-objekt som Mouse- og MouseMotion-lytter OOP e uge 43 Grafik-opdatering: modificer så lidt som muligt repaint() --> update(), paint() Når konsteksten kalder update() efter applikations-genereret repaint(): mousedragged(mouseevent e) { Point p = e.getpoint(); tegn_streg_fra_mus_til_p(); mouse = p; canvas.repaint(<kun den del der er blevet ændret>); CPU-kraften må ikke spildes til at gentage den del af kanvas, der ikke har ændret sig. Ellers bliver reaktionstiden på musebevægelser langsommere. repaint(x, y, width, height) kan bruges uden man behøver lave en særlig definition af update()/paint() 0. Muligvis ventes der lidt først. 1. Graphics g = det nuværende billede (det sidst tegnede); 2. kald af update(g); // altid hele g! (svarende til components størr.) 3. tegn(g); // repaint(<rect>) => tegn(g,<rect>) Container superklasse opfanger kald af update() hvis ikke overskrivet i subklasser: public void update(grahpics g) { g.setcolor(getbackground()); // vælger baggrundsfarven g.clearrect(0, 0, width, height); // udfylder g med farven g.setcolor(getforeground()); // vælger forgrundsfarven paint(g); public void paint(graphics g) { {stort set tom definition {man kan kalde paint() i alle subkomponenter
6 OOP e uge 43 Skabelse/ af buffer (XP s 232) Større canvas => nødvendigt med større buffer til at repræsentere tegningerne. Vi vil gerne overføre eksisterende tegning til ny større canvas Der findes ikke en metode til at lægge pixels til i yderområdet. Løsning: overskrivning af setbounds() (XP s. 323) setbounds(int x, int y, int width, int height) { // kaldes også når kanvas ændrer størrelse (system- eller appl.-udløst).. Image resizedimage = creageimage(width, height); // midlertidigt Image offscreengraphics = resizedimage.getgraphics(); clearcanvas(); if (offscreenimage!= null) // overfør "gamle" tegning til buffer offscreengraphics.drawimage(offscreenimage,..); offscreenimage = resizedimage; // Image-objektet opdateres super.setbounds(..); // repaint(); Graphics/Image: den gamle tegning af lagret i offscreenimage den "resizede" tegning er lagret i newimage derfra overføres den til sidst til offscreenimage OOP e uge 43
7 Kombineret En applet kan køres som applikation, hvis appletten udvides til at definere en main()-metode main() opretter et yderste vindue som applettens panel kan anbringes i init() og andre metoder, der kaldes automatisk af appletkonteksten, skal kaldes eksplicit, hvis de er re-defineret i appletten. public class Scribble extends JApplet { init();... start();.. stop();.. ; public static void main(string[] args) { (a) skab yderste vindue med passende titel (b) skab Scribble-objekt (c) anbring Scribble-objekt (et panel) i vinduet To Scribble-konstruktorer: Applet: konteksten kalder Scribble() Applikation: vi kalder Scribble(..) som eksplicit kalder init() m.m. main() i applet public static void main(string[] args) { // (a) Det yderste vindue JFrame frame = new JFrame(); frame.settitle("scribble Pad"); frame.addwindowlistener(..); // registrer en lytter til at reagere på "sluk" // (b) Skabelse af nyt Scribble-panel i vinduet Scribble scribble = new Scribble(false); // (c) Anbringelse af Scribble-panel i vinduet frame.getcontentpane().setlayout(new BorderLayout()); // JComponent.getContentPane() // giver reference til JRootPane-objekt // som kan bruges til "Container-opgaver" frame.getcontentpane().add(scribble, BorderLayout.CENTER); // plus div. detaljer frame.setsize(..);..; OOP e uge 43 java.awt contra javax. javax. indeholder JButton, JFrame,.. med funktion svarende til Button, Frame,.. Features mange med nye features, f.eks. ikoner og ledetekst i knapper. man kan vælge at bruge indbygget dobbelt-bufring hurtigere? pænere? nye typer grafik-komponenter bl.a. JScrollBar nye typer events (og events-lyttere) Implementation "Letvægtskomponenter" forstået som at de er alene repræsenteret internt i Java og har lavniveaugrænseflade til platform modsat "sværvægtskomponenter" som har en "peer" komponent implementeret vhja. platformens højniveau-grafik-faciliteter ikke en erstatning af java.awt men en udvidelse JButton m.fl. nedarver fra java.awt.component overgang til at bruge javax. kan ske skridtvis
8 OOP e uge 43 WEST : Specifikation af krav til GUI: Bjælker med knapper ude langs siden af selve brættet Et bjælke til valg af "værktøj" (pen, viskelæder,..) Et bjælke til generelle/tværgående valg (farve, slet alt,..) SYD CENTER BorderLayout bruges til inddeling af panel CENTER et canvas til brættet WEST container til knapper SYD container til knapper Håndtering af class EraserTool implements MouseListener,.. { // minder om PenTool // skriver små hvide rektangler i stedet for streger Det primære problem er at skifte mellem forskellige værktøjer. 1) Man kan af-registrere den gamle lytter og registrere den nye. (Besværligt). 2) Man kan registrere en super-lytter, som fanger alle, og giver den videre til det aktuelle værktøj. Nemt løbende at ændre ToolListener-en. Bruger "State" design pattern. Kilde: canvassen Muse- Hændelse ToolListener (XP p 338) Muse- Hændelse Værktøj 1 Værktøj 2 OOP e uge 43
9 Xiaopings BouncingBall3 (s. 282f) (sidste iteration!) Animerings- og dobbeltbufrings-funktionalitet genbruges fra class Animator og class DoubleBufferHandler Der er tale om genbrug af funktionalitet ved delegering ikke som tidligere ved nedarvning (f.eks. BouncingBall2 s. 193) Før: nedarvning AnimationApplet tager sig af alt vedr. animering (dog ikke dobbelt-bufring) Oprettelse af en separat tråd, kald af sleep()/repaint() fra trådens run(), m.m. Subklasser skal blot definere paint() samt evt. justere delay. DBAnimationApplet har sin egen final update(), der kalder paintframe(), der er en abstrakt metode. Nu: delegering Fordelen delegering af animeringsfunktionalitet Generelt er fordelen ved delegering fremfor nedarvning: bruger-klassen kan nedarve fra andre klasser I tilfældet med Applet-animering er dette ikke relevant, da AnimationApplet i forvejen nedarver fra den klasse, vi vil nedarve fra (class Applet) Her drejer fordelen sig om: I BouncingBall ønsker vi ikke at animere/dobbeltbufre hele Appletten/panelet, kun canvas-et med boldene Hvilke fordele kan der være herved? Det ville være muligt at lave en class AnimationCanvas, der nedarver fra class Canvas, men løsningen med class Animator er mere generel
10 FinalBouncingBall med delegering af animering + dobbeltbufring (XP s. 282) DBHandler (XP s. 280) class DBHandler { DBHandler (DBComponent comp) { this.comp = comp; DBComponent comp; void update(graphics g) { comp.paintframe(offscreengraphics); {overfør offscreengraphics til g; Graphics offscreengraphics; BouncingBallCanvas (XP s. 281) class BouncingBallCanvas { void update(graphics g) { dbhandler.update(g); void paint(graphics g) { update(g); // hvorfor? DBHandler dbhandler; update() vs. paint(): hvilke(n) skal overskrives i Applet-subklasser? Hvis subklasser overskriver update(): skal de selv sørge for at gentegne hele baggrunden men så slipper de for at vente på at appletkonteksten gentegner baggrunden. Hvis man bruger dobbelt-bufring: bør man overskrive update() fordi man alligevel selv skal tegne baggrunden (da man jo ikke tegner i det grafikobjekt der er skabt i konteksten, men tværtimod overskriver det med ens egen "buffer") Definitionen af paint() skal fange "usædvanlige" kald af paint() fra konteksten, der sker uden om update().
11 OOP e uge 43 Anonyme klasser Bruges ofte til definition af lytter-klasser, hvor man kun skal bruge en instans, og ikke skal referere til instansen. En anonym klasse er en form for indre klasse. En indre klasse er en klasse defineret i en anden klasses indre. Definitionen af en anonym klasse er et udtryk, hvis værdi er en instans af den anonyme klasse. I stedet for - class StartStopHandler implements ActionListener {.. ActionListener handler = new StartStopHandler(); addactionlistener(handler); kan man skrive - addactionlistener(new ActionListener() {..);
Hvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter
OOP e2002 - uge 42 6. kursusgang Hvordan organiseres et programs grafik-elementer? 1. Teori: class Component og subklasser: Composite pattern layout-managere hændelsesstyret programmering 2. XP-program:
Læs mereOOP e uge kursusgang. Disposition for (gennemgang af) afleveringsopgave. Deck.shuffle() 'Problemformulering', Indledning
OOP e2002 - uge 40 Disposition for (gennemgang af) afleveringsopgave IV. Teori B: Designmønstre. V. Tips til øvelser: Bold-appletten, dobbeltbufring. 1. Problemformulering 2. Design for at forklare designet
Læs mereet enkelt kontrol flow sætningerne i programmet afvikles en ad gangen flowet følger dels den tekstlige rækkefølge
Tråd-definition 2. XP-program: Dissektion af boldapplet (fortsat) En tråd er en separat programudførelse = separat "flow of control" = rækkefølge af programinstruktioner, der udføres En tråd kan mere konkret
Læs mereKursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing
Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt
Læs mereGrundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering
Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af
Læs mereKursusgang 12. Oversigt: Sidste kursusgang Layout-manager Event-håndtering. Design af brugerflader 12.1
Kursusgang 12 Oversigt: Sidste kursusgang Layout-manager Event-håndtering Design af brugerflader 12.1 Sidste kursusgang Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design
Læs mereVideregående programmering i Java
Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter
Læs mereimport java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label
Programmering 1999 Forelæsning 13, tirsdag 12. oktober 1999 Oversigt Grafiske brugergrænseflader. Komponenter: Knapper, tekstfelter, checkbokse... Vinduer (containere). Hændelser, hændelsesstyret programmering.
Læs mereTree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
Læs mereSingleton pattern i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.
Læs mereCivilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104
Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Kursusnavn: Programmering. Tilladte hjælpemidler: Alle skriftlige hjælpemidler Opgavesættet består af fire opgaver, der har følgende vægtning: Opgave
Læs mereA Profile for Safety Critical Java
A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren
Læs mereOver Forelæsning omponenter ogrammering sigt 14, 1999 freda containere 15. oktober 1999 Eksempel: out GUI til beregning fakultet.
Programmering 1999 Forelæsning 14, fredag 15. oktober 1999 Oversigt Repetition: GUI komponenter og containere. Layout af grafiske brugergrænseflader i Java. Større layout-opgave. Programmering 1999 KVL
Læs mereclass subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.
Programmering 1999 Forelæsning 11, tirsdag 5. oktober 1999 Oversigt Klasse-hierarkier: superklasser og subklasser Nedarvning Polymorfi Programmering 1999 KVL Side 11-1 Hierarkier En klasse repræsenterer
Læs mereOOP e uge kursusgang: Samtidighed (II) Safety = sikkerhed. Safety
= sikkerhed I denne sammenhæng: = "trådsikkerhed" " conditions.. stipulate that nothing bad will ever happen" (XP s. 377) Trådsikkerhed betyder sikkerhed mod inkonsistens pga. flertrådning ikke f.eks.
Læs mereVideregående programmering i Java
Videregående programmering i Java Dag 7 Swing og MVC Swing: MVC, Datamodeller, JTable, evt. JTree Evt.: Swing: Præsentations og kontroldel Læsning: VP 6 Dette materiale er under Åben Dokumentlicens, se
Læs mereb) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.
Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning
Læs mereThreads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter
Læs mereSerialization i Java
Serialization i Java Tutorial lavet af Jákup W. Hansen TSU 2006 1.semester 06.novemter 2006 Hvad er Serialization? I vores tekstbog Objects First with Java bliver denne del af Java ikke gennemgået. Men
Læs mere1. Flyreservationssystem. OOP e uge 37 - første kursusgang. OO-paradigmet jf. XP s. 10f
OOP e2002 - uge 37 - første kursusgang OO-paradigmet jf. XP s. 10f 1. Flyreservations-system, jf. opgave 1 (dvs. Xiaoping 1.1) modellering og design vhja. grafisk designværktøj klassestruktur, brug af
Læs mereHvad er Objekter - Programmering
Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som
Læs mereForelæsning Uge 13 Torsdag
Forelæsning Uge 13 Torsdag Konstruktion af grafiske brugergrænseflader (GUI'er) Definition af de elementer, der vises på skærmen (vinduer, knapper, menuer, scrollbarer, tekster, osv.) Hvordan reagerer
Læs mereKapitel 6 Events i C#
Kapitel 6 i C# Når vi snakker programmering er en Event når der aktiveres specielt indbygget kode. Der sker en hændelse (event). Man siger at eventet bliver udført. De events vi skal gennemgå i dette kapitel
Læs mereDag 10 Flertrådet programmering
Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,
Læs mereAbstrakte datatyper C#-version
Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype
Læs mereVideregående programmering i Java
Videregående programmering i Java Dag 5 Model View Controller arkitekturen Model View Controller arkitekturen (MVC) Evt.: Rekursion Læsning: VP 19 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html
Læs mereUgeseddel 4 1. marts - 8. marts
Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,
Læs mereDatalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning
Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:
Læs mereDANMARKS TEKNISKE UNIVERSITET
DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler
Læs mereForelæsning Uge 13 Mandag
Forelæsning Uge 13 Mandag Konstruktion af grafiske brugergrænseflader (GUI'er) Definition af de elementer, der vises på skærmen (vinduer, knapper, menuer, scrollbarer, tekster, osv.) Hvordan reagerer de
Læs mereJava Klasse nedarvninger
Denne guide er oprindeligt udgivet på Eksperten.dk Java Klasse nedarvninger Et let lille overblik i hvordan klasse nedarvning virker i java Skrevet den 07. dec 2011 af mochners I kategorien Programmering
Læs mereLektion 6. Grundlæggende programmering i VR
Lektion 6 Grundlæggende programmering i VR Plan for i dag Simpelt FPS Triggerzones og animationer C# og objekt orienteret programmering Interfaces Generics Google Cardboard Video om VRs fremtid App til
Læs mereMartin Geisler. Uge 49, 2001
Min dintprog-browser Martin Geisler Uge 49, 2001 Resumé Dette dokument beskriver tankerne bag min dintprog-browser, en browser skrevet i Java der skal kunne fortolke en mindre delmængde af HTML 4, kaldet
Læs mereIntroduktion til ActionScript, fortsat
Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling
Læs mereLav din egen forside i webtrees
Lav din egen forside i webtrees Du behøver ikke at kunne kode eller gøre noget advanceret for at designe din helt egen forside i webtrees. Alt du skal gøre er bare at gøre brug af den indbygget editor.
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således
Læs mereSWC eksamens-spørgsmål. Oversigt
SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition
Læs mereForelæsning Uge 6 Mandag
Forelæsning Uge 6 Mandag Tingene i denne forelæsning er ikke eksamenspensum Forelæsningen afrunder kurset, og forklarer nogle af de begreber, som I har mødt under kurset uden at få detaljeret forklaring
Læs mere5 ARBEJDE MED EDITOREN
5 ARBEJDE MED EDITOREN Editor (eller Rich Tekst Editor) er et indbygget indholdsredigerings værktøj, hvor man uden nogen kendskab til HTML kodning kan skrive tekst, indsætte billeder, videoer og links.
Læs mereSingleton pattern i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i C# Denne artikel beskriver Singleton pattern og implementation i C#. Den forudsætter kendskab til C# men ikke til Singleton. Der er
Læs mereimport java.applet.applet; import java.awt.*; public class MinApplet extends Applet { // diverse metoder her - til grafik er det nok med "paint":
Noget at tegne på: Appletter. En applet (et småprogram ) er et java-program der er beregnet til at køre i et vindue på en web-side. Programmering 1999 Forelæsning 10, fredag 1. oktober 1999 Oversigt Appletter
Læs mereclass Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.
Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:
Læs mereKursus i OOP og Java. Kursus i Objektorienteret programmering i Java
Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger
Læs mereVejledning til Photofiltre nr. 105 Side 1
Side 1 Denne vejledning er et smalt grafikbillede man kan bruge i toppen af en mail lavet i PhotoFiltre 7 hvor man nu kan arbejde i lag. Med PhotoFiltre 7 er det nu endnu nemmere at sammensætte grafik
Læs mereRMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).
Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer
Læs mereIllustrator CC F u F ture tur Co C mpany an - y www. w future tur co c mpany an. y dk
FutureCompany - www.futurecompany.dk Illustrator CC Tegning med Pen Tool Side 2 af 2 Kombinationspunkter Med hjørnepunkter laver man et skarpt knæk på en kurve bestående af rette linjer. Med buepunkter
Læs mereUdskriv kort. Før udskrivning af et kort kan du eventuelt vælge at indtegne et/flere udskriftsområder. (I PLUS versionen kun ét).
. Generelt Ved udskrivning af kort kan du vælge at udskrive det der er vist på skærmen. Du kan også vælge at udskrive et eller flere kortudsnit. Før du udskriver, vil programmet altid åbne en dialog, som
Læs mereDM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/
DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!
Læs mereForelæsning Uge 3 Torsdag
Forelæsning Uge 3 Torsdag Billedredigering (bl.a. brug af for-løkker) Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt)
Læs mereFå det bedste fra Windows 10
PRØV TO NYE, FANTASTISKE FUNKTIONER: Få det bedste fra Windows 0 Windows 0 byder på en perlerække af nye og spændende funktioner. Vi har fundet to smarte programmer, der giver dig en forsmag på det nye
Læs mereTag smarte skærmskud
Tag smarte skærmskud Hvis du vil vise din kammerat en detalje fra din pc-skærm, er programmet Jing uden sammenligning det bedste værktøj til formålet. Her viser journalist Steffen Slumstrup Nielsen dig,
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mere5. Teknisk beskrivelse af programmet 5.1 Programmets primære strukturer Datastruktur 1-6 3-6 Datastruktur
5. Teknisk beskrivelse af programmet Afsnittet indeholder en beskrivelse af de vigtigste klasser i programmet. (Den tekniske beskrivelse af databasen er givet i afsnit 3.3 Databasedesign på side 20.) Dette
Læs mereHvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation
Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et
Læs mereAftenskole i programmering sæson Registrering af tid. Sæson 2 - Lektion 5
Registrering af tid Sæson 2 - Lektion 5 Før jul Vi har designet og bygget en model til håndtering af en timeregistrering Vi har kigget på hvordan vi håndterer fejl Vi har kopieret koden over i Bents x-code
Læs mereJacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004
Genbrugelige komponenter og designmønstre i Java Jacob Nordfalk Ingeniørhøjskolen i København Nykøbing F itvisioncenter 24. februar 2004 Program Om Jacob Nordfalk introduktion (ikke-teknisk del) Komponentbaseret
Læs mere6. Eventstyret programmering og Windows
6. Eventstyret programmering og Windows Indsigt i events og styresystemets rolle I det følgende skal vi se på en række mere tekniske ting vedrørende Delphi og Windows, nemlig hvordan programmer styres
Læs mereObjektorienteret Programmering
Objektorienteret Programmering Struktureret Systemudvikling Jan Bendtsen Automation and Control Indhold Lidt om programmeringssprog Klasser i Java Klasser i C++ Oversættelse og kørsel af kode Et eksempel:
Læs mereOnline billede filtrering
Online billede filtrering Eksamensprojekt 2014 Andreas Lorentzen, klasse 3.4 Roskilde Tekniske Gymnasium Programmering C 09-05-2014 I dette projekt vil jeg demonstrerer en af de mange ting moderne browsere
Læs mereEn lille vejledning i at bruge Paint Win 98 og Win XP Indhold
1 En lille vejledning i at bruge Paint Win 98 og Win XP Indhold Indhold...2 1. Åbn Paint...3 2. Vælg en baggrundsfarve og en forgrundsfarve...3 3. Tegn et billede...4 4. Ny, fortryd og gentag...4 5. Andre
Læs mereGrafiske brugergrænseflader II
Grafiske brugergrænseflader II 1 Plan MVC (Model View Controller) - designmønsteret Observer Iterativ udvikling af et tegneprogram - muselyttere - applet/applikation-idiomet - designmønsteret State - designmønsteret
Læs mereAdobe Titel Designer
Adobe Titel Designer I Premiere 6.5, har du mulighed for at designe sammensatte titler med Adobe Title Designer. Med Adobe Title Designer, kan du tilføje et væld af egenskaber til titler, brug de forskellige
Læs mereONSCREENKEYS 5. Windows XP / Windows Vista / Windows 7 / Windows 8
ONSCREENKEYS 5 Windows XP / Windows Vista / Windows 7 / Windows 8 [ PRODUKTBESKRIVELSE ] [ Dette smarte skærmtastatur med en virtuel musekliksfeature og taleoutput lader dig skrive hurtigt og arbejde med
Læs mereTegne- og billedbehandlingsprogrammer tilbyder mange forskellige værktøjer og funktioner. Denne mini-manual giver en hjælpende hånd.
DIGITAL BILLEDKUNST MINI-MANUAL Tegne- og billedbehandlingsprogrammer tilbyder mange forskellige værktøjer og funktioner. Denne mini-manual giver en hjælpende hånd. Tegne- og malerværktøjer Blyant/Pencil
Læs merefå en ny og bedre hjemmeside på få minutter Quick guide Del denne quick guide med alle som har glæde af en ny og bedre hjemmeside
få en ny og bedre hjemmeside på få minutter Quick guide Del denne quick guide med alle som har glæde af en ny og bedre hjemmeside 1 Alle har ret og råd til en professionel hjemmeside på få minutter GoMinisite
Læs mereAftenskole i programmering sæson Watch Me. Sæson 2 - Lektion 19
Watch Me Sæson 2 - Lektion 19 I sidste uge I sidste uge tog vi en lille maraton, for at få lavet version 0.5 af ugesedel appen, og lektionen blev 2.5 timer lang. Undskyld! Vi brugte tiden på: At lave en
Læs mereProgrammering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft
Kurserne Kurset: programmering i sproget Java Programmering og Udvidet Programmering Lærerne: Morten Larsen og Peter Sestoft Kursusmål: I skal lære at skrive interessante programmer i Java Forudsætninger:
Læs mereGrafiske brugergrænseflader II!
Grafiske brugergrænseflader II! Plan! MVC (Model View Controller)!!!- designmønsteret Observer! Iterativ udvikling af et tegneprogram!!- muselyttere!!!!!- applet/applikation-idiomet!!!- designmønsteret
Læs mereForelæsning Uge 3 Torsdag
Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt) antal elementer Afleveringsopgave:
Læs mereDatatekniker med programmering som speciale
Datatekniker med programmering som speciale H2 H1 varer ti uger bestående af ti uddannelsesspecifikke fag. Indhold På H2 er der fokus på at integrere Objektorienteret Programmering i dine programmer. Fagene
Læs mereIndledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.
Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3
DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereTil at starte med vil jeg lige vis nogle små ændringer på opsætningen som jeg har lavet.
Microstation brugermøde 10. og 11. november 2008. Indlæg af Else-Marie Lorenzen. Vejdirektoratet Til at starte med vil jeg lige vis nogle små ændringer på opsætningen som jeg har lavet. Som det første
Læs mereMiniguide for redaktører. Miniguide for redaktører. Leveret af DFF-EDB.dk
Miniguide for redaktører Miniguide for redaktører Leveret af DFF-EDB.dk 1 INDHOLD Hjemmesider i Umbraco... 2 1. Kom i gang med Umbraco... 2 1.1 Login... 2 1.2. Når du arbejder på siden, inden den er udgivet...
Læs mereEksempel på en database: studenter, kurser, eksamener
Udvidet Programmering 1999 Forelæsning 20, fredag 12. november 1999 Relationsdatabaser: relationer, tupler, attributter Forespørgselssproget SQL Databasesystemet PostgreSQL Tilgang til relationsdatabaser
Læs mereProgrammering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.
Programmering 1999 Forelæsning 5, tirsdag 14. september 1999 Oversigt Mere om klasser og objekter Klassefelter: static Konstante felter: final Indkapsling og synlighed: private og public Overlæsning af
Læs mereExceptions i Delphi. Try except
Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,
Læs mereAAU, Programmering i Java Intern skriftlig prøve 18. maj 2007
AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal
Læs mereSpecifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api
Specifikation Abstrakt, objektorienteret operativsystem-api Indhold 1 Indledning... 3 1.1 Introduktion... 3 1.2 Formål... 3 1.3 Overordnede krav... 3 2 Ressourcer i OS-API et... 4 2.1 Tråde... 4 2.2 Timere...
Læs mereJSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007
JSP, Tomcat Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 10.october 2007 Hvad er JSP(Java Server Pages): Det er en teknik som er bygget ovenover Servlets teknikken, men fidusen er at det skal
Læs mereArkitektur for begyndere
Denne guide er oprindeligt udgivet på Eksperten.dk Arkitektur for begyndere Denne artikel beskriver forskellige basale n-tier arkitekturer. Som man bør kende og have valgt inden man går igang med at udvikle
Læs merePolymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion
Polymorfi Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type Coercion Tvangskonvertering (forfremmelse og begrænsning) Oversigt Abstrakt klasse abstrakt
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereMiniguide. Illustrator. Kom godt i gang med Illustrator. Kursusfabrikken
Miniguide Illustrator Kom godt i gang med Illustrator Kursusfabrikken Introduktion Adobe Illustrator er Adobes vektorgrafik software. Vektorgrafik har den fordel, at grafikken kan skaleres op og ned i
Læs mereVideregående programmering i Java
Videregående programmering i Java Dag 9 Andre designmønstre Andre designmønstre: Uforanderlig, Fluevægt, Lagdelt Initialisering, Komposit/Rekursiv Komposition, Kommando/Ændring Fremlæggelse af programmering/status
Læs mereDatabase for udviklere. Jan Lund Madsen PBS10107
Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated
Læs mereUnity Guide 1 CONTENTS
Unity Guide 1 CONTENTS Unity interface... 2 Components... 4 Materials... 7 Scripts opbygning... 8 Terrain... 8 Animations... 9 Particle system... 11 Audio... 11 Sprites... 12 GUI... 14 UNITY INTERFACE
Læs mereObjektorienterede metoder
Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags
Læs mereGuide til oprettelse/redigering af events på bornholm.info
Guide til oprettelse/redigering af events på bornholm.info Trin Login Beskrivelse 1. Login på hjemmesiden: URL: http://bornholm.info/wp-admin/ Brugernavn: se mailen Adgangskode: se mailen Opret event 1.
Læs mereBrugervejledning for Microstation til OpenSceneGraph konverter
Brugervejledning for Microstation til OpenSceneGraph konverter - sidste rettelse: 10/06/2005 side 1 Indholdsfortegnelse Kort oversigt over dgn2osg... 3 Systemkrav... 3 Funktionalitet...4 Geometri...4 Materialer...
Læs mereDag 10 Flertrådet programmering
Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,
Læs mereScratch. - introduktionshæfte
Scratch - introduktionshæfte Opret bruger 2 Det første, du skal gøre er at oprette dig som bruger, så dine projekter bliver gemt. Gå ind på scratch.mit.edu/ Vælg knappen Meld dig ind i Scratch i den øverste
Læs mereGreenfoot En kort introduktion til Programmering og Objekt-Orientering
Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11
DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void
Læs mereKlasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.
Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens
Læs mereDM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
Læs mereDM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11
DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4
Læs mereEksempel: Skat i år 2000
Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)
Læs merePrezi. Aldrig mere gammeldaws slideshows!? Version: December 2012
Prezi Aldrig mere gammeldaws slideshows!? Version: December 2012 Indholdsfortegnelse Hvad er Prezi?...4 Hvordan finder jeg Prezi?...5 Skoletube og Prezi...5 Lav din første Prezi-præsentation...5 Indtast
Læs mere