INF1010 våren 2006 Uke 19: 9. mai 2006 Et større eksempel: Solitaire (kabal)

Størrelse: px
Begynne med side:

Download "INF1010 våren 2006 Uke 19: 9. mai 2006 Et større eksempel: Solitaire (kabal)"

Transkript

1 Det ferdige spillet INF1010 våren 2006 Uke 19: 9. mai 2006 Et større eksempel: Solitaire (kabal) Stein Michael Storleer Institutt for informatikk Dette er kopier av lysark for en forelesning. Sidene er kan være ufullstendige og det kan forekomme feil. Disse sidene er kun egnet til bruk for selvstudium med korreksjoner og notater fra forelesningen 2 Oversikt over forelesningen Klassediagram n UML klassediagram MVC-oppdelingen n Design av grensesnittet n Basis-modellen initialisering av spillet n Selve spillet n Temaer som dekkes: n MVC n Subklasser n GUI + Litt lister og interface n Dekkes ikke: n Rekursjon n Med utgangspunkt i Timothy Budd: Understanding objectoriented programming with Java, updated edition. Addison- Wesley, Solitaire 1 Solitaire 1 Solitaire Bunke 0..* Kort Hovedprogrammet Bunke Kort 4

2 MVC-samspillet Klassen Kort n Definerer de ulike kort-fargene som konstanter: KLØVER, RUTER, HJERTER, SPAR n Private variable: Brukerinput l endret Be om data n private int farge; n private int verdi; n private boolean synlig = false; // Billedside opp? n Konstruktør: Passende metodekall l endret Be om data n public Kort(int farge, int verdi) n Enkle aksess-metoder: n public int getfarge() n public int getverdi() n public boolean ersynlig() 5 n Metodene n public void snu() snur et kort ved å sette synlig =! synlig n public boolean svart() gir true hvis fargen er kløver/spar 6 Klassen Kort Kort vs Kort n Definerer en del konstanter: n final static int KORTBREDDE = 50; n final static int KORTHØYDE = 70; n De ulike kort-fargene: BAKSIDE, KLØVER, RUTER, HJERTER, SPAR n Private variable: n private int farge; n private String verdi; n Konstruktør: n public Kort(int farge, String verdi) n Enkle aksess-metoder: n public int getfarge() n public String getverdi() n Metoden tegnkort(graphics g, int x, int y) for å vise frem ett enkelt kort på skjermen. 7 n Hvorfor to så (i hvert fall tilsynelatende) like klasser? 8

3 Solitaire extends Jframe (BorderLayout) WEST: Jpanel pp1 (FlowLayout) GUI-design Bunke extends JPanel Jbutton newgame NORTH: Jpanel p1 (FlowLayout) CENTER: Jpanel p2 (BorderLayout) EAST: Jpanel pp2 (FlowLayout) SOUTH: Jpanel p3 (GridLayout(1,7)) 9 Klassen Bunke n Subklasse av JPanel n Private variable: n private Kort[ ] kortene; n private int id; n private boolean vertikal; n Konstruktør: n public Bunke(int id, boolean vertikal) n Aksess-metoden: n public int getid() n Set-metoden n public void setkort(kort[ ] kortene) n Metoden setsize() som beregner hvor stor plass bunken trenger på skjermen, avhengig av antall kort som skal vises frem og om disse skal vises horisontalt eller vertikalt. n Metoden paintcomponent(graphics g) for å vise frem bunken på skjermen (kaller tegnkort for hvert Kort som skal vises). 10 Solitaire import java.awt.*; import java.awt.event.*; import javax.swing.*; Skal lytte etter museklikk på de ulike bunkene (implements MouseListener) class Solitaire extends MouseAdapter implements ActionListener { Solitaire model = new Solitaire(); Solitaire view = new Solitaire(this); public static void main(string[] args) { Solitaire c = new Solitaire(); public void mouseclicked(mouseevent e) { // < Ikke implementert enda > Skal lytte etter trykk på New game Solitaire public class Solitaire extends JFrame { Bunke[] bunker; Solitaire control; Hovedvinduet public Solitaire(Solitaire c) { super("solitaire"); control = c; init(); // Oppretter vinduskomponentene public void actionperformed(actionevent e) { // < Ikke implementert enda > 11 12

4 public void init() { JButton newgame = new JButton("New game"); newgame.addactionlistener(control); // Oppretter de ulike grafiske bunkene. bunker = new Bunke[13]; bunker[0] = new Bunke(0, false); // håndbunke bunker[1] = new Bunke(1, false); // avkastbunke for (int i = 0; i < 4; i++) { bunker[2+i] = new Bunke(2+i, false); // grunnbunker for (int i = 0; i < 7; i++) { bunker[6+i] = new Bunke(6+i, true); // bordbunker // Kontrollen skal lytte etter museklikk på bunkene for (int i = 0; i < 13; i++) { bunker[i].addmouselistener(control); // < Organiser bunkene: på neste foil > oppdater(); // Oppdaterer bunkenes data og størrelse Container lerret = getcontentpane(); lerret.setlayout(new BorderLayout()); Jpanel p1 = new JPanel(); // Knapp p1.add(newgame); JPanel pp1 = new JPanel(); // håndbunke og avkastbunke pp1.add(bunker[0]); pp1.add(bunker[1]); JPanel pp2 = new JPanel(); // grunnbunker for (int i = 0; i < 4; i++) pp2.add(bunker[2+i]); JPanel p2 = new JPanel(); p2.setlayout(new BorderLayout()); p2.add(pp1, BorderLayout.WEST); p2.add(pp2, BorderLayout.EAST); JPanel p3 = new JPanel(); // bordbunker p3.setlayout(new GridLayout(1,7)); for (int i = 0; i < 7; i++) p3.add(bunker[6+i]); setdefaultcloseoperation(jframe.exit_on_close); setvisible(true); 13 lerret.add(p1, BorderLayout.NORTH); lerret.add(p2, BorderLayout.CENTER); lerret.add(p3, BorderLayout.SOUTH); 14 // I Solitaire public void oppdater() { for (int i = 0; i < bunker.length; i++) { // < Hent bunke-data fra modellen (via kontrollen) > bunker[i].setsize(); // Setter grafisk størrelse på bunken pack(); repaint(); Status: Tomt grensesnitt // I Bunke public void paintcomponent(graphics g) { super.paintcomponent(g); if (kortene == null) { // Tom bunke g.drawrect(0, 0, Kort.KORTBREDDE, Kort.KORTHØYDE); else { // < Kommer senere... > 15 16

5 Avkastbunke De ulike bunkene len Håndbunke Grunnbunker Bordbunker n Vi ser av vi har ulike typer bunker, der fellesnevneren er at hver bunke har en liste med kortene i bunken. n Siden kort alltid legges til/fjernes fra toppen av en bunke, er dette en LIFO-liste. n De nøyaktige reglene for å legge til/fjerne kort vil derimot variere med typen bunke. n De ulike bunkene kan naturlig modelleres som subklasser av en generell Bunke-klasse: Bunke 17 HandBunke AvkastBunke GrunnBunke BordBunke 18 En generell Bunke Klassen HandBunke import java.util.*; n Selve kortstokken public class Bunke { protected LinkedList bunken = new LinkedList(); public boolean ertom() { return bunken.isempty(); public void leggtil(kort kortet) { bunken.addlast(kortet); public Kort fjern() { if (ertom()) return null; return (Kort) bunken.removelast(); public boolean kanta(kort kortet) { return false; Brukes som en FIFO-liste, LIFO-liste, med innsetting/fjerning sist 19 import java.util.random; public class HandBunke extends Bunke { public HandBunke() { // Oppretter en bunke med 52 kort for (int i = 0; i < 4; i++) { for (int j = 1; j <= 13; j++) { leggtil(new Kort(i, j)); // Stokker kortene ved hjelp av en random-generator. Random generator = new Random(); for (int i = 0; i < 52; i++) { int j = Math.abs(generator.nextInt() % 52); Object tmp = bunken.get(i); bunken.set(i, bunken.get(j)); bunken.set(j, tmp); 20

6 Klassen AvkastBunke Klassen GrunnBunke n Metoden kanta: Ingen begrensninger på hvilke kort som kan ligge i bunken. n Metoden leggtil: Alle kortene i bunken skal være synlige. public class AvkastBunke extends Bunke { public boolean kanta(kort kortet) { return true; public void leggtil(kort kortet) { if (!kortet.ersynlig()) { kortet.snu(); super.leggtil(kortet); 21 n Metoden kanta: Må følge farge, i stigende verdi fra essene og oppover. public class GrunnBunke extends Bunke { public boolean kanta(kort kortet) { if (ertom()) { return kortet.getverdi() == 1; Kort toppkort = øverste(); return (kortet.getfarge() == toppkort.getfarge() && kortet.getverdi() == toppkort.getverdi() + 1); 22 Klassen BordBunke n Metoden kanta: Kun konger kan flyttes til en ledig bunke. Ellers bygges bunkene i avtagende verdi, med alternerende rød/svart farge. public class BordBunke extends Bunke { public boolean kanta(kort kortet) { if (ertom()) { return kortet.getverdi() == 13; else { Kort toppkort = øverste(); if (!toppkort.ersynlig()) return false; return (kortet.svart()!= toppkort.svart() && kortet.getverdi() == toppkort.getverdi() - 1); 23 public class Solitaire { private Bunke[] bunker; public Solitaire() { init(); public void init() { bunker = new Bunke[13]; bunker[0] = new HandBunke(); bunker[1] = new AvkastBunke(); for (int i = 0; i < 4; i++) bunker[2+i] = new GrunnBunke(); for (int i = 0; i < 7; i++) bunker[6+i] = new BordBunke(); Kort kortet = null; for (int i = 0; i < 7; i++) { // Legger ut kortene i én bunke. Bunke i skal ha i+1 kort. for (int j = 0; j <= i; j++) { kortet = bunker[0].fjern(); bunker[6+i].leggtil(kortet); kortet.snu(); // Nederste kort skal være synlig. 24

7 Fra modell til view Hvordan hente data fra modellen inn i viewet? 1. Metoden oppdater i Solitaire kaller control.getkort(id) for hver enkelt bunke (med identifikator id) i viewet. 2. Kort[ ] getkort(int id) i Solitaire: 1. Finner identifikatoren til den tilsvarende bunken i modellen (her: samme id). 2. Kaller model.getkort(id). 3. Svaret fra modellen er en array med Kort-objekter (de kortene i bunken som skal vises frem). Denne oversettes til en array med Kort-objekter, som så returneres til viewet. 3. Metoden oppdater i Solitaire tilordner så Kort-arrayen til bunken ved hjelp av dennes set-metode setkort(). 4. Til slutt kaller viewet repaint() for å tegne vinduet på nytt. Solitaire: getkort public Kort[] getkort(int id) { if (bunker[id].ertom()) { return null; else if (id >= 6) { // bordbunke, returner alle kortene return bunker[id].getkort(); else { // annen type bunke, returner bare øverste kort Kort[] returkort = new Kort[1]; returkort[0] = bunker[id].øverste(); return returkort; Bunke: getkort // I Solitaire public Kort[] getkort(int id) { Kort[] kortene; Kort[] retur; kortene = model.getkort(id); // Hent kortene fra modellen if (kortene == null) return null; // Tom bunke public Kort øverste() { if (ertom()) { return null; return (Kort) bunken.getlast(); public Kort[] getkort() { Kort[] kortene = (Kort[]) bunken.toarray(new Kort[0]); return kortene; retur = new Kort[kortene.length]; int farge, nyfarge, verdi; String nyverdi; for (int i = 0; i < kortene.length; i++) { Kort k = kortene[i]; farge = k.getfarge(); verdi = k.getverdi(); if (!k.ersynlig()) nyfarge = Kort.BAKSIDE; else if (farge == Kort.KLØVER) nyfarge = Kort.KLØVER; else < Tilsvarende for de andre fargene > if (verdi == 1) nyverdi = "A"; else if (verdi == 11) nyverdi = "J"; else if (verdi == 12) nyverdi = "D"; else if (verdi == 13) nyverdi = "K"; else nyverdi = Integer.toString(verdi); 27 retur[i] = new Kort(nyfarge, nyverdi); return retur; 28

8 Bunke: paintcomponent public void paintcomponent(graphics g) { super.paintcomponent(g); if (kortene == null) { // Tom bunke g.drawrect(0, 0, Kort.KORTBREDDE, Kort.KORTHØYDE); else { for (int i = 0; i < kortene.length; i++) { if (vertikal) { kortene[i].tegnkort(g, 0, i*35*2); else { kortene[i].tegnkort(g, i*20, 0); 29 // I Kort public void tegnkort(graphics g, int x, int y) { g.clearrect(x, y, KORTBREDDE, KORTHØYDE); // Tegner bakgrunnen på kortet if (getfarge()!= BAKSIDE) g.setcolor(color.white); else g.setcolor(color.gray); g.fillrect(x, y, KORTBREDDE, KORTHØYDE); // Tegner rammen rundt kortet g.setcolor(color.black); g.drawrect(x, y, KORTBREDDE, KORTHØYDE); // Tegner selve kortet switch(getfarge()) { case RUTER: g.setcolor(color.red); g.drawstring(""+getverdi(), x+3, y+15); g.drawline(x+25, y+20, x+40, y+40); g.drawline(x+40, y+40, x+25, y+60); g.drawline(x+25, y+60, x+10, y+40); g.drawline(x+10, y+40, x+25, y+20); break; < Tilsvarende for de andre fargene, samt baksiden > 30 Status: Ferdig initiert, mangler spilling "New game" // I Solitaire public void actionperformed(actionevent e) { if (e.getactioncommand().equals("new game")) { model.init(); view.oppdater(); 31 32

9 n n Flytting av ett kort mellom bunker I viewet: 1. Brukeren klikker på bunken det skal flyttes fra. 2. Det øverste kortet her merkes grafisk med en annen farge. 3. Brukeren klikker på bunken det skal flyttes til. I kontrollen: 1. Ved første museklikk huskes hvilken bunke som ble valgt. 2. Ved andre museklikk gjøres et passende kall på metoden boolean flytt(int fra, int til) i modellen. 3. Returen fra modellen angir om flyttingen ble utført (modellen endret) eller om det skal gis feilmelding til brukeren. 33 Solitaire: mouseclicked private int source = -1; public void mouseclicked(mouseevent e) { Bunke bunken = (Bunke) e.getsource(); if (source == -1) { source = bunken.id; view.marker(bunken.id); else { if (bunken.id!= source) flytt(source, bunken.id); view.umarker(source); source = -1; public void flytt(int fra, int til) { boolean ok = model.flytt(fra, til); if (ok) view.oppdater(); else view.feilmelding("ulovlig operasjon"); 34 Solitaire: feilmelding+merking public void feilmelding(string melding) { JOptionPane.showMessageDialog(this, melding); public void marker(int id) { bunker[id].marker(); repaint(); public void umarker(int id) { bunker[id].umarker(); repaint(); Den nøyaktige merkingen av bunkene tas ikke med her. Solitaire: flytt boolean flytt(int fra, int til) { Bunke frabunke = bunker[fra]; Bunke tilbunke = bunker[til]; // Kort som flyttes fra håndbunke må flyttes til avkastbunke if (frabunke instanceof HandBunke &&! (tilbunke instanceof AvkastBunke)) return false; // Kort som flyttes til avkastbunke må komme fra håndbunke if (tilbunke instanceof AvkastBunke &&! (frabunke instanceof HandBunke)) return false; if (frabunke.ertom()) return false; // Tom bunke // Flytt ett kort fra en bunke til en annen hvis mulig Kort kortet = frabunke.øverste(); if (tilbunke.kanta(kortet)) { frabunke.fjern(); tilbunke.leggtil(kortet); return true; 35 // Fortsetter neste foil... 36

10 Solitaire: flytt (forts.) Bunke: bygg < Fortsettelse fra forrige foil... > // Flytt eventuelt et helt bygg mellom to bordbunker if (frabunke instanceof BordBunke && tilbunke instanceof BordBunke) { Kort[] kortene = frabunke.bygg(); for (int i = 0; i < kortene.length; i++) { // Forsøk å flytte alle kortene i bygget fra og med indeks i if (tilbunke.kanta(kortene[i])) { for (int j = i; j < kortene.length; j++) { frabunke.fjern(); tilbunke.leggtil(kortene[j]); return true; public final Kort[] bygg() { int førstesynlige = -1; for (int i = 0; i < bunken.size(); i++) { Kort kortet = (Kort) bunken.get(i); if (kortet.ersynlig()) { førstesynlige = i; break; List bygg = bunken.sublist(førstesynlige, bunken.size()); Kort[] kortene = (Kort[]) bygg.toarray(new Kort[0]); return kortene; return false; // Ingen flytt mulig Annen brukerinput n Ved klikk på håndbunken: n Ta av ett kort til avkastbunken n Ved klikk på bordbunke der det øverste kortet ligger med billedsiden ned: n Snu dette kortet slik at billedsiden ligger opp // I Solitaire public void mouseclicked(mouseevent e) { Bunke bunken = (Bunke) e.getsource(); int id = bunken.getid(); if (source == -1) { if (id == 0) { // håndbunke, flytt kort til avkastbunke flytt(0, 1); else if (id >= 6 && snukort(id)) { // bordbunke, øverste kort skjult // snukort gjør jobben selv... else { source = id; view.marker(id); else { // Som før public boolean snukort(int id) { boolean svar = model.snukort(id); if (svar) { view.oppdater(); return svar; 40

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 GUI (Graphical User Interface)- programmering Hvordan lage et vindu på skjermen Hvordan legge ulike komponenter i vinduet (trykknapper, tekseelter, tekst,

Detaljer

INF1010 våren mai 2005 Et større eksempel: kabal (solitaire)

INF1010 våren mai 2005 Et større eksempel: kabal (solitaire) Det ferdige spillet INF1010 våre 2004 3. mai 2005 Et større eksempel: kabal (solitaire) Stei Michael Storleer Istitutt for iformatikk Dette er et sett lysark for e forelesig. Noe sider er ufullstedige

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 6. juni 2006 Tid for eksamen: 1430 1730 Oppgavesettet er på 6 sider. Vedlegg: INF1010 Objektorientert programmering

Detaljer

import javax.swing.*; import java.awt.*;

import javax.swing.*; import java.awt.*; import javax.swing.*; import java.awt.*; import javax.swing.*; import java.awt.*; Pluss mange Implementasjoner av forskjellige grensesnitt class RammeDemo { public static void main(string[] args) { JFrame

Detaljer

Grafisk Brukergrensesnitt

Grafisk Brukergrensesnitt Grafisk Brukergrensesnitt Repetisjonskurs Hva må kunnes? JFrame JPanel JComponents Layouts Listeners jframe Representerer et vindu JComponents legges på vinduet Har en tittel og størrelse Komponenter struktureres

Detaljer

INF1010. Grafisk brukergrensesni. med Swing og awt del 2. INF1010 - - Grafisk brukergrensesni4 II

INF1010. Grafisk brukergrensesni. med Swing og awt del 2. INF1010 - - Grafisk brukergrensesni4 II INF1010 Grafisk brukergrensesni. med Swing og awt del 2 1 GUI (Graphical User Interface)- programmering n n n Enkel behandling av knappetrykk mm. Layout av vinduer Om å lytte på knappetrykk med musa n

Detaljer

LO191D/LC191D Videregående programmering

LO191D/LC191D Videregående programmering LO191D/LC191D Videregående programmering Eksamen mai 2012 Løsningsforslag Oppgave 1 Klassen Destinasjon: // Oppgaven er uklar på hva som skal inn i klassen Destinasjon. // Her følger en minimumsutgave

Detaljer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL Delprøve Kandidatnr: Prøvedato: 2. mars 2005 Varighet: 3 timer (9:00 12:00) Fagnummer: LO196D Fagnavn: Videregående programmering med

Detaljer

Gjennomgang av eksamen H99

Gjennomgang av eksamen H99 Gjennomgang av eksamen H99 Administrasjon av kurser, studenter og påmeldinger Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Oppgave 1 (15 %) (Besvares

Detaljer

6108 Programmering i Java. Leksjon 8. GUI: Grafisk brukergrensesnitt. Del 2: 8.3 8.4 Roy M. Istad 2015

6108 Programmering i Java. Leksjon 8. GUI: Grafisk brukergrensesnitt. Del 2: 8.3 8.4 Roy M. Istad 2015 6108 Programmering i Java Leksjon 8 GUI: Grafisk brukergrensesnitt Del 2: 8.3 8.4 Roy M. Istad 2015 // Programforklaring // Noen nye import-setninger GUIprogram.java public class GUIprogram + vindu/hendelser

Detaljer

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk INF1010 - Våren 2015 Li' repe$sjon om Tråder og GUI Stein Gjessing,, Universitetet i Oslo 1 GUI, tråder og hendelser Op-sys (Win, Linux,..) Ditt Program sin Event Dispatch Thread Hver ting brukeren gjør

Detaljer

Uke mars 2005 GUI - del 2. GUI (Graphical User Interface)-programmering

Uke mars 2005 GUI - del 2. GUI (Graphical User Interface)-programmering Uke10 29. mars 2005 GUI - del 2 Stein Gjessing Inst for Informatikk Univ. i Oslo GUI (Graphical User Interface)-programmering Forrige gang Hvordan få laget et vindu på skjermen Hvordan legge ulike komponenter

Detaljer

Inf 1010 GUI - del 2

Inf 1010 GUI - del 2 Inf 1010 GUI - del 2 Stein Gjessing Institutt for Informatikk Universitetet i Oslo 1 GUI (Graphical User Interface)-programmering Tidligere Hvordan få laget et vindu på skjermen Hvordan legge ulike komponenter

Detaljer

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf 1010-2008 GUI - del 2

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf 1010-2008 GUI - del 2 GUI (Graphical User Interface)-programmering Inf 1010-2008 GUI - del 2 Stein Gjessing Inst for Informatikk Univ. i Oslo Tidligere Hvordan få laget et vindu på skjermen Grafikk (tegning i vinduet) Hvordan

Detaljer

Grafiske brukergrensesnitt med Swing og AWT

Grafiske brukergrensesnitt med Swing og AWT Grafiske brukergrensesnitt med Swing og AWT - 1 av 11 INNHOLD INTRODUKSJON 3 VINDUER, RAMMER OG PANELER. 4 KOMPONENTER OG VINDUSELEMENTER 6 KNAPPER OG KNAPPELYTTERE.. 8 LAYOUT.. 10 APPENDIX. 11 2 av 11

Detaljer

4. mars 2008 Grafisk brukergrensesnitt med Swing og awt Litt Modell Utsyn - Kontroll Del I. Stein Gjessing Inst for Informatikk Univ.

4. mars 2008 Grafisk brukergrensesnitt med Swing og awt Litt Modell Utsyn - Kontroll Del I. Stein Gjessing Inst for Informatikk Univ. 4. mars 2008 Grafisk brukergrensesnitt med Swing og awt Litt Modell Utsyn - Kontroll Del I Stein Gjessing Inst for Informatikk Univ. i Oslo GUI (Graphical User Interface)-programmering I dag (så langt

Detaljer

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det: To måter. GUI (Graphical User Interface)-programmering

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det: To måter. GUI (Graphical User Interface)-programmering 4. mars 2008 Grafisk brukergrensesnitt med Swing og awt Litt Modell Utsyn - Kontroll Del I Stein Gjessing Inst for Informatikk Univ. i Oslo GUI (Graphical User Interface)-programmering I dag (så langt

Detaljer

JPanel. Komponent hieraki. Window/JWindow. Applet/JApplet. JDialog. JFrame

JPanel. Komponent hieraki. Window/JWindow. Applet/JApplet. JDialog. JFrame Komponent hieraki Applet JPanel Component Container JComponent Panel Window JWindow Frame JApplet Dialog Brukes vanligvis som en ekstra container for å få til ønske layout. Legges til som en hvilken som

Detaljer

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det: To måter. GUI (Graphical User Interface)-programmering. del 1. Litt Modell Utsyn - Kontroll

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det: To måter. GUI (Graphical User Interface)-programmering. del 1. Litt Modell Utsyn - Kontroll INF1010-3. mars 2009 Grafisk brukergrensesnitt med Swing og awt - del 1 Litt Modell Utsyn - Kontroll Stein Gjessing Inst for Informatikk Univ. i Oslo GUI (Graphical User Interface)-programmering I dag

Detaljer

GUI - del 2. Stein Gjessing Inst for Informatikk Univ. i Oslo

GUI - del 2. Stein Gjessing Inst for Informatikk Univ. i Oslo Inf 1010-2009 GUI - del 2 Stein Gjessing Inst for Informatikk Univ. i Oslo GUI (Graphical User Interface)-programmering g Tidligere Hvordan få laget et vindu på skjermen Hvordan legge ulike komponenter

Detaljer

INF1010. Grafisk brukergrensesni. med Swing og awt del 2

INF1010. Grafisk brukergrensesni. med Swing og awt del 2 INF1010 Grafisk brukergrensesni. med Swing og awt del 2 GUI (Graphical User Interface)- programmering u u u Enkel behandling av knappetrykk mm. Layout av vinduer Om å lytte på knappetrykk med musa u Input

Detaljer

Inf mars 2010 GUI del 2

Inf mars 2010 GUI del 2 Inf 1010 11. mars 2010 GUI del 2 Stein Gjessing Ins$tu' for Informa$kk Universitetet i Oslo 1 GUI (Graphical User Interface) programmering Tidligere Hvordan få laget et vindu på skjermen Hvordan legge

Detaljer

INF1010 Grafisk brukergrensesni3 (GUI) med Swing/awt. del 1

INF1010 Grafisk brukergrensesni3 (GUI) med Swing/awt. del 1 INF1010 Grafisk brukergrensesni3 (GUI) med Swing/awt del 1 1 Hvordan lage et vindu på skjermen 2 Hvordan legge inn enkle elementer i vinduet 3 Hvordan lage et vindu med et sudokuspill 4 Hvordan lage en

Detaljer

INF1010 MVC i tekstbaserte programmer

INF1010 MVC i tekstbaserte programmer INF1010 MVC i tekstbaserte programmer Marit Nybakken marnybak@ifi.uio.no 9. februar 2004 Marit har ingen utdanning innen systemutvikling og vet antageligvis ikke hva hun prater om. Hun har dog skumlest

Detaljer

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser Emneoversikt subklasser INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser Stein Gjessing Institutt for informatikk Mange flere eksempler på fellesøvelsene og neste forelesning 1 Generalisering - spesialisering

Detaljer

INF Notater. Veronika Heimsbakk 10. juni 2012

INF Notater. Veronika Heimsbakk 10. juni 2012 INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N

Detaljer

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF 101 - Grunnkurs i objektorientert programmering Eksamensdag : Tirsdag 4. juni 2002 Tid for eksamen : 09.00-15.00 Oppgavesettet

Detaljer

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. GUI - del 2

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. GUI - del 2 GUI (Graphical User Interface)-programmering g Inf 1010-2009 GUI - del 2 Stein Gjessing Inst for Informatikk Univ. i Oslo Tidligere Hvordan få laget et vindu på skjermen Hvordan legge ulike komponenter

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen.

Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen. Lenkelister. Lister og køer. Kopi av utvalgte sider fra forelesningen. "Taher" type: String : type: :... type: : inf1010student null michael@ifi.uio.no INF1010 26. januar 2012 (uke 4) 2 class Eks01 { public

Detaljer

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {} En implementasjon av binærtre Dagens tema Eksempel på binærtreimplementasjon Rekursjon: Tårnet i Hanoi Søking Lineær søking Klassestruktur hovedstruktur abstract class { class Person extends { class Binaertre

Detaljer

Dagens tema INF1010 INF1010 INF1010 INF1010

Dagens tema INF1010 INF1010 INF1010 INF1010 I eksemplene om lister og binære trær har vi hittil hatt pekerne inne i objektene i strukturen. ( Innbakt struktur ).Eksempel: Dagens tema Implementasjon av strukturer (lister, binære trær) class { ; ;

Detaljer

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Dagens tema Litt mer om vanlige lister Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5) Nyttige varianter av lister: Stabler («stacks») (Big Java 15.5.1) Køer («queues») (Big Java 15.5.2)

Detaljer

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Repitisjonskurs. Arv, Subklasser og Grensesnitt Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett

Detaljer

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak LISTER Vanligste datastruktur Mange implementasjonsmåter (objektkjeder, array...) Operasjoner på listen definerer forskjellige typer lister (LIFO, FIFO,...) På norsk bruker vi vanligvis ordet «liste» for

Detaljer

EKSAMEN. TILLATTE HJELPEMIDLER: Alle trykte og skrevne. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag

EKSAMEN. TILLATTE HJELPEMIDLER: Alle trykte og skrevne. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag KANDIDATNUMMER: EKSAMEN EMNENAVN: Programutvikling EMNENUMMER: IMT3281 EKSAMENSDATO:05/12-2007 KLASSE: 06HBINDA/06HBINDP TID: 09.00 13.00 EMNEANSVARLIG: Øivind Kolloen ANTALL SIDER UTLEVERT: 7 TILLATTE

Detaljer

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE Emne: Informatikk II Emnekode: LO325E Faglig veileder: G.Milvang og H.Hemmer Gruppe(r): 2EA,2EB,2EC Dato:12.12.03 Eksamenstid:9 00-14 00 Eksamensoppgaven

Detaljer

INF1010. Grensesnittet Comparable<T>

INF1010. Grensesnittet Comparable<T> INF1010 21. februar 2013 Grensesnittet Comparable Stein Michael Storleer Institutt for Informatikk Universitetet i Oslo Interface med parametre interface Utkledd { // T er klassen jeg er utkledd

Detaljer

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE Emne: Informatikk II Emnekode: LO334E Faglig veileder: Hilde Hemmer Gruppe(r): 2EA,2EB,2EC Dato:14.12.04 Eksamenstid: 9 00-12 00 Eksamensoppgaven består av:

Detaljer

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet Eksamen i emnet INF101/INF101-F - Programmering 2 Fredag 10. juni 2011, kl. 09-14 Bokmål Tillatte hjelpemidler: alle skrevne og trykte.

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 4. juni 2015 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 6 sider. Vedlegg:

Detaljer

Kapittel 15: Grafiske brukergrensesnitt. Del II

Kapittel 15: Grafiske brukergrensesnitt. Del II Kapittel 15: Grafiske brukergrensesnitt Del II Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

ANTDAGER = 358; I Ifra nyttår 08 til 08 1ed julaften

ANTDAGER = 358; I Ifra nyttår 08 til 08 1ed julaften ~tte hjelpemiddel: Alle trykte og håndskrevne --- Kandidaten må selv kontrollere at oppgavesettet er fullstendig. nnføring skal være med blå eller svart penn. Les gjennom hele oppgavesettet før du begynner

Detaljer

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

INF100 Institutt for informatikk Universitetet i Bergen Øving 5 INF100 Institutt for informatikk Universitetet i Bergen Øving 5 Høst 2013 Mål: Bruk av objekter. Innlevering: Adventure.java, Spiller.java og Rom.jav pakket i en zip fil. Innleveringsfrist: Torsdag 10.

Detaljer

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; } Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =

Detaljer

INF 1010, vår 2005 Løsningsforslag uke 10

INF 1010, vår 2005 Løsningsforslag uke 10 INF 1010, vår 2005 Løsningsforslag uke 10 Anders Brunland 1. april 2005 Oppgave 1 Oppgave 15.4 i i Rett på Java. Løsningsforslag De forskjellige komponentene settes i metoden initcomponents. Her settes

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson

Detaljer

INF1010 våren januar. Objektorientering i Java

INF1010 våren januar. Objektorientering i Java INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort

Detaljer

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF, 22. mai 23 Prøveeksamen 23 (Eksamen 2. juni 22) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Oppgave a Tegn klassehierarkiet for de 9 produkttypene som er beskrevet over. Inkluder også

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider. Vedlegg:

Detaljer

INF1010 - Seminaroppgaver til uke 3

INF1010 - Seminaroppgaver til uke 3 INF1010 - Seminaroppgaver til uke 3 Oppgave 1 I denne oppgaven skal vi lage et klassehiearki av drikker. Alle klassene i hiearkiet skal implementere følgende grensesnitt p u b l i c i n t e r f a c e Drikkbar

Detaljer

INF1010 Sortering. Marit Nybakken 1. mars 2004

INF1010 Sortering. Marit Nybakken 1. mars 2004 INF1010 Sortering Marit Nybakken marnybak@ifi.uio.no 1. mars 2004 Dette dokumentet skal tas med en klype salt og forfatter sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

INF1010 våren Arv og subklasser del 1

INF1010 våren Arv og subklasser del 1 INF1010 våren 2016 Torsdag 4. februar Arv og subklasser del 1 Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du programmere med: Første uke: Spesialisering

Detaljer

INF1010 våren Arv og subklasser del 1

INF1010 våren Arv og subklasser del 1 INF1010 våren 2015 Torsdag 12. februar Arv og subklasser del 1 Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Når du har lært om subklasser kan du programmere med: Første uke: Spesialisering

Detaljer

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

Inf1010 oppgavesamling

Inf1010 oppgavesamling Table of ontents Inf1010 oppgavesamling.. 1 Subklasser... 1 Grensesnitt.. 2 Rekursjon... 3 Datastrukturer... 3 GUI. 4 Sortering... 6 Tråder... 6 Inf1010 oppgavesamling Subklasser Klassehirarki for dyr

Detaljer

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus // class Bygning Oppgave 1 System.out.println( Bolighus ); // class Bolighus Hva blir utskriften fra dette programmet? class Blokk extends Bolighus{ // class Blokk IN105subclassesII-1 Eksekveringsrekkefølgen

Detaljer

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

IN1010 våren januar. Objektorientering i Java

IN1010 våren januar. Objektorientering i Java IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som

Detaljer

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 Delkapittel 3.1 Grensesnittet Liste Side 1 av 11 Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1 3.1 En beholder 3.1.1 En beholder En pappeske er en beholder En beholder er noe vi kan legge ting

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

Mål med kurset. Java i INF 2400. Dagens tema. GUI med Swing. Dokumentasjon

Mål med kurset. Java i INF 2400. Dagens tema. GUI med Swing. Dokumentasjon Mål med kurset Java i INF 2400 Introduksjon til signalbehandling Lyd som anvendelse Få programmeringserfaring Dagens tema Utplukk av Java (GUI, kode-konvensjon, polymorfisme, classpath, javadoc) Java og

Detaljer

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye. ~KSAMENSOPPGA VE Les gjennom hele oppgavesettet før du begynner A besvare deloppgavene.. Hold deg til de identifikator-navnene som er brukt i oppgaveteksten, dog med unntak av metodenes parametemavn som

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 4. juni 2005 Tid for eksamen: 0900 1500 Oppgavesettet er på 5 sider. Vedlegg: Tillatte hjelpemidler: INF1010 Objektorientert

Detaljer

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 21. februar 2013 Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Ikke noe nytt her From the Java language specification (version 6): 14.14.2

Detaljer

Inf1010 oppgavesamling

Inf1010 oppgavesamling Table of ontents Inf1010 oppgavesamling.. 1 Subklasser... 1 Grensesnitt.. 2 Rekursjon... 3 Datastrukturer... 3 GUI. 4 Sortering... 6 Tråder... 6 Inf1010 oppgavesamling Subklasser Klassehirarki for dyr

Detaljer

(MVC - Model, View, Control)

(MVC - Model, View, Control) INF1010 - våren 2008 Modell - Utsyn - Kontroll (MVC - Model, View, Control) Stein Gjessing Inst. for informatikk Et bankprogram Vi skal lage et program som håndterer kontoene i en bank. En konto eies av

Detaljer

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Konstruktører. Bruk av konstruktører når vi opererer med enkle klasser er ganske ukomplisert. Når vi skriver. skjer følgende: Konstruktører Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver Punkt p = new Punkt(3,4); class Punkt { skjer følgende: int x, y; 1. Det settes av plass i

Detaljer

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

INF januar 2015 Stein Michael Storleer (michael) Lenkelister INF1010 29. januar 2015 Stein Michael Storleer (michael) Lenkelister Lenke + lister = lenkelister Vi starter med lenkeobjektene Lager en kjede av objekter ved hjelp av pekere class { ; Legger Jl data innholdet

Detaljer

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

23.09.2015. Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert. Grunnkurs i objektorientert programmering Introduksjon til objektorientert programmering INF1000 Høst 2015 Siri Moe Jensen INF1000 - Høst 2015 uke 5 1 Siri Moe Jensen INF1000 - Høst 2015 uke 5 2 Kristen

Detaljer

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL. 09.00 13.00 Side 1 av 6 NTNU Norges teknisk-naturvitenskapelige universitet BOKMÅL Fakultet for informasjonsteknologi, matematikk og elektroteknikk Institutt for datateknikk og informasjonsvitenskap EKSAMEN I FAG

Detaljer

LC191D/LO191D Videregående programmering mai 2010

LC191D/LO191D Videregående programmering mai 2010 LC191D/LO191D Videregående programmering mai 2010 Løsningsforslag Oppgave 1 Transporttype er en tekst som er felles for klassene AnnenEgenTransport og Kollektivtransport. Vi legger den derfor i klassen

Detaljer

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; } Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller. Dagens forelesning Java 13 Design av større programmer : fordeling av roller INF 101-13. mars 2003 Flere eksempler på bruk av objekter MVC-prinsippet MVC-prinsippet Flere eksempler på programmer med objekter

Detaljer

Sortering med tråder - Quicksort

Sortering med tråder - Quicksort Sortering med tråder - Quicksort Skisser til to programmer INF1010 våren 2016 Stein Gjessing Institutt for informatikk Universitetet i Oslo Sortering som tema, slikt som valg av sorteringsmetode, hastigheten

Detaljer

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen Forkurs INF1010 Dag 1 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Tuva Kristine Thoresen (tuvakt@ifi.uio.no) Institutt for Informatikk, 6. januar 2014 Forkurs INF1010 - dag 1 Hello, World! Typer Input/output

Detaljer

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Arv. Book book1 = new Book(); book1. title = Sofies verden class Book { String title; } class Dictiona ry extends Book { Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

OPPGAVE 5b og 8b Java Kode

OPPGAVE 5b og 8b Java Kode OPPGAVE 5b og 8b Java Kode public class Kant boolean behandlereturavbil() BehandleReturAvBil behandler = new BehandleReturAvBil(this); String regnr; int kmstand, tanknivaa; boolean erskadet; // 1: Få verdiene

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring Målform: Eksamensdato: Bokmål 9.mai 202 Varighet/eksamenstid: 0900-300 Emnekode: Emnenavn: Klasse(r): Studiepoeng: LC9D/LO9D Videregående

Detaljer

29.02.2012. GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka

29.02.2012. GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc191d.php Høgskolen

Detaljer

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo IN1010 våren 2018 Tirsdag 15. mai Repetisjon av subklasser og tråder Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Klassehierarki: Personbil Bil Klasser - Subklasser class Bil {

Detaljer

Introduksjon til objektorientert programmering

Introduksjon til objektorientert programmering Introduksjon til objektorientert programmering Samt litt mer om strenger og variable INF1000, uke6 Ragnhild Kobro Runde Grunnkurs i objektorientert programmering Strategi: Splitt og hersk Metoder kan brukes

Detaljer

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL Kandidatnr: Eksamensdato: 5.mai 200 Varighet: 0900-300 Emnekode: Emnenavn: Klasse(r): LO9D / LC9D LO9D Videregående programmering

Detaljer

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4 Forelesning inf - Java 4 Repetisjon: arrayer Tema: Løkker Arrayer Metoder Ole Christian Lingjærde,. september Deklarere og opprette array - eksempler: int[] a = new int[]; String[] a = new String[]; I

Detaljer

Forelesning inf Java 4

Forelesning inf Java 4 Forelesning inf1000 - Java 4 Tema: Løkker Arrayer Metoder Ole Christian Lingjærde, 12. september 2012 Ole Chr. Lingjærde Institutt for informatikk, 29. august 2012 1 Repetisjon: arrayer Deklarere og opprette

Detaljer

Kapittel 8: Programutvikling

Kapittel 8: Programutvikling Kapittel 8: Programutvikling Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk

Detaljer

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 7 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04 INF1000 (Uke 15) Eksamen V 04 Grunnkurs i programmering Institutt for Informatikk Universitetet i Oslo Anja Bråthen Kristoffersen og Are Magnus Bruaset 22-05-2006 2 22-05-2006 3 22-05-2006 4 Oppgave 1a

Detaljer

Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo

Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo INF1010 - Våren 2012 Tråder del 1 Parallelle programmer og felles data Stein Gjessing,, Universitetet i Oslo 1 2 Oversikt Hva er parallelle programmer? Hvorfor parallelle programmer? Hvordan kan de'e skje

Detaljer

1 t:n'v'\ekode LO325E. Alle ~vne og trykte. GOd'"j(jent kalkulator

1 t:n'v'\ekode LO325E. Alle ~vne og trykte. GOd'j(jent kalkulator 1 t:n'v'\ekode j Emne: 11nformatiklc Il LO325E I Faglig veileder Hilde Hemmer 1 Gruppe(r) I DOtO:14~1~ E ksamenstld 900-1400 I Eksamen~pgaven består av: Antall sider (Inkl forsiden og vedlegg):6 Antal

Detaljer

TOD063 Datastrukturer og algoritmer

TOD063 Datastrukturer og algoritmer TOD063 Datastrukturer og algoritmer Øving : 3 Utlevert : Uke 7 Innleveringsfrist : 26. februar 2010 Klasse : 1 Data og 1 Informasjonsteknologi Gruppearbeid: 2-3 personer pr. gruppe. Oppgave 1 Vi skal lage

Detaljer

Les gjennom hele oppgavesettet før du begynner å besvare deloppgavene.

Les gjennom hele oppgavesettet før du begynner å besvare deloppgavene. Eksamen i Programmering 18. februar 2002 Les gjennom hele oppgavesettet før du begynner å besvare deloppgavene.. Hold deg til de identifikator-navnene som er brukt i oppgaveteksten, dog med unntak av metodenes

Detaljer

INF1010 notat: Binærsøking og quicksort

INF1010 notat: Binærsøking og quicksort INF1010 notat: Binærsøking og quicksort Ragnhild Kobro Runde Februar 2004 I dette notatet skal vi ta for oss ytterligere to eksempler der rekursjon har en naturlig anvendelse, nemlig binærsøking og quicksort.

Detaljer

INF1010 våren Grensesnitt

INF1010 våren Grensesnitt INF1010 våren 2014 Onsdag 22. januar Grensesnitt Stein Gjessing Institutt for informatikk Dagens tema n n Norsk: Grensesnitt Engelsk: Interface n Les notatet Grensesnitt i Java av Stein Gjessing n Det

Detaljer

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne Side 1 av 7 Bokmålstekst Emne: PROGRAMMERING (nytt pensum, 10 studiep.) Grupper: laa, lab, lac, lia, lib, lic Eksamensoppgaven best~r av: Tillatte hjelpemidler: Antall sider (inkl. forsiden): 7 Alle trykte

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO FASIT UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Kontinuasjonseksamen i : Eksamensdag : INF1000 Grunnkurs i objektorientert programmering Fredag 7. januar Tid for eksamen :

Detaljer

Post-it spørsmål fra timen (Arv og subklasser)

Post-it spørsmål fra timen (Arv og subklasser) Post-it spørsmål fra timen 30.01 (Arv og subklasser) Tegning Spørsmål: Skjønte ikke tegningene Hater tegningene. Lær meg å tegne. Mvh frustrert elev. Spørsmål: Datastruktur-tegning, og hvor mye detaljer

Detaljer

GUI («Graphical User Interface») del 2

GUI («Graphical User Interface») del 2 GUI («Graphical User Interface») del 2 Interaksjon med brukeren Hendelsesdrevet programmering Tråder i GUI Et spill basert på klikkbare ruter Se også på Infoskrivet https://www.uio.no/studier/emner/matnat/

Detaljer