Avansert bruk av Eclipse - Eclipsekurs fra Mesan

Størrelse: px
Begynne med side:

Download "Avansert bruk av Eclipse - Eclipsekurs fra Mesan"

Transkript

1 Avansert bruk av Eclipse - Eclipsekurs fra Mesan Refactoring i fellesskap Utgangspunktet Om refactoring i Eclipse Gjennomføring Kildekoden Kjør! Myk intro - Rename Oops - sjekk kommentarer Siden vi er inne på det - Change Method Signature Endring av klassenavn Hvileskjær Alt i ett - Introduce Parameter Object Ekte innkapsling - Encapsulate Field Uforanderlig - Inline Skjerpings - Extract Interface Langsomt, skyndsomt - Extract Class Frikobling - Introduce Parameter, Use Supertype Where Possible, Introduce Factory Restopplag Eksemplarisk - Extract Local Variable Videre forfremmelse - Convert Local Variable to Field Halvparten av dobbelt - Inline Lastenes sum er - Extract Constant Generalisme i praksis - Generalize Declared Type Extract Method Videre? Utgangspunktet Support International har hatt inne en hospitant fra Faulty Software som har laget en bakgrunnsjobb for å følge opp purring på saker. Den funker i og for seg fint, men når vi nå skal lage den nye jobben for utdatering av foreldede saker over samme lest, oppdager vi jo fort at eksisterende kode ikke helt kvalifiserer som clean... Se BatchResult.java og tro på det du hører...

2 Ved siden av den grusomme målklassen finner du

3 PurreJobb dette er "klienten" som bruker klassen. Den simulerer en kjøring med et antall produsenter og konsumenter som kommuniserer via en kø. Vi skal ikke bruke mye tid inne i denne det aller meste av endringer i denne bør skje automatisk som følge av refactorings. PurreJobbSystemTest en tung test som kjører hele jobben (plussminus 5 sekunder), og sjekker at totalresultatet blir som forventet. Ved siden av å få hakket renere kode, har vi noen absolutte mål for forbedringen av gørra. Vi ønsker å skille jobbkontrolldelen fra telling/rapportering. Vi ønsker å kunne styre rapportering og output friere ikke være låst til et hardkodet format til en tekstfil med magisk navn. Og ikke minst ønsker vi å skille ut det som er spesifikt for akkurat denne jobben (og det er nesten bare sakstelleren) fra det som er generelt. I tillegg er det hardkodet at det skal være en primærjobb med 2 understeg ( public static final int ANTALL_STEG= 2+1; ) vi vil gjerne kunne dele opp i vesentlig flere steg enn det. Om refactoring i Eclipse Vi skal jobbe oss gjennom noen av valgene på menyen Refactoring i Eclipse. Den menyen er fast du får en mer konteksttilpasset (duh) utgave ved å høyreklikke og se på refactoring på kontekstmenyen lett tilgjengelig med *Alt+Shift+T, den viser generelt bare valg som passer til det du har merket (figuren viser resultatet av å merke navnet på en klasse). Gjennomføring Etter hvert steg i gjennomgangen skal vi kjøre gjennom testen(e) for å sjekke at alt fortsatt virker. Det er jo tanken bak "refactoring" å endre "utseende" uten å endre oppførsel... Ta gjerne en kikk på JavaDoc, formatering etc etter hver refactoring, det har en tendens til å krølle seg litt, særlig når man gjør flere steg og koden er ikke-kompilerbar deler av tiden. Alle referanser under gjelder klassen som (i hvert fall foreløpig) heter BatchResult, så fremt annet ikke er sagt dog vil vi etter hvert gjøre denne uinteressant. Kildekoden For å komme fort i gang ligger utgangspunktet for oppgaven som ZIP-fil her: refactoring-utgangspunkt.zip Løsningsforslag finnes her: V0_1.zip Kjør! Vi skal ta de første stegene mot en ny og bedre verden... Myk intro Rename I kildekodemappen src/main/java ligger pakken no.way. Dette var kanskje ikke noe slående pakkenavn. Vi skal flytte oss under no.support (troll i ord?) og dermed omdøpe pakken til no.support.batch.purring.

4 1. Merk pakken i Project Explorer, velg Rename fra menyen Refactoring. 2. Eller trykk ( F2 eller) Alt+Shift+R etter å ha merket pakken man trenger jo egentlig ikke å rote i menyer for alt... Helt magisk skal nå package være riktig i Javafilene. Men vi får en kompileringsfeil i kildekodemappen src/test/java der testen er plassert. Gjør den samme tilpasningen på pakkenavnet og kompileringsfeilen skal være rettet Det er mer enn klasser som kan omdøpes. I klassen BatchResult ønsker vi å endre to metoder. Begge metodene er en del av implementasjon av interfacet ResultCounter. 1. Først endrer vi metoden addok som har et litt misvisende navn den var kanskje tenkt å telle antall OK, men teller i praksis antall forekomster behandlet. Så da bør jo metodenavnet avspeile virkelighet vi endrer navnet til inctotal. 2. Gå til ResultCounter og se at metodenavnet er endret også her. 3. Når vi først er i interfacet så kan vi gjøre tilsvarende endring for metoden getok som vi endrer til gettotal. 4. Gå tilbake til BatchResult og se at endringen også er kommet med her. Dobbeltklikk på metodenavnet, trykk Alt+Shift+R, skriv inn 'inctotal'. OK, og ferdig med den. Det kan hende (avhenger av oppsett) du ikke får opp en dialogboks, men at navnet blir merket, og får en ramme rundt seg. Du kan skrive inn det nye navnet direkte inne i rammen, og trykke Enter når du er ferdig, eller du kan trykke nedtrekkspilen og be om å få dialogboksen (du trenger ofte ikke den til hverdags). Gjør ditto for getok. Vitsen med å bruke en refactoring i stedet for bare å skrive inn nytt navn, er selvfølgelig at vi da også endrer navnet i kallende klasser. For å gjøre dette (over)tydelig, kan vi også omdøpe en variabel i klassen BatchCounter fra counter til total.

5 Dobbeltklikk på variabelnavnet, trykk Alt+Shift+R, skriv inn 'total'. OK, og ferdig Oops sjekk kommentarer Ta en kikk på metodekommentaren for inctotal etter at vi byttet navn. Naturlig nok fikser ikke refactoring på prosa vi må skrive om Tell opp antall OK på egenhånd (nå). Og det gjelder generelt kikk på kommentarer før/etter refactoring, de kommer fort i utakt. Siden vi er inne på det Change Method Signature Kikk enda en gang på inctotal. Den tar to nokså anonyme int som parameter gjett hvor mange som kommer til å lure på hvilken som er stegnummer og hvilken som er antall (eller enda skumlere gjette feil). En kjapp analyse (dobbeltklikk på metodenavnet, trykk Ctrl+Shift+G sjekk referansene som dukker opp i søkevinduet) viser at alle som kaller på denne nå har 1 som antall. Så kanskje er det litt YAGNI å kunne angi antall la oss gå ut fra at den alltid kalles med 1 og heller utsette problemet til en gang noen får behov for bulkoppdatering (kanskje vi rekker å se på det etterpå). Så vi vil ta ta bort parameter nummer 2, antall, fra metoden. Go!

6 1. Dobbeltklikk på metodenavnet, trykk Alt+Shift+C (eller velg Refactor>Change Method Signature). NB: Hvis du akkurat har brukt Ctrl+Shift+G, kan det være Eclipse tror du vil jobbe med markert treff i søkeresultatet i stedet for i editoren dobbeltsjekk at du prøver å endre riktig "ting". Dette gjelder alle refactorings, og er lett å bomme på Svar ja på spørsmålet om at det er greit å gjennomføre operasjonen på denne metoden. Den informerer om at metoden er en implementasjon av interfacet ResultCounter. 3. Marker parameter nr. 2, og trykk Remove. 4. Du vil få en stygg advarsel, men det er greit, vi skal fikse på resultatet det er ikke alltid refactoring er 100% automatisk Vi får kompileringsfeil på addandget(pantall) endre dette til incrementandget(), så blir det bra. Endring av klassenavn Vi har en klasse med et misvisende navn. Dette henger igjen fra en tidligere refaktoreringsjobb som ikke ble ferdigstilt. Omdøp klassen OpptellingOgStyringOgRapporteringForStatusJobb til PurreJobbResultat. Heretter vil vi jobbe mest i no.support.batch.batchresult, ta det som default, så fremt annet ikke er nevnt. Hvileskjær Vi har jobbet hardt nok en stund la oss ta et par enkle... Alt i ett Introduce Parameter Object Let deg frem til report-metoden i BatchResult. Den har 6 strenger som parametere, og trenger åpenbart litt hjelp. Det er rimelig å tro at de 6 strengene tilsvarer hhv venstre, senter og høyre oppe og nede, men detaljene sparer vi til senere. I første omgang lager vi bare en klasse DocumentHeaderFooter som kan innkapsle disse den skal foreløpig ikke ha gettere og settere, bare 6 public String (så kan vi trene på get/set i neste avsnitt).

7 1. 2. Dobbeltklikk på metodenavnet, velg Refactor>Introduce Parameter Object. Angi DocumentHeaderFooter som navn på en toppnivåklasse, fjern krysset på gettere og settere. Ekte innkapsling Encapsulate Field Vi angrer selvfølgelig umiddelbart på at vi ikke lagde gettere og settere i forrige punkt det var jo et helt kunstig påfunn. Gå inn i den nye klassen DocumentHeaderFooter, og gjør om de 6 strengene til private felter med gettere og settere.

8 For hvert av feltene merk feltet og velg Refactor>Encapsulate Field. Forskjellen på å bruke Encapsulate Field og Source>Generate Getters and Setters er at sistnevnte generelt ikke fikser på eksisterende tilganger (men til gjengjeld kan den ta mange av gangen). Uforanderlig Inline Men egentlig vil vi jo gjerne ha et immutable verdiobjekt som konstrueres ferdig i constructoren. Så ved nærmere ettertanke kan du inline alle setterne (så fremt du ikke parprogrammerer med en villmann, er disse nemlig bare i bruk i constructoren). For hver av setxxx-metodene, merk navnet og trykk Alt+Shift+I ( Refactor>Inline). Skjerpings Extract Interface Nå har vi tatt det for rolig for lenge... Videre med forretningsmålene. Nå vil vi trekke ut et interface for jobbstyringen det er typisk de trådorienterte metodene threadsup(), threadsdown(), getthreadcount(), stepdone() vi ønsker å skille ut i et interface ThreadControl.

9 1. 2. Plasser markøren i BatchResult og velg Refactor>Extract Interface Marker de 4 nevnte metodene, pass på at det er krysset av for å benytte Interfacet der mulig. 3. Rydd i etc Langsomt, skyndsomt Extract Class Da har vi grensesnittet, men vi ønsker jo å få ut funksjonaliteten også. Flytt over threadstarted og threadcounter i en egen klasse BatchControl. Denne klassen skal implementere ThreadControl. Denne metoden er ikke spesielt vakker. Ville nok gjort litt mer manuelt hvis ikke poenget var å prøve ut refactorings...

10 Klipp ut de 4 metodene som utgjør ThreadControl i BatchResult ut på et trygt sted f.eks. Notepad Bli stående i BatchResult, og velg Refactor>Extract Class Marker de to feltene threadstarted og threadcounter, og be om ikke å få gettere/settere, angi navnet BatchControl for klassen, og batchcontrol for variabelen (nederst) Men den implementasjonen ble kanskje ikke så vakker. Flytt opprettelsen av BatchControl (dvs = new BatchControl() ) fra deklarasjonen til constructoren, og send med step som parameter (bruk QuickFix for å få den på plass). Gjør feltene i BatchControl om til private final, og flytt over opprettelsen av de enkelte variablene til constructoren. Du bør da ende med en constructor som ser slik ut: BatchControl.BatchControl() public BatchControl( final int step) { this.threadcounter= new AtomicInteger[step]; this.threadstarted= new boolean[step]; for ( int i=0; i< step; i++) { this.threadcounter[i]= new AtomicInteger(); } } Legg til implements ThreadControl, og lim inn metodene slik de tidligere lå i BatchResult. Gå til BatchResult, og endre typen på variabelen batchcontrol til ThreadControl. Marker variabelen batchcontrol, og velg Source>Generate Delegate Methods, rydd gjerne i resultatet.

11 Nytt designmål nådd vi har fristilt trådstyringen Frikobling Introduce Parameter, Use Supertype Where Possible, Introduce Factory Det er alt for mye new i denne koden. Marker hver av new BatchControl, new BatchLogger og new BatchCounter i constructoren i BatchResult, og bruk Introduce Parameter på dem. Pass på å merke hele teksten, f.eks for BatchCounter så merk new BatchCounter(step). Dersom du får kompileringsfeil i constructoren i PurreJobbResultat, så klarer du sikkert å fikse på dem også. Av en eller en annen grunn insisterer Eclipse på å bruke typen til objektet (f.eks. BatchControl) i stedet for typen til variabelen som skal inneholde den (f.eks. ThreadControl). Dette fikser vi ved å gå inn i hver av klassene BatchControl, BatchCounter og BatchLogger, og velge Refactor>Use Supertype Where Possible. Merk de respektive interfacene, og så hvordan constructoren langsom får en penere argumentliste. Så oppretter vi en ny klasse ResultFactory i en ny pakke no.support.batch.factory, hvoretter vi markerer constructoren i PurreJobbResultat og kjører Refactor>Introduce Factory. Kall metoden createresult (vi skal fikse litt på den), og legg den i no.support.batch.factory.resultfactory, men ikke be om privat constructor. Pynt gjerne litt på resultatet, men først og fremst gjør vi om til følgende metode denne er ikke ment å leve public static <T extends BatchResult> T createresult( final Class<? extends T> clazz, final boolean debug) { if ( clazz.isassignablefrom(purrejobbresultat.class)) { return (T) new PurreJobbResultat(debug); } return null; } Restopplag Vi brenner nå etter å gå løs på report-metoden, men det får vente litt vi har et pensum å leve opp til. Eksemplarisk Extract Local Variable er den første på listen. Den kan man jo bruke i et kjør mens man skriver kode, men vi må straks lete litt for å finne et eksempel.

12 Vi kan begynne med bunnen av BatchResult.report() der finner vi den enkle kodelinjen save(new File(("statusfix." + new SimpleDateFormat("yyMMdd-HHmmss").format(new Date()) + ".log"))); her bør det være mulig å trekke ut 2 variable i trekk: begynn med å lage en String av strenguttrykket fra "statusfix" til ".log". Deretter kan vi lage en File av det som gjenstår. Det virker kanskje overflødig, men det koster ingenting runtime, en som debugger vil kanskje takke deg, og syntaksen blir tydeligere. 1. Merk koden fra første fnutt i "statusfix" til siste fnutt i ".log" (Eclipse er ganskje kjip på riktig merking), og trykk Alt+Shift+L ( Refactor>Extract Local Variable). Kall strengen filename. 2. Merk new File(fileName, og trekk ut denne også. Videre forfremmelse Convert Local Variable to Field Det er en uskikk å hardkode filnavn og særlig til ufortsigbare navn som "statusfix log". Så vi ønsker å forfremme filnavnvariabelen fra forrige avsnitt til et felt logfilename i klassen, med get/set-metoder, så får heller den rare verdien få lov til å være default. Fix, please. 1. Merk den nye variabelen filename, og velg Refactor>Convert Local Variable to Field, og be om verdisetting allerede i deklarasjonen. Endre navnet samtidig. 2. Merk det nye feltet, og velg Source>Generate Getters and Setters for å la den bli en konfigurerbar public property. Halvparten av dobbelt Inline Refactoringen Inline kan brukes både på metoder og felt, og kan tidvis være grei for f.eks. å kvitte seg med variable som bare brukes én gang (når innholdet er like beskrivende som variabelnavnet+typen). Vi har så vidt brukt den over, men kan trene litt til på BatchResult.TOM_STRENG, som bare peker videre på EMPTY_STRING. Hvis vi inliner TOM_STRENG, benyttes EMPTY_STRING over alt. Merk TOM_STRENG, og velg Alt+Shift+I ( Refactor>Inline). Lastenes sum er Extract Constant Gå til metoden BatchResult.writeData. Der benyttes \n og \t som konstanter. Vi har i første omgang lyst til å gjøre disse til konstanter hhv LINE_SEP og FIELD_SEP. Skulle det bli god tid, kan du kanskje gjøre mer med disse (kikk i DocumentTable...), men i første rekke trekker vi ut disse som symbolske navn på hhv "ny linje" og "ny kolonne/felt".

13 Merk '\t', velg Refactor>Extract Constant, kall den FIELD_SEP, gjør den public, og kryss av for "Replace all" (men ikke "Qualify"). Gjenta det samme for '\n'. Generalisme i praksis Generalize Declared Type I toppen av BatchLogger finner du, om du har fulgt oppskriftene og ikke vært for flink, deklarasjonen private final LinkedList<String> messages= new LinkedList<String>(). Det er dårlig praksis å benytte mer konkrete typer i deklarasjoner enn du trenger, og collections av ymse slag er et typisk eksempel. Vi ønsker å gjøre om deklarasjonen (på venstre side av likhetstegnet) til en mest mulig generisk type (nei, jeg mener ikke Object...). Merk variabelen, velg Refactor>Generalize Declared Type. Eclipse foreslår noen muligheter, men fokuserer på List<String> gå for den! Extract Method Gå til metoden debug og marker koden som vist på skjermbildet under. Trykk Ctrl + Shift + M og gi den nye metoden et passende navn. Metoden skal være privat.

14 Videre? Per nå ser det omtrent ut som følger dersom du har fulgt opp alle oppfordringene:

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

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet TGA Et større programeksempel Hvordan løse et reelt problem med en objektorientert fremgangsmåte En større problemstilling I uke 4 skrev vi et program for å sjekke om et gen (en tekstfil) inneholdt ordet "TGA"

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

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre Dagens tema Lister og generiske klasser, del I Array-er og ArrayList (Big Java 6.1 & 6.8) Ulike lagringsformer (Collection) i Java (Big Java 15.1) Klasser med typeparametre («generiske klasser») (Big Java

Detaljer

Løsningsforslag Test 2

Løsningsforslag Test 2 Løsningsforslag Test 2 Oppgave 1.1: Interface definerer et grensesnitt som kan implementeres av flere klasser. Dette gir en standardisert måte å kommunisere med objekter av en eller flere relaterte klasser.

Detaljer

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro Verden - Del 2 Nybegynner Processing Intro Denne oppgaven bygger på oppgaven med samme navn som ligger på introduksjonsnivå her i Processingoppgavene. Klikk her for å gå til introduksjonsoppgaven av verden.

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

Verden. Steg 1: Vinduet. Introduksjon

Verden. Steg 1: Vinduet. Introduksjon Verden Introduksjon Processing Introduksjon Velkommen til verdensspillet! Her skal vi lage begynnelsen av et spill hvor man skal gjette hvilke verdensdeler som er hvor. Så kan du utvide oppgava til å heller

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

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

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet er på

Detaljer

Steg 1: Sette opp Java-prosjekt, og lage app-mappe og app-klasse

Steg 1: Sette opp Java-prosjekt, og lage app-mappe og app-klasse Hello world Skrevet av: Hallvard Trætteberg Kurs: Javafx Introduksjon Formålet til denne leksjonen er å lære hvordan man får satt opp et Java-prosjekt i Eclipse og kjørt et JavaFX-program. I tillegg skal

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

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java

Forklaring til programmet AbstraktKontoTest.java med tilhørende filer Konto.java, KredittKonto.java, SpareKonto.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 Forklaring til programmet AbstraktKontoTest.java med tilhørende

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

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre Oppsummering Kort gjennomgang av klasser etc ved å løse halvparten av eksamen 2012. Klasser Interface Subklasser Klasseparametre Datastrukturer Hva er problemet? Oppgaven Emballasjefabrikken Renpakk skal

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

Generiske mekanismer i statisk typede programmeringsspråk

Generiske mekanismer i statisk typede programmeringsspråk Generiske mekanismer i statisk typede programmeringsspråk Dette stoffet er Pensum, og det er bare beskrevet her Mye her er nok kjent stoff for mange INF5110 7. mai 2013 Stein Krogdahl 1 Hvordan kunne skrive

Detaljer

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4» < T extends Comparable > Indre klasser mm. «Det du bør ha hørt om før oblig 4» Strukturen i oblig 3 null null null null Personbeholder pl null null Person p "Adnan" michael@ifi.uio.no INF1010 21. februar

Detaljer

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide

Verden. Introduksjon. Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide Verden Skrevet av: Kine Gjerstad Eide og Ruben Gjerstad Eide Kurs: Processing Tema: Tekstbasert Fag: Matematikk, Programmering, Samfunnsfag Klassetrinn: 8.-10. klasse, Videregående skole Introduksjon Velkommen

Detaljer

1. NetBeans IDE: Lage en enkel mobilapplikasjon

1. NetBeans IDE: Lage en enkel mobilapplikasjon Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag NetBeans IDE: Lage en enkel mobilapplikasjon Mildrid Ljosland/Lene Hoff 09.09.2008 Lærestoffet er utviklet for faget SO350D J2ME for programmering

Detaljer

Kapittel 7: Mer om arv

Kapittel 7: Mer om arv Kapittel 7: Mer om arv 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 Forlag,

Detaljer

Læringsmål for forelesningen

Læringsmål for forelesningen Læringsmål for forelesningen Objektorientering Regler for oppførsel Java-programmering JUnit-testing Eclipse Opprette JUnit-test og kjøre den 1 Pensum Testing dekkes ikke av Liang! Er en viktig del av

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

INF Innleveringsoppgave 6

INF Innleveringsoppgave 6 INF1010 - Innleveringsoppgave 6 Frist: Onsdag 16. mars, 10:00 Maks 6 poeng Om obligatorisk oppgave 4, 6 og 7 i INF1010, våren 2016: "Leger og resepter" Du skal jobbe med en problemstilling omkring leger

Detaljer

Obligatorisk oppgave 1 INF1020 h2005

Obligatorisk oppgave 1 INF1020 h2005 Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte

Detaljer

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang

Kom forberedt til tirsdag. INF1000 Tips til obligatorisk oppgave 4. Noen generelle tips. Oblig4: Komme igang Kom forberedt til tirsdag INF1000 Tips til obligatorisk oppgave 4 Kikk på prøveeksamen fra 2004 http://www.uio.no/studier/emner/matnat/ifi/inf1000/h 07/undervisningsmateriale/proveeksamen-H2004.pdf Tittel:

Detaljer

JAVA Oppsummering for IS-102. Even Åby Larsen

JAVA Oppsummering for IS-102. Even Åby Larsen JAVA Oppsummering for IS-102 Even Åby Larsen even.larsen@hia.no 26. april 2010 Innhold 1 Innledning 3 2 Hva er et Java program 4 2.1 Kjøring av java programmer................. 4 3 Grammatikk for Java

Detaljer

Løse reelle problemer

Løse reelle problemer Løse reelle problemer Litt mer om løkker, metoder med returverdier, innlesing fra fil og strenger INF1000, uke5 Ragnhild Kobro Runde MER OM LØKKER Repetisjon fra forrige uke: while Syntaks: while (condition)

Detaljer

Enkle generiske klasser i Java

Enkle generiske klasser i Java Enkle generiske klasser i Java Oslo, 7/1-13 Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Del 1: Enkle pekere Før vi tar fatt på det som er nytt i dette notatet, skal vi repetere litt

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

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

Et større programeksempel. Hvordan løse et reelt problem med en objektorientert fremgangsmåte

Et større programeksempel. Hvordan løse et reelt problem med en objektorientert fremgangsmåte Et større programeksempel Hvordan løse et reelt problem med en objektorientert fremgangsmåte Plan for forelesingen Beskrive en større problemstilling Planlegge programmet Skrive koden, én klasse om gangen

Detaljer

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl. 23.59 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være

Detaljer

Communicate SymWriter: R1 Lage en tavle

Communicate SymWriter: R1 Lage en tavle Communicate SymWriter: R1 Lage en tavle I denne delen beskrives egenskaper som kan brukes for å lage en tavle til å skrive med. Stort sett vil du bare ha bruk for en del av dette når du lager skrivemiljøer.

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

Vi har en plan. Om Mesan. Hva vil det si å jobbe i Mesan. Eclipsekurs Vi rekrutterer. Hvem vi er Hva jobber vi med

Vi har en plan. Om Mesan. Hva vil det si å jobbe i Mesan. Eclipsekurs Vi rekrutterer. Hvem vi er Hva jobber vi med Eclipsekurs Vi har en plan Om Mesan Hvem vi er Hva jobber vi med Hva vil det si å jobbe i Mesan Oppstartsperiode - Mesaninen Din hverdag som nyutdannet i Mesan Eclipsekurs Vi rekrutterer Mesan Over 50

Detaljer

Steg 1: Lag bildedeklarasjon

Steg 1: Lag bildedeklarasjon Bildepresentasjon Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide Kurs: Processing Tema: Tekstbasert, Animasjon Fag: Programmering, Kunst og håndverk Klassetrinn: 8.-10. klasse, Videregående skole

Detaljer

En liten oppskrift på hvordan jeg installert og fikk Xastir til å virke sånn at jeg ble synlig i APRS verden.

En liten oppskrift på hvordan jeg installert og fikk Xastir til å virke sånn at jeg ble synlig i APRS verden. En liten oppskrift på hvordan jeg installert og fikk Xastir til å virke sånn at jeg ble synlig i APRS verden. La meg med en gang si at jeg er rimelig grønn i Linux verden så dere får bære over med meg

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

Java fra Eclipse til Evalanche

Java fra Eclipse til Evalanche Java fra Eclipse til Evalanche Dette er en veiledning for deg som lurer på hvordan du skal overføre (eller sende inn) java-filer fra et prosjekt i Eclipse til Evalanche. Nyere versjon ligger her: http://bit.ly/1e8yjji

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Kandidatnr Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: Onsdag 1. desember 2010 Tid for eksamen: 14.00 18.00

Detaljer

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen.. Løsningsforslag Eksamen V2007 Oppgave 1 NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen.. Oppgave 1.1 Klasse som pakke rinne n primitiv datatype, slik at vi kan

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

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

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003

INF1000 HashMap. Marit Nybakken marnybak@ifi.uio.no 2. november 2003 INF1000 HashMap Marit Nybakken marnybak@ifi.uio.no 2. november 2003 Dette dokumentet skal tas med en klype salt og forfatteren sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

Detaljer

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen Kanter, kanter, mange mangekanter Skrevet av: Sigmund Hansen Kurs: Processing Tema: Tekstbasert, Animasjon Fag: Matematikk, Programmering, Kunst og håndverk Klassetrinn: 8.-10. klasse, Videregående skole

Detaljer

Flytte innhold fra Fronter til Canvas

Flytte innhold fra Fronter til Canvas Høgskolen i Innlandet Flytte innhold fra Fronter til Canvas Veiledning og informasjon om konvertering av innhold fra Fronter til Canvas. 07.05.2018 Innhold Fronter... 3 Veien videre... 3 Nedlastning av

Detaljer

Obligatorisk oppgave 4: Lege/Resept

Obligatorisk oppgave 4: Lege/Resept Obligatorisk oppgave 4: Lege/Resept INF1010 Frist: mandag 27. mars 2017 kl. 12:00 Versjon 1.0 (111c894 ) Innhold 1 Innledning 1 1.1 Begreper................................ 2 2 Pasienter 2 3 Leger og lister

Detaljer

Diverse eksamensgaver

Diverse eksamensgaver Diverse eksamensgaver Noen har fått den idé å lage et språk hvor klasser kan ha noe tilsvarende byvalue-result -parametere. Klasser har ingen konstruktører, og by-value-result parametere spesifiseres som

Detaljer

Verden - Del 2. Intro. Skrevet av: Kine Gjerstad Eide

Verden - Del 2. Intro. Skrevet av: Kine Gjerstad Eide Verden - Del 2 Skrevet av: Kine Gjerstad Eide Kurs: Processing Tema: Tekstbasert Fag: Matematikk, Programmering, Samfunnsfag Klassetrinn: 8.-10. klasse, Videregående skole Intro Denne oppgaven bygger på

Detaljer

Løse reelle problemer

Løse reelle problemer Løse reelle problemer Litt mer om løkker, metoder med returverdier og innlesing fra fil INF1000, uke4 Geir Kjetil Sandve Repetisjon fra forrige uke: while Syntaks: while (condition) do1; do2;... Eksempel:

Detaljer

INF1010, 15. januar 2014 2. time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 15. januar 2014 2. time. Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 15. januar 2014 2. time Parametriserte klasser (generiske klasser) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Repetisjon fra gamle dager: Metoder med parametre En metode uten parameter:

Detaljer

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale.

EKSAMEN 6108/6108N PROGRAMMERING I JAVA Alt trykt og skriftlig materiale. Høgskolen i Telemark Fakultet for allmennvitenskapelige fag EKSAMEN I 6108/6108N PROGRAMMERING I JAVA 21. 12. 2015 Tid: 4 timer Sidetall: Hjelpemiddel: Merknader: Framside + 5 sider Alt trykt og skriftlig

Detaljer

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen. Tetris Introduksjon Processing Introduksjon Lag starten på ditt eget tetris spill! Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å

Detaljer

INF1000 Mer om objekter

INF1000 Mer om objekter INF1000 Mer om objekter Marit Nybakken marnybak@ifi.uio.no 8. mars 2004 Dette dokumentet skal tas med en bøtte salt og forfatter sier fra seg alt ansvar. Dere bør ikke bruke definisjonene i dette dokumentet

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

Programmering i C++ Løsningsforslag Eksamen høsten 2005

Programmering i C++ Løsningsforslag Eksamen høsten 2005 Programmering i C++ Eksamen høsten 2005 Simen Hagen Høgskolen i Oslo, Avdeling for Ingeniørutdanning 7. desember 2005 Generelt Denne eksamensoppgaven består av tre oppgaver, pluss en ekstraoppgave. Det

Detaljer

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen. Kuprat Skrevet av: Geir Arne Hjelle Kurs: Python Tema: Tekstbasert Fag: Norsk Klassetrinn: 5.-7. klasse, 8.-10. klasse Introduksjon I dette kurset skal vi introdusere programmeringsspråket Python. Dette

Detaljer

Oppgavesett for NVivo 9

Oppgavesett for NVivo 9 Oppgavesett for NVivo 9 Oppgave 1: Nytt prosjekt Det første du ser når du åpner NVivo er en liste over de siste prosjektene du har jobbet med i programmet. I dag lager vi et nytt prosjekt. Klikk på New

Detaljer

Tryll bort heksa. Introduksjon. Sjekkliste Følg instruksjonene på lista. Huk av etter hvert. Test. Lagre 2/8

Tryll bort heksa. Introduksjon. Sjekkliste Følg instruksjonene på lista. Huk av etter hvert. Test. Lagre 2/8 Innhold Innhold Tryll bort heksa Introduksjon Steg 1: Lag en flyvende heks Steg 2: Få heksa til å dukke opp og forsvinne Steg 3: Tryll bort heksa med et klikk! Steg 4: Legg til tid og poeng En ekstra utfordring:

Detaljer

Excel. Kursopplegg for SKUP-skolen 2010

Excel. Kursopplegg for SKUP-skolen 2010 Excel Kursopplegg for SKUP-skolen 2010 1 Excel: Basisfunksjoner Konseptet bak Excel er referansepunkter bestående av ett tall og en bokstav. Et regneark består av loddrette kolonner (bokstav) og vannrette

Detaljer

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill! Tetris Skrevet av: Kine Gjerstad Eide Kurs: Processing Introduksjon Lag starten på ditt eget tetris spill! Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når

Detaljer

Program delegate. Lage et nytt prosjekt i Visual Studio

Program delegate. Lage et nytt prosjekt i Visual Studio Program delegate Kommunikasjon mellom objekter er en utfordring i objektorientert programmering. Dette GUI eksempelet viser hvordan bruke en delegate til å gjøre metodekall i et annet objekt. Vi skal legge

Detaljer

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk INF1010 11. mai 2017 Monitorer med kritiske regioner og passive venting innbygget i Java - Kommunikasjon mellom prosesser i Java (Ikke pensum i INF1010) Stein Gjessing Universitetet i Oslo 1 Repetisjon:

Detaljer

INF1010 våren Grensesnitt

INF1010 våren Grensesnitt INF1010 våren 2013 Torsdag 24. januar Grensesnitt Stein Gjessing Institutt for informatikk Dagens tema n n Norsk: Grensesnitt Engelsk: Interface n Les notatet Grensesnitt i Java av Stein Gjessing 2 Hva

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Side 1 UNIVERSITETET I OSLO Kandidatnr Det matematisk-naturvitenskapelige fakultet LØSNINGSFORSLAG Eksamen i: PRØVEEKSAMEN INF1000 Eksamensdag: Prøveeksamen 22.11.2011 Tid for eksamen: 12:15-16:15 Oppgavesettet

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på

Detaljer

IN våren 2018 Tirsdag 16. januar

IN våren 2018 Tirsdag 16. januar IN1010 - våren 2018 Tirsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

IN våren 2019 Onsdag 16. januar

IN våren 2019 Onsdag 16. januar IN1010 - våren 2019 Onsdag 16. januar Java Objekter og klasser Stein Gjessing Universitetet i Oslo 1 1 IN1010: Objektorientert programmering Hva er et objekt? Hva er en klasse? Aller enkleste eksempel

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1020 Algoritmer og datastrukturer Eksamensdag: 15. desember 2004 Tid for eksamen: 14.30 17.30 Oppgavesettet er på 6 sider.

Detaljer

INF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004

INF1000 Metoder. Marit Nybakken marnybak@ifi.uio.no 16. februar 2004 INF1000 Metoder Marit Nybakken marnybak@ifi.uio.no 16. februar 2004 Motivasjon Når man begynner å skrive store programmer, vil man fort oppleve at programmene blir uoversiktlige. Det blir vanskeligere

Detaljer

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier 11. okt. 2011 Siri Moe Jensen Inst. for informatikk, UiO 1 Innhold Eksamen INF1000 Høst 2011: Oppgave 4-7 Tekstmanipulering Metoder med og uten

Detaljer

Verdens korteste grunnkurs i Excel (2007-versjonen)

Verdens korteste grunnkurs i Excel (2007-versjonen) Verdens korteste grunnkurs i Excel (2007-versjonen) NB! Vær oppmerksom på at Excel kan se annerledes ut hos dere enn det gjør på bildene under. Her er det tatt utgangspunkt i programvaren fra 2007, mens

Detaljer

Kanter, kanter, mange mangekanter

Kanter, kanter, mange mangekanter Kanter, kanter, mange mangekanter Nybegynner Processing PDF Introduksjon: Her skal vi se på litt mer avansert opptegning og bevegelse. Vi skal ta utgangspunkt i oppgaven om den sprettende ballen, men bytte

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

Tegneprogram Journeyman Scratch PDF

Tegneprogram Journeyman Scratch PDF Tegneprogram Journeyman Scratch PDF Introduksjon I dette prosjektet lager vi et tegneprogram slik at du etterpå kan lage din egen kunst. Du kan tegne med forskjellige farger, bruke viskelær, lage stempler

Detaljer

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012

INF1000 - Uke 10. Ukesoppgaver 10 24. oktober 2012 INF1000 - Uke 10 Ukesoppgaver 10 24. oktober 2012 Vanlige ukesoppgaver De første 4 oppgavene (Oppgave 1-4) handler om HashMap og bør absolutt gjøres før du starter på Oblig 4. Deretter er det en del repetisjonsoppgaver

Detaljer

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den. PXT: Stein, saks, papir Skrevet av: Bjørn Hamre Kurs: Microbit Introduksjon Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den. Steg 1: Velge tilfeldig

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

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk Innhold uke 7 Objektorientert programmering i Python: Introduksjon IN1000 Høst 2017 uke 7 Siri Moe Jensen Lite tilbakeblikk: Prosedyrer og funksjoner Objektorientert programmering Introduksjon: Hvorfor,

Detaljer

Test 2 OOP. - Prøveeksamen

Test 2 OOP. - Prøveeksamen Test 2 OOP - Prøveeksamen 2007 - Viktig: Jobb med oppgavene som om det var eksamen Ikke snakk med sidemann, ta korte pauser, benytt kun skriftlige hjelpemidler du hadde tenkt til å hatt med på eksamen.

Detaljer

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl

Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl Oblig 4 (av 4) INF1000, høsten 2009 Værdata, leveres innen 6. nov. kl. 16.00 Formål Formålet med denne oppgaven er å gi trening i hele pensum og i å lage et større program. Løsningen du lager skal være

Detaljer

INF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene

INF Repetisjon: Hvordan bygge treet og analysere? 8. september Typisk situasjon. De problematiske syntaks-diagrammene Dagens tema: INF 2100 8. september 2004 Mer om strukturen i treet og hvordan bygge det Testing av at navn er deklarert og brukt riktig Arbeid i gruppene neste uke: Oppgaver relevant for dette stadiet i

Detaljer

Steg 1: Hvordan styre figurer med piltastene

Steg 1: Hvordan styre figurer med piltastene Labyrint Skrevet av: Geir Arne Hjelle Kurs: Scratch Tema: Blokkbasert, Spill Fag: Programmering Klassetrinn: 1.-4. klasse, 5.-7. klasse, 8.-10. klasse Introduksjon I dette spillet vil vi kontrollere en

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

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon: ToPlayer Introduksjon Processing Introduksjon: Nå skal vi lage et spill som to personer kan spille mot hverandre. Vi har kalt det ToPlayer, men du kan kalle det hva du vil. Målet er å dytte en figur, eller

Detaljer

Øvingsforelesning TDT4105

Øvingsforelesning TDT4105 Øvingsforelesning TDT4105 Gjennomgang øving 9, intro øving 10. Eksamensoppgaver. Benjamin A. Bjørnseth 10. november 2015 2 Oversikt Praktisk Gjennomgang øving 9 Introduksjon sudoku Oppgave 4 Kont-eksamen

Detaljer

Telle i kor steg på 120 frå 120

Telle i kor steg på 120 frå 120 Telle i kor steg på 120 frå 120 Erfaringer fra utprøving Erfaringene som er beskrevet i det følgende er gjort med lærere og elever som gjennomfører denne typen aktivitet for første gang. Det var fire erfarne

Detaljer

Excel. Kursopplegg for SKUP-konferansen 2015. Laget av trond.sundnes@dn.no

Excel. Kursopplegg for SKUP-konferansen 2015. Laget av trond.sundnes@dn.no Excel Kursopplegg for SKUP-konferansen 2015 Laget av trond.sundnes@dn.no 1 Konseptet bak Excel er referansepunkter bestående av ett tall og en bokstav. Et regneark består av loddrette kolonner (bokstav)

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

MathType. En innføring

MathType. En innføring MathType. En innføring Innhold ÅPNING AV MATHTYPE... 2 HURTIGTASTER... 3 Å LAGE EGNE HURTIGTASTER... 5 TABELL OVER HURTIGTASTER... 6 VERKTØYLINJER... 7 PLASSERE EGNE SYMBOLER PÅ VERKTØYLINJENE... 8 TEKSTFORMATERING

Detaljer

VEILEDNING FOR INSTALLASJON AV SIGNALOPPSETT I AUTOCAD

VEILEDNING FOR INSTALLASJON AV SIGNALOPPSETT I AUTOCAD VEILEDNING FOR INSTALLASJON AV SIGNALOPPSETT I AUTOCAD 02E Oppdatert hyperlenke i dokumentet 24.10.2018 LOFJON HENMAG ZACTHO 01E Oppdatert, bedre tilpasset eksterne leverandører 04.05.2018 LOFJON HENMAG

Detaljer

Emnenavn: Objektorientert programmering. Faglærer: Lars Emil Knudsen

Emnenavn: Objektorientert programmering. Faglærer: Lars Emil Knudsen EKSAMEN Emnekode: ITF10611 Dato: 3. mai 2018 Hjelpemidler: To A4-ark (fire sider) med egne notater Emnenavn: Objektorientert programmering Eksamenstid: 4 timer Faglærer: Lars Emil Knudsen Om eksamensoppgaven

Detaljer

Debugging. Tore Berg Hansen, TISIP

Debugging. Tore Berg Hansen, TISIP Debugging Tore Berg Hansen, TISIP Innhold Innledning... 1 Å kompilere og bygge et program for debugging... 1 Når debugger er i gang... 2 Symbolene i verktøylinjen... 3 Start på nytt... 3 Stopp debugging...

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

Algoritmer og datastrukturer Eksamen

Algoritmer og datastrukturer Eksamen Eksamensoppgave i Algoritmer og datastrukturer ved Høgskolen i Oslo Side 1 av 5 Algoritmer og datastrukturer Eksamen 30.11.2010 Eksamenstid: 5 timer Hjelpemidler: Alle trykte og skrevne + håndholdt kalkulator

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