Størrelse: px
Begynne med side:

Download ""

Transkript

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22 C:\>cd \eclipse\workspace C:\eclipse\workspace>mkdir exampleproject C:\eclipse\workspace>cd exampleproject C:\eclipse\workspace\exampleproject>copy..\lib-coretrek-buildsys\antscript\webapp-build.xml-TEMPLATE build.xml C:\eclipse\workspace\exampleproject>ant create cd eclipse/workspace/ mkdir exampleproject cd exampleproject cp../lib-coretrek-buildsys/antscript/webapp-build.xml-template build.xml

23 ant create

24

25

26

27 ## I webmacro, linjer som begynner med ## er kommentar linjer ## Eksempel variabel navn: $variabel ## Kalle opp metoden getvalue(): $variabel.getvalue() ## Hente ut instans variabel "public String instancevar": $variabel.instancevar ## Hente ut statisk variabel "public static String STATIC_VAR": $variabel.static_var

28 ## Gitt følgende WebMacro tekst: $variable.name ## Så vil følgende oppslag bli prøvd: 1. Instans variabelen "Name" på objektet $variable 2. Den statisk variaben "Name" på objektet $variable 3. $variable.getname() 4. $variable.isname() 5. $variable.get("name") $variable.object.value $variable.getobjectbyid($id).name

29 #set $variablereference = <Expression> ## En variabel kan settes til en streng #set $var = "Value" ## En kan også kalle på metoder og lagre resultatet #set $varlength = $var.length() ## Å bruke uttryk er også gyldig #set $sum = #if () BLOCK [#elseif () BLOCK] [#else BLOCK] #if (<test>) Resultat1 #elseif (<test2>) Resultat2 #else Resultat3 #end

30 #foreach $listentry in $collection[indexing $indexvariable[ from $fromvariable][ limit $ <table> #foreach $entry in $list <tr> <td>$entry.name</td> <td>$entry.value</td> </tr> #end </table> #count $i from $start to $end[ step $step] #set $start = 100 #set $end = 1 #set $step = -1 #count $i from $start to $end step $step $i. I like WebMacro<br /> #end #alternate $variable through $collection ## Notasjonen [ <var>, <var> ] lar deg lage lister rett i WebMacro koden ## Listen kan ha flere enn bare 2 elementer som vist her #alternate $rowcolor through ["#ffffff", "#dddddd"] <table>

31 <tr bgcolor="$rowcolor"> </tr> <tr bgcolor="$rowcolor"> </tr> <tr bgcolor="$rowcolor"> </tr> </table> ## resultatet her blir #ffffff for første og siste, og #dddddd for den i midten. #text BLOCK #text #if her vil ikke bli tolket som en #if #end #macro ($argument,...) BLOCK ## Her definerer vi en macro som tar ett argument, $param, som den skriver ut i bold #macro testmacro($param) <b>$param</b> #end ## Her sender vi inn teksten "test" som ett parameter, resultatet blir at det her står <b>test</b> #macro("test")

32 #include [as text as template as macro] $filename ## Include as text gjør at filen blir lest rått og innholdet satt inn #include as text "info.txt" ## Include as template gjør at filen blir parset som om innholdet stod direkte her #include as template "template.wm" ## Include as macro brukes for filer der en sammler sammen flere #macro kommandoer #include as macro "macros.wm" import java.io.bytearrayoutputstream; import java.io.ioexception; import java.io.outputstream; import java.util.map; import org.webmacro.context; import org.webmacro.fastwriter; import org.webmacro.initexception; import org.webmacro.propertyexception; import org.webmacro.resourceexception; import org.webmacro.template; import org.webmacro.wm; /** * Dette er en liten hjelpeklasse for å rendere webmacro filer. */ public class WebMacroRenderer { private String _template; private WM _wm; public WebMacroRenderer(String template) throws InitException { _template = template; // initialiser WebMacro instansen _wm = new WM(); public void render(outputstream stream, Map contextmap) throws ResourceException, PropertyException, IOException { // For å kunne rendere en WM fil, så trenger vi Template objeketet. Dette // er fordi WebMacro cacher parse resultatet fra en fil. Template template = _wm.gettemplate(_template);

33 // For å parse en fil så trenger vi en FastWriter til å skrive. Denne // peker vi på OutputStreamen som vi får inn, og setter encoding til ISO FastWriter fastwriter = new FastWriter(_wm.getBroker(), stream, "ISO "); // Contexten er det objektet som inneholder alle variabler som er tilgjengelig i en // WebMacro fil. Vi kan også fylle den med data før parsing for å sende variabler inn // til WM filen. Contexten er en utvidelse av Map, og vi fyller den med det mapet // som har blitt sendt inn. Context context = _wm.getcontext(); context.putall(contextmap); // Render templaten med det FastWriter objektet vi har laget og den konteksten vi // har template.write(fastwriter, context); // Flush fastwriteren, slik at resultatet blir skrevet ut. fastwriter.flush(); public String rendertostring(map context) throws PropertyException, ResourceException, IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); render(baos, context); baos.close(); return new String(baos.toByteArray(), "ISO "); import java.util.hashmap; import java.util.map; public class WebMacroMain { // Generer template navn utifra klassenavn. Dette slik at det bare er å lage en template med // samme navn som klassen i den pakken som WebMacroMain ligger. private static final String TEMPLATE = WebMacroMain.class.getName().replace('.','/')+".wm"; public static void main(string[] args) throws Exception { // Opprett en renderer for filen vår. WebMacroRenderer renderer = new WebMacroRenderer(TEMPLATE); // Lag og fyll en Context Map context = new HashMap(); // Render resultatet til Syste,out. renderer.render(system.out, context);

34

35 public class SomeCorelet extends Corelet { private static final String TEMPLATE = SomeCorelet.class.getName().replace('.','/')+".wm"; public String gettemplate() { return TEMPLATE;

36 package com.coretrek.kurs; import com.corelet.corelet; public class HelloWorld extends Corelet { private static final String TEMPLATE = HelloWorld.class.getName().replace('.','/')+".wm"; private static final String TITLE = "Hello World"; public String gettitle() { return TITLE; public String gettemplate() { return TEMPLATE;

37 <span class="normal">hello World</span> <Module id="example"> <Corelet id="helloworld" class="com.coretrek.kurs.helloworld" size="small"> <Addable application="true" portal="true" /> </Corelet> </Module>

38 ModuleId[.ModuleId] CoreletId

39 <a href="parameters?$this:key=value">send key=value to $this</a> <form method="post" action="parameters"> <input type="text" name="$this:text" /> </form> public void process(coreletrequest creq, CoreletResponse cres)

40 public void sendparameter(string coreletid, String parametername, Object parametervalue)

41

42 <img src="$spaceimage" width="1" height="1" />

43

44

45

46 <?xml version="1.0" encoding="utf-8" standalone="no"?> <!DOCTYPE Config SYSTEM "corelets.dtd"> <Config> <!-- Mange forskjellige tager som kun gjelder for server oppsettet --> <Modules> <Module id="test"> <Corelet id="test" class="com.test.test" size="small"> <Addable portal="true" application="true" /> </Corelet> </Module> </Modules> </Config>

47 <!-- Den første Entryen her inneholder kun en String --> <Entry key="string">stringvalue</entry> <!-- Denne Entryen inneholder en liste, man må caste til java.util.list når den hentes ut. --> <Entry key="list"> <Value>Entry 1</Value> <Value>Entry 2</Value> <Value>Entry 3</Value> <Value>Entry 4</Value> </Entry> <!-- Denne entryen inneholder ett nytt map inne i seg selv. En må cate til java.util.map når verdien henter ut. --> <Entry key="map"> <Entry key="subkey1">subvalue 1</Entry> <Entry key="subkey2">subvalue 2</Entry> <Entry key="subkey3">subvalue 3</Entry> <Entry key="subkey4">subvalue 4</Entry> </Entry> <!-- Her er ett eksempel som bruker flere ting om en annen. Man må kjenne til strukturen i koden der man leser ut innholdet --> <Entry key="mix"> <Value> <Entry key="submap">submapvalue</entry> <Entry key="somethingelse">value</entry> </Value> <Value>String</Value> <Value> <Value>2</Value> <Value>4</Value> <Value>6</Value> <Value>8</Value> </Value> <Value> <Entry key="map">

48 <Value>TEXT</Value> </Entry> </Value> </Entry> #set $coreletid = $this.getsiblingid("popupcorelet") #set $popupwidth = 200 #set $popupheight = 400 ## Vanlig popup <a href="javascript:popup($coreletid, $popupwidth, $popupheight)">popup</a> ## popup mede paramter <a href="javascript:popup("$coreletid&$coreletid:para1=val&$coreletid:para2=val", $popupwidth, $popupheight)">popup</a>

49

50

51

52 mins hours dates months days 0,30 * * * *

53 0 0 1 * * run()

54

55 com.corelet.event.event Listener.EVENT_ID_USER_ SESSION_ADDED_MASTER com.corelet.event.event Listener.EVENT_ID_USER_ SESSION_ADDED_SHARED com.corelet.event.event Listener.EVENT_ID_REMOV E_USER_SESSION_MASTER com.corelet.event.event Listener.EVENT_ID_REMOV E_USER_SESSION_SHARED com.corelet.event.event Listener.EVENT_ID_DOMAI N_LOGGEDIN com.corelet.event.event Listener.EVENT_ID_LOGOU T_DOMAIN fireevent

56 corelets.xml corelets.xml corelets.xml <Authentication masterchainid="--chain ID ref--" optionalchainid="--chain ID ref--" logoutchainid="--chain ID ref--"> <AuthenticationSystemMappings defaultmasterchainid="--chain ID ref--" fileuploaddownloadchainid="--chain ID ref--" optionalchainid="--chain ID ref--" /> <StateStore class="--statestore class--"> </StateStore> <SessionKeepers> <SessionKeeper id="--session keeper ID--" class="--session keeper class--"> </SessionKeeper> </SessionKeepers> <AuthenticationSources> <AuthenticationSource id="--authentication source ID--" class="--authentication source class--"> </AuthenticationSource> </AuthenticationSources>

57 <AuthenticationSourceStacks> <AuthenticationSourceStack id="--authentication stack ID--"> <AuthenticationSourceRef sourceref="--authentication source ID ref--" /> </AuthenticationSourceStack> </AuthenticationSourceStacks> <AuthenticationMethods> <AuthenticationMethod id="--authentication method ID--" class="--authentication method class--"> </AuthenticationMethod> </AuthenticationMethods> <AuthenticationChains> <AuthenticationChain id="--chain ID--" defaultstackref="--authentication stack ID ref--" sessionkeeperref="--session keeper ID ref--" mastersession="--true/false--"> <AlreadyLoggedInAuthenticationMethodRef methodref="--authentication method ID ref--" /> <AuthenticationMethodRef methodref="--authentication method ID ref--" /> </AuthenticationChain> </AuthenticationChains> </Authentication> <AuthenticationSources> <!-- Simple SQL authentication with users and domains. No groups, etc. --> <AuthenticationSource id="simpledb_ct-domain" class="com.coretrek.machete.auth.std.source.simpledb.simpledbauthenticationsource"> <Alias absoluteid="dbsrc_ct-domain" /> <Entry key="connectionid">ct-domain</entry> <Entry key="databasefailurehaltsstartup">false</entry> </AuthenticationSource> </AuthenticationSources> <AuthenticationSourceStacks>

58 <!-- Only use the simple SQL based authentication system --> <AuthenticationSourceStack id="dbstack"> <Alias id="default" /> <AuthenticationSourceRef sourceref="dbsrc_ct-domain" /> </AuthenticationSourceStack> </AuthenticationSourceStacks> <AuthenticationMethods> <AuthenticationMethod id="htmlform" class="com.coretrek.machete.auth.std.method.htmlformauthenticationmethod"> <!-- <Entry key="singledomain">default</entry> --> <Entry key="loginpage">com/coretrek/machete/auth/std/method/login.wm</entry> <Entry key="takenoverpage">com/coretrek/machete/auth/std/method/takenover.wm</entry> </AuthenticationMethod> </AuthenticationMethods>

59 <SessionKeepers> <SessionKeeper id="httpsessionbasedsessionkeeper" class="com.coretrek.machete.auth.std.sessionkeeper.servlet.httpsessionbasedsessionkeeper"> <Alias absoluteid="default" /> </SessionKeeper> </SessionKeepers> <StateStore class="com.coretrek.machete.auth.std.statestore.sql.sqlstatestore"> <Entry key="connectionid">ct-domain</entry> <Entry key="databasefailurehaltsstartup">false</entry> </StateStore>

60 <AuthenticationChains> <AuthenticationChain id="html Form" defaultstackref="default" sessionkeeperref="default" mastersession="true"> <AlreadyLoggedInAuthenticationMethodRef methodref="htmlform" /> <AuthenticationMethodRef methodref="sessionkeeper" /> <AuthenticationMethodRef methodref="ccscookie" /> <AuthenticationMethodRef methodref="popupblocker" /> <AuthenticationMethodRef methodref="htmlform" /> </AuthenticationChain> </AuthenticationChains> <Authentication masterchainid="html Form" optionalchainid="optional-shared" logoutchainid="logout-chain">

61 <AuthenticationSystemMappings defaultmasterchainid="html Form" fileuploaddownloadchainid="http BASIC-shared" optionalchainid="optional-shared" />

62 <AuthenticationChain id="html Form + Anonymous" defaultstackref="default" sessionkeeperref="httpsessioninactivityintervalboostingsessionkeeper" mastersession="true"> <AlreadyLoggedInAuthenticationMethodRef methodref="htmlform" /> <AuthenticationMethodRef methodref="cookietester" /> <AuthenticationMethodRef methodref="anonymoushtmlsnoop" /> <AuthenticationMethodRef methodref="sessionkeeper" /> <AuthenticationMethodRef methodref="ccscookie" /> <AuthenticationMethodRef methodref="popupblocker" /> <AuthenticationMethodRef methodref="anonymoususer" /> <!-- This method generates a AnonymousUser --> </AuthenticationChain> corelets.xml

63 corelets.xml <AdminServlet password="default" />

64

65

66

67 logconfig.xml logconfig.xml

68 registerrss getrssnewsitems reloadrss getregisteredrssfeeds incrementcounter getcurrentvalue getupdatetimes percentagehit eventtofire percentagehit eventtofire

69 public class ExampleStateCorelet extends Corelet implements Stateful { private ExampleState _instancestate; private ExampleState _globalstate; public void setinstancestate(state state) { _instancestate = (state == null)? new ExampleState() : (ExampleState) state; public void getinstancestate() { return _instancestate; public void setglobalstate(state state) { _globalstate = (state == null)? new ExampleState() : (ExampleState) state; public void getglobalstate() { return _globalstate; // Corelet methods // State class definiton public static class ExampleState extends State { setxxxstate getxxxstate

70 public class ExampleStatefulCorelet extends StatefulCorelet { private ExampleState _instancestate; private ExampleState _globalstate; public void process(coreletrequest creq, CoreletResponse cres) { if (_instancestate == null) { _instancestate = (ExampleState) getinstancestate(); if (_instancestate == null) { _instancestate = new ExampleState(); setinstancestate(_instancestate); if (_globalstate == null) { _globalstate = (ExampleState) getglobalstate(); if (_globalstate == null) { _globalstate = new ExampleState(); setglobalstate(_globalstate); // State class definiton public static class ExampleState extends State { getxxxstate setxxxstate getmodulestate setmodulestate public ExampleState getmodulestate() { if (_modulestate == null) { _modulestate = (ExampleState) user.getmodulestate(getcoreletconfig().getmoduleconfig()); if (_modulestate == null) { _modulestate = new ExampleState(); user.setmodulestate(getcoreletconfig().getmoduleconfig(), _modulestate); return _modulestate;

71 _modulestate public ExampleState getdomaincoreletstate() { if (_domaincoreletstate == null) { _domaincoreletstate = (ExampleState) domain.getcoreletstate(getcoreletconfig()); if (_domaincoreletstate == null) { _domaincoreletstate = new ExampleState(); domain.setcoreletstate(getcoreletconfig(), _domaincoreletstate); return _domaincoreletstate; public ExampleState getdomainmodulestate() { if (_domainmodulestate == null) { _domainmodulestate = (ExampleState) domain.getmodulestate(getcoreletconfig().getmoduleconfig()); if (_domainmodulestate == null) { _domainmodulestate = new ExampleState(); domain.setmodulestate(getcoreletconfig().getmoduleconfig(), _domainmodulestate); return _domainmodulestate;

72 <!-- example for connection URLs of the type jdbc:<driver>://<host>/<database> --> <Connection id="--connectionid--" driverclass="--driverclass--" exceptionshaltstartup="--true/false--"> <ConnectionParameters driver="--driver--" host="--host--" database="--database--" /> <ConnectionCredentials username="--dbusername--" password="--dbpassword--" /> <PoolParameters minsize="--minpoolsize--" maxsize="--maxpoolsize--" maxidletime="--maxconnectionidletime--" maxreuse="--maxconnectionreuse--" /> </Connection> <!-- Example using URL instead of parameters --> <Connection id="--connectionid--" driverclass="--driverclass--" exceptionshaltstartup="--true/false--"> <ConnectionURL url="--jdbcurl--" /> <ConnectionCredentials username="--dbusername--" password="--dbpassword--" /> <PoolParameters minsize="--minpoolsize--" maxsize="--maxpoolsize--" maxidletime="--maxconnectionidletime--" maxreuse="--maxconnectionreuse--" /> </Connection>

73

74 // Getting the connection Connection con; try { // in Corelets con = getconnection("ct-domain"); // elsewhere con = Server.getServer().getConnection("ct-domain"); catch (SQLException e) { // Handle connection error try { // Perform SQL operations catch (SQLException e) { // Handle SQL error finally { try { con.close(); catch (SQLException e) { // Handle connection closing error

75 import org.apache.log4j.logger; private static final Logger log = Logger.getLogger(<logger name>); if (log.isdebugenabled()) log.debug("current time is: "+System.currentTimeMillis()+"ms since 1. January 1970");

76 <appender name="demoappender" class="org.apache.log4j.dailyrollingfileappender"> <param name="datepattern" value="'.'yyyy-mm-dd" /> <param name="file" value="${com.coretrek.machete.log.dir/demoappender.log" /> <layout class="org.apache.log4j.patternlayout"> <param name="conversionpattern" value="%d{iso8601 %-5p %-25t %-35c [%x] %m%n" /> </layout> </appender>

77 <category name="demo.democategory" additivity="false"> <priority value="debug" /> <appender-ref ref="demoappender" /> </category>

78

79 public FormParser createform() { InputField field1 = new TextField(/* Constructor parameters*/); InputField field2 = new TextField(/* Constructor parameters*/); InputField field3 = new TextField(/* Constructor parameters*/); FormParser form = new FormParser(getId() getnamespace()); form.addinputfield(field1); form.addinputfield(field2);

80 form.addinputfield(field3); Validator range = new RangeCheckValidator(/* Constructor parameters*/); Validator match = new MatchValidator(/* Constructor parameters*/); form.addvalidator("numberfield", range); form.addvalidator(new String[] {"pass1", "pass2", match); ## This assumes that the Corelet has a method called getform(), which ## returns a FormParser object. $this.form.startform("formname") ## To print out the field named "field1" $this.form.field1 $this.form.endform

81 public void process(coreletrequest req, CoreletResponse res) { String formsubmitted = req.getstringparameter(formparser.parameter_form_submitted); if (formsubmitted.equals("formname")) { form.process(req); if (userrequestedsave && form.validate()) { saveformdata(form); private void saveformdata(formparser form) { String stringfield = form.getstring("stringfieldname"); Date datefield = form.getdate("datefieldname"); int intfield = form.getint("intfieldname"); Object customobject = form.getobject("customobjectfieldname");

82

83

84

85

86 public class ExampleComponent extends WebmacroComponent {

87 // Statisk definert Componenet ID public static final String COMPONENT_ID = "ExampleComponent"; // WebMacro template for Componenten // Det er egen hjelpefunksjon for å lage den som gir den samme navn som klassen +".wm", og // peker til at WebMacro filen ligger i samme mappe/pakke som klassen. private static final String TEMPLATE = classtotemplate(examplecomponent.class); // Default konstruktør - når denne brukes så kan Componenten kun // oppstå en gang under en parent public ExampleComponent() { super(component_id); // Konstruktør som tar ID som parameter public ExampleComponent(String id) { super(id); // Process kan implementeres ved behov protected void process(componentrequest creq, ComponentResponse cres) { // DisplayPrepare kan implementeres ved behov protected void displayprepare() { public String gettemplate() { return TEMPLATE;

88 // ExampleComponentCorelet.java public class ExampleComponentCorelet extends Corelet implements ComponentHolder { // Componentet som vi bruker. private Component _component; // getnamespace metoden som man må implementere fra ComponentHolder public String getnamespace() { // Denne metoden vil alltid se slik ut for Coreletter return getid(); // process for Coreletten public void process(coreletrequest creq, CoreletResponse cres) { // Pass på at vi har en instans av Component if (_component == null) { _component = new ExampleComponenet("Example"); // Kall opp process på Component. Dette vil videre kalle den implementerte // process metoden på Componetet etter at kontekstverdier er satt. _component.process(this, creq); public void displayprepare() { // Kall opp displayprepare på Componenten, som vil kalle videre til den faktisk // implementasjonen etter at kontekst har blitt satt _component.displayprepare(this); /** * Denne metoden vil gjøre det mulig å få tak i Componenten i WebMacro. */ public Component getcomponent() { return _component; // gettemplate metoden må også implementeres her. ## ExampleComponentCorelet.wm ## Dette vil hente ut Componentet, og så vil det i tur rendere seg selv med sin template der det plasseres. $this.component

89 public class StateComponent extends WebmacroComponent { private StateComponentState _state; protected void process(componentrequest creq, ComponentResponse cres) { if (_state == null) { _state = (StateComponentState) getstate(); if (_state == null) { _state = new StateComponentState(); setstate(_state); // Bruk staten private static final class StateComponentState extends State {

90 public TabContainer createtabcontainer() { // Første steg er å opprette selve TabContaineren TabContainer result = new TabContainer("TabContainer", "details"); // Vi har satt at default tabben skal være details, vi må da sikre at vi legger // til en tab med den IDen

91 // Den første tabben vi legger til her er også den som kommer til å // ende opp som default tab. result.addcontainedcomponent(new CompanyDetailComponent("details")); result.addcontainedcomponent(new CompanyAddressComponent("address")); result.addcontainedcomponent(new CompanyContactsComponent("contacts")); // TabContainer er nå initialisert, den må videre brukes som en vanlig Component return result;

92

93 <Themes> <Default id="standard" /> <Common logout="com/corelets/htmldesign/logout.wm" restore="com/corelets/htmldesign/restore.wm" replacementcorelet="com/corelets/htmldesign/replacementcorelet.wm" serverdown="com/corelets/htmldesign/serverdown.wm" exception="com/corelets/htmldesign/exception.wm" /> <Theme id="standard" description="the Blue Dull" frameset="com/corelets/htmldesign/standard/frameset.wm" stylesheet="com/corelets/htmldesign/standard/css.wm" topbar="com/corelets/htmldesign/standard/topbar.wm" topsize="26" corelet="com/corelets/htmldesign/standard/corelet.wm" mainlet="com/corelets/htmldesign/standard/applicationmodemainlet.wm" themeinclude="com/corelets/htmldesign/standard/themeinclude.wm" workbench="com/corelets/htmldesign/standard/workbench.wm" staticcontent="themes/standard" /> </Themes>

94 <link rel="stylesheet" href="$ccs_abscontextpath/stylesheet/$ccs_theme.id" type="text/css" /> #parse "$CCS_Theme.ThemeInclude" #set $themehtmlroot="$htmlroot/$ccs_theme.staticcontent"

95 themes/<themeid>

96

97

98 corelets.xml <?xml version="1.0" encoding="iso "?> <Dictionary> <Key key="module"> <Key key="modulepart"> <Key key="text"> <Value lang="no_no">teksten på norsk</value> <Value lang="en_us">the text in english</value> </Key> </Key> </Key> </Dictionary>

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

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

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

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

Detaljer

INF 1010, vår 2005 Løsningsforslag uke 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

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Stein Gjessing, Institutt for informatikk, Universitetet i Oslo INF1010 Våren 2015 Feilsituasjoner og unntak i Java (Engelsk: Exception) Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Jeg prøvde å bestille billett med Air France:

Detaljer

INF1000 - Løsning på seminaropppgaver til uke 8

INF1000 - Løsning på seminaropppgaver til uke 8 INF1000 - Løsning på seminaropppgaver til uke 8 Oppgave 1 a) for(string nokkel : studenter.keyset){ System.out.println(nokkel); Studenten sitt navn blir skrevet ut. b) for(student dennestudenten : studenter.values()){

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

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

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

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

Detaljer

Kalkulator-leksjonen (nesten ferdig)

Kalkulator-leksjonen (nesten ferdig) Kalkulator-leksjonen (nesten ferdig) Introduksjon I denne leksjonen vil du lære hvordan du kan koble FXML-koden til Java-koden og gjøre app-en levende (interaktiv)! Steg 1: Opprette app-pakke, app-klasse,

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

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

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2 11.2 Korteste vei i en graf 11.2.1 Dijkstras metode En graf er et system med noder og kanter mellom noder. Grafen kalles rettet Notasjon Verdien

Detaljer

Implementering av caching ved hjelp av Spring. Christian Vestøl 27.04.06

Implementering av caching ved hjelp av Spring. Christian Vestøl 27.04.06 Implementering av caching ved hjelp av Spring Christian Vestøl 27.04.06 Agenda Kort introduksjon til Spring med Spring Praktiske eksempler Forskjellige rammeverk for caching April 2006 2 Kort om Spring

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

SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM

SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM SAS FANS NYTT & NYTTIG FRA VERKTØYKASSA TIL SAS 4. MARS 2014, MIKKEL SØRHEIM 2 TEMA 1 MULTIPROSESSERING MED DATASTEGET Multiprosessering har lenge vært et tema i SAS Stadig ny funksjonalitet er med på

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

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

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

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

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

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

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

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Mandag 6. august 2012, kl. 15:00-19:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikrer Rune Sætre. Kontaktperson under

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

OOT Seminar H-97 CORBA. Praktisk del

OOT Seminar H-97 CORBA. Praktisk del OOT Seminar H-97 CORBA Praktisk del Valg av ORB implementasjon Har valgt å bruke Visigenic sin ORB implementsjon ORB en er 100% Java kodet Bygger på OMG sin IDL to Java language mapping fra Jun 97 Gratis

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

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java INF1010 våren 2017 Onsdag 25. januar Litt om unntak i Java Stein Gjessing Nytt tema: Feilhåndtering (IO: Innlesing/Utskrift) n En metode som kan komme til å gjøre en IO-feil på fil må enten behandle denne

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

/** * A cache of words and their stems */ static private Map<String, String> cache = new WeakHashMap<String, String>();

/** * A cache of words and their stems */ static private Map<String, String> cache = new WeakHashMap<String, String>(); package com.dlj.ir.analysis.ma; import java.util.map; import java.util.weakhashmap; * Marathi light stemmer- removes number, gender and case suffixes from nouns and adjectives * Done by Ljiljana Dolamic(University

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

Hentet fra Suns Totorial:

Hentet fra Suns Totorial: Sun s Hello-eksempel Hentet fra Suns Totorial: http://java.sun.com/j2se/1.4.2/docs/guide/idl/gshome.html Andre nyttige URIer: Java IDL documentation: http://java.sun.com/j2se/1.4.2/docs/guide/idl/index.html

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

Eksamen Objektorientert Programmering 2012

Eksamen Objektorientert Programmering 2012 Eksamen Objektorientert Programmering 2012 Høgskolen i Østfold 2012-05-09 Emnekode Emne ITF10611 Dato 2012-05-09 Eksamenstid 09:00-13:00 Hjelpemidler Faglærer Objektorientert Programmering To A4-ark (fire

Detaljer

Presentasjon av gruppe 7: Erik Østensen, Henning Østensen og Kenneth Ådalen

Presentasjon av gruppe 7: Erik Østensen, Henning Østensen og Kenneth Ådalen Presentasjon av gruppe 7: Erik Østensen, Henning Østensen og Kenneth Ådalen Hva er ibatis Rammeverk laget for: Forenkling av database oppkoblinger Separering av SQL kode fra kildekode Data access objects

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

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

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

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

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

< 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

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

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1

AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1 AlgDat - Øvingsforelesning 1 Introduksjon til Python, lenkede lister og øving 1 Ole Kristian Pedersen, Høst 2016 Agenda Introduksjon til Python for begynnere Intro til øving 1 Litt om lenkede lister Øvingssystemet

Detaljer

Eksamen Objektorientert Programmering 2013

Eksamen Objektorientert Programmering 2013 Eksamen Objektorientert Programmering 2013 Høgskolen i Østfold 2013-01-07 Emnekode Emne ITF10611 Dato 2013-01-07 Eksamenstid 09:00-13:00 Hjelpemidler Faglærer Objektorientert Programmering To A4-ark (fire

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

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

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

INF1000: Forelesning 7. Konstruktører Static

INF1000: Forelesning 7. Konstruktører Static INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en bestemt type. Objekter

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

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

XML og JDOM. Helge Furuseth

XML og JDOM. Helge Furuseth XML og JDOM Helge Furuseth furuseth@idi.ntnu.no XML XML = Extensible Markup Language Basert på SGML Standard Generalized Markup Language HTML = Hypertext Markup Language Også basert på SGML Mange likheter

Detaljer

INF1000: Forelesning 7

INF1000: Forelesning 7 INF1000: Forelesning 7 Klasser og objekter del 2 Konstruktører Static UML REPETISJON 2 Repetisjon Repetisjon forts. Verden består av objekter av ulike typer (klasser). Ofte er det mange objekter av en

Detaljer

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

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

Detaljer

Dagens 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

Objektorientert Programmering Ekstraordinær eksamen 2014

Objektorientert Programmering Ekstraordinær eksamen 2014 Objektorientert Programmering Ekstraordinær eksamen 2014 Høgskolen i Østfold 2014-01-13 Emnekode Emne ITF10611 Dato 13.01.2014 Eksamenstid 09:00-13:00 Hjelpemidler Faglærer Objektorientert Programmering

Detaljer

INF1010. Grensesnittet Comparable<T>

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

Detaljer

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

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

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

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007.

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007. Object interaction Grunnleggende programmering i Java Monica Strand 3. september 2007 1 Innhold Til nå: Hva objekter er og hvordan de implementeres I klassedefinisjonene: klassevariable (fields), konstruktører

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

INF1010 våren 2018 tirsdag 23. januar

INF1010 våren 2018 tirsdag 23. januar INF1010 våren 2018 tirsdag 23. januar I/O og litt om bruk av unntak i Java Stein Gjessing Lesing fra terminal og fil navn: mininn Bruk Scanner: Scanner mininn = new Scanner(); Type: Scanner boolean

Detaljer

INF2100. Oppgave 1, 2 og 3. Løsningsforslag til oppgaver 23. og 24. september Her er det mange mulige løsninger her er én: import java.io.

INF2100. Oppgave 1, 2 og 3. Løsningsforslag til oppgaver 23. og 24. september Her er det mange mulige løsninger her er én: import java.io. INF2100 Løsningsforslag til oppgaver 23. og 24. september 2010 Oppgave 1, 2 og 3 Her er det mange mulige løsninger her er én: import java.io.*; class E { public static void main(string arg[]) { Scanner.init();

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

Avdeling for ingeniørutdanning Institutt for teknologi

Avdeling for ingeniørutdanning Institutt for teknologi Avdeling for ingeniørutdanning Institutt for teknologi Oppgavetittel: Lab Fag(nr./navn): DOPS2021 - Operativsystemer Gruppemedlemmer: T. Alexander Lystad Faglærer: Karoline Moholth Dato: 15. oktober 2009

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

import java.util.arraylist;

import java.util.arraylist; import java.util.arraylist; * Klassen som generer TerminListe * @author young * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates

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

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

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

(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

Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter

Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter DCOM Distributed Component Object Model Almir Delkic og Frank Jensen Institutt for Informatikk, Universitetet i Oslo, oktober 2003 Introduksjon Utvikling av distribuerte applikasjoner Utvidelse av COM

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

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 26. februar 2014 1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Vi tar utgangspunkt i dette programmet for

Detaljer

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

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

Detaljer

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

Eksamen. Objektorientert Programmering IGR 1372

Eksamen. Objektorientert Programmering IGR 1372 + JVNROHQL1DUYLN $YGHOLQJIRU7HNQRORJL Eksamen i Objektorientert Programmering IGR 1372 7LG'HVHPEHU± 7LOODWWHKMHOSHPLGOHU 6NULYHVDNHU2UGE NHU -DYD6RIWZDUH6ROXWLRQV)RXQGDWLRQVRI3URJUDP 'HVLJQVNUHYHWDY/HZLV

Detaljer

EKSAMEN I FAG TDT4180 - MMI Lørdag 11. august 2012 Tid: kl. 0900-1300

EKSAMEN I FAG TDT4180 - MMI Lørdag 11. august 2012 Tid: kl. 0900-1300 Side 1 av 8 NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP Faglig kontakt under eksamen: Dag Svanæs, Tlf: 73 59 18 42 EKSAMEN I FAG TDT4180 - MMI Lørdag

Detaljer

Oppgave 1 (Opprett en database og en tabell)

Oppgave 1 (Opprett en database og en tabell) Oppgave 1 (Opprett en database og en tabell) 1) I «Object Explorer» (i «SQL Server Management Studio»), høyreklikk over Databases : 1 2 2) Skriv så databasenavnet og klikk OK: 3) Plasser så kursoren på

Detaljer

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon

Kapittel 9. Distribusjon. Fjernbruker. Tjenermaskin LAN WAN. Nærbruker. Figur 9-1: En enkel klient/tjener distribusjon Kapittel 9 Distribusjon Tjenermaskin Fjernbruker LAN Nærbruker WAN Figur 9-1: En enkel klient/tjener distribusjon 195 Tjenermaskin Fjernbruker LAN Replikert tjener Nærbruker WAN Figur 9-2: Klient/tjener-konfigurasjon

Detaljer

INF2440 Prøveeksamen, løsningsforslag, 20 mai Arne Maus PSE, Inst. for informatikk

INF2440 Prøveeksamen, løsningsforslag, 20 mai Arne Maus PSE, Inst. for informatikk INF2440 Prøveeksamen, løsningsforslag, 20 mai 2015 Arne Maus PSE, Inst. for informatikk 1 Prøveeksamen Er en modell av hva du får til eksamen: - like mange (+-1) oppgaver som eksamen og nesten samme type

Detaljer

INF1010, 21. januar 2016. Klasser med parametre = Parametriserte klasser = Generiske klasser

INF1010, 21. januar 2016. Klasser med parametre = Parametriserte klasser = Generiske klasser INF1010, 21. januar 2016 Klasser med parametre = Parametriserte klasser = Generiske klasser Stein Gjessing Inst. for Informatikk Universitetet i Oslo Først litt repetisjon fra i går class LagBiler { public

Detaljer

Løsningsforslag, inf101, våren 2001

Løsningsforslag, inf101, våren 2001 Løsningsforslag, inf101, våren 2001 Anders Brunland Oppgave 1 (15%) a) Navn på søker trenger ikke være med i sak-objektet siden den kan hentes fra det første dokumentet i saken. Variabelen FRIST er strengt

Detaljer

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19 Prosedyrer Lars Vidar Magnusson October 26, 2011 Lars Vidar Magnusson () Forelesning i DAS 11.10.2011 October 26, 2011 1 / 19 Repetisjon om triggere og prosedyrer Triggere og prosedyrer ligner på hverandre

Detaljer

Logo med FXML. Introduksjon. Skrevet av: Hallvard Trætteberg

Logo med FXML. Introduksjon. Skrevet av: Hallvard Trætteberg Logo med FXML Skrevet av: Hallvard Trætteberg Kurs: Javafx Introduksjon En viktig del av det å lage app-er er å utforme skjerminnholdet, dvs. alt app-en inneholder av grafikk, knapper, lister, osv. Formålet

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

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN! Å lage sikre klasser Unntaksklassene i Java-API-et Unntakshåndtering i databasesammenheng try-catch-finally-setningen Trelagsarkitektur; egen databaseklasse Transaksjonshåndtering LC191D Videregående programmering

Detaljer

Kontinuasjonseksamensoppgave i TDT4100 Objektorientert programmering

Kontinuasjonseksamensoppgave i TDT4100 Objektorientert programmering Institutt for datateknikk og informasjonsvitenskap Kontinuasjonseksamensoppgave i TDT4100 Objektorientert programmering Faglig kontakt under eksamen: Hallvard Trætteberg Tlf.: 918 97 263 Eksamensdag: Fredag

Detaljer

INF1010 Eksamenstips. Løsningsforslag prøveeksamen del 1.

INF1010 Eksamenstips. Løsningsforslag prøveeksamen del 1. INF1010 Eksamenstips Løsningsforslag prøveeksamen del 1. michael@ifi.uio.no INF1010 FSE 25. mai 2011 (uke 21) 2 Les igjennom hele oppgaven. Les igjennom hele oppgaven en gang til, marker i teksten ting

Detaljer

Feilmelding Årsak Løsning

Feilmelding Årsak Løsning Request for the permission of type 'System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed Feil oppstod i Window.DialogWindow:

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

Å lese tall fra en fil, klassen Scanner

Å lese tall fra en fil, klassen Scanner Å lese tall fra en fil, klassen Scanner 1. Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2. Kan skanne teksten etter data av ulike typer. 3. Kan kun skanne framover i teksten. Vis

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

Eksamen Oppgave a) public class DayTime { public final int hours, minutes;

Eksamen Oppgave a) public class DayTime { public final int hours, minutes; Eksamen 2012 Del 1 - Innkapsling (20%) Gitt følgende klasse, som representerer et tidspunkt på dagen: public class DayTime { public final int hours, minutes; public DayTime(int hours, int minutes) { this.hours

Detaljer

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java Dagens tema: Kompilatorens struktur Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java De ulike modulene Prosjektet Hva skal Del-0 gjøre? Feilmeldinger Testutskrifter Siste råd og påbud

Detaljer

Litt om pakker og mest om data inn og ut

Litt om pakker og mest om data inn og ut Litt om pakker og mest om data inn og ut IN105-javainnogut-1 import java.io.*;. Data inn fra tastaturet lesemetode tastatur BufferedReader void lesemetode (String [ ] args) throws IOException {... /* sett

Detaljer

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær: TRÆR Vi skal i denne forelesningen se litt på ulike typer trær: Generelle trær (kap. 4.1) Binærtrær (kap. 4.2) Binære søketrær (kap. 4.3) Den siste typen trær vi skal behandle, B-trær (kap. 4.7) kommer

Detaljer

INF2100. Oppgave 1. Oppgave 2 4. Løsningsforslag til oppgaver uke 40 og Se figur 1 på neste side.

INF2100. Oppgave 1. Oppgave 2 4. Løsningsforslag til oppgaver uke 40 og Se figur 1 på neste side. INF2100 Løsningsforslag til oppgaver uke 40 og 41 2014 Oppgave 1 Se figur 1 på neste side. Oppgave 2 4 Her er det mange mulige løsninger her er én: import java.io.*; import java.util.*; class E { public

Detaljer

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java

Dagens tema: Kompilatorens struktur. De ulike modulene Prosjektet. Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java Dagens tema: Kompilatorens struktur Oppbyggingen Pakker i Java Avbrudd («exceptions») Enum-klasser i Java De ulike modulene Prosjektet Hva skal del-0 gjøre? Feilmeldinger Testutskrifter Siste råd og påbud

Detaljer

Algoritmer og datastrukturer A.1 BitInputStream

Algoritmer og datastrukturer A.1 BitInputStream Vedlegg A.1 BitInputStream Side 1 av 8 Algoritmer og datastrukturer A.1 BitInputStream A.1 BitInputStream A.1.1 Instansiering BitInputStream har fire konstruktører og to konstruksjonsmetoder (eng: factory

Detaljer