koodipolku iteraation muokkauksessa Dokumentti: koodipolkuesimerkki.doc Päiväys: Projekti : AgileElephant

Koko: px
Aloita esitys sivulta:

Download "koodipolku iteraation muokkauksessa Dokumentti: koodipolkuesimerkki.doc Päiväys: Projekti : AgileElephant"

Transkriptio

1 AgilElephant Koodipolku iteraation muokkauksessa Tekijä: Pauli Vesterinen Omistaja: ElectricSeven Aihe: Koodipolku iteraation muokkauksessa Sivu 1 of 15

2 Dokumentti Historia Muutoshistoria Revision Numero Revision Päiväys Yhteenveto muutoksista Revision tekijä Ensimmäinen versio Katselmoijat lisätty Muutoksia dokumentti historiaan. Esa Mommo Koodipolku iteraation muokkauksessa Pauli Vesterinen Hyväksyjät Tämä dokumentti vaatii seuraavien henkilöiden hyväksymiset Nimi Juha Kaarlas Tehtävä Projektipäällikkö Katselmoinnit Tämä dokumentti vaatii seuraavien henkilöiden katselmoinnin Nimi Juha Kaarlas Tehtävä Projektipäällikkö Jakelu Tämä dokumentti jaetaan seuraaville henkilöille Nimi Asiakas Juha Kaarlas Tehtävä koodipolkuun tutustuminen informatiivinen Aihe: Koodipolku iteraation muokkauksessa Sivu 2 of 15

3 Sisällysluettelo 1. Esittely Tarkoitus Kuvaus Viittaukset Iteraation muokkaaminen Iteraation muokkaaminen käyttäjän näkökulmasta Iteraation muokkaus kooditasolla Koodilistaukset viewiteration.jsp modifyiteration.jsp gethorizondetails.java cyclemanagerbean.java (vain metodit, jotka mainittu) modifyiteration.java...13 Aihe: Koodipolku iteraation muokkauksessa Sivu 3 of 15

4 1. Esittely 1.1 Tarkoitus Koodipolun tarkoituksena on luoda katsaus järjestelmän rakenteeseen esimerkin avulla. Polun avulla selviää, miten joku toiminto kulkee läpi eri luokkien kautta järjestelmässä. 1.2 Kuvaus Tässä dokumentissa käydään läpi esimerkin avulla AgilElephant -järjestelmän rakennetta sisäisesti. Esimerkkinä toimii iteraation muokkaus, josta käy ilmi mitä luokkia ja mitä metodeja kutsutaan ja miten niitä käytetään. Luokat ovat tarkemman tutkimisen mahdollistamiseksi liitetty tekstiin. 1.3 Viittaukset Koodiesimerkit joihin järjestelmässä viitataan, on AgilElephant -järjestelmästä otettuja luokkia. Niiden versiot ovat senhetkiset tämän dokumentin luontihetkellä. Luokkien sisältö saattaa muuttua dokumentin luomisajankohdan jälkeen. Tarvitaan lisäksi: AgilElephant Technical specification, techspec.doc Aihe: Koodipolku iteraation muokkauksessa Sivu 4 of 15

5 2. Iteraation muokkaaminen 2.1 Iteraation muokkaaminen käyttäjän näkökulmasta Iteraation muokkaus tapahtuu järjestelmässä kirjautumalla ensin sisään, sitten valitsemalla joko pääsivulta tai portfolion kautta iteraation ja klikkaamalla Actions -laatikosta Modify iteration. Tämän jälkeen avautuu sivu, jonka lomakkeeseen esitäyttyy iteraation tiedot. Tietoja voi muokata suoraan ja painaa lopuksi Save -painiketta, jolloin tiedot tallennetaan kyseiseen iteraatioon ja palataan iteraation tietojen tarkastelusivulle. 2.2 Iteraation muokkaus kooditasolla Aloitetaan koodin tutkiminen iteraation tiedot esittävältä viewiteration.jsp?iterationid=1 sivulta. Tässä tarkastellaan iteraatiota, jonka id tässä on 1. Kaikki jsp -sivut löytyvät polusta: agil/code/web/jsps/. Modify iteration -linkki ohjaa iteraation id:n modifyiteration.jsp - sivulle parametrina: modifyiteration.jsp?iterationid=1 Muokkaussivu (modifyiteration.jsp) ottaa parametrina saamansa iteraation id:n talteen requestista. Sitten samaisella jsp-sivulla käytetään tagia, joka lataa kyseisen iteraation tiedot esitäytettäväksi lomakkeen kenttiin: <agile:gethorizondetails horizonid="<%=iid%>"> Tämä luokka löytyy polusta: agil/code/web/src/fi/hut/soberit/agile/web/taglib/ GetHorizonDetails.java käyttää CycleManager- ja UserManager beaneja, jotka löytyvät: agil/code/app/src/fi/hut/soberit/agile/logic/beans/ Beaneihin luodaan yhteys dostarttag() -metodissa. Samaisessa metodissa haetaan myös cyclemanagerbean -luokan gettimehorizondetails() -metodin avulla iteraatio-olio tietoineen käytettäväksi, parametrinä iteraation id. Tämä tapahtuu hibernaten get() -metodilla, joka palauttaa olion. Iteraatio on Timehorizon -luokan olio, Timehorizon.java löytyy polusta: agil/code/hibernate/src/fi/hut/soberit/agile/hibernate/ GetHorizonDetails.java -luokan dostarttag() -metodissa asetetaan jsp-sivulla käytettävät attribuutit hakemalla niiden tiedot Timehorizon.java -luokan get -metodeilla. Nyt modifyiteration.jsp -sivun lomakkeeseen(modifyiterationform) voidaan ladata iteraation tietoja <%=attribuutinnimi%> -tagien avulla. Kalenterin käyttämät scriptit löytyvät polusta: agil/code/web/jsps/script/cal/ Kun tiedot on muutettu kenttiin halutuiksi ja painetaan save, lähetetään tiedot servletin ModifyIteration.java käsiteltäviksi. Tämä servlet löytyy polusta: agil/code/web/src/fi/hut/soberit/agile/web/servlets/ ModifyIteration.java -luokassa otetaan sitten talteen jsp-sivun lähettämät tiedot handlerequest() -metodissa. Tässä metodissa luodaan yhteys cyclemanager -beaniin, joka palauttaa iteraatio-olion hibernatea käyttäen. Nyt tähän iteraatio-olioon voidaan tallentaa sen tietoja erilaisten set- metodien avulla. Tiedot tallennetaan kantaan kutsumalla cyclemanager -beanin modifyiteration() -metodia, joka kirjoittaa kantaan käyttämällä hibernatea. ModifyIteration.java - servletin lopussa on vielä uudelleenohjauskäsky, jolla serveri tietää ohjata viewiteration.jsp -sivulle, näyttämään muutetut arvot. Aihe: Koodipolku iteraation muokkauksessa Sivu 5 of 15

6 3. Koodilistaukset 3.1 viewiteration.jsp include file="page_start.jsp" %> include file="page_header.jsp" %> <% Integer iid = new Integer(0); iid = new Integer(request.getParameter("iterationId")); catch (Exception e) { if (iid.intvalue()!= 0) { %> <agile:gethorizondetails horizonid="<%=iid%>"> <% pagecontext.setattribute("newissuelinkbacklog", horizonbacklog); %> </agile:gethorizondetails> <% %> <%@ include file="main_links.jsp" %> <!-- actions: contains page specific actions --> <div id="actions"><div> <h1>actions</h1> <a href="modifyiteration.jsp?iterationid=<%=iid%>">modify iteration</a> <a href="setiterationmembers.jsp?iterationid=<%=iid%>">set iteration members</a> <a href="removehorizon?iterationid=<%=iid%>" onclick="returnconfirm('are you sure you want to remove this iteration?')" />Remove iteration</a> </div></div> <!-- main content --> <div id="main"><div> <% Integer iterationbacklogid = new Integer(0); %> <agile:gethorizondetails horizonid="<%=iid%>"> <% iterationbacklogid = horizonbacklog; %> <p><a href="viewrelease.jsp?releaseid=<%=horizonparenthorizonid%>"><%=horizonparenthorizonna me%> release</a> <agile:listreleaseproducts releaseid="<%=horizonparenthorizonid%>"> <a href="viewproduct.jsp?productid=<%=productid%>"><%=productname%></a> </agile:listreleaseproducts> </p> <h1><%=horizonname%> iteration (<%=horizonstart%> - <%=horizonend%>)</h1></p> <p><b>goals:</b> <%=horizongoals%></p> <p><b>qa Goals:</b> <%=horizonqagoals%></p> <p><b>iteration leader:</b> <%=horizonleadname%></p> </agile:gethorizondetails> <h3>backlog items in iteration backlog</h3> <form method="post" action="bulkmoveissues"> <input type="hidden" name="iterationid" value="<%=iid%>" /> <input type="hidden" name="backlogid" value="<%=iterationbacklogid%>" /> <input type="hidden" name="callingpage" value="viewiteration.jsp" /> <table> <th>backlog item ID</th> <th>summary</th> <th>assignee</th> <th>reporter</th> <th>priority</th> <th>status</th> Aihe: Koodipolku iteraation muokkauksessa Sivu 6 of 15

7 <th>completeness</th> <th>move</th> <agile:listbacklogissues backlogid="<%=iterationbacklogid%>"> <td><a href="viewissue.jsp?issueid=<%=issueid%>"><%=issuevisibleid%></a></td> <td><%=issuesummary%></td> <td><%=issueassigneename%></td> <td><%=issuereportername%></td> <td><%=instanceitemprioritytext%></td> <td><%=instanceitemstatustext%></td> <td><%=issuecompleteness%></td> <td><input class="checkbox" type="checkbox" name="itemid<%=issueid%>" /></td> </agile:listbacklogissues> </table> Move selected items to another backlog <select name="backlogtoid" class="input150"> <agile:listmoveablebacklogs iterationid="<%=iid%>"> <option value="<%=moveablebacklogid%>"><%=moveablebacklogname%> <% if (moveablebacklogtype.equals(fi.hut.soberit.agile.hibernate.backlog.increment)) { %> (i) <% else if (moveablebacklogtype.equals(fi.hut.soberit.agile.hibernate.backlog.release)) { %> (r) <% else { %> (p) <% %> </agile:listmoveablebacklogs> </select> <input type="submit" class="button" name="submit" value="move" /> </form> <p> <a href="edititerationeffort.jsp?iterationid=<%=iid%>">change view to effort editing</a> </p> </div></div> <%@ include file="page_footer.jsp" %> <%@ include file="page_end.jsp" %> 3.2 modifyiteration.jsp <%@ include file="page_start.jsp" %> <%@ include file="page_header.jsp" %> <%@ include file="main_links.jsp" %> <% Integer iid = new Integer(0); iid = new Integer(request.getParameter("iterationId")); catch (Exception e) { %> <!-- actions: contains page specific actions --> <div id="actions"><div> <h1>actions</h1> </div></div> <!-- main content --> <div id="main"><div> <h1>modify iteration</h1> Aihe: Koodipolku iteraation muokkauksessa Sivu 7 of 15

8 <agile:printerror /> <agile:gethorizondetails horizonid="<%=iid%>"> <form method="post" name="modifyiterationform" action="modifyiteration"> <input type="hidden" name="iterationid" value="<%=iid%>" /> <input type="hidden" name="callingpage" value="modifyiteration.jsp" /> <table> <td>iteration name</td> <td><input class="input250" value="<%=horizonname%>" type="text" name="iterationname"/></td> <td>iteration start date</td> <td><input class="input250" id="iterationstartdate" value="<%=horizonstart%>" type="text" name="iterationstartdate"/><button id="iterationstartdatetrigger">...</button></td> <td>iteration end date</td> <td><input class="input250" id="iterationenddate" value="<%=horizonend%>" type="text" name="iterationenddate"/><button id="iterationenddatetrigger">...</button></td> <td>iteration leader</td> <td> <select name="iterationlead" class="input250"> <agile:listusers> <option value="<%=userid%>" <% if (userid.equals(horizonleadid)) { %>SELECTED<% %>><%=fullname%> </agile:listusers> </select> </td> <td>goals</td> <td><textarea name="goals" style="width:250px;height:100px"><%=horizongoals%></textarea></td> <td>qa Goals</td> <td><textarea name="qagoals" style="width:250px;height:100px"><%=horizonqagoals%></textarea></td> <td colspan="2" align="right"><input type="submit" class="button" name="submit" value="save" /></td> </table> </form> <script type="text/javascript"> Calendar.setup( { inputfield : "iterationstartdate", button : "iterationstartdatetrigger" ); Calendar.setup( { ); </script> inputfield : "iterationenddate", button : "iterationenddatetrigger" Aihe: Koodipolku iteraation muokkauksessa Sivu 8 of 15

9 </agile:gethorizondetails> <script type="text/javascript"> document.modifyiterationform.iterationname.focus(); </script> </div></div> include file="page_footer.jsp" %> include file="page_end.jsp" %> 3.3 gethorizondetails.java package fi.hut.soberit.agile.web.taglib; import java.io.*; import java.util.*; import javax.naming.*; import javax.rmi.portableremoteobject; import java.rmi.remoteexception; import javax.servlet.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import javax.servlet.http.*; import fi.hut.soberit.agile.web.*; import fi.hut.soberit.agile.logic.*; import fi.hut.soberit.agile.logic.beans.*; import fi.hut.soberit.agile.hibernate.*; import org.apache.log4j.logger; * Returns details regarding given timehorizon public class GetHorizonDetails extends TagSupport { * Standard log4j logger private Logger log = Logger.getLogger(getClass()); * The id of the horizon whose information to retrieve private Integer horizonid; * Sets the id of the horizon whose information to retrieve. Called automatically by the container (Tomcat) public void sethorizonid(integer horizonid) { this.horizonid = horizonid; * Returns the id of the timehorizon whose information to retrieve. Never called but required by the spec. public Integer gethorizonid() { return horizonid; * Retrieves the given timehorizon Aihe: Koodipolku iteraation muokkauksessa Sivu 9 of 15

10 public int dostarttag() throws JspException { HttpServletRequest request = (HttpServletRequest)pageContext.getRequest(); CycleManager cyclemanager = null; UserManager usermanager = null; InitialContext context = new InitialContext(); Object obj = context.lookup("cyclemanager"); CycleManagerHome cyclemanagerhome = (CycleManagerHome)PortableRemoteObject.narrow(obj, CycleManagerHome.class); cyclemanager = cyclemanagerhome.create(webhelper.getserversessionid(request)); Timehorizon horizon = cyclemanager.gettimehorizondetails(horizonid); String parenthorizonname = ""; if (horizon.getparenthorizon()!= null) { Timehorizon parenthorizon = cyclemanager.gettimehorizondetails(horizon.getparenthorizon()); parenthorizonname = parenthorizon.getname(); String horizonworktypename = ""; Integer horizonworktypeid = horizon.getworktype()!= null? horizon.getworktype() : new Integer(-1); if (horizonworktypeid.intvalue()!= -1) { HorizonWorkType worktype = cyclemanager.gethorizonworktypedetails(horizonworktypeid); horizonworktypename = worktype.getname(); cyclemanager.remove(); cyclemanager = null; obj = context.lookup("usermanager"); UserManagerHome usermanagerhome = (UserManagerHome)PortableRemoteObject.narrow(obj, UserManagerHome.class); usermanager = usermanagerhome.create(webhelper.getserversessionid(request)); User lead = null; if (horizon.gethorizonlead()!= null) lead = usermanager.getuserdetails(horizon.gethorizonlead()); usermanager.remove(); usermanager = null; pagecontext.setattribute("horizonid", horizonid); pagecontext.setattribute("horizonname", horizon.getname()); pagecontext.setattribute("horizonbacklog", horizon.getbacklog()); if (horizon.getparenthorizon()!= null) { pagecontext.setattribute("horizonparenthorizonid", horizon.getparenthorizon()); else { pagecontext.setattribute("horizonparenthorizonid", new Integer(0)); pagecontext.setattribute("horizonparenthorizonname", parenthorizonname); pagecontext.setattribute("horizontype", horizon.gettype()); pagecontext.setattribute("releaseworktypeid", horizonworktypeid); Aihe: Koodipolku iteraation muokkauksessa Sivu 10 of 15

11 pagecontext.setattribute("releaseworktypename", horizonworktypename); if (horizon.getduration()!= null) pagecontext.setattribute("horizonduration", horizon.getduration()); pagecontext.setattribute("horizonstart", WebHelper.dateToString(request, horizon.getstarttime())); pagecontext.setattribute("horizonend", WebHelper.dateToString(request, horizon.getendtime())); pagecontext.setattribute("horizongoals", horizon.getgoals()!= null? horizon.getgoals() : ""); pagecontext.setattribute("horizonqagoals", horizon.getqagoals()!= null? horizon.getqagoals() : ""); if (lead!= null) { pagecontext.setattribute("horizonleadid", lead.getuser_id()); pagecontext.setattribute("horizonleadname", WebHelper.formFullName(request, lead)); else { pagecontext.setattribute("horizonleadid", new Integer(0)); pagecontext.setattribute("horizonleadname", ""); return EVAL_BODY_INCLUDE; catch (InvalidSessionException e) { log.error("the session " + WebHelper.getServerSessionId(request) + " is invalid"); catch (DatastoreException e) { log.error("datastore exception occured while trying to get timehorizon details: " + e.getmessage()); catch (Exception e) { log.error("unknown exception occured while trying to get timehorizon details: " + e.getmessage()); if (cyclemanager!= null) { cyclemanager.remove(); catch (Exception e) { if (usermanager!= null) { usermanager.remove(); catch (Exception e) { return SKIP_BODY; public int doendtag() { return EVAL_PAGE; 3.4 cyclemanagerbean.java (vain metodit, jotka mainittu) * Returns the details of given timehorizon (release or iteration). timehorizonid Id of the timehorizon Aihe: Koodipolku iteraation muokkauksessa Sivu 11 of 15

12 An object representing all properties of a timehorizon, null if not found RemoteException DatastoreException public Timehorizon gettimehorizondetails(integer timehorizonid) throws RemoteException, DatastoreException { if (serversession == null) return null; Session hibernatesession = null; hibernatesession = serversession.openhibernatesession(); Timehorizon timehorizon = (Timehorizon)hibernateSession.get(Timehorizon.class, timehorizonid); hibernatesession.close(); hibernatesession = null; // what if null: timehorizon not found? return timehorizon; catch (HibernateException e) { log.error("failed to read timehorizon details: " + e.getmessage()); if (hibernatesession!= null) hibernatesession.close(); catch (Exception e1) { throw new DatastoreException(e.getMessage(), e); * Modifies the properties of the given iteration. iteration the iteration to be modified public void modifyiteration(timehorizon iteration) throws RemoteException, DatastoreException { if (serversession == null) return; /* verify start date, end date and duration first? Session hibernatesession = null; hibernatesession = serversession.openhibernatesession(); hibernatesession.update(iteration); hibernatesession.flush(); hibernatesession.close(); hibernatesession = null; catch (HibernateException e) { log.error("failed to update iteration properties: " + e.getmessage()); if (hibernatesession!= null) hibernatesession.close(); catch (Exception e1) { throw new DatastoreException(e.getMessage(), e); Aihe: Koodipolku iteraation muokkauksessa Sivu 12 of 15

13 3.5 modifyiteration.java package fi.hut.soberit.agile.web.servlets; import javax.servlet.*; import javax.servlet.http.*; import javax.rmi.portableremoteobject; import java.rmi.remoteexception; import javax.naming.initialcontext; import java.io.*; import java.util.*; import fi.hut.soberit.agile.logic.beans.*; import fi.hut.soberit.agile.hibernate.*; import fi.hut.soberit.agile.web.*; import fi.hut.soberit.agile.util.md5; import org.apache.log4j.logger; * ModifyIteration servlet is used to modify the properties of a iteration. On error the * user is sent back to the requesting page. On success the user is sent to viewiteration.jsp page. public class ModifyIteration extends HttpServlet { * Standard log4j logger private Logger log = Logger.getLogger(getClass()); * Handler for GET HTTP requests. Just dispatches the request to handlerequest. req The standard HttpServletRequest resp The standard HttpServletResponse public void doget(httpservletrequest req, HttpServletResponse resp) throws IOException, ServletException { handlerequest(req, resp); * Handler for POST HTTP requests. Just dispatches the request to handlerequest. req The standard HttpServletRequest resp The standard HttpServletResponse public void dopost(httpservletrequest req, HttpServletResponse resp) throws IOException, ServletException { handlerequest(req, resp); * Handler for POST and GET HTTP requests. Tries to modify the properties of given iteration req The standard HttpServletRequest resp The standard HttpServletResponse public void handlerequest(httpservletrequest req, HttpServletResponse resp) throws IOException, ServletException { RequestReader requestreader = new RequestReader(req); if (requestreader.getstring("cancel")!= null) { Aihe: Koodipolku iteraation muokkauksessa Sivu 13 of 15

14 WebHelper.bounce(req, resp); return; String iterationname = requestreader.getstring("iterationname"); Integer iterationid = requestreader.getinteger("iterationid"); Date startdate = WebHelper.stringToDate(req, requestreader.getstring("iterationstartdate")); Date enddate = WebHelper.stringToDate(req, requestreader.getstring("iterationenddate")); String goals = requestreader.getstring("goals"); String qagoals = requestreader.getstring("qagoals"); Integer iterationlead = requestreader.getinteger("iterationlead"); if (iterationname == null iterationname.length() == 0) { WebHelper.bounceWithError(req, resp, "Please specify a name"); return; if (iterationid == null) { WebHelper.bounceWithError(req, resp, "No iteration id specified"); return; CycleManager cyclemanager = null; // Retrieve a home interface to the CycleManagerBean and create a new remote interface InitialContext context = new InitialContext(); Object obj = context.lookup("cyclemanager"); CycleManagerHome cyclemanagerhome = (CycleManagerHome)PortableRemoteObject.narrow(obj, CycleManagerHome.class); String serversessionid = WebHelper.getServerSessionId(req); cyclemanager = cyclemanagerhome.create(serversessionid); Timehorizon iteration = cyclemanager.gettimehorizondetails(iterationid); iteration.setname(iterationname); iteration.setstarttime(startdate); iteration.setendtime(enddate); iteration.setgoals(goals); iteration.setqagoals(qagoals); iteration.sethorizonlead(iterationlead); cyclemanager.modifyiteration(iteration); cyclemanager.remove(); cyclemanager = null; String redirecturl = "viewiteration.jsp?iterationid=" + iterationid; resp.sendredirect(resp.encodeurl(redirecturl)); catch (Exception e) { if (cyclemanager!= null) cyclemanager.remove(); catch (Exception e1) { log.error("failed to modify iteration: " + e.getmessage()); Aihe: Koodipolku iteraation muokkauksessa Sivu 14 of 15

15 WebHelper.bounceWithError(req, resp, "Error: could not modify iteration: " + e.getmessage()); Aihe: Koodipolku iteraation muokkauksessa Sivu 15 of 15

HSMT Web-sovellustekniikoista

HSMT Web-sovellustekniikoista HSMT Web-sovellustekniikoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.1/29 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista

Lisätiedot

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 811122P (5 op.) 12.12.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

Lisätiedot

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä.

Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. Toisessa viikkoharjoituksessa on tavoitteena tutustua JUnit:lla testaukseen Eclipse-ympäristössä. JUnit-ympäristö 1. Luo tests -pakkaukseen uusi luokka. Nimeä VHTestit. 2. Laita VHTestit periytymään TestCase:sta

Lisätiedot

SEPA päiväkirja. Dokumentti: SEPA_diary_EM_PV.doc Päiväys: 26.10.2004 Projekti : AgileElephant Versio: V0.9

SEPA päiväkirja. Dokumentti: SEPA_diary_EM_PV.doc Päiväys: 26.10.2004 Projekti : AgileElephant Versio: V0.9 AgilElephant T-76.115 Esa Mommo, 57197J Pauli Vesterinen, 65220P Tekijä: Esa Mommo/Pauli Vesterinen Omistaja: ElectricSeven Aihe: Sivu 1 of 6 Dokumentti Historia Revisio Historia Revision päiväys: 26.10.2004

Lisätiedot

WWW ja servletit. Luku 10. 10.1 Johdanto

WWW ja servletit. Luku 10. 10.1 Johdanto Luku 10 WWW ja servletit Servletti (engl. servlet) eli palvelinsovelma on Java-kielinen olio, joka toimii WWW-palvelimen yhteydessä olevassa virtuaalikoneessa. Kaikkiin WWW-palvelimiin ei kuitenkaan ole

Lisätiedot

1 Tehtävän kuvaus ja analysointi

1 Tehtävän kuvaus ja analysointi Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.

Lisätiedot

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä OULUN YLIOPISTO Tietojenkäsittelytieteiden laitos Johdatus ohjelmointiin 81122P (4 ov.) 30.5.2005 Ohjelmointikieli on Java. Tentissä saa olla materiaali mukana. Tenttitulokset julkaistaan aikaisintaan

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Jyri Lehtonen (72039), jkoleh@utu.fi Azad Hajipour (72187), azhaji@utu.fi 10.6.2007 Sisältö 1. Tietokannan kuvaus... 1 1.1 Tietokannan rakenne... 1 1.2 Relaatiokaava

Lisätiedot

Java-API, rajapinnat, poikkeukset, UML,...

Java-API, rajapinnat, poikkeukset, UML,... Java-API, rajapinnat, r poikkeukset, UML,... Janne Käki 12.10.2006 Keskeisimmät Java-API:n pakkaukset API = Application Programming Interface eli sovellusohjelmointirajapinta (!) pakkaus (engl. package)

Lisätiedot

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant

dokumentin aihe Dokumentti: Testausraportti_I1.doc Päiväys: Projekti : AgileElephant AgilElephant Testausraportti I1 Tekijä: Petri Kalsi Omistaja: ElectricSeven Aihe: Testausraportti Sivu 1 / 5 Dokumentti Historia Muutoshistoria Revision Numero Revision Päiväys Yhteenveto muutoksista Revision

Lisätiedot

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) 1(37) PERIYTYMINEN (inheritance) YLILUOKKA (superclass) ALILUOKKA (subclass) A) on käytännöllinen ohjelmointitekniikka = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys) B) on käsitteiden

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma. Välikoe / 20.3 Vastaa neljään (4) tehtävään. Jos vastaat 5:een, 4 huonointa arvostellaan. Kunkin tehtävän vastaus eri konseptille. 1. Pöytätesti Pöytätestaa seuraava ohjelma. Tutki ohjelman toimintaa pöytätestillä

Lisätiedot

directive attr1= value1 attr2= value2 %>

directive attr1= value1 attr2= value2 %> HAAGA-HELIA OHJELMISTOKEHITYS 1(14) -elementti on olemassa kolmenlaisia elementtejä: A) Direktiivit A) Direktiivejä (directive element) B) Skriptejä (scripting selement) C) Toimintoelementtejä (action

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä.

Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä. Lomakkeet Lomake kannattaa asemoida taulukkoon: table. Silloin selitteet ja kentät saadaan sarakkeisiin. Kenttien ulkoasu voidaan määritellä tyyleillä. Lomakkeen tyylit kannattaa määritellä omaan, eriliseen,

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti Rinnakkaisohjelmointi kurssi Opintopiiri työskentelyn raportti Opintopiiri: Heikki Karimo, Jesse Paakkari ja Keijo Karhu Päiväys: 15.12.2006 Ohjelmointitehtävä C i C i : Säikeet ja kriittisen vaiheen kontrollointi

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

SEPA päiväkirja. Dokumentti: SEPA_diary_EM_PV.doc Päiväys: Projekti : AgileElephant Versio: V0.93

SEPA päiväkirja. Dokumentti: SEPA_diary_EM_PV.doc Päiväys: Projekti : AgileElephant Versio: V0.93 AgilElephant T-76.115 Esa Mommo, 57197J Pauli Vesterinen, 65220P Tekijä: Esa Mommo/Pauli Vesterinen Omistaja: ElectricSeven Aihe: Sivu 1 of 7 Dokumentti Historia Revisio Historia Revision päiväys: 29.11.2004

Lisätiedot

public static void main (String [] args)

public static void main (String [] args) HAAGA-HELIA OHJELMOINTI 1(5) OHJELMALUOKKA Ohjelma-luokan käynnistää public static void main (String [] args) main-metodiin voi koodata 1. ohjelman logiikan tai 2. luoda ohjelma-olion ja kutsua metodia,

Lisätiedot

Ohjelmointityö 3. Mikko Laamanen 185667

Ohjelmointityö 3. Mikko Laamanen 185667 Ohjelmointityö 3 Mikko Laamanen 185667 Sisällysluettelo Tehtävän määrittely ja ratkaisuperiaate... 1 Tehtävän määrittely... 1 Ratkaisuperiaate... 1 Ohjelman käyttöohje... 1 Syötteet ja tulosteet... 1 Ohjelman

Lisätiedot

16. Javan omat luokat 16.1

16. Javan omat luokat 16.1 16. Javan omat luokat 16.1 Sisällys Johdanto. Object-luokka: tostring-, equals-, clone- ja getclass-metodit. Comparable-rajapinta: compareto-metodi. Vector- ja ArrayList-luokat. 16.2 Javan omat luokat

Lisätiedot

YHTEYSSUHDE (assosiation)

YHTEYSSUHDE (assosiation) YHTEYSSUHDE (assosiation) -Mikä on yhteyssuhde? -Miten toteutan yhteyssuhteen? 1 Mikä on yhteyssuhde? Yhteyssuhde kuvaa kahden olion välistä suhdetta: Esim. Auto Henkilö, omistussuhde Tili Asiakas, omistussuhde

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

Lisätiedot

SENAATTILA uudistuu keväällä 2015

SENAATTILA uudistuu keväällä 2015 SENAATTILA uudistuu keväällä 2015 Senaatti-kiinteistöt yhtenäistää sähköisiä asiointikanaviaan vaiheittain keväästä 2015 alkaen. Senaattila.fi -osoite laajentuu sähköisen asioinnin palvelueteiseksi, jonka

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet

Metodit Arvotyyppi. Metodit Arvotyyppi. Metodit Parametrit. Metodit Parametrit. Metodit Kuormittaminen. Metodit Kuormittaminen. Javan perusteet Metodit Arvotyyppi Ellei metodi palauta arvoa, sen arvotyyppi on void Tällöin return; -lauseke ei ole metodissa pakollinen, vaikka sen käyttö on sallittua Metodi voi palauttaa alkeistyypin tai olion Tällöin

Lisätiedot

Testausraportti. Dokumentti: Testausraportti_I2.doc Päiväys: Projekti : AgileElephant

Testausraportti. Dokumentti: Testausraportti_I2.doc Päiväys: Projekti : AgileElephant AgilElephant I2 Tekijä: Heikki Salminen Omistaja: ElectricSeven Aihe: Sivu 1 / 8 Dokumentti Historia Muutoshistoria Revision Numero Revision Päiväys Yhteenveto muutoksista Revision tekijä 1.0 7.2.2004

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

T Henkilökohtainen harjoitus: FASTAXON

T Henkilökohtainen harjoitus: FASTAXON T-76.115 Henkilökohtainen harjoitus: FASTAXON Suunnittelumallit Group: Muuntaja Pentti Vänskä 52572W 2 1. Toteutus Tämä henkilökohtainen harjoitustyö käsitteli suunnittelumallien (Design Patterns) käyttöä

Lisätiedot

SEPA päiväkirja. Dokumentti: SEPA_diary_EM_PV.doc Päiväys: Projekti : AgileElephant

SEPA päiväkirja. Dokumentti: SEPA_diary_EM_PV.doc Päiväys: Projekti : AgileElephant AgilElephant T-76.115 Esa Mommo, 57197J Pauli Vesterinen, 65220P Tekijä: Esa Mommo/Pauli Vesterinen Omistaja: ElectricSeven Aihe: Sivu 1 of 8 Dokumentti Historia Revisio Historia Revision Numero Revision

Lisätiedot

Testausraportti. Dokumentti: Testausraportti_FD.doc Päiväys: Projekti: AgileElephant

Testausraportti. Dokumentti: Testausraportti_FD.doc Päiväys: Projekti: AgileElephant AgilElephant FD Tekijä: Petri Kalsi Omistaja: ElectricSeven Aihe: Sivu 1 / 8 Dokumentti Historia Muutoshistoria Revision Numero Revision Päiväys Yhteenveto muutoksista Revision tekijä 1.0 7.3.2005 Ensimmäinen

Lisätiedot

KOHDELUOKAN MÄÄRITTELY

KOHDELUOKAN MÄÄRITTELY KOHDELUOKAN MÄÄRITTELY Kohdeluokka, mitä se sisältää Luokan määrittely Olion ominaisuudet eli attribuutit Olion metodit Olion luonti Olion tuhoutuminen Metodin kutsu luokan ulkopuolelta Taulukon alkiona

Lisätiedot

ICT1TN004. Lomakkeet. Heikki Hietala

ICT1TN004. Lomakkeet. Heikki Hietala Lomakkeet Heikki Hietala Lomakkeet Lomakkeita käytetään keräämään tietoa käyttäjältä ja siirtämään se palvelimelle Lomakkeen luominen ei yksin riitä, vaan pitää luoda myös lomakkeenkäsittelijä Lomakkeen

Lisätiedot

Järjestelmän syötteet ja tulosteet Kohahdus Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Järjestelmän syötteet ja tulosteet Kohahdus Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Järjestelmän syötteet ja tulosteet Kohahdus Helsinki 5.11.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä

Lisätiedot

812336A C++ -kielen perusteet, 21.8.2010

812336A C++ -kielen perusteet, 21.8.2010 812336A C++ -kielen perusteet, 21.8.2010 1. Vastaa lyhyesti seuraaviin kysymyksiin (1p kaikista): a) Mitä tarkoittaa funktion ylikuormittaminen (overloading)? b) Mitä tarkoittaa jäsenfunktion ylimääritys

Lisätiedot

Poikkeustenkäsittely

Poikkeustenkäsittely 1 Poikkeustenkäsittely Mitä poikkeustenkäsittely tarkoittaa? Poikkeuksen käsitteleminen Poikkeusluokkien hierarkia Poikkeuksen heittäminen 1 Mitä poikkeustenkäsittely tarkoittaa? Poikkeus (Exception) on

Lisätiedot

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja.

Tuotteiden tiedot: Lisää uuden tuotteen tiedot. Muuta tai poista tuotteen tiedot. Selaa kaikkien tuotteiden tietoja. laskutus_index http://media.stadia.fi/~0700527/laskutus/laskutus_index.html Sivu 1/1 13.12.2007 Laskutus -tietokanta Henkilöiden tiedot: Lisää uuden henkilön tiedot Muuta tai poista henkilön tiedot Selaa

Lisätiedot

Java ja tietokannan käsittely (JDBC)

Java ja tietokannan käsittely (JDBC) Java ja tietokannan käsittely (JDBC) Javan tietokannan käsittely luokat (java.sql.*) Yhteys tietokantaan Tietokannan yhteyden sulkeminen Tiedon haku tietokannasta Tiedon päivitys tietokantaan Transaktio

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 6. Tiedostot 6.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöteja tulostusvirtojen avulla. Tiedostoja voidaan

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 HSMT Tietokannoista Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

Mainosankkuri.fi-palvelun käyttöohjeita

Mainosankkuri.fi-palvelun käyttöohjeita Mainosankkuri.fi-palvelun käyttöohjeita Sisällys 1. Johdanto... 1 2. Sisäänkirjautuminen... 1 3. Palvelussa navigointi... 2 4. Laitteet... 2 5. Sisällönhallinta... 4 6. Soittolistat... 7 7. Aikataulut...

Lisätiedot

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0

CODEONLINE. Monni Oo- ja Java-harjoituksia. Version 1.0 CODEONLINE Monni Oo- ja Java-harjoituksia Version 1.0 Revision History Date Version Description Author 25.10.2000 1.0 Initial version Juha Johansson Inspection History Date Version Inspectors Approved

Lisätiedot

Java ja grafiikka. Ville Sundberg 12.12.2007

Java ja grafiikka. Ville Sundberg 12.12.2007 Java ja grafiikka Ville Sundberg 12.12.2007 What happen Viritetty JPanel Graphics ja Graphics2D ImageIO ja BufferedImage Animaatio ja ajastus Optimoinnista Kehykset import javax.swing.jframe; public class

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Poikkeukset ja tietovirrat: Virhetilanteiden ja syötevirtojen käsittely Poikkeukset Poikkeuksella tarkoitetaan yllättävää ajonaikaista tilannetta, joka

Lisätiedot

Luokan muodostimet (Constructors)

Luokan muodostimet (Constructors) Mikä on muodostin? Luokan muodostimet (Constructors) Millaisia muodostimia on? Oletusmuodostin (Default Constructor) Parametrillinen muodostin Kopiointimuodostin (Copy Constructor) this-muuttuja Miten

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Tietorakenneluokkia 2: HashMap, TreeMap Tietorakenneluokkia ja -rajapintoja Java tarjoaa laajan kokoelman tietorakennerajapintoja ja - luokkia. Aiemmin

Lisätiedot

Luokan sisällä on lista

Luokan sisällä on lista 1 Luokan sisällä on lista Luokan sisällä lista Listan sisältävä luokka Konstruktorit get-metodi Lista muissa metodeissa addxx-metodi Yksinkertainen pääohjelma Kertauksen List-luokan metodeja 1 Luokan sisällä

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

FinFamily Installation and importing data (11.1.2016) FinFamily Asennus / Installation

FinFamily Installation and importing data (11.1.2016) FinFamily Asennus / Installation FinFamily Asennus / Installation 1 Sisällys / Contents FinFamily Asennus / Installation... 1 1. Asennus ja tietojen tuonti / Installation and importing data... 4 1.1. Asenna Java / Install Java... 4 1.2.

Lisätiedot

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2

Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2 26. Tiedostot 26.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 26.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöte- ja tulostusvirtojen avulla. Tiedostoja

Lisätiedot

Lista luokan sisällä

Lista luokan sisällä Lista luokan sisällä Luokan sisällä on lista Joukkue-luokka, joka sisältää listän joukkueen pelaajista Pelaaja Joukkueen metodit, jotka käyttävät listaa Ohjelmaluokka Luokan sisällä on lista Tarkoitta

Lisätiedot

Java UI-komponentit (JTable) Juha Järvensivu juha.jarvensivu@tut.fi 2007

Java UI-komponentit (JTable) Juha Järvensivu juha.jarvensivu@tut.fi 2007 Java UI-komponentit (JTable) Juha Järvensivu juha.jarvensivu@tut.fi 2007 JTable Datan esittäminen taulukkomuodossa Datan valitseminen taulukosta Datan muokkaaminen (lisääminen, muokkaaminen, poistaminen)

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

Periytyminen (inheritance)

Periytyminen (inheritance) 1 Periytyminen (inheritance) Mitä periytyminen on? Yli- ja aliluokka Konstruktorit Get- ja set-metodi Muut metodit tostring Yksinkertainen pääohjelma 1 Mitä periytyminen on? Periytymisen avulla olemassa

Lisätiedot

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007 Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit

Lisätiedot

INTINU13A6 Java sovellukset

INTINU13A6 Java sovellukset Johdanto Kurssin tavoitteena oli luoda tietokantaa käyttävä websovellus Java EE ohjelmointikielellä, sekä hyödyntää muun muassa servlettejä sekä JSP sivuja ja muita tekniikoita monipuolisesti. Webserverinä

Lisätiedot

XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa.

XNA grafiikka laajennus opas. Paavo Räisänen. www.ohjelmoimaan.net. Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. XNA grafiikka laajennus opas Paavo Räisänen www.ohjelmoimaan.net Tämän oppaan lähdekoodit ovat ladattavissa näiden sivujen Ladattavat osiossa. Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2

Sisältö. Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 6. Tiedostot 6.1 Sisältö Johdanto. Tiedostojen lukeminen. Tiedostojen kirjoittaminen. 6.2 Johdanto Tiedostoja on käsitelty uudelleenohjattujen standardisyöte- ja tulostusvirtojen avulla. Tiedostoja voidaan

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

UML ja luokkien väliset suhteet

UML ja luokkien väliset suhteet UML ja luokkien väliset suhteet -Luokan kuvaaminen UML-tekniikalla -Yhteyssuhde ja koostumussuhde 1 Luokan kuvaaminen UML-tekniikalla : Luokka - attribuutti1 : tietotyyppi # attribuutti2 : tietotyyppi

Lisätiedot

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

Group 2 - Dentego PTH Korvake. Peer Testing Report

Group 2 - Dentego PTH Korvake. Peer Testing Report Group 2 - Dentego PTH Korvake Peer Testing Report Revisions Version Date Author Description 1.0 Henrik Klinkmann First version Table of Contents Contents Revisions... 2 Table of Contents... 2 Testing...

Lisätiedot

JSP (JavaServer Pages) tekniikka Lähde Arvo Lipitsäinen, JSP JavaServer Pages, 2003

JSP (JavaServer Pages) tekniikka Lähde Arvo Lipitsäinen, JSP JavaServer Pages, 2003 1(27) JSP (JavaServer Pages) tekniikka Lähde Arvo Lipitsäinen, JSP JavaServer Pages, 2003 mahdollistaa dynaamisen web-sisällön luonnin eli HTML-.DHTML-, XHTML- ja XML-dokumentit luodaan palvelimella dynaamisesti

Lisätiedot

Ohje kehitysympäristöstä. Dokumentti: Ohje kehitysympäristöstä.doc Päiväys: 15.03.2005 Projekti : AgileElephant

Ohje kehitysympäristöstä. Dokumentti: Ohje kehitysympäristöstä.doc Päiväys: 15.03.2005 Projekti : AgileElephant AgilElephant Tekijä: Petri Kalsi Omistaja: ElectricSeven Dokumentti:.doc Päiväys: 15.03.2005 Aihe: Sivu 1 of 6 Dokumenttihistoria Muutoshistoria Revision Revision Yhteenveto muutoksista Revision tekijä

Lisätiedot

DOORSin Spreadsheet export/import

DOORSin Spreadsheet export/import DOORSin Spreadsheet export/import 17.10.2006 SoftQA Oy http/www.softqa.fi/ Pekka Mäkinen Pekka.Makinen@softqa.fi Tietojen siirto DOORSista ja DOORSiin Yhteistyökumppaneilla ei välttämättä ole käytössä

Lisätiedot

Tässä ohjeessa käydään läpi sosiaalisen median verkkopalveluiden lisätoimintojen lisääminen verkkosivuillesi.

Tässä ohjeessa käydään läpi sosiaalisen median verkkopalveluiden lisätoimintojen lisääminen verkkosivuillesi. SOSIAALINEN MEDIA Tässä ohjeessa käydään läpi sosiaalisen median verkkopalveluiden lisätoimintojen lisääminen verkkosivuillesi. FACEBOOK Facebook mahdollistaa useiden erilaisten Social plugins -toimintojen

Lisätiedot

Tietokannat II -kurssin harjoitustyö

Tietokannat II -kurssin harjoitustyö Tietokannat II -kurssin harjoitustyö Olli Opiskelija (123), olli.opiskelija@foo.fi Maija Mallioppilas (321), maija.mallioppilas@foo.fi 13.3. 2007 1 Sisältö 1 Tietokannan kuvaus 3 1.1 Tietokannan rakenne..................................

Lisätiedot

SoleMOVE lähtevän harjoittelijan ohje

SoleMOVE lähtevän harjoittelijan ohje SoleMOVE lähtevän harjoittelijan ohje 3.12.2013 Kuva: Sanna Waris SoleMOVE lähtevän ERASMUS- harjoittelijan ohje 1 SoleMOVE lähtevän harjoittelijan ohje... 1 1. Kirjautuminen... 3 2. Uuden lähtevän Erasmus-harjoittelijan

Lisätiedot

Mobility Tool. Demo 21.8.2013 CIMO

Mobility Tool. Demo 21.8.2013 CIMO Mobility Tool Demo 21.8.2013 CIMO 1 Sisältö Korkeakoulukäyttäjä (Beneficiary User) Home Project details Partners Mobilities Working with CSV Import Mobilities Budget 2 Home Find your project Project menu

Lisätiedot

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

Kirjasto Relaatiotietokannat Kevät 2001. Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina Kirjasto Kevät 2001 Auvinen Annemari Niemi Anu Harjoitustyö 7.4.2001 Sisällysluettelo 1. Yleiskuvaus... 3 2. Vaatimukset... 3 2.1. Toiminnalliset... 3 2.1.1. Sisäänkirjautuminen... 3 2.1.2. Nimikkeiden

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki Tehtävä 1 Koherentti selitys Koherentti esimerkki ½p ½p Tehtävä 2 Täysiin pisteisiin edellytetään pelaajien tulostamista esimerkin järjestyksessä. Jos ohjelmasi tulostaa pelaajat jossain muussa järjestyksessä,

Lisätiedot

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen

Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Esimerkki: Tehtävä 1. Tietojen lisääminen, poistaminen, päivittäminen ja tulostaminen Luo tietokanta Koulu. Tietokantaan lisätään 3 taulua. Kurssit-taulu: kurssiid not null primary key INTEGER aineid not

Lisätiedot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

Lisätiedot

OFFICE 365 PIKAOHJE 14.01.2014

OFFICE 365 PIKAOHJE 14.01.2014 OFFICE 365 PIKAOHJE 14.01.2014 SISÄLTÖ 1. O365 AVAAMINEN 3 2. KIRJAUTUMINEN 3 3. SALASANAN VAIHTAMINEN 5 4. SÄHKÖPOSTIN KANSIO RAKENNE 6 5. POISSAOLOVIESTI 7 6. SÄHKÖPOSTIN ALLEKIRJOITUS 8 7. YHTEYSTIEDOT

Lisätiedot

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko

JavaRMI 1 JAVA RMI. Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 1 JAVA RMI Rinnakkaisohjelmoinnin projekti 1 osa C Tekijät: Taru Itäpelto-Hu Jaakko Nissi Mikko Ikävalko JavaRMI 2 Table of Contents...1 JAVA RMI...1 Yleistä...4 Arkkitehtuuri...5 Java RMI kerrosarkkitehtuuri...5

Lisätiedot

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu

Laskennallisesti Älykkäät Järjestelmät. Sumean kmeans ja kmeans algoritmien vertailu Laskennallisesti Älykkäät Järjestelmät Sumean kmeans ja kmeans algoritmien vertailu Annemari Auvinen (annauvi@st.jyu.fi) Anu Niemi (anniemi@st.jyu.fi) 28.5.2002 1 Tehtävän kuvaus Tehtävänämme oli verrata

Lisätiedot

Olio-ohjelmointi Virhetilanteiden käsittely

Olio-ohjelmointi Virhetilanteiden käsittely Olio-ohjelmointi 2016 Virhetilanteiden käsittely Poikkeustilanteet n Java-järjestelmässä voidaan ottaa kiinni ohjelman suoritusaikana tapahtuvia virhetilanteita, joita ei saada kiinni tavanomaisilla ohjausrakenteilla

Lisätiedot

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit: Pino (stack) Pino: viimeisenä sisään, ensimmäisenä ulos (LIFO, Last In, First Out) -tietorakenne kaksi perusoperaatiota: alkion lisäys pinon päälle (push), ja päällimmäisen alkion poisto (pop) Push(alkio)

Lisätiedot

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien

Lisätiedot

Rinnakkaisohjelmointi, Syksy 2006

Rinnakkaisohjelmointi, Syksy 2006 Rinnakkaisohjelmointi, Syksy 2006 17.12.2006 Opintopiiri WTF Mika Holmström Paula Kemppi Janne Piippo Lasse Lukkari Javan semaforit 1. Menetelmän käyttötarkoitus ja sovellusalue Semaforin idea kehitettiin

Lisätiedot

JUnit ja EasyMock (TilaustenKäsittely)

JUnit ja EasyMock (TilaustenKäsittely) OHJELMISTOJEN TESTAUS JA HALLINTA Syksy 2015 / Auvo Häkkinen JUnit ja EasyMock (TilaustenKäsittely) Tehtävässä tarvittava koodi löytyy osoitteella http://users.metropolia.fi/~hakka/oth/mockesimerkki.zip

Lisätiedot