Testrapport. periode noe som er et godt tegn i et operativsystem, gruppen har derfor ikke klart å konstruere en slik situasjon for testing.

Størrelse: px
Begynne med side:

Download "Testrapport. periode noe som er et godt tegn i et operativsystem, gruppen har derfor ikke klart å konstruere en slik situasjon for testing."

Transkript

1

2 Forord Dette dokumentet er skrevet for personer som vil benytte seg av produktet men vil ha en validering av de ulike pluginene før de tas i bruk. Det er forutsatt at produktdokumentet er lest før dette dokumentet blir lest for å få en best mulig forståelse av dokumentet. Det er også beregnet at leseren også har SQL-kunnskaper. Noen av forklaringene vil være på engelsk da det er hentet ut fra JavaDoc, I testkoden vil det være mange kommentarer på norsk og engelsk blandet. Årsaken til det er at gruppen har kun benyttet dette for sin egen del og er ikke en del av produktet. Gruppen har ikke brukt tid på å rettskrive kommentarene i koden. Testing av dokumentet har vært en meget viktig del av prosjektet. Uviklingsmetoden gruppen benyttet la til rette for mye testing både i utviklingsfasen og av sluttproduktet. I dette dokumentet vil gruppen presentere sine hypoteser og funn. Det vil gi et innblikk i hvordan grafene endrer seg når belastningen av applikasjonen endrer seg. Dokumentet er delt i to deler hvor gruppen i den første delen viser sine tester og funn under utviklingen av produktet. I den andre delen utfører gruppen testing av de ulike pluginene isolert sett gjennom applikasjonen pluginene overvåker, i deres tilfelle Tomcat. Den andre delen er derfor en validering av produktet og den første delen har vært testing av gruppens teknikker gjennom ad-hoc metoder. Verdiene gruppen har funnet og endringene som har tredd i kraft vil ikke nødvendigvis endres på samme måte i en annen applikasjon, på en annen Java distribusjon eller maskin. Derimot vil endringene bekrefte og avkrefte gruppens hypoteser med gitte variable i et spesifikt miljø. Alle tester har blitt kjørt på samme plattform med samme oppsett og derfor korrelerer grafene med hverandre. I stor grad har endringene vært like. Gruppen mener at deres tester i stor grad har bekreftet at pluginene fungerer og oppfører seg slik antatt isolert sett. Det finnes enkelte plugin som ikke lar seg teste like enkelt og gruppen har derfor unngått å teste dem i dette prosjektet. Derimot mener gruppen at da andre plugin som har lik oppbygning og metodene og objektene blir benyttet på samme måte oppfører seg slik forventet, vil også disse oppføre seg slik det er ment. Et eksempel på en slik plugin er DeadlockedThreads. Det er i ytters få tilfeller at en tråd forblir deadlocked i en 5 minutters 2

3 periode noe som er et godt tegn i et operativsystem, gruppen har derfor ikke klart å konstruere en slik situasjon for testing. Testing Testing under utviklingen Gruppen skrev tidlig i utviklingsfasen et enkelt vindusbasert program i Java hvor gruppen hentet ut informasjon fra mange MXBean. Dette gjorde gruppen for å danne seg et bilde over hva slags data de kunne hente ut og som lot seg representere i en graf. Gruppen fant raskt ut at det finnes metoder for å hente ut data som ikke lar seg representere i en graf og som ikke har en hensikt å presentere i en graf. Metodene de benyttet var ad-hoc og er ikke en del av produktet. Produkttestingen Da gruppen hadde valgt å hente ut data fra Tomcat hadde vi flere måter å teste applikasjonen på. Her kunne vi velge å programmere servlets direkte, JSP, JSF eller annen servlet basert applikasjon. Gruppen valgte for enkelhets skyld JSP. Dette var den enkleste måten å komme i gang på med minst kode. Her skrev vi flere kodesegmenter som hovedsaklig belastet Heap minnet, men også CPU og andre ressurser. Deretter pakket gruppen applikasjonene ned til WAR og kopierte de inn i /var/lib/tomcat5.5/webapps/. Dette er måten man importerer prosjekter inn i Tomcat. Deretter pakker Tomcat ut war filen og oppretter en mappe med prosjektnavnet. Når det er gjort vil JSP siden være tilgjengelig og klar for å kjøres på nettsiden. Eksempelvis Koden ble deretter kjørt ved at flere datamaskiner aksesserte websiden og test.jsp programmet ble kjørt i flere instanser innenfor Tomcat JVM. 3

4 Innhold Forord...2 Hvordan testet gruppemedlemmene... Feil! Bokmerke er ikke definert. Testing under utviklingen...3 Produkttestingen...3 Del Testing underveis Generelt Testing av alle klassene Databasen Tomcat Websiden Del Generelt Vedlegg

5 Del Testing underveis Generelt I denne delen av testrapporten tar gruppen for seg testingen vi gjorde mens vi utviklet pluginene. Her har vi testet programmene ved å sende dataene til Munin og vurdert grafene for å fastslå en normal. Deretter har vi belastet applikasjonen samtidig som vi har sendt dataene til en SQL-database hvert 5te sekund. Gruppen har vurdert dataene og notert endringene. På denne måten har vi sjekket om nyquist teorien har blitt oppfylt, denne har blitt oppfylt for samtlige plugin. Se kravspesifikasjon for mer info om nyquist teorien Testing av alle klassene Dette er den første testen gruppen utførte. Her skrev vi en kort ad-hoc metode for å hente ut en verdi fra ClassLoadingMXBean. Koden under viser hvordan klassen ser ut. import java.lang.management.*; public class test{ public static void main(string args[]) { ClassLoadingMXBean classmxbean = ManagementFactory.getClassLoadingMXBean(); int a=classmxbean.getloadedclasscount(); // denne retunerer antall klasser som er lastet i JVM System.out.println(""+a); Kode 1.1 5

6 Klassen ble utvidet etter hvert og så slik ut til slutt. import java.lang.management.*; import javax.swing.*; public class Main { public static void main(string[] args) { //int x=getloadedclasscount(); // TODO code application logic here ClassLoadingMXBean classmxbean = ManagementFactory.getClassLoadingMXBean(); ThreadMXBean threadmxbean = ManagementFactory.getThreadMXBean(); MemoryMXBean memorymxbean = ManagementFactory.getMemoryMXBean(); OperatingSystemMXBean osmxbean = ManagementFactory.getOperatingSystemMXBean(); JTextArea utskrift=new JTextArea(); JVM int a=classmxbean.getloadedclasscount(); // denne retunerer antall klasser som er lastet i utskrift.settext("antall klasser : "+a+"\n"); long b=classmxbean.gettotalloadedclasscount(); //retunerer antall klasser som er lastet siden JVM har startet utskrift.append("klasser som er lastet opp siden JVM startet : "+ b+"\n"); long c=classmxbean.getunloadedclasscount(); // antall klasser som er ikke lastet opp siden JVM har startet utskrift.append("klasser som er ikke lastet opp siden JVM startet : "+c+"\n"); boolean d=classmxbean.isverbose(); utskrift.append("er verbose : "+d+"\n"); 6

7 //classmxbean.setverbose(true); //threadmxbean.dumpallthreads(d, d) // Returns the thread info for all live threads with stack trace and synchronization information. long[] mm=threadmxbean.finddeadlockedthreads(); // Finds cycles of threads that are in deadlock waiting to acquire object monitors or ownable synchronizers. String ut=""; /*for(int y=0;y<mm.length;y++) { ut+=mm[y]+", "; utskrift.append("cycles of threads that are in deadlock : "+ ut+"\n");*/ long[] bb=threadmxbean.findmonitordeadlockedthreads();//finds cycles of threads that are in deadlock waiting to acquire object monitors. String ut2=""; /*for(int y2=0;y2<bb.length;y2++) { ut2+=bb[y2]+", "; utskrift.append("cycles of threads that are in deadlock waiting to acq : "+ut2+"\n");*/ long[] m=threadmxbean.getallthreadids(); // Returns all live thread IDs. String ut3=""; for(int i=0;i<m.length;i++){ ut3+=m[i]+", "; utskrift.append("alle live Threads IDS : "+ut3+"\n"); long e=threadmxbean.getcurrentthreadcputime(); //Returns the total CPU time for the current thread in nanoseconds. utskrift.append("total tid for CPU : "+e+"\n"); long f=threadmxbean.getcurrentthreadusertime(); // Returns the CPU time that the current thread has executed in user mode in nanoseconds. utskrift.append("cpu tid in user mode : "+f+"\n"); int h=threadmxbean.getdaemonthreadcount(); // Returns the current number of live 7

8 daemon threads. utskrift.append("antall daemon threads (live) : "+h+"\n"); int g=threadmxbean.getpeakthreadcount(); // Returns the peak live thread count since the Java virtual machine started or peak was reset. utskrift.append("peak live thread count : "+g+"\n"); int t=threadmxbean.getthreadcount(); //Returns the current number of live threads including both daemon and non-daemon threads. utskrift.append("number of live threads (daemon and non-daemon) : "+t+"\n"); //long dd=threadmxbean.getthreadcputime(long id); // Returns the total CPU time for a thread of the specified ID in nanoseconds. //threadmxbean.getthreadinfo(long id); // Returns the thread info for a thread of the specified id with no stack trace. //threadmxbean.getthreadinfo(long[] ids); //Returns the thread info for each thread whose ID is in the input array ids with no stack trace. //threadmxbean.getthreadinfo(f, t); // Returns the thread info for each thread whose ID is in the input array ids, with stack trace and synchronization information. // threadmxbean.getthreadinfo(long[] ids, int maxdepth); // Returns the thread info for each thread whose ID is in the input array ids, with stack trace of a specified number of stack trace elements. //threadmxbean.getthreadinfo(long f,int maxdepth); // Returns a thread info for a thread of the specified id, with stack trace of a specified number of stack trace elements. //threadmxbean.getthreadusertime(long id); //Returns the CPU time that a thread of the specified ID has executed in user mode in nanoseconds. long s=threadmxbean.gettotalstartedthreadcount();// Returns the total number of threads created and also started since the Java virtual machine started. utskrift.append("total number of threads created and started : "+s+"\n"); boolean te=threadmxbean.iscurrentthreadcputimesupported(); // Tests if the Java virtual machine supports CPU time measurement for the current thread. utskrift.append("jvm support CPU time measurement : "+te+"\n"); boolean te2=threadmxbean.isobjectmonitorusagesupported(); // Tests if the Java virtual machine supports monitoring of object monitor usage. utskrift.append("jvm supports monitoring of Bbject : "+te2+"\n"); boolean te3=threadmxbean.issynchronizerusagesupported(); // Tests if the Java virtual 8

9 machine supports monitoring of ownable synchronizer usage. utskrift.append("jvm supports monitoring of ownable synch. : "+te3+"\n"); boolean te4=threadmxbean.isthreadcontentionmonitoringenabled(); // Tests if thread contention monitoring is enabled. utskrift.append("thread contention monitoring is enabled : "+te4+"\n"); boolean te5=threadmxbean.isthreadcontentionmonitoringsupported(); // Tests if the Java virtual machine supports thread contention monitoring. utskrift.append("jvm supports thread con. monitoring : "+te4+"\n"); boolean te6=threadmxbean.isthreadcputimeenabled(); // Tests if thread CPU time measurement is enabled. utskrift.append("threads CPU time measurement is enabled : "+te6+"\n"); boolean ss=threadmxbean.isthreadcputimesupported(); // Tests if the Java virtual machine implementation supports CPU time measurement for any thread. utskrift.append("jvm implementation supports CPU time measur. : "+ss+"\n"); //threadmxbean.resetpeakthreadcount(); //Resets the peak thread count to the current number of live threads. //threadmxbean.setthreadcontentionmonitoringenabled(boolean enable); // Enables or disables thread contention monitoring. //threadmxbean.setthreadcputimeenabled(boolean b); // Enables or disables thread CPU time measurement. //memorymxbean.gc(); //Runs the garbage collector. //memorymxbean.getheapmemoryusage(); //Returns the current memory usage of the heap that is used for object allocation. //memorymxbean.getnonheapmemoryusage(); // Returns the current memory usage of non-heap memory that is used by the Java virtual machine. //memorymxbean.getobjectpendingfinalizationcount(); // Returns the approximate number of objects for which finalization is pending. //memorymxbean.isverbose(); // Tests if verbose output for the memory system is enabled. //memorymxbean.setverbose(boolean value); //Enables or disables verbose output for the memory system. String ff=osmxbean.getarch(); //Returns the operating system architecture. utskrift.append("os architecture : "+ff+"\n"); 9

10 int av=osmxbean.getavailableprocessors(); // Returns the number of processors available to the Java virtual machine. utskrift.append("number of processors available to JVM : "+av+"\n"); String name=osmxbean.getname(); // Returns the operating system name. utskrift.append("navn på OS : "+name+"\n"); double tr=osmxbean.getsystemloadaverage(); //Returns the system load average for the last minute. utskrift.append("system load average for the last minute : "+tr+"\n"); String ver=osmxbean.getversion(); //Returns the operating system version. utskrift.append("version : "+ver); JOptionPane.showMessageDialog(null,utskrift); 10

11 Figur 1(applikasjon til koden over) Denne klassen innholdt verdier for de fleste MXBean og gruppen dannet seg et bilde av informasjonen vi kunne få ut. Men det var vanskelig å vite om dataen endret seg eller ikke, derfor valgte gruppen å skrive til databasen Databasen Gruppen begynte med å sette inn verdier i databasen og sjekket ved å utføre select * from prosjekt; for hvert 5te minutt. public static void leggtil(string tid,int x,long y, long z,string verbose,long e,long f,int h,int g,int t,long s,string s1,string s2,string s3,string s4,string s5,string s6,string s7) { try{ new com.mysql.jdbc.driver(); 11

12 Connection con = DriverManager.getConnection("jdbc:mysql://IP /brukernavn", "brukernavn", "Passord"); Statement st = con.createstatement(); st.execute("insert INTO prosjekt values('"+tid+"','" + x + "','"+y+"','"+z+"','"+verbose+"','"+e+"','"+f+"','"+h+"','"+g+"','"+t+"','"+s+"','"+s1+"','"+s2+"',' "+s3+"','"+s4+"','"+s5+"','"+s6+"','"+s7+"')"); catch(exception stt) { System.out.print(stt.getMessage()); public static String now(string dateformat) { Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); return sdf.format(cal.gettime()); Denne metoden ble kjørt via en Main metode der sendte data hvert 5te sekund til databasen. Som det kommer frem er det mange kolonner i denne tabellen og det ville vært upraktisk å skrive ut hele, derfor har gruppen lagt ved et utsnitt av tabellen. 12

13 Forklaring for tabellens kolonner A= Time B= The current number of live threads including both daemon and non-daemon threads. C= The number of classes that are currently loaded in the Java virtual machine. D= The total number of classes unloaded since the Java virtual machine has started execution. E= Is Verbose F= Total CPU time for the current thread in nanoseconds G= The CPU time the current thread has executed in user mode in nanosecunds H= The current number of live daemon J= The peak live thread count since the JVM started or Peak wa reset K= The current number of live threads including both daemon and non-daemon threads L= The total number of threads creadted and also started since the JVM started. 13

14 mysql> select * from prosjekt; A B C D E F G H J K L /05:06: false /05:06: false /05:06: false /05:06: false /05:06: false /05:06: false /05:07: false /05:07: false /05:07: false /05:07: false /05:07: false /05:07: false /05:07: false /05:07: false /05:07: false /05:07: false /05:07: false /05:08: false /05:08: false /05:08: false /05:08: false /05:08: false /05:08: false /05:08: false

15 Da gruppen testet koden fant ut at verdiene endrer seg minimalt selv ved høy last og visste at noe var galt. Gruppen kunne se at Load og CPU ressursene hadde økt betraktelig for operativsystemet men ingen endringer for CPU og andre grafer for JVM. Gruppen dannet seg noen hypoteser for dette resultatet. Den første hypotesen var at vi hentet ut data fra tidligere opprettet MXBean objekt. Denne hypotesen viste seg raskt å være feil da noen grafer hadde små endringer. Neste hypotese var at vi hentet ut data fra feil JVM instans. Her gikk det litt tid og mer studeringav JMX før de oppdaget at vi hadde gjort en fundamentalt feil antagelse. Antagelse var at vi hentet ut ressursbruken til JVM i sin helhet for operativsystemet. Men det vi i realiteten hentet ut var ressursbruken til vår plugin (som kun utførte en kort System.out.print() operasjon på objektet). Vi hentet dataene på feil metode for deres bruk. De aksesserte MXBean objektene direkte, men måtte aksessere objektene ved å benytte ManagementFactory.newPlatformMXBeanProxy(). På denne måten kunne vi aksessere en spesifik MBean server ved en nettverkstilkobling Tomcat Teste om Tomcat kjører Installasjon av Tomcat gikk bra, så måtte gruppen sjekke om den kjørte på serveren. Koden nedenfor viser Tomcat som kjører på serveren. server:/etc/munin/java/java# ps aux grep tomcat5.5 tomcat ttyp0 S 11:15 0:00 su -p -s /bin/sh tomcat55 -c /usr/sbin/rotatelogs "/var/lib/tomcat5.5/logs/catalina_%f.log" tomcat ttyp0 S 11:15 0:00 /usr/sbin/rotatelogs /var/lib/tomcat5.5/logs/catalina_%f.log tomcat ttyp0 Sl 11:15 0:12 /usr/lib/jvm/java-6- sun/bin/java -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager - 15

16 Djava.util.logging.config.file=/var/lib/tomcat5.5/conf/logging.properties - Djava.awt.headless=true -Xmx128M -Dcom.sun.management.jmxremote - Dcom.sun.management.jmxremote.port=5400 -Dcom.sun.management.jmxremote.ssl=false - Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote - Dcom.sun.management.jmxremote.port=5400 -Dcom.sun.management.jmxremote.ssl=false - Dcom.sun.management.jmxremote.authenticate=false - Djava.endorsed.dirs=/usr/share/tomcat5.5/common/endorsed -classpath :/usr/lib/jvm/java-6- sun/jre//lib/jcert.jar:/usr/lib/jvm/java-6-sun/jre//lib/jnet.jar:/usr/lib/jvm/java-6- sun/jre//lib/jsse.jar:/usr/share/tomcat5.5/bin/bootstrap.jar:/usr/share/tomcat5.5/bin/commonslogging-api.jar -Djava.security.manager - Djava.security.policy==/var/lib/tomcat5.5/conf/catalina.policy - Dcatalina.base=/var/lib/tomcat5.5 -Dcatalina.home=/usr/share/tomcat5.5 - Djava.io.tmpdir=/var/lib/tomcat5.5/temp org.apache.catalina.startup.bootstrap start root ttyp0 R+ 13:39 0:00 grep tomcat5.5 Websiden Linken viser at Tomcat installert og websiden er klar for bruk på port Teste webapplikasjoner Tomcat har en administrasjonsside for applikasjoner som kjører. Her kan man dobbelt sjekke at war filen er installert og prosjektet er opplastet i minnet. Her kan man logge seg inn og få oversikten Brukernavn: mammut Passord: tcpa 16

17 Del Generelt I denne delen av prosjektet skal Gruppen gå gjennom pluginene og teste om alle virker og gjør det de skal. War filene ble lastet opp til /var/lib/tomcat5.5/webapps/ og deretter kjørt via nettsidene Plugin CollectionUsageSurvivor Comitted øker Max Hypotese Init Used øker Threshold Test Kode nummer 1 Antall PC-er 3 Comitted Max Utfall Init Used Threshold Resultat Hypotese var riktig 17

18 Plugin CollectionUsageTenuredGen Comitted Max Hypotese Init Used Threshold Test Kode nummer 1 Antall PC-er 3 Comitted Max Utfall Init Used Threshold Resultat Hypotese var riktig 18

19 Plugin PeakUsageEden Comitted Max Hypotese Init Used Threshold Test Kode nummer 1 Antall PC-er 3 Comitted Max Utfall Init Used Threshold Resultat Hypotese var riktig 19

20 Plugin GarbageCollectorCount Hypotese MinorCount MajorCount Test Kode nummer 1 Antall PC 3 Utfall MinorCount MajorCount Resultat Hypotese var riktig 20

21 Plugin GarbageCollectorTime Hypotese MinorTime MajorTime Test Kode nummer 1 Antall PC 3 Utfall MinorTime MajorTime Resultat Hypotese var riktig 21

22 Plugin Hypotese Test Uptime Venter en dag Antall PC 1 Utfall Resultat Hypotese var riktig 22

23 Plugin PeakUsageSurvivor Hypotese Comitted øker Max Init Used Threshold Inegn endring øker Test Kode nummer 1 Antall PC 3 Utfall Comitted øker Max Init Used Threshold øker Resultat Hypotese var riktig 23

24 Plugin PeakUsageTenuredGen Hypotese Comitted Max Init Used Threshold Test Kode nummer 1 Antall PC 3 Utfall Comitted Max Init Used Threshold Resultat Hypotese var riktig 24

25 Plugin UsageEden Hypotse Comitted Used Max Init Threshold Test Kode nummer 1,2,3 Antall websider 10 Utfall Comitted Used Max Init Threshold Resultat Hypotese var riktig 25

26 Plugin UsageSurvivor Hypotse Comitted Used Max Init Threshold Test Kode nummer 1,2,3,4,5 Antall websider 10 Utfall Comitted Used Max Init Threshold Resultat Hypotese var riktig 26

27 Plugin UsageTenuredGen Hypotse Comitted Used Max Init Threshold Test Kode nummer 1,2,3,4,5 Antall websider 10 Utfall Comitted Used Max Init Threshold Resultat Hypotese var riktig 27

28 Vedlegg Kode nummer 1 1 <html> 2 <head> 3 <title>time on the server</title> 4 </head> 5 <body bgcolor="red"> 6 The time is <%= new java.util.date() %> 7 <h3>hei.vet du hva du gjør her nå?du fyller 15 String array med 8 tekst. </h3> 9 <% 10 String[] array1=new String[ ]; 11 String[] array2=new String[ ]; 12 String[] array3=new String[ ]; 13 String[] array4=new String[ ]; 14 String[] array5=new String[ ]; 15 String[] array6=new String[ ]; 16 String[] array7=new String[ ]; 17 String[] array8=new String[ ]; 18 String[] array9=new String[ ]; 19 String[] array10=new String[ ]; 20 String[] array11=new String[ ]; 21 String[] array12=new String[ ]; 22 String[] array13=new String[ ]; 23 String[] array14=new String[ ]; 24 String[] array15=new String[ ]; for (int i=0;i< ;i++) 27 { 28 array1[i]="en string kommer inn"; 29 array2[i]="en annen string kommer inn her"; 30 array3[i]="en til kommer her"; 31 array4[i]="en string kommer inn"; 32 array5[i]="en annen string kommer inn her"; 33 array6[i]="en til kommer her"; 34 array7[i]="en string kommer inn"; 35 array8[i]="en annen string kommer inn her"; 36 array9[i]="en til kommer her"; 37 array10[i]="en string kommer inn"; 38 array11[i]="en annen string kommer inn her"; 39 array12[i]="en til kommer her"; %> 42 </body> 28

29 43 </html> Kode nummer 2 <html> <head> <title>time on the server</title> </head> <body bgcolor="red"> The time is <%= new java.util.date() %> <h3> Dette er en matte oppgave. </h3> <% int max= ; int i=0; int sum=0; int s=1; while(s< ) { while(i<max) { i+=1; sum+=i; Thread.sleep(1000); i=0; s++; sum=0; %> </body> </html> Kode nummer 3 29

30 <html> <head> <title>time on the server</title> </head> <body> The time is <%= new java.util.date() %> <% for (int i=0;i< ;i++) { %> Dette er kun test <%= i %> <br> <% %> </body> </html> Kode nummer 4 <html> <head> <title>time on the server</title> </head> <body> The time is <%= new java.util.date() %> <% String[] array1=new String[ ]; 30

31 String[] array2=new String[ ]; String[] array3=new String[ ]; for (int i=0;i< ;i++) { array1[i]="en string kommer inn"; array2[i]="en annen string kommer inn her"; array3[i]="en til kommer her"; %> Dette er kun test <%= i %> <br> <% %> </body> </html> Kode nummer 5 <html> <head> <title>time on the server</title> </head> <body> The time is <%= new java.util.date() %> <% String[] array1=new String[ ]; String[] array2=new String[ ]; 31

32 String[] array3=new String[ ]; for (int i=0;i< ;i++) { array1[i]="en string kommer inn"; array2[i]="en annen string kommer inn her"; array3[i]="en til kommer her"; %> Dette er kun test <%= i %> <br> <% %> <% long test=1; while(test!=0) { %> Dette er en annen test <% test++; %> </body> </html> 32

Innhold Forord...3 Begreper og akronymer...4 Systembeskrivelse...5 Generelt...5 Funksjonelle krav...7 Ikke-Funksjonelle krav...9 Prioritering...

Innhold Forord...3 Begreper og akronymer...4 Systembeskrivelse...5 Generelt...5 Funksjonelle krav...7 Ikke-Funksjonelle krav...9 Prioritering... Innhold Forord...3 Begreper og akronymer...4 Systembeskrivelse...5 Generelt...5 Funksjonelle krav...7 Ikke-Funksjonelle krav...9 Prioritering...9 2 Forord Denne kravspesifikasjonen har blitt utviklet i

Detaljer

Forord. Brukerveiledning

Forord. Brukerveiledning Forord Dette dokumentet er ment for brukere og administratorer som vil overvåke ressursene som brukes av JVM. Det gir en rask og generisk introduksjon til installasjonen av de forskjellige verktøyene som

Detaljer

IN2010: Algoritmer og Datastrukturer Series 2

IN2010: Algoritmer og Datastrukturer Series 2 Universitetet i Oslo Institutt for Informatikk S.M. Storleer, S. Kittilsen IN2010: Algoritmer og Datastrukturer Series 2 Tema: Grafteori 1 Publisert: 02. 09. 2019 Utvalgte løsningsforslag Oppgave 1 (Fra

Detaljer

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider:

JSP - 2. Fra sist. Hvordan fungerer web? Tjenerside script HTML. Installasjon av Web-tjener Et enkelt JSP-script. Ønsker dynamiske nettsider: Fra sist JSP - 2 Installasjon av Web-tjener Et enkelt JSP-script HTML statisk Forms Tags Ønsker dynamiske nettsider: Klientside-script/programmering Javascript, vbscript, applets Tjenerside-script/programmering

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

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14.

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 14. Forkurs INF1010 Dag 2 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Gard Inge Rosvold (gardir@ifi.uio.no) Institutt for Informatikk, 14. januar 2016 Forkurs INF1010 - dag 2 Feilmeldinger 2 Forkurs INF1010

Detaljer

Fra Python til Java, del 2

Fra Python til Java, del 2 Fra Python til Java, del 2 Hvordan kjøre Java? På Ifis maskiner På egen maskin Et eksempel Array-er For-setninger Lesing og skriving Metoder Biblioteket Hva trenger vi egentlig? Å kjøre Java For å kunne

Detaljer

Socket og ServerSocket

Socket og ServerSocket Side 1 av 5, socket og klient-tjener, V. Holmstedt, HiO 2006 Dette dokumentet er revidert den 29.8.2006, kl:12:30. Det er foretatt rettelser i begge versjoner av klassen A_Server. Socket og ServerSocket

Detaljer

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen? OPPGAVESETT 4 PROSEDYRER Oppgavesett 4 i Programmering: prosedyrer. I dette oppgavesettet blir du introdusert til programmering av prosedyrer i Java. Prosedyrer er også kjent som funksjoner eller subrutiner.

Detaljer

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse

Detaljer

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering?

Dagens tema. Hva er kompilering? Anta at vi lager dette lille programmet doble.rusc (kalt kildekoden): Hva er kompilering? Dagens tema Dagens tema Kildekode Hva er kompilering? Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Hvordan oppdage feil? Anta at vi lager dette lille

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

INF2100. Oppgaver uke 40 og

INF2100. Oppgaver uke 40 og INF2100 Oppgaver uke 40 og 41 2014 For å få trening i å programmere en parser, skal vi aller først gjøre det for et veldig enkelt programmeringsspråk: E. Dette språket består av uttrykk med de fire vanligste

Detaljer

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd

INF1010 Tråder J. Marit Nybakken Motivasjon. Å lage en tråd J INF1010 Tråder J Marit Nybakken marnybak@ifi.uio.no Motivasjon Til nå har vi kun skrevet programmer der programmet bare var på ett sted i koden til enhver tid (bortsett fra når vi har drevet med GUI,

Detaljer

Forelesning inf Java 5

Forelesning inf Java 5 Ole Chr. Lingjærde 1 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen

Detaljer

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

Forelesning inf Java 5

Forelesning inf Java 5 Forelesning inf1000 - Java 5 Tema: Mer om metoder 2D-arrayer String Ole Christian Lingjærde, 26. september 2013 Ole Chr. Lingjærde Institutt for informatikk, 26. september 2013 1 Strukturen til et Java-program

Detaljer

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

Forkurs INF1010. Dag 2. Andreas Færøvig Olsen Tuva Kristine Thoresen Forkurs INF1010 Dag 2 Andreas Færøvig Olsen (andrefol@ifi.uio.no) Tuva Kristine Thoresen (tuvakt@ifi.uio.no) Institutt for Informatikk, 7. januar 2014 Forkurs INF1010 - dag 2 Klasser og pekere Klasser

Detaljer

INF2100. Oppgaver 9. oktober 2012 C 100 X 10

INF2100. Oppgaver 9. oktober 2012 C 100 X 10 INF2100 Oppgaver 9. oktober 2012 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med de fire vanligste regneartene +,, * og /; grammatikken 1 ser du i figur 1 på neste side. Tallkonstanter

Detaljer

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et eksempel Klasser

Detaljer

Jentetreff INF1000 Debugging i Java

Jentetreff INF1000 Debugging i Java Jentetreff INF1000 Debugging i Java Ingrid Grønlie Guren ingridgg@student.matnat.uio.no 11. november 2013 Kort om feilmeldinger i Java Java har to ulike type feilmeldinger som man kan få når man skriver

Detaljer

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10

INF2100. Oppgaver 6. og 11. oktober 2011 C 100 X 10 INF2100 Oppgaver 6. og 11. oktober 2011 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med de fire vanligste regneartene +,, * og /; grammatikken 1 ser du i figur 1 på neste side.

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

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 13. juni 2006 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 5

Detaljer

Installasjonsveiledning

Installasjonsveiledning Installasjonsveiledning Magne Rodem og Jan-Erik Strøm 18. juni 2006 Innhold 1 Installasjon av Web Service 3 1.1 Krav........................................... 3 1.2 Installasjon av Sun Java System Application

Detaljer

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster

3 emner i dag! INF1000 Uke 5. Objekter og pekere. null. Litt om objekter, pekere og null Filer og easyio Litt mer om tekster 3 emner i dag! INF1000 Uke 5 Litt om objekter, pekere og null Filer og easyio Litt mer om tekster Litt om objekter, filer med easyio, tekst 1 2 Objekter og pekere Vi lager pekere og objekter når vi bruker

Detaljer

INF2100. Oppgaver 23. og 24. september 2010

INF2100. Oppgaver 23. og 24. september 2010 INF2100 Oppgaver 23. og 24. september 2010 Oppgave 1 Vi skal se på et meget enkelt språk E som består av uttrykk med + og ; grammatikken ser du i figur 1 på neste side. Tallkonstanter består av bare ett

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

Eksamen i Internetteknologi Fagkode: ITE1526

Eksamen i Internetteknologi Fagkode: ITE1526 Datateknikk Side 1 av 8 Eksamen i Internetteknologi Fagkode: ITE1526 Tid: Mandag, 23.05.05, 9:00-12:00 Tillatte hjelpemidler: Alle trykte og skrevne hjelpemidler tillatt. Eksamen består av 3 oppgaver og

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

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

Videregående programmering 6

Videregående programmering 6 Videregående programmering 6 1. Feilkontroll i klasser uten unntaksobjekter Klasser skal lages sikre. Argumentverdier skal kontrolleres, og eventuelle feil skal rapporteres til klienten. I praksis har

Detaljer

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ

I et Java-program må programmøren lage og starte hver tråd som programmet bruker. Er dette korrekt? Velg ett alternativ INF2440-V18 Information INF2440 Vår 2018 eksamen Dato og tid: 11. juni 2018 09:00. Varighet: 4 timer Hjelpemidler: Alt skriftlig materiale er tillatt. Ingen elektroniske hjelpemidler er tillatt. Powerpoint

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en

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

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først) INF1010 våren 2019 Onsdag 30. januar Mer om unntak i Java (med litt repetisjon av I/O først) Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type:

Detaljer

JavaServer Pages (JSP)

JavaServer Pages (JSP) JavaServer Pages (JSP) Forelesning 1 Klient/tjener-systemer, installasjon av tjener, og intro til JSP. Statisk Web = HTML Overskrift

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

INF1010 Tråder II 6. april 2016

INF1010 Tråder II 6. april 2016 INF1010 Tråder II 6. april 2016 Stein Gjessing Universitetet i Oslo 1 Tråder i Java tråden minrunp class MinRun implements Runable { MinRun(... ) {... } public void run( ) {...... } } //end

Detaljer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren Prosedyrer Hensikten med en prosedyre Hensikten med en prosedyre er, logisk sett, å representere en jobb eller en funksjonalitet i et eller flere programmer. Bruk av entall er viktig: vi har generelt en

Detaljer

Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006

Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006 Side 1 av 11, prosesser, tråder, synkronisering, V. Holmstedt, HiO 2006 Prosesser og tråder Datamaskinen lager prosesser. En prosess organiserer arbeidet i et program ved å administrere tråder. Det er

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

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

INF 1010, vår 2005 Løsningsforslag uke 11 INF 1010, vår 2005 uke 11 Anders Brunland 11. april 2005 Oppgave 1 Oppgave 1 i kapittel 19, Rett på Java Er følgende metoder lovlige? Hovorfor/hvorfor ikke? a) void koknverter ( int mnd ) { konverterdato

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

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

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

Threads Threads (tråder) threads vs prosesser threads vs prosesser Definisjoner av

Threads Threads (tråder) threads vs prosesser threads vs prosesser Definisjoner av prosess = At en kokk lager en porsjon middag i et kjøkken CPU = kokk ressurser = kjøkken, matvarer, oppskrift thread/tråd = den sammenhengende serien(tråden) av hendelser som skjer når kokken lager en

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

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

INF2100. Oppgaver 26. september til 1. oktober 2007

INF2100. Oppgaver 26. september til 1. oktober 2007 INF2100 Oppgaver 26. september til 1. oktober 2007 1 Språket Denne uken skal vi implementere en utvidelse av språket fra forrige ukes oppgave. Syntaksen er vist i figur 1 på neste side og betydning er

Detaljer

Operativsystemer og grensesnitt

Operativsystemer og grensesnitt Operativsystemer og grensesnitt Ulike måter å bruke OS'et på Application Program Interface (API) Applikasjoner (ofte C-programmer) som f.eks. emacs, som bruker tjenestene i OS ved å kalle på funksjoner

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

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

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

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

SQL Server guide til e-lector

SQL Server guide til e-lector LES LETTERE, LES RASKERE, FÅ LESELYST! SQL Server guide til e-lector Innhold 1 Innledning... 2 2 SQL Express 2008 R2 installasjon... 2 3 Etter installasjon... 4 3.1 SQL Express... 4 3.1.1 Nettverksoppsett

Detaljer

Del 3: Evaluere uttrykk

Del 3: Evaluere uttrykk Del 3: Evaluere uttrykk Hva skal vi gjøre? Hvordan lagre Asp-verdier Hvilke operasjoner må jeg implementere? Er operasjonen lovlig? Utføre operasjonen Strukturen til interpreten vår f.asp 3&4 Interpret

Detaljer

Seminaroppgaver IN1010, uke 2

Seminaroppgaver IN1010, uke 2 Seminaroppgaver IN1010, uke 2 1.a: Skriv en klasse HeiVerden.java. Klassen skal inneholde en main- metode (se på notatet fra tidligere). Inne i main -metoden skal programmet først la brukeren oppgi en

Detaljer

Brukerveiledning for ArkN4

Brukerveiledning for ArkN4 Brukerveiledning for ArkN4 Brukerveiledningen er delt inn i 3 deler: 1. Konfigurasjon av ArkN4 2. Kjøre ArkN4 3. Opprette ny database Eksemplene i dette kapitlet viser hvordan man velger de forskjellige

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF2440 Effektiv parallellprogrammering Eksamensdag: 2. juni 2015 Tidspunkter: 09.00 13.00 Oppgavesettet er på: 3 sider + 2 sider

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

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

Testsituasjon Resultat Kommentar. Fungerer som det skal!

Testsituasjon Resultat Kommentar. Fungerer som det skal! Test- rapport Testsituasjon Resultat Kommentar Test av PHP-variablene. Sjekke om de er riktig deklarert, og om de kommer med fra form til database Alle variablene som skal leses fra konfigurasjonssiden,

Detaljer

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java

Innhold uke 4. INF 1000 høsten 2011 Uke 4: 13. september. Deklarasjon av peker og opprettelse av arrayobjektet. Representasjon av array i Java INF høsten 2 Uke 4: 3. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus Mål for uke 4: Innhold uke 4 Repetisjon m/ utvidelser:

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 11. juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8

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

Løsningsforslag 2017 eksamen

Løsningsforslag 2017 eksamen Løsningsforslag 2017 eksamen Oppgave 1: O-notasjon (maks 8 poeng) 1. (i) O(n) gir 2 poeng, O(100n) gir 1 poeng (ii) O(n^2) gir 1 poeng (iii) O(n log n) gir 2 poeng 2. (i) er mest effektiv i henhold til

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

1,r H øgs kolen i Østfol d

1,r H øgs kolen i Østfol d 1,r H øgs kolen i Østfol d EKSAMEN Emnekode: ITF22506 Emne: Operativsystemer Dato: 2. juni 2010 Eksamenstid: kl. 9.00 til kl. 13.00 Hjelpemidler: Faglærer: 1. Læreboken "A Practical Guide to Red Hat Linux"

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

Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB?

Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB? 1 2 Java Database Connectivity (JDBC) Norvald H. Ryeng ryeng@idi.ntnu.no 3 4 Denne forelesningen Hva er Derby og Java DB? Hva er Derby og Java DB? Hva er JDBC? Slik fungerer det Slik gjør dere det (kokebok)

Detaljer

UNIVERSITETET I OSLO

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

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

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen INF1000 EKSTRATILBUD Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen PLAN FOR DAGEN gjennomgå stoff fra uke 1-5(6), men med en litt annen tilnærming kun gjennomgått stoff, men vekt på konsepter og

Detaljer

"Nelsons kaffebutikk"

Nelsons kaffebutikk "Nelsons kaffebutikk" et eksempel på systemutvikling med objekter Originale lysark av Jens Kaasbøll - mindre endringer av G. Skagestein og Knut Hegna IN105-javaNelson-1 Nelsons kaffebutikk Området som

Detaljer

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder: Lese fra fil Filbehandling Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo INF1000 : Forelesning 5 Vi må først importere pakken easyio Vi åpner

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

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

En algoritme for permutasjonsgenerering

En algoritme for permutasjonsgenerering Innledning La oss tenke oss at vi har en grunnskole-klasse på 25 elever der enkelte av elever er uvenner med hverandre. Hvis uvenner sitter nær hverandre blir det bråk og slåssing. Er det mulig å plassere

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

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

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 Kandidatnr: Eksamensdato: 14.desember 2007 Varighet: 0900-1200 Fagnummer: Fagnavn: Klasser: LO347D Web-applikasjoner med Java EE Nettstudenter

Detaljer

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering Dagens tema Hva er kompilering? Hvordan foreta syntaksanalyse av et program? Hvordan programmere dette i Java? Statiske metoder og variabler Hvordan oppdage feil? Kildekode Hva er kompilering? Anta at

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

Programmeringsspråket C

Programmeringsspråket C Programmeringsspråket C Bakgrunn Implementasjon av Unix ved AT&Ts laboratorium i Palo Alto 1960 75. Navnet kommer fra BCPL B C. Opphavsmannnen heter Dennis Ritchie. ANSI standard i 1988; omtrent alle følger

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

MAT-INF 1100: Obligatorisk oppgave 1

MAT-INF 1100: Obligatorisk oppgave 1 8. september, 2005 MAT-INF 1100: Obligatorisk oppgave 1 Innleveringsfrist: 23/9-2005, kl. 14:30 Informasjon Den skriftlige besvarelsen skal leveres på ekspedisjonskontoret i 7. etg. i Niels Henrik Abels

Detaljer

Tilkobling og Triggere

Tilkobling og Triggere Tilkobling og Triggere Lars Vidar Magnusson October 12, 2011 Lars Vidar Magnusson () Forelesning i DAS 11.10.2011 October 12, 2011 1 / 25 Tilkobling med PHP PHP bruker databasespesifike moduler til å koble

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.

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

INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september INF 1000 høsten 2011 Uke 2 30. september Grunnkurs i Objektorientert Programmering Institutt for Informatikk Universitetet i Oslo Siri Moe Jensen og Arne Maus 1 INF1000 undervisningen Forelesningene: Første

Detaljer

Fra problem til program

Fra problem til program Fra problem til program Gitt et problem, hvordan går man fram for å programmere en løsning? UML klassediagrammer Enhetstesting Dokumentasjon Som student ønsker vi oss et program som kan holde oversikt

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO PRØVEEKSAMEN INF1 - H6 UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Prøveeksamen i : INF1 Grunnkurs i objektorientert programmering Dato: Torsdag 3. november 6 Tid for prøveeksamen

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

Dagens tema: Mer av det dere trenger til del 1

Dagens tema: Mer av det dere trenger til del 1 Dagens tema Dagens tema: Mer av det dere trenger til del 1 Hvilke klasser trenger vi? Uttrykk Typer Testutskrifter 12 gode råd Dagens tema Prosjektet Utifra dette AlboC-programmet: int pot2 (int x) { int

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

INF våren 2017

INF våren 2017 INF1010 - våren 2017 Om Java Objekter og klasser Både for deg som kan og for deg som ikke kan Java Stein Gjessing Universitetet i Oslo Ny versjon etter forlesningen der tre meningsløse private modifikatorer

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