DOA Konstruktion av gränssnitt 5 april 2004 av Björn Eiderbäck

Storlek: px
Starta visningen från sidan:

Download "DOA Konstruktion av gränssnitt 5 april 2004 av Björn Eiderbäck"

Transkript

1 DOA Konstruktion av gränssnitt 5 april 2004 av Björn Eiderbäck Innehåll del 1, oh 1 oh 21 Användargränssnitt Något om tekniker för gränssnittsbyggande Typiskt gränssnitt Verktyg Knappar Vi hoppar en del i OH-bilderna Detaljerna får den intresserade läsa själv Textyta previous next previous next 2 Användargränssnitt Är den del av applikationen som låter användaren interagera och kontrollera tillämpningen med (vanligen) mus och tangentbord. Ett användargränssnitt består av grafiska komponenter (eng widgets eller gadgets) som knappar, inmatningsfält och listor. En komponent (widget) beskriver både utseende, delar av beteendet och koppling till applikationsmodellen. Bra användargränssnitt är självförklarande ger bra återkoppling kraschar mjukt med bra förklarande felmeddelanden stödjer både nybörjare och experter Som utvecklare: varför och hur? Varför är gränssnittet viktigt? Är interaktiva gränssnitt bra? Är en viss typ av gränssnitt bra i alla situationer? previous next 3 previous next 4 Vad bör man tänka på vid konstruktion? Vad är uppgiften? Vilken information behövs? Hur jobbar man idag? bra, dåligt. Vilka fel görs? Vilka (för-)kunskaper behövs för uppgiften? etc. Vem skall använda systemet? Nybörjare Tillfälliga eller sporadiska användare Personer som använder systemet ofta utan att vara experter Experter I vilken omgivning skall systemet fungera? Till oh 11 previous next 5 Shneidermans principer Princip 1: Var medveten om olikheter Människor är olika Människor lär, tänker och löser problem på olika sätt En del föredrar tabeller, visa gillar grafiska representationer och andra vill helst arbeta med text och siffror Vem skall använda systemet? Vilka uppgifter skall utföras och hur frekvent? Interaktionsstil Direktmanipulation Menyer Formulär Kommandospråk Naturligt språk previous next 6

2 Shneidermans Princip 2: Åtta gyllene regler Sträva efter enhetlighet Erbjud kortkommandon (för den erfarne användaren) Ge återkoppling Designa dialoger så att dom är slutna med handlingar organiserade med tydlig början, mitt och slut Undvik att låta användaren göra fel (tex genom att använda menyer istället för textbaserad inmatning) och försök göra felhanteringen enkel Gör det enkelt att ångra handlingar ( undo ) Sträva efter att användarna av systemet känner att dom har kontroll (och inte systemet som kontrollerar dem) Minimera belastning av korttidsminnet 7 ± 2 Shneidermans Princip 3: Undvik fel Användare gör fel hela tiden! I ordbehandlare, kalkylark, databaser, trafikledning, osv En undersökning visade att erfarna professionella användare av ordbehandlare och operativsystem gjorde misstag eller valde ineffektiva strategier i 31% av uppgifterna som tilldelades dem Vissa förbättringar genom bättre felmeddelanden fast bättre att undvika felen! För varje felmeddelande fundera på om det inte finns en lösning som undviker felet helt och hållet. Meddela vad som är fel (tex matchande parentesfel) Se till att kompletta sekvenser genomförs Korrigera kommandon Genom automatisk ifyllnad Eller hellre, undvik felen genom ett direktmanipulativt gränssnitt previous next 7 previous next 8 Hur presentera information? Organisera skärmen Var konsekvent terminologi, förkortningar, användning av stora bokstäver, etc Effektiv kunskapsinhämtning för användaren familjär och uppgiftsanpassad design Minimera belastning av användarens minne organisera informationen så att risken för att användaren glömmer något minimeras (använd etiketter mm) Gör ut- och inmatning så lika varandra som möjligt om möjligt skall data kunna matas in eller editeras där det presenteras Gör det möjligt för användaren att kontrollera eller anpassa form och format att passa sina egna önskemål Hur bör inmatning ske? Var konsekvent liknande sekvenser av operationer skall leda till liknande resultat Minimera antalet användaroperationer kopiera in tidigare inmatade data som defaultvärden tänk också på experter Minimera belastning av användarens minne undvik att användaren skall behöva komma ihåg långa listor eller koder Gör ut- och inmatning så lika varandra som möjligt Gör det möjligt för användaren att kontrollera eller anpassa form och format previous next 9 previous next 10 Frameworks (FW) Ett FW är centralt för konstruktion av interaktiva applikationer Varför ett framework? Svårt att tränga in i toolkits (bibliotek av komponenter), eller följa givna designregler Ett FW ger återanvändbar applikationsdesign eller delsystem Ett FW representeras av ett antal abstrakta klasser och definitioner av hur dessa klasser samarbetar, vilket vägleder programutvecklaren och gör det enklare att konstruera enhetliga gränssnitt och applikationer snabbare mer uniformt Vad är ett Framework? Ett framework beskriver hur ett problem skall brytas ner Inte bara klasserna utan också hur deras instanser samverkar definierar invarianter som objekten måste dela och anger också hur dom skall användas Ett framework påtvingar en modell som programmeraren måste anpassa sig till previous next 11 previous next 12

3 Hollywood Omvänd kontroll (Hollywood-principen) Ring inte oss vi ringer er! Koda med klassbibliotek Koda med framework Att använda ett framework Hur? skapa nya subklasser sätta ihop objekt (så att de samverkar) modifiera fungerande exempel Användarkod Framework kod i klassbibliotek användarkod previous next 13 previous next 14 Grafiskt Framework Ett grafiskt system fungerar ofta som ett framework i vilket man infogar egna applikationer Man anropar initieringsrutiner sätter upp anrop till egna rutiner (call-backs) huvudlooprutin (som sedan anropar dom tidigare definierade call-back-rutinerna) previous next 15 Exempel på FW 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 16 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 Exempel 1 (AWT) package mypackage; // 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 17 previous next 18

4 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 19 Vi definierar hur omritning av fönstret ska gå till Exempel 2 (AWT) package mypackage; 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 20 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 Exempel 3, Swing, Graphics2D och JFrame package mypackage; 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 21 previous DOA 2003 Gränssnittskonstruktion Del 2 Innehåll, oh 22 resten Inmatningstyper Modeller för interaktiva applikationer Observer MVC Pluggbara komponenter Java Lyssnare Exempel adaptorer, MVC Enkel inmatning med knapp och fält Swing Referenser, ett axplock next Olika inmatningstyper 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()); 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) 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()); previous next 23 previous next 24

5 Modeller för konstruktion av interaktiva tillämpningar Modeller Seeheim PAC MVC Morphing Tekniker Call-back Händelsebaserade Adaptorer, listeners Pluggbara Stil Direktmanipulativ, grafisk Drag-and-drop Objektorienterad Modeller för konstruktion av interaktiva tillämpningar Separation av applikation och presentation Newmans Reaction Handler, 1968 Var först med att separera applikation från presentation se [1, 2, 3] Seeheim, MVC och PAC Seeheim, 1985 På en Workshop i Seeheim konstruerade man den första konceptuella arkitekturen för ett User Interface Management System (UIMS). Man identifierade följande logiska komponenter i ett UIMS presentation - visualisering, in- och utmatning dialogkontroll - styr kommunikation mellan presentation och applikation tillämpningsgränssnitt - interfacesemantik i applikation previous next 25 previous next 26 Model View Controller (MVC), andra hälften av talet, se [4, 5, 6, 7] Delar upp applikationerna i tre komponenter applikationslogiken (modell) presentation (vy) interaktion (kontroll) Model View Controller (MVC) Model: logiken View: presentationen Controller: interaktionen Applikationslogiken Presentation Abstraction Control (PAC), 1989, se [8] Delar också upp applikationen i tre delar abstraktion presentation kontroll Mer konceptuell än MVC Presenterar V M C Interagerar previous next 27 previous next 28 Presentation Abstraction Control (PAC) Abstraction Presentation Control User Observer, beroenden mellan objekt Problem Hur kan vi konstruera en mekanism som tillåter att vissa objekt meddelas om någon vital del förändras i andra objekt utan att objekten görs starkt knutna till varandra? Krafter Vi vill undvika stark koppling och beroende mellan objekten Intresserade objekt skall informeras om något förändras. Lösning Upprätthåll en lista av objekt som är beroende av ett visst objekt. Om objektet förändras skall dom beroende objekten meddelas. Dom beroende objekten skall vart och en själva avgöra hur dom skall reagera på förändringen. previous next 29 previous next 30

6 ett sekvensdiagram som visar ett typiskt scenario Subject attach(observer) detach(observer) notify() observers for all o in observers { o.update(); * Observer update() :subject o 1 :observer o 2 :observer o 3 :observer :object attach(o 1 ) attach(o 2 ) attach(o 3 ) notify() update() update() update() notify() update() update() detach(o 3 ) previous next 31 previous next 32 Javalösning: observer Javalösning med Observer och Observable. I Java kan ett objekt som vill vara beroende av ett annat objekt implementera gränssnittet Observer medan det objekt som observeras görs till subklass till klassen Observable (eller möjligen använder ett fält som är subklass till denna typ). Gränssnittet Observer: package java.util; public interface Observer { void update(observable o, Object arg); Metod för att Lägga till observer Metod för att ta bort observer klassen Observable package java.util; public class Observable { private boolean changed = false; private Vector obs; private Observer[] arr = new Observer[2]; public Observable() {obs = new Vector(); public synchronized void addobserver(observer o) { if (!obs.contains(o)) {obs.addelement(o); public synchronized void deleteobserver(observer o) { obs.removeelement(o); Det här tar vi kursivt vidare till oh 42 previous next 33 previous next 34 Metoder för att meddela att objektet ändrats Meddelandet update( ) skickas till alla observers Observable forts public void notifyobservers() {notifyobservers(null); public void notifyobservers(object arg) { int size=0; Om vi inte anger synchronized (this) { argument så läggs null if (!haschanged()) return; på som argument size = obs.size(); if (size > arr.length) {arr = new Observer[size]; obs.copyinto(arr); clearchanged(); Från vem for (int i = size -1; i>=0; i--) { if (arr[i]!= null) { arr[i].update(this, arg); Argument till uppdateringen Sätt eller ta bort changed-flagga klassen Observable forts public synchronized void deleteobservers() { obs.removeallelements(); protected synchronized void setchanged() {changed = true; protected synchronized void clearchanged() {changed = false; public synchronized boolean haschanged() { return changed; public synchronized int countobservers() {return obs.size(); previous next 35 previous next 36

7 observer Exempel: MessageBoard och beroende studenter Subklassa Observable import java.util.*; class MessageBoard extends Observable { protected String message; public String getmessage(){return message; public void changemessage(string amessage){ message = amessage; this.setchanged(); this.notifyobservers(message); Argumentet sparas (om tex något beroende objekt vill läsa av det) Vi indikerar att objektet ändrats Vi meddelar beroende objekt, med message som argument observer: exempel Vi antar att det redan finns en "vanlig" implementation av Student, som vi utökar I update( ) definierar vi vad som skall göras då objektet får reda på att ett objekt som det är beroende av ändrats import Persons.*; import java.util.*; Implementera gränssnittet Observer class Student extends Persons.Student implements Observer { public void update(observable o, Object arg){ System.out.println(this.christianName() + " tar emot meddelande: " + arg); public Student(String christianname, String familyname, String pnr, String programme, String ) { super(christianname, familyname, pnr, programme, ); previous next 37 previous next 38 observer: exempel public class TestObserver { public static void main(string [] args) { MessageBoard board = new MessageBoard(); Student pers1 = new Student("Kalle", "Person", "133", X96", x96- kpe@nada.kth.se"); pers1.addcourse( DOA2004"); Gör pers1 beroende av board pers1.addcourse("the Classic Malts"); board.addobserver(pers1); board.changemessage("ny person: " + pers1.christianname()); /* Utskriften blir Kalle tar emot meddelande: Ny person: Kalle */ Meddela att board ändrats observer: exempel Student pers2 = new Student("Olle", "Olsson", "113", X96", "olle@swipnet.se"); pers2.addcourse( DOA2004"); pers2.addcourse("english-1"); Gör pers2 beroende av board board.addobserver(pers2); board.changemessage("ny person: " + pers2.christianname()); /* Utskriften blir Olle tar emot meddelande: Ny person: Olle Kalle tar emot meddelande: Ny person: Olle */ Meddela att board ändrats previous next 39 previous next 40 observer: exempel Student pers3 = new Student("Lotta", "Andersson", "123", "F97", "ff@home.se"); pers3.addcourse("mdi03"); pers3.addcourse( DOA2004"); board.addobserver(pers3); board.changemessage("ny person: " + pers3.christianname()); /* Utskriften blir Lotta tar emot meddelande: Ny person: Lotta Olle tar emot meddelande: Ny person: Lotta Kalle tar emot meddelande: Ny person: Lotta */ Model View Controller (MVC) Baseras på mönstret Observer Vyerna observerar (prenumererar på) förändringar hos modellen (publicisten) Annorlunda uttryckt: En vy görs beroende (eng. dependent) av modellen Vid intressanta förändringar i modellen så meddelas dom beroende objekten (dvs vyerna) Ren struktur Modellen skall inte ha någon direkt vetskap om vilka eller hur många vyer som är beroende av den Modellen skall inte heller ta hänsyn till hur dess data presenteras eller hur man interagerar med den previous next 41 previous next 42

8 MVC (Konkret struktur, med principkod) Modellen har implicita referenser till vyerna dependents MVC (Modellen ändras) - principiell kod Vid förändring görs (alternativt) model.changed() model.changed(argument) model.changed(argument, parameter) Vyn får meddelandet update(argument, parameter, avsändare) vyerna blir automatisk beronde då modellen anges via meddelandet model(model amodel) view.model(amodel) Denna metod finns i någon gemensam rotklass (i Java implementeras interfacet Observer och i Smalltalk är MVC så centralt att klassen Object implementerar nödvändiga metoder) så om man inte vill ta hand om argument räcker det att implementera update(argument, parameter) eller update(argument) previous next 43 previous next 44 Sammanfattning konstruktion med View- Controller (typfall) 1 Skapa klasser Skapa applikationslogiken Oftast bäst att fokusera på och konstruera den logiska applikationen, utan interaktion och presentation, först Frågor man kan ställa sig: Vad är modell? Vad är bara hjälpklasser? Skapa vy (I Java som direkt eller indirekt sublass till JComponent i Smalltalk som direkt eller indirekt subklass till View) Skapa kontrollklass I Java används en kombination av lyssnare och egna klasser i Smalltalk finns speciella kontrollklasser Gör kontrollern till defaultklass för vyn Detta gäller främst för den puristiska implementationen av MVC i Smalltalk, i Java får vi som sagt bla utnyttja lyssnare Sätt ihop det hela mha Observermönstret I Java måste man själv se till att koppla ihop det hela. I Smalltalk ser vyn till att rätta beroenden sätts upp då man ger den en modell previous next 45 2 Definiera hur utritning går till steg 1 skriv metoden Java AWT: paint(graphics) Swing: paintcomponent(graphics) i Smalltalk displayon: i vyn självklart gör man i praktiken ofta lite mer sofistikerade saker också 3 Definiera hur inmatning från interkationsverktygen ska gå till Java: konstruera händelselyssnare och lämpliga metoder Smalltalk: skriva metoder med givna namn som tar emot händelser av olika typer previous next 46 Problem med MVC Ibland svårt att definitivt separera funktionalitet mellan modell, vy och kontroller Ibland kan det vara bra att dela upp applikationen i datamodeller och applikationsmodell Datamodeller Applikationsmodell MVC i JAVA class MinModell extends Observable lägg till UI-objekt som prenumerant, dvs addobserver(observer o) skicka changed, dvs setchanged(); notifyobservers(); till modellobjektet om intressant ändring skett Applikationsmodellen kan då innehålla kod som är relaterad till användargränssnittet, dvs controller och view men fortfarande bevaras den lösa kopplingen till datamodellen previous next 47 class MinUIClass extends Component implements Observer implementera update(obsevervable o, Object x) som uppdaterar skärmen previous next 48

9 Java Eventmodell 1.1 Java 1.1 och senare har en modell där man definierar objekt som tar hand om händelser som sker i komponenter i gränssnitten I princip sätter man upp en händelselyssnare per typ (tangentbord, mus, fokus, etc.) av händelse man är intresserad av att applikationen ska reagera på Varje komponent (knapp, fält, mfl) kan också hanteras av sin egen händelselyssnare buttonx.addactionlistener(mylistenerforbuttonx) Med fördel används anonyma klasser för att definiera lyssnare för olika objekt Händelselyssnare Händelser till ett fönster eller komponent tas omhand av händelselyssnare påminner mycket om mönstret Observer, och i grafiska sammanhang om MVC, fast dom "beroende" objekten, dvs lyssnarna, måste implementera ett mer varierat utbud av metoder beroende av typ av lyssnare måste olika API:er implementeras Olika typer av lyssnare tar hand om olika typer av händelser, MouseListener, WindowListener, FocusListener, ActionListener, osv Namnet är uppbyggt på följande sätt: HändelsetypListener Till varje lyssnare finns ett speciellt interface som beskriver vilka metoder som lyssnaren implementerar Lyssnarna och deras interface tillhör ett gemensamt package nämligen: java.awt.event previous next 49 previous next 50 Händelselyssnare, några typiska KeyListener ActionListener ComponentListener FocusListener WindowListener EventListener TextListener MouseListener MouseMotionListener ItemListener AdjustmentListener Exempel: implementation av lyssnarfunktionalitet direkt i den egna klassen package MyTests; import java.awt.event.*; public class MyFrame1 extends Frame implements WindowListener{ public void windowopened(windowevent e) { public void windowclosing(windowevent e) { System.exit(0); public void windowclosed(windowevent e) { public void windowiconified(windowevent e) { public void windowdeiconified(windowevent e) { public void windowactivated(windowevent e) { public void windowdeactivated(windowevent e) { ContainerListener previous next 51 previous next 52 public static void main(string [] args) { MyFrame1 frame = new MyFrame1(); frame.settitle("fönster som lyssnar efter fönsterhändelser v1 (fönstret gör det själv)"); frame.setsize(400, 300); frame.addwindowlistener(frame); frame.setvisible(true); Exempel: lyssnare som inre klass package MyTests; import java.awt.event.*; class MyWindowListener implements WindowListener { public void windowopened(windowevent e) { public void windowclosing(windowevent e) { System.exit(0); public void windowclosed(windowevent e) { public void windowiconified(windowevent e) { public void windowdeiconified(windowevent e) { public void windowactivated(windowevent e) { public void windowdeactivated(windowevent e) { previous next 53 previous next 54

10 public class MyFrame2 extends Frame { public static void main(string [] args) { Frame frame = new MyFrame2(); frame.settitle("fönster som lyssnar efter fönsterhändelser v2 (med inre klass)"); frame.setsize(400, 300); frame.addwindowlistener(new MyWindowListener()); frame.setvisible(true); Adaptorer och händelselyssnare För att förenkla användningen av händelselyssnare finns ett antal fördefinierade adaptorer Dessa adaptorer implementerar alla metoder deklarerade i den aktuella lyssnarens gränssnitt En adaptor implemeneterar endast tomma metoder Genom att subklassa en adaptor och använda den som lyssnare så räcker det att endast skriva om dom metoder som verkligen gör något, så slipper man som i föregående exempel implementera massa metoder utan metodkropp Dessa adaptorer är speciellt enkla att använda tillsammans med anonyma inre klasser previous next 55 previous next 56 Object Object Klasser Adaptorer ComponentAdapter ContainerAdapter FocusAdapter KeyAdapter MouseAdapter MouseMotionAdapter WindowAdapter WindowListener WindowListener ActionListener ActionListener AdjustmentListener AdjustmentListener ComponentListener ComponentListener ContainerListener ContainerListener FocusListener FocusListener ItemListener ItemListener KeyListener KeyListener MouseListener MouseListener MouseMotionListener MouseMotionListener TextListener TextListener Gränssnitt Gränssnitt Exempel: lyssnare via adapter class MyWindowAdapter extends WindowAdapter { public void windowclosing(windowevent e) { System.exit(0); public class MyFrame3 extends Frame { public static void main(string [] args) { Frame frame = new MyFrame3(); frame.settitle("fönster som lyssnar efter fönsterhändelser v3 (med egen adapter)"); frame.setsize(400, 300); frame.addwindowlistener(new MyWindowAdapter()); frame.setvisible(true); previous next 57 previous next 58 Exempel: lyssnare via anonym subklass public class MyFrame4 extends Frame { public static void main(string [] args) { Frame frame = new MyFrame4(); frame.settitle("fönster som lyssnar efter fönsterhändelser v4 (med anonym subklass till adapter)"); frame.setsize(400, 300); frame.addwindowlistener(new WindowAdapter (){ public void windowclosing(windowevent e) { System.exit(0); ); frame.setvisible(true); Kommunicera och prenumerera på förändringar (en kort repetition) Traditionellt callbacks dvs en funktion kopplas till att ta emot en viss händelse från systemet eller komponent OpenGL, X enkelt statiskt MVC baseras på Observer/beroenden alla typer av förändringar via samma kanal möjligen parameterstyrt generellt (språk-) neutralt skalbart/distribuerbart en kanal med dispatching hos klient previous next 59 previous next 60

11 Lyssnare och adaptorer ett helt objekt kopplas till en viss typ av händelse högre nivå än call-backs lite komplext (och fördolt) beteende mest ett problem för ovana användare av det aktuella systemet finns stöd för detta i Java med fördefinierade listener-interface och adaptorer specialiserade kopplade främst till grafiska komponenter Smalltalk mer generell än Javas modell alla objekt förberedda går att pluggas till en speciell del (tex en instansvariabel) men också mer komplex (och fördold för den oinvigde) MVC i botten registrera lyssnare händelser tas omhand av lyssnare Lyssnare och adaptorer: implementation lyssnaren beskriver beteende och kommunicerar med applikationen kursivt vidare till oh 68 I Java är många komponenter, som vi tidigare nämnt, förberedda för att hanteras av speciella lyssnare I princip går det till på följande sätt en komponent registrerar ett visst objekt som en lyssnare på vissa typer av händelser när en händelse av denna typ inträffar så vidarbefordras den i form av ett förutbestämt (deklarerat i ett interface) meddelande till lyssnaren lyssnaren i sin tur är vanligen en applikation eller en adaptor som i sin tur kommunicerar med applikationen previous next 61 previous next 62 Centralt är klasserna Component med subklasser som Button och TextField Definierar metoder som addactionlistener dvs binder en lyssnare AWTEventMulticaster Hanterar bindning mellan applikation och komponent Skickar förutbestämt meddelande till lyssnare vid given händelse Exempel: definiera egen lyssnarklass import java.util.eventlistener; import java.awt.event.actionevent; public interface MyActionListener extends EventListener { public void actionperformed(actionevent e); AWTEventMulticaster Component listener * Listener previous next 63 previous next 64 (MyComponent ) package MyTests; import java.util.vector; import java.util.enumeration; import java.awt.event.actionevent; public class MyComponent { Vector actionlisteners = new Vector(); public void addmyactionlistener(myactionlistener listener) { if(!actionlisteners.contains(listener)) actionlisteners.add(listener); public void firemyaction() { ActionEvent event = new ActionEvent(this, 4711, "My action fired!"); Vector cloneoflisteners = (Vector) actionlisteners.clone(); for(enumeration e = cloneoflisteners.elements(); e.hasmoreelements();) ((MyActionListener) e.nextelement()).actionperformed(event); public void removemyactionlistener(myactionlistener listener) { if(actionlisteners.contains(listener)) actionlisteners.remove(listener); previous next 65 previous next 66

12 (MyListenerTest) package MyTests; import java.awt.event.actionevent; class MyLocalActionListener implements MyActionListener { public void actionperformed(actionevent e) { System.out.println("ActionEvent received: " + e); public class MyListenerTest { public static void main(string [] args) { MyComponent component = new MyComponent(); component.addmyactionlistener(new MyLocalActionListener()); component.addmyactionlistener(new MyLocalActionListener()); component.addmyactionlistener(new MyActionListener() { public void actionperformed(actionevent e) { System.out.println("ActionEvent received in anonymous class: " + e); ); component.firemyaction(); Eclipse Vi använder Eclipse för att koda nu För att göra kodandet enklare använder vi Eclipse som är en så kallad IDE Vi åtekommer till vad IDEer är senare (nästa pass på två timmar och i nästa uppsättning OH-bilder) previous next 67 previous next 68 Exempel: RitProgram1 package Prog1; import javax.swing.*; import java.awt.event.*; public class RitProgram1 extends JFrame implements WindowListener, MouseListener, MouseMotionListener { private int last_x, last_y; public RitProgram1(String s) { super(s); this.init(); public void init() { // Använd MouseListener och MouseMotionListener // addxxxlistener anger att vi ar intresserade av den aktuella typen av händelser. this.addwindowlistener(this); this.addmouselistener(this); this.addmousemotionlistener(this); this.setsize(300, 300); // En metod beskriven i MouseListener. // Anropas då vid tryck på musknapp. public void mousepressed(mouseevent e) { last_x = e.getx(); last_y = e.gety(); previous next 69 previous next 70 // Metoder deklarerade i MouseListener måste implementeras // även om vi inte gör något i dem public void mousereleased(mouseevent e) { public void mouseclicked(mouseevent e) { public void mouseentered(mouseevent e) { public void mouseexited(mouseevent e) { // och samma sak för metoder från MouseMotionListener. public void mousemoved(mouseevent e) { // En metod beskriven i MouseMotionListener. // Anropas då musen rörs med knapp nertryckt. public void mousedragged(mouseevent e) { Graphics g = this.getgraphics(); int x = e.getx(), y = e.gety(); g.drawline(last_x, last_y, x, y); last_x = x; last_y = y; public void windowopened(windowevent e) { public void windowclosing(windowevent e) { System.exit(0); public void windowclosed(windowevent e) { public void windowiconified(windowevent e) { public void windowdeiconified(windowevent e) { public void windowactivated(windowevent e) { public void windowdeactivated(windowevent e) { public static void main(string args []) { RitProgram1 ritprog = new RitProgram1("Enkelt ritprogram"); ritprog.setvisible(true); previous next 71 previous next 72

13 Exempel: RitProgram2 package Prog2; import javax.swing.*; import java.awt.event.*; class MinRityta extends JComponent { protected int last_x, last_y; public MinRityta() { super(); this.init(); public void init() { this.addmouselistener(new MouseAdapter () { public void mousepressed(mouseevent e) { last_x = e.getx(); last_y = e.gety(); ); this.addmousemotionlistener(new MouseMotionAdapter() { public void mousedragged(mouseevent e) { Graphics g = getgraphics(); int x = e.getx(), y = e.gety(); g.drawline(last_x, last_y, x, y); last_x = x; last_y = y; ); previous next 73 previous next 74 public class RitProgram2 { public static void main(string args []) { JFrame ritprog = new JFrame("Ritprogram 2"); ritprog.getcontentpane().add(new MinRityta()); Exempel: RitProgram3 (dubbelbuffring) package Prog3; import javax.swing.*; import java.awt.event.*; kursivt vidare till oh 80 ritprog.addwindowlistener(new WindowAdapter () { public void windowclosing(windowevent e) { System.exit(0); ); ritprog.setsize(300, 300); ritprog.setvisible(true); class MinRityta extends JComponent { Image image = null; Graphics img = null; protected int last_x, last_y; public MinRityta() { super(); this.init(); previous next 75 previous next 76 protected Graphics getimgraphics() { if(image == null) { Dimension dim = getsize(); image = createimage(dim.width, dim.height); img = image.getgraphics(); return img; public void paintcomponent(graphics g) { super.paintcomponent(g); if(!(image == null)) g.drawimage(image, 0, 0, this); previous next 77 public void init() { this.addmouselistener(new MouseAdapter () { public void mousepressed(mouseevent e) { last_x = e.getx(); last_y = e.gety(); ); this.addmousemotionlistener(new MouseMotionAdapter() { public void mousedragged(mouseevent e) { Graphics g = getimgraphics(); int x = e.getx(), y = e.gety(); g.drawline(last_x, last_y, x, y); repaint(); last_x = x; last_y = y; ); previous next 78

14 public class RitProgram3 { public static void main(string args []) { JFrame ritprog = new JFrame("Ritprogram 3"); ritprog.getcontentpane().add(new MinRityta()); ritprog.addwindowlistener(new WindowAdapter () { public void windowclosing(windowevent e) { System.exit(0); ); ritprog.setsize(300, 300); ritprog.setvisible(true); (simpelt) Javaexempel med knappar, inmatningsfält och textfält package test; import java.awt.event.*; import javax.swing.*; public class Test1 { public static void main(string[] args) { final JTextField textf1; final JTextArea text1; JButton b; JFrame f = new JFrame("Test1a"); previous next 79 previous next Container c = f.getcontentpane(); textf1 = new JTextField(); c.add(textf1, BorderLayout.NORTH); text1 = new JTextArea(); c.add(text1, BorderLayout.CENTER); b = new JButton("Flytta"); c.add(b, BorderLayout.SOUTH); b.addactionlistener(new ActionListener() { public void actionperformed(actionevent e){ text1.append(textf1.gettext()); ; ); f.setsize(200, 300); f.setlocation(100, 100); f.setvisible(true); Större Javaexempel med MVC och widgets RitProgramWidthWidgets.java i separat fil previous next 81 previous next 82 Exempel från Advanced Java 2 Platform Vi tittar på MVC-exemplet i utdraget ur Advanced Java 2 Platform How To Program av Deitel, Deitel och Santry, som finns i DOA-kursbunten Här konstrueraras en enkel MVC-applikation med bankkonton som visualiseras av olika typer av vyer Swing-exempel på nätet Swing-exempel på nätet Vi tittar på exempel på följande websidor nts/example-1dot4/index.html previous next 83 previous next 84

15 Referenser, ett axplock [1] A Brief History of Human Computer Interaction Technology, Brad A. Myers [2] The core of Information Technology, Andy Fischer & Kevin Lee [3] Strategic Directions in Human-Computer Interaction, BRAD MYERS, JIM HOLLAN, ISABEL CRUZ ET AL [4] [5] [6] [7] [8] [9] User Interface Software Tools, Brad A Meyers, ACM Transaction on Computer Interaction, Vol 2, No 1, March 1995, Pages , D= &CFTOKEN= Titta gärna på Speciellt Digital Library (i menyn på föregående sida) Och sök efter artiklar on-line (för att läsa dom så måste du dock sitta på KTH) previous next 85 Länkar Java Speciellt Se också OH s 83 VisualWorks JBuilder respektive Borlands C++ Eclipse previous next 86

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

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

Vad är ett Framework? 2203$ ) UHOlVQLQJ. Hollywood. Frameworks (FW) Frameworks. Konstruktion av fönster, gränssnitt och användning av grafik i Java

Vad är ett Framework? 2203$ ) UHOlVQLQJ. Hollywood. Frameworks (FW) Frameworks. Konstruktion av fönster, gränssnitt och användning av grafik i Java 2203$ ) UHOlVQLQJ Frameworks. Konstruktion av fönster, gränssnitt och användning av grafik i Java Innehåll, kort om: Frameworks Grafik med främst AWT Grafiska interaktiva applikationer Händelsehantering

Läs mer

GUI-programmering. Gustav Taxén Martin Berglund DH2640 Grafik och Interaktionsprogrammering VT 2008

GUI-programmering. Gustav Taxén Martin Berglund DH2640 Grafik och Interaktionsprogrammering VT 2008 GUI-programmering Gustav Taxén gustavt@csc.kth.se Martin Berglund mabe02@kth.se DH2640 Grafik och Interaktionsprogrammering VT 2008 WIMP Window Icon Menu Pointing device Modernt Gränssnitt Vad ingår i

Läs mer

Frames, menyer och GUI-program

Frames, menyer och GUI-program 15 Frames, menyer och GUI-program Frames En frame-klass Om konstruktorer - igen Funktionella fönster Menyer Popupmenyer GUI-applikationer Dialogrutor Printerutskrift Kap 15: Sid 2 Frames Redan i kapitel

Läs mer

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

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

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

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser? Programmeringsteknik och Matlab Övning 6 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Händelsestyrda program

Händelsestyrda program JavaD- 1 Program- eller händelsestyrd exekvering Händelsestyrda program JavaD- 2 Programstyrd exekvering I ett traditionellt program bestämmer programmet när det är dags att läsa indata, programmets exekvering

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

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

Objektorientering i allmänhet

Objektorientering i allmänhet Objektorientering i allmänhet Objektorientering och händelsebaserad programmering Gustav Taxén gustavt@nada.kth.se Ett objekt är en "låda" da" där man samlar Data Metoder som (oftast) manipulerar denna

Läs mer

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

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011) Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 8 Två designmönster, MVC och Observer/Observable. Designrekommendation

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

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

Objektorientering och händelsebaserad programmering. Gustav Taxén

Objektorientering och händelsebaserad programmering. Gustav Taxén Objektorientering och händelsebaserad programmering Gustav Taxén gustavt@csc.kth.se 2D1640 Grafik och Interaktionsprogrammering VT 2007 Racingspel Vi skagöraettenkeltracingspel med olika sorters fordon.

Läs mer

Du ska nu skapa ett litet program som skriver ut Hello World.

Du ska nu skapa ett litet program som skriver ut Hello World. Tidigare har vi gjort all programmering av ActionScript 3.0 i tidslinjen i Flash. Från och med nu kommer vi dock att ha minst två olika filer för kommande övningar, minst en AS-fil och en FLA-fil. AS Denna

Läs mer

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar

Läs mer

Lösningar till tentamen i EDAF25

Lösningar till tentamen i EDAF25 Lösningar till tentamen i EDAF25 1 juni 2017 Lösning 1 Se figur 1. Figure 1: Tillståndsdiagram espressomaskin Lösning 2 (a) Kompositmönstret (b) Se figur 2 (c) Se figur 3 : Square : Drawing : Group : Circle

Läs mer

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

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

Frameworks. GUI till tusen. GUI till tusen. Sampling architectures. Inmatningstyper

Frameworks. GUI till tusen. GUI till tusen. Sampling architectures. Inmatningstyper Frameworks Koda med klassbibliotek Koda med framework GUI-programmering Min kod Framework Cristian Bogdan cristi@kth.se Kod i klassbibliotek Min kod, brukar kallas för callbacks. DH2640 Grafik och Interaktionsprogrammering

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

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

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

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur Dagens program Objektorienterad modellering och diskreta strukturer / design Fler mönster och Paketdesign Lennart Andersson Model View Control Observer Paketdesign Namngivning Reviderad 2011 09 12 2011

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

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

Projekt 2 XL. Observer-mönstret

Projekt 2 XL. Observer-mönstret Projekt 2 XL Objektorienterad modellering och diskreta strukturer Inför nästa projekt Lennart Andersson Reviderad 2011 10 24 2011 OMD 2011 F15-1 Schema designmöten OMD 2011 F15-2 Observer-mönstret 2 och

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

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

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

Programmera en NXT Robot

Programmera en NXT Robot KUNGLIGA TEKNISKA HÖGSKOLAN Programmera en NXT Robot Med hjälp utav NXC Peyman Torabi 2012-09-03 E-post: peymant@kth.se Introduktionskurs i datateknik (II1310) Sammanfattning Uppgiften var att analysera

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

DAT043 - Föreläsning 7

DAT043 - Föreläsning 7 DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar

Läs mer

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight Handledning för digitala verktyg Talsyntes och rättstavningsprogram Vital, StavaRex och SpellRight Elevens namn:.. Skola: Datum:.. Varför behövs en handledning? Denna handledning är tänkt att användas

Läs mer

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion

Introduktion. Den objektorienterade modellen Grundläggande begrepp Klass Klassen som abstraktion Introduktion Den objektorienterade modellen Grundläggande begrepp en som abstraktion er -objekt-attribut - metoder er Vad är ett objekt? Relationer mellan objekt/klasser Arv Arv (- är en) Multipelt arv

Läs mer

Observer Pattern och MVC. Objekt-orienterad programmering och design Alex Gerdes, 2016

Observer Pattern och MVC. Objekt-orienterad programmering och design Alex Gerdes, 2016 Observer Pattern och MVC Objekt-orienterad programmering och design Alex Gerdes, 2016 Model View Controller Model View Controller (MVC) är ett design pattern (architectural pattern) som är väldigt vanligt

Läs mer

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

Grafiska användargränsnitt i Java. Föreläsning 7 Innehåll. Använda klasspaketet Swing. Klasspaket i Java. Grafiska användargränsnitt i Java Föreläsning 7 Innehåll Grafiska användargränsnitt i Java Grafiska användargränsnitt i Java Komponenter (fönster, knappar, ) Layout Händelsehantering (Hur man får någonting att hända när användaren t.ex.

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

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Observer Pattern och MVC Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Model View Controller Model View Controller (MVC) är ett design pattern (architectural pattern) som är

Läs mer

Uppföljning av webbtillgänglighet

Uppföljning av webbtillgänglighet Information Uppföljning av webbtillgänglighet Samtliga följande frågor finns i webbriktlinjers självtest, d v s http://webbriktlinjer.se/testa-din-webbplats/ Nivå A AAA Rubrik: Undvik CAPTCHA Fråga: Finns

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

PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 DSV SU/KTH sid 1 (6) PROG2 VT13 PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 Tentan består av tre uppgifter. Max poäng är 38. För betyget E (godkänd) krävs minst

Läs mer

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

Malmö högskola 2007/2008 Teknik och samhälle Laboration Gui Avsikten med denna laboration är att du ska träna på att bygga grafiska användargränssnitt. Spara dina resultat i paketet laborationgui. Längst bak i laborationen finns fullständiga lösningar

Läs mer

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

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 3 (15p + 20p + 5p = 40 p) Lärare, jourhavande lärare

Läs mer

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur Dagens program Objektorienterad modellering och diskreta strukturer / design Fler mönster och Paketdesign Lennart Andersson Model View Control Observer Paketdesign Namngivning Reviderad 2012 09 17 2012

Läs mer

TIMREDOVISNINGSSYSTEM

TIMREDOVISNINGSSYSTEM TIMREDOVISNINGSSYSTEM Företagsekonomiska Institutionen Inledning med begreppsförklaring Huvudmeny Budgethantering Planering Rapportering Signering Utskrifter/Rapporter Byt lösenord Logga ut 1 Inledning

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

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

Properties. Användbara metoder som kan anropas i propertychanged: Properties Ett objekt kan ha vissa egenskaper (som beskrivs med instansvariabler). En enkel egenskap X avläses och sätts med metoderna getx() och setx(värde). En indexerad egenskap (från t.ex. en array)

Läs mer

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

MVC-mönstret. model-view-control i Swing MVC-mönstret model-view-control i Swing MVC Tanken bakom MVC (model view control) är att separera uppgifter i ett program från varandra. Model - Den data som behandlas View - Hur användargränssnittet ser

Läs mer

Vi skall skriva uppsats

Vi skall skriva uppsats Vi skall skriva uppsats E n vacker dag får du höra att du skall skriva uppsats. I den här texten får du veta vad en uppsats är, vad den skall innehålla och hur den bör se ut. En uppsats är en text som

Läs mer

Laboration 4: Game of Life

Laboration 4: Game of Life Laboration 4: Game of Life Programmerade system I1 Bakgrund: I denna laboration ska vi ägna oss åt Game of Life, vilket är en mycket enkel modell av en population organismer som kan leva, dö och fortplanta

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

Gissa det hemliga talet

Gissa det hemliga talet Laborationsanvisning Gissa det hemliga talet Steg 1, laborationsuppgift 1 Författare: Mats Loock Kurs: ASP.NET MVC Kurskod:1DV409 Innehåll Problem 4 Modell 4 Den uppräkningsbara typen Outcome 5 Strukturen

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

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

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar 0 Java och Swing LiTHehack? Här? @ kontakt /. lithehack se. lithehack se koma -, 17 19 Tisdagar och torsdagar Idag grafik menyer kortkomandon pop up-menyer submenyer Skansholm Java direkt upplaga 6 eller

Läs mer

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen 20150613, kl. 9.00-12.00 Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 FACIT Tentamen 20150613, kl. 9.00-12.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del

Läs mer

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs

Tentamen Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs Tentamen 2006-0823 Objekt-orienterad programmering med Java, 1DL100 Sommarkurs och distanskurs Uppsala Universitet Instutitionen för informationsteknologi Avdelningen för datalogi Kursansvarig: Sven-Olof

Läs mer

Lösningar till tentamen i EDAF25

Lösningar till tentamen i EDAF25 Lösningar till tentamen i EDAF25 21 aug 2017 Lösning 1 Javaklasser (många varianter finns naturligtvis): class Client { private Invoker invoker; public void newcommand(string cmdtext) { Command cmd; if

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

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

Distribuerade system. CORBA eller RMI

Distribuerade system. CORBA eller RMI Distribuerade system Java XII - 1 CORBA eller RMI Java XII - 2 Några motiv till distribuerade system kan vara att: Utjämna belastningen mellan olika maskiner i ett nätverk Utnyttja kapaciteten i en större

Läs mer

Klasser och objekt i C#

Klasser och objekt i C# Klasser och objekt i C# Från klassdiagram till C#-klass till objekt initierat av en konstruktor. Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med

Läs mer

GUI /ll tusen. GUI /ll tusen. Java/Swing. Top Level Containers. General Purpose Containers. GrIP-vt2010-GUI-programmering Cristian Bogdan

GUI /ll tusen. GUI /ll tusen. Java/Swing. Top Level Containers. General Purpose Containers. GrIP-vt2010-GUI-programmering Cristian Bogdan GUI programmering Cristian Bogdan cristi@kth.se GUI /ll tusen Win32 API (C) MFC (C++) VCL/CLX (C++/Delphi) wxwidgets (C++) Qt (C++/Java) GTK+ (C).NET Framework (VB/C++/C#) Java AWT/Swing/SWT (Java) osv

Läs mer

Manual HSB Webb brf 2004 03 23

Manual HSB Webb brf 2004 03 23 AVDELNINGAR Det finns flera olika typer av avdelningar. Standard, Nod HSB, Nod Förening, Nod Brf, Nod Styrelsewebb, Struktur och Område/projekt. Standard är den mall som används för att presentera artiklar.

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

Manual fö r kursspecifika ansö kningsförmula r Fölkhö gsköla.nu

Manual fö r kursspecifika ansö kningsförmula r Fölkhö gsköla.nu Manual fö r kursspecifika ansö kningsförmula r Fölkhö gsköla.nu 2014-01-23 Bakgrund Folkhögskola.nu har utvecklat en funktion som gör det möjligt för skoladministratörer att skapa kursspecifika digitala

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

GUI-programmering. Gustav Taxén

GUI-programmering. Gustav Taxén GUI-programmering Gustav Taxén gustavt@csc.kth.se 2D1640 Grafik och Interaktionsprogrammering VT 2007 Racingspel Vi utökar vårt racingspel lite grann. Vi behöver en bättre modell för hur bilarna ska flyttas.

Läs mer

Lathund för överföring av rapporter och ljudfiler

Lathund för överföring av rapporter och ljudfiler Lathund för överföring av rapporter och ljudfiler För handledare I den här lathunden finns detaljerade instruktioner om hur du gör för att ladda ner rapporter och ljudfiler från dina studenter. Först kommer

Läs mer

För att hitta filen gå till mappen NetBeansProjects. Välj undermappen med rätt projekt, och sedan undermapp dist. Där ligger.jar-filen.

För att hitta filen gå till mappen NetBeansProjects. Välj undermappen med rätt projekt, och sedan undermapp dist. Där ligger.jar-filen. Java utan netbeans Du har gjort ett program i netbeans Hur exportera det så att andra kan köra det utan att använda netbeans? Välj projektet som main project Högerklicka på det och välj Clean and Build

Läs mer

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215 TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215 DAG: 8 mars, 2010 TID: 8.30 12.30 SAL: V-huset Ansvarig: Olof Torgersson, tel. 772 54 06. Institutionen för data- och informationsteknik.

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: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl

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

Administration Excelimport

Administration Excelimport Administration Excelimport För att importera medlemmar till registret så laddar man först ner mallen för importfil, fyller i uppgifterna och laddar sedan upp filen genom att klicka på + Importera fil.

Läs mer

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

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? 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

Läs mer

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14. Tentamen 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl 9.00 14.00, sal E33 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Tentamen i EDAF5 juni 07 Skrivtid: 4-9 Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas. Skriv inte med färgpenna enda tillåtna färg är svart/blyerts. Skriv

Läs mer

Individuellt Mjukvaruutvecklingsprojekt

Individuellt Mjukvaruutvecklingsprojekt Individuellt Mjukvaruutvecklingsprojekt RPG-spel med JavaScript Författare Robin Bertram Datum 2013 06 10 1 Abstrakt Den här rapporten är en post mortem -rapport som handlar om utvecklandet av ett RPG-spel

Läs mer

ELEV- HANDLEDNING (Ansökan via webben) www.orebro.se/gymnasieantagningen

ELEV- HANDLEDNING (Ansökan via webben) www.orebro.se/gymnasieantagningen ELEV- HANDLEDNING (Ansökan via webben) www.orebro.se/gymnasieantagningen Gymnasieantagningen i Örebro län På Gymnasieantagningens hemsida www.orebro.se/gymnasieantagningen hittar du information om vad

Läs mer

Boll-lek om normer. Nyckelord: likabehandling, hbt, normer/stereotyper, skolmiljö. Innehåll

Boll-lek om normer. Nyckelord: likabehandling, hbt, normer/stereotyper, skolmiljö. Innehåll 1 Boll-lek om normer Nyckelord: likabehandling, hbt, normer/stereotyper, skolmiljö Innehåll Materialet bygger på en övning där eleverna, genom en lek med bollar, får utmana sin förmåga att kommunicera

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

Logga in. Gå in på: www.t-d.se. Klicka på Logga in. Klicka på den region, kommun eller organisation där din verksamhet finns

Logga in. Gå in på: www.t-d.se. Klicka på Logga in. Klicka på den region, kommun eller organisation där din verksamhet finns Registrera I TD Logga in Gå in på: www.t-d.se Klicka på Logga in. Klicka på den region, kommun eller organisation där din verksamhet finns inventerad och registrerad. Skriv in ditt användarnamn och lösenord.

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

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

Uppdragsbeskrivning. Digital Skyltning. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info.

Uppdragsbeskrivning. Digital Skyltning. Version 1.0 Mats Persson. Distributionslista. Namn Åtgärd Info. Version 1.0 Distributionslista Befattning Bolag/en het Student KaU Anton Odén Student KaU Olle Pejstrup Konsult/handledare Sogeti Konsultchef Sogeti Åsa Maspers Projektledare Sogeti vakant Namn Åtgärd

Läs mer

Manual för BPSD registret. Version 6 / 2013 06 17

Manual för BPSD registret. Version 6 / 2013 06 17 Manual för BPSD registret Version 6 / 2013 06 17 Logga in Logga in till registret överst till höger på hemsidan. (Observera att du hittar testdatabasen längre ner på hemsidan) Fyll i ditt personliga användarnamn

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

Projektkursen Designmönster. Sammanfattning och slutsatser. Till stora delar lär vi genom att härma och efterlikna

Projektkursen Designmönster. Sammanfattning och slutsatser. Till stora delar lär vi genom att härma och efterlikna 2D1362: 2003 Projektkursen 2003 Innehåll Återanvändning Problem Bakgrund Lösning Exempel Sammanfattning och slutsatser previous next Återanvändning I alla tider har man försökt att återanvända och applicera

Läs mer

Lösningar för tenta 3 DAT043,

Lösningar för tenta 3 DAT043, Lösningar för tenta 3 DAT043, 2018-08-22. Uppgift 1 class Person{ public String förnamn; public String efternamn; public int ålder; private double längd; private double vikt; public Person(String förnamn,

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

Laboration 15 Grafiskt användargränssnitt

Laboration 15 Grafiskt användargränssnitt Laboration 15 Grafiskt användargränssnitt Avsikten med denna laboration är att du ska träna på att skriva program som använder grafiskt användargränssnitt, dvs program som använder grafiska komponenter

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

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material. TDA 545: Objektorienterad programmering Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material. Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag En quiz! tinyurl.com/tda545quiz

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

Manual för Min sida 1/9. 2011-05-26 rev 2011-09-02

Manual för Min sida 1/9. 2011-05-26 rev 2011-09-02 1/9 2011-05-26 rev 2011-09-02 Manual för Min sida Introduktion... 2 Hur länge finns Min sida kvar?... 2 Vad kan jag publicera på Min sida?... 2 Inloggning... 2 Redigera personliga uppgifter... 3 Redigera

Läs mer

Två konstiga klockor

Två konstiga klockor strävorna C Två konstiga klockor resonemang geometri Avsikt och matematikinnehåll Det som kan göra det svårt för barn att avläsa en analog klocka är att förstå att den består av två skalor som är beroende

Läs mer

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

4-3 Vinklar Namn: Inledning. Vad är en vinkel? 4-3 Vinklar Namn: Inledning I det här kapitlet skall du lära dig allt om vinklar: spetsiga, trubbiga och räta vinklar. Och inte minst hur man mäter vinklar. Att mäta vinklar och sträckor är grundläggande

Läs mer

Guide till Wordpress text- och bildredskap

Guide till Wordpress text- och bildredskap Guide till Wordpress text- och bildredskap Det här är en kort användarguide som förklarar hur du lägger till, redigerar och tar bort sidor och texter från vår webbsajt med hjälp av verktyget Wordpress.

Läs mer

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den. Arv och polymorfi Arv och polymorfi är två centrala begrepp i objektorientering. Arvsmekanismen innebär att vi kan skapa nya klasser utifrån redan existerande klasser. Man gör detta med hjälp av nyckelordet

Läs mer