Sovellusarkkitehtuurit

Koko: px
Aloita esitys sivulta:

Download "Sovellusarkkitehtuurit"

Transkriptio

1 HELIA TIKO-05 Sovellusarkkitehtuurit 1 ( 19) Sovellusarkkitehtuurit Edellä olemme tutustuneet SQL-kieleen ja transaktiokäsittelyn periaatteisiin. Tarkastelemme tässä osiossa tietokantakäsittelyn ohjelmointia (data access technologies) keskeisissä sovellusarkkitehtuureissa. Tutustumme lähinnä standardoituihin teknologioihin ja erityisesti Javan tietokantaliittymään JDBC. Sovellusarkkitehtuurien perusmalli on 2-kerroksinen asiakas/palvelin (Client/Server). Tyypillinen sovellusarkkitehtuuri kattaa nykyisin useamman kerroksen, mutta kunkin kerroksen välillä näissäkin on asiakas/palvelin suhde. Tietokantapalvelin on näissä arkkitehtuureissa perimmäinen ja tietokantaohjelmointia tarvitaan siis tämän kerroksen asiakaskerroksen ohjelmoinnissa. I Client/Server ja tietokantaohjelmoinnin rajapinnat Perinteinen tietokantojen sovelluskäyttö on perustunut asiakas/palvelin (Client/Server) -arkkitehtuurin, missä sovellusohjelma tai esimerkiksi SQLkomentojen testaamiseen tarkoitettu SQL-editori (esimerkiksi Oraclen SQLPlus) on tietokantapalvelun asiakas ja tietokantapalvelin (instanssi) on toteutettu tyypillisesti erillisessä palvelinkoneessa DBMS-järjestelmällä. DBMS-järjestelmän palvelujen ohjelmointirajapinta (Application Programming Interface, API) on toteutettu kussakin järjestelmässä omalla funktiokirjastolla, esimerkiksi Oraclella OCI-kirjastolla. Etäpalvelimen turvallinen käyttö edellyttää lisäksi erillisten verkkopalvelujen asennuksia. Tällainen Oraclen verkkopalvelunohjelmisto on SQL*Net. DBMS:n funktiokirjaston käytön ohjelmointia on helpotettu esikääntäjätekniikalla, mistä käytetään nimitystä upotettu SQL.

2 HELIA TIKO-05 Sovellusarkkitehtuurit 2 ( 19) Sovelluskoodiin Upotettu SQL Embedded SQL (ESQL) oli ensimmäinen standardoitu SQL-pohjainen tietokantaliittymä, joka mahdollisti lähes DBMS-järjestelmästä riippumattoman tietokantaohjelmoinnin. Sovelluksen ohjelmointiin käytettyä ohjelmointikieltä kuten esimerkiksi COBOL, Fortran, PL/I, C tai C++ sanotaan tässä isäntäkieleksi. Kuvassa 1 on pieni Oraclen C-kielinen esimerkki, joka kuvaa SQL-kielen upotusta sovelluskoodiin EXEC SQL lauseina ja SQL-lauseen parametrointia käyttäen kaksoispistenotaatiolla sovelluskoodin muuttujia input ja output parametreina (host variables).... #define UNAME_LEN int emp_number; /* Define a host structure for the output values of a SELECT statement. */ /* No declare section needed if precompiler option MODE=ORACLE */ struct { VARCHAR last_name[uname_len]; float salary; float commission_pct; emprec; /* Define an indicator structure to correspond to the host output structure. */ struct { short emp_name_ind; short sal_ind; short comm_ind; emprec_ind;... /* Select columns last_name, salary, and commission_pct given the user's input * for employee_id. */ EXEC SQL SELECT last_name, salary, commission_pct INTO :emprec INDICATOR :emprec_ind FROM employees WHERE employee_id = :emp_number;... Kuva 1. Osa C-ohjelmaa, johon on upotettu SQL-komentoja (lähde: Oracle Database Application Developer s Guide Fundamentals) Kuvan 1 EXEC SQL lause hakee tietokannasta yhden rivin ja latoo sen arvot isäntäkielen muuttujiin. Jos käytetty SQL-komento tuottaa monirivisen tulosjoukon, käytetään tämän ohjelmalliseen käsittelyyn kursori-käsittelyä. Tietokantakäsittelyssä voi sattua erilaisia poikkeustilanteita tai virheitä. EXEC SQL lauseen suorituksen jälkeen näitä tutkitaan järjestelmäkohtaisesta SQLCodemuuttujasta (jonka arvoista on standardoitu seuraavat: 0 = ei virheitä, 100 = ei

3 HELIA TIKO-05 Sovellusarkkitehtuurit 3 ( 19) löytynyt yhtään riviä, negatiiviset arvot ovat virheitä ja positiiviset huomautuksia) tai SQLState-muuttujista, jonka arvot on standardoitu. Kuvassa 2 esitetään ESQL-ohjelman kehitysvaiheet. SQL-komennot testataan ensin SQL-editoria käyttäen. 2) SQL-komentojen upotus lähdekoodiin SQL-komennot 1) SQL-komentojen testaus Lähdeohjelma + ESQL SQL-editori isäntäkielen ESQL-esikääntäjä Lähdeohjelma + funktiokutsut isäntäkielen kääntäjä 4) tietokannan käyttö 3) tietokannan metatiedon käyttö SQL-jäsennys optimointi ja suoritussuunnitelman mahdollinen talletus tietokantaan välikoodi funktiokirjasto Linkittäjä DBMS suoritettava sovelluskoodi tietokanta Kuva 2. ESQL-ohjelman kehitysvaiheet Testatut SQL-komennot upotetaan sovellusohjelman lähdekoodiin. Näin muodostettu ESQL-ohjelma käännetään ensin isäntäkielelle sovitetulla esikääntäjällä (precompiler) sovelluskoodiksi, missä EXEC SQL lauseet muutetaan dokumentointia varten kommenteiksi, joiden perään generoidaan kulloisenkin SQL-komennon toteuttava DBMS-järjestelmän funktiokirjaston funktioiden kutsusarjat. Järjestelmästä riippuen esikääntäjä voi jo tarkistaa SQL-komennot tietokannasta luetun metatiedon perusteella ja tallettaa SQL-komentojen suorituksen optimoidut suoritussuunnitelmat tietokantaan (Static SQL). Suoritettavaa ohjelmakoodia varten näin generoitu ohjelmakoodi käännetään ohjelmointikielen kääntäjällä ja siihen linkitetään tarvittavat funktiokirjastot.

4 HELIA TIKO-05 Sovellusarkkitehtuurit 4 ( 19) ESQL-ratkaisut ovat järjestelmäkohtaisen funktiokirjaston ja sille rakennetun esikääntäjätoteutusten vuoksi järjestelmäsidonnaisia. DBMS:n SQL-murretta välttävä ja SQL-standardin yksinkertaisia tietotyyppejä ja lauserakenteita käyttävä lähdekoodi voi kuitenkin jo olla siirrettävää eli käytettävää DBMS-järjestelmää voidaan vaihtaa käyttämällä toisten järjestelmien ESQL-esikääntäjiä. SQL/CLI ja ODBC SQL-standardiin on ESQL:n jälkeen määritelty myös SQL Call Level Interface (SQL/CLI), joka määrittää järjestelmäriippumattoman funktiokirjaston SQLkomentojen suoritukseen. Tämä on toteutettu lähes sellaisenaan IBM:n DB2- järjestelmän uutena funktiokirjastona. SQL/CLI:n varhaisen työversion pohjalta Microsoft toteutti 90-luvun alussa ODBCkirjaston, missä lähinnä C/C++ -tietokantaohjelmointia varten määritelty ODBC API tarjoaa universaalin tietokantaohjelmoinnin rajapinnan. Sovelluksen paikalliseen Windows-rekisteriin määritellään tietokantayhteyttä varten ns. tietolahde (Data Source), johon määritetään yhteyden rakentamiseen tarvittavat parametritiedot ja DBMS-järjestelmän käyttöä varten asennettu ODBC tietokanta-ajuri (ODBC Driver). Tietokanta-ajuri muuntaa ODBC API:n funktiokutsut DBMS:n funktiokirjaston kutsuiksi ja suorittaa myös joitakin ODBC API:n kautta välitettyjen SQL-lauseiden muunnoksia DBMS:n SQL-murteelle. Ks Kuva 3. Kuva 3 ODBC ODBC-ajureita on nykyisin toteutettu lähes kaikille DBMS-järjestelmille. ODBC aloitti näin merkittävän avoimen tietokantaohjelmoinnin kehityksen romahduttaen

5 HELIA TIKO-05 Sovellusarkkitehtuurit 5 ( 19) aikaisempien kalleudellaan kehitystä hidastaneiden tietokantayhteyksien väliohjelmistojen (middleware) markkinat. OLE DB ja ADO C/C++ -kielille tarkoitetun ODBC API:n käyttö edellyttää laajan funktiokirjaston ja näiden funktioiden laajan parametriston käytön tuntemista. Microsoft kehitteli sen päälle erilaisia Visual Basic kielille sovitettuja wrapper-luokkakirjastoja kuten DAO ja RDO sekä C++ -olio-ohjelmointiin sopivan OLE DB luokkakirjaston, joka voi käyttää ODBC-yhteyksiä, mutta jolla voidaan DBMS-järjestelmäkohtaisten OLE DB Provider sovittimien avulla ODBC API:a tehokkaammin ja monipuolisemmin varsinkin Microsoftin oman SQL Server järjestelmän palveluita. Visual Basic kielille (joita ovat esim. Officen makrokielet) Microsoft on kehittänyt OLE DB:n päälle helppokäyttöisen ActiveX Data Objects (ADO) luokkakirjaston (Kuva 4), jonka- keskeisiä luokkia ovat seuraavat: - Connection olioluokka - Command olioluokka - Recordset olioluokka - Fields-kokoelma ja Field - Errors-kokoelma ja Error Connection Errors Command Error Parameters Parameter Properties Recordset Property Fields Field Stream Record Kuva 4 ADO-luokakirjasto Yhteys tietokantaan luodaan Connection-olion Open-metodilla ja suljetaan lopuksi Close-metodilla. SQL-komentoja suoritetaan Command-olion Execute-metodilla, kun SQL-lause on ensin asetettu Command-olion CommandText-ominaisuuden arvoksi. SELECT-komento tuottaa Recordset-olion, jolla hallitaan SELECT-komennon tulosjoukkoa (result set). Recordset pitää yhtä tulosjoukon riviä currenttina Fields-

6 HELIA TIKO-05 Sovellusarkkitehtuurit 6 ( 19) kokoelmana, josta sarakenimellä indeksoiden voidaan osoittaa Field-olio ja sen getstring-metodilla tai sarakkeen tietotyyppiä vastaavalla get-metodilla voidaan lukea sarakkeen arvo kyseisellä rivillä. Tulosjoukkoa voidaan selata vaihtamalla currentin rivin osoitusta Recordsetin Move-metodeilla. Seuraava ADO-esimerkki hakee SQL Serverille toteutetusta Takkula-tietokannasta Excelin työarkille "Keskiarvot" oppilasluettelon seuraavin tiedoin: oppilasnro, sukunimi,etunimi ja keskiarvo. Sub Keskiarvot() Dim adocon As ADODB.Connection Dim rs As ADODB.Recordset Dim strconnectstring As String Dim strsql As String Dim i As Integer On Error GoTo ConOpenError strconnectstring = "Provider=SQLOLEDB.1;" & _ "Integrated Security=SSPI;Persist Security Info=False;" & _ "Data Source=localhost;Database=Takkula;" Set adocon = New ADODB.Connection adocon.connectionstring = strconnectstring adocon.open Set rs = New ADODB.Recordset strsql = "SELECT oppilasnro,sukunimi,etunimi," & _ "AVG(arvosana) AS keskiarvo " & _ "FROM Oppilas JOIN Suoritus USING(oppilasnro) " & _ "GROUP BY sukunimi,etunimi,oppilasnro " & _ "ORDER BY sukunimi,etunimi,oppilasnro" rs.open strsql, adocon, adopenforwardonly, adlockreadonly i = 4 While rs.eof = False 'luetun rivin tietojen ladonta arkille "keskiarvot" Worksheets("keskiarvot").Cells(i, 1).Value = _.Fields("oppilasnro").Value Worksheets("keskiarvot").Cells(i, 2).Value = _.Fields("sukunimi").Value Worksheets("keskiarvot").Cells(i, 3).Value = _.Fields("etunimi").Value Worksheets("keskiarvot").Cells(i, 3).Value = _.Fields("keskiarvo").Value i = i + 1 rs.movenext Wend rs.close adocon.close Exit Sub Virhekasittely: Dim errobj As Object Dim strerrors As String For Each errobj In adocon.errors With errobj strerrors = strerrors & "[" &.Number & "] " & _.Description & _ ", NativeError=" &.NativeError & _ ", Source=" &.Source & _

7 HELIA TIKO-05 Sovellusarkkitehtuurit 7 ( 19) ", SQLSTATE=" &.SqlState & ". " End With Next MsgBox "Virhe: " & strerrors End Sub ADO on osa Microsoftin Distributed Network Architecture DNA-arkkitehtuurin Microsoft Data Access Controls (MDAC) komponentteja. Microsoftin uudessa Java-sovellusalusta kaltaisessa.net-arkkitehtuurissa ADO:n korvaa kehittyneempi ADO.NET luokkakirjasto, josta kerrotaan myöhempänä. ADO.NETin jälkeen Microsoft on lanseeraamassa taas uutta isäntäkieliin (esim C#) integroituvaa tietokantaliittymää nimeltä "LINQ tosql".

8 HELIA TIKO-05 Sovellusarkkitehtuurit 8 ( 19) Java JDBC Sunin Java-kielen tietokantaliittymäksi on rakennettu JDBC-spesifikaatio. Tämä on ADO:n kaltainen, mutta puhtaammin SQL-standardia toteuttava luokkakirjasto, jonka version 1 keskeiset rajapintaluokat ja näiden keskeiset metodit näkyvät kuvan 4 kaaviosta. DatabaseMetaData Driver... gettables( ) DriverManager Class getconnection (url, user, psw) Connection Statement ResultSet ResultSetMetaData getmetadata() setcursorname(s) getcolumncount() setautocommit(b) executequery(sql) getmetadata() getcolumnname(i) settransaction executeupdate(sql) findcolumn(name) getcolumnlabel(i) Isolation(level) cancel() next() getcolumndisplaysize(i) createstatement() close() getint(col) preparestatement(sql) getshort(col) preparecall(sql) getnumeric(col) PreparedStatement commit() getdouble(col) rollback() close() setxxxx(n, hvar) clearparameters() getfloat(col) getstring(col) getdate(col) gettime(col) gettimestamp(col) wasnull() settext(s) SQLException CallableStatement append(s) close() getsqlstate() registeroutputparameter geterrorcode() execute() getnextexcetion()... Kuva 5. JDBC 1:n rajapintaluokat ja keskeiset metodit Tätä kirjoitettaessa elämme tosin jo laajemman JDBC 4:n aikaa, mutta JDBC 1 riittää JDBC:n alkeisiin tutustumiseen. Verrattuna ADO:n luokkakirjastoon JDBC:n Statement vastaa ADO:n Commandoliota ja ResultSet ADO:n Recordset-oliota. ODBC:n tapaan JDBC:n sovituksen käytettävän DBMS-järjestelmän palveluihin tekee järjestelmäkohtainen JDBC-ajuri (Driver), jonka tulee löytyä Java-sovellusta ajettaessa CLASSPATH:n poluista. Esimerkki 1. Seuraava Sunin esimerkistä muokattu viittellinen Java-koodi havainnollistaa JDBC:n käyttöä: import java.sql.*; public class ReadResultSet { public static void main(string args[]) { String url = "jdbc:mysubprotocol:mydatasource"; Connection con; Statement stmt; try {

9 HELIA TIKO-05 Sovellusarkkitehtuurit 9 ( 19) Class.forName("myDriver.ClassName"); catch(java.lang.classnotfoundexception e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); try { con = DriverManager.getConnection(url, "mylogin", "mypassword"); stmt = con.createstatement(); ResultSet rs = stmt.executequery( "SELECT CoffeeName, Price FROM Coffees"); while (rs.next()) { String name = rs.getstring("coffeename"); float price = rs.getfloat("price"); System.out.println(name + " " + price); rs.close(); stmt.close(); con.close(); catch(sqlexception ex) { System.err.println("-----SQLException-----" + "\nsqlstate: " + ex.getsqlstate() + ", Message: " + ex.getmessage() + ", Vendor SQLcode: " + ex.geterrorcode()); Esimerkkiohjelma etsii Javan JRE\lib\ext hakemiston tai CLASSPATHin hakemistojen jar-tiedostoista ohjelman nimeämän JDBC-ajurin (mydriver.classname, katso taulukko 1), luo yhteyden url-muuttujan määrittämään tietokantapalvelimeen (mydatasource) käyttäen protokollaa mysubprotocol mylogin-käyttäjän nimissä tämän salasanalla. Taulukko 1. JDBC-ajureita DBMS JDBC-ajuri Oracle (Thin) oracle.jdbc.driver.oracledriver Solid solid.jdbc.soliddriver DB2 UDB com.ibm.db2.jcc.db2driver SQL Server com.microsoft.sqlserver.jdbc.sqlserverdriver URLin todellinen muoto merkkijonon jdbc: jälkeen riippuu käytettävästä JDBCajurista. Tästä on koottu esimerkkejä taulukkoon 2. Taulukko 2. URL-muotoja DBMS URL Oracle (Thin) jdbc:oracle:thin:@<server>:<portti>:<sid> Solid jdbc:solid://<server>:<portti> DB2 UDB jdbc:db2://<server>:50000/<kanta> SQL Server jdbc:sqlserver://<server>;databasename=<kanta>

10 HELIA TIKO-05 Sovellusarkkitehtuurit 10 ( 19) Käyttäen Statement-olion stmt executequery-metodia esimerkkisovelluksemme tekee SELECT-kyselyn tauluun Coffees saaden vastauksen ResultSet-olioon rs, listaa kaikki tulosjoukon rivit ja sulkee lopuksi oliot rs, stmt ja con. JDBC-käsittely tapahtuu oletusarvoisesti AutoCommit-moodissa ja tässä pienimuotoisessa esimerkissämme ei siis ole käytetty transaktionaalista tietokantakäsittelyä. SQLJ ja JDO Muita Javan tietokantakäsittelyyn kehitettyjä teknologioita ovat SQLJ ja JDO. SQLJohjelminnissa Java-ohjelmaan upotetaan ESQL:n tapaan SQL-lauseita, joista ennen varsinaista Java-käännöstä generoidaan SQLJ-esikääntäjällä vastaava JDBC-käsittely. JDO puolestaan on olio-ohjelmoinnin myös tietokantakäsittelyyn laajentava uusi teknologia. Näitä on kuvattu mm. Connollyn ja Beggin oppikirjassa Database Systems. Script-kielten tietokantaliittymiä ODBC:n menestyksen innostamana muutamiin yleisiin script-kieliin on myös rakennettu tietokantaliittymiä. Näistä melko laajassa käytössä ja esimerkiksi Oraclen tukemia ovat script-kielet Perl ja PHP. Näiden tietokantaliittymät ovat kuitenkin standardoimattomia. Esimerkkejä erilaisista tietokantaliittymistä löytyy RVV-artikkelin liiitteistä osoitteesta htp://

11 HELIA TIKO-05 Sovellusarkkitehtuurit 11 ( 19) Oraclen JDBC-toteutus Oracle on toteuttanut 2 client-työasemien JDBC-ajuria: OCI-ajurin ja Thin-ajurin. Molemmat tukevat hajautettuja transaktioita XA-protokollalla. OCI-ajuri tukee kaikkia Oraclen käyttämiä verkkoprotokollia ja edellyttää, että client-työasemaan on asennettu Oracle client-kirjastot. Thin-ajurin osalta riittää vain sen itsensä asennus työasemaan. Thin-ajuri sisältää SQL*Net valmiuden, tukee vain TCP/IP protokollaa ja edellyttää vain että palvelinpäässä on Oraclen TNS Listener. Oracle-tietokantaan voidaan tallettaa myös Java-luokkia, joita voidaan käyttää talletettujen PL/SQL-proseduurien ja funktioiden tapaan. Näitä varten Oracle on toteuttanut Thin-ajurin myös tietokantapalvelimessa, mutta ohitamme tämän kuvauksen. Tarkempia ohjeita Oraclen JDBC-ohjelmoinnista löydät Oraclen JDBC Developer s Guide and Reference käsikirjasta, jonka löydät Info9-palvelimen Oracle-manuals osoitteesta... Esimerkki 2: Oraclen JdbcTest-ohjelma Listataan Scott-käyttäjän EMP-taulun työntekijöiden sukunimet käsikirjasta löytyneellä JdbcTest-ohjelmalla (jota on hieman muutettu) import java.sql.*; class JdbcTest { public static void main (String args []) throws SQLException { String url = "jdbc:oracle:thin:@//info9:1521:tux2"; try { Class.forName("oracle.jdbc.driver.OracleDriver"); catch(java.lang.classnotfoundexception e) { System.err.print("ClassNotFoundException: "); System.err.println(e.getMessage()); try { Connection con = DriverManager.getConnection(url,"testeri","psw"); // Query the employee names Statement stmt = con.createstatement (); ResultSet rset = stmt.executequery ( "SELECT ename FROM Scott.emp"); // Print the name out while (rset.next ()) { System.out.println (rset.getstring (1)); //close the result set, statement, and the connection rset.close(); stmt.close(); con.close();

12 HELIA TIKO-05 Sovellusarkkitehtuurit 12 ( 19) catch(sqlexception ex) { System.err.println("-----SQLException-----" + "\nsqlstate: " + ex.getsqlstate() + ", Message: " + ex.getmessage() + ", Vendor SQLcode: " + ex.geterrorcode()); Tallenna ohjelma JdbcTest.java nimisenä hakemistoon C:\Temp ja kopioi myös Oraclen Thin-ajuri ojdbc14.jar hakemistoon C:\Temp Avaa Windowsin cmd.exe-ikkuna ja anna komennot C: CD Temp SET CLASSPATH=.;C:\Temp\ojdbc14.jar Javac JdbcTest.java Java JdbcTest Esimerkki 3. Tilisiirto sarjallistuvuusongelmasta uusintayrityksillä selviytyvänä JDBC-transaktiona Esimerkissä sovelletaan SQL-oppikirjassani 1989 esittämääni vankan transaktion suunnittelumallia. Tuo COBOL-kieleen upotettu malli on nyt toteutettu Javaohjelmassa sarjallistuvuusongelman hallinnan suunnittelumallin testaamista varten. Tämän vuoksi tähän on ohjelmoitu tauko ensimmäiseltä tililtä noston jälkeen. Kun esimerkiksi samanaikaisesta SQLPlus-istunnosta on tehty vastakkainen tilisiirto komennoilla UPDATE Tilit SET saldo = saldo 200 WHERE tilino = ; UPDATE Tilit SET saldo = saldo WHERE tilino = ; jatketaan ohjelman suoritusta ENTER-näppäimellä. /** * Helia, Martti Laiho * Sarjallistuvuusongelmasta uusintayrityksillä selviävä * Tilisiirtotransaktio */ import java.io.*; import java.sql.*; public class Tilisiirto { public static void main (String args[]) throws Exception { java.sql.connection conn = null; int counter = 0; String SQLState = "*****"; String errmsg = ""; boolean jatketaanyrityksia = false; int siirtosumma = 100; System.out.println("Tilisiirtotesti versio 1.0"); try { Class.forName("oracle.jdbc.driver.OracleDriver");

13 HELIA TIKO-05 Sovellusarkkitehtuurit 13 ( 19) String scon = "jdbc:oracle:thin:@info9.helia.amk:1526:tux1"; conn = java.sql.drivermanager.getconnection(scon,"user1","psw"); catch (Exception e) { System.out.println("Tietokantayhteys ei avaudu. errmsg=" + e.getmessage()); System.exit(-1); do { counter++; try { conn.setautocommit(false); // transaktio alkaa conn.settransactionisolation( Connection.TRANSACTION_READCOMMITTED); errmsg = ""; jatketaanyrityksia = false; PreparedStatement pstmt1 = conn.preparestatement( "UPDATE Tilit SET saldo = saldo -? WHERE tilino =?"); pstmt1.setint(1, siirtosumma); pstmt1.setint(2, ); // miltä tililtä pstmt1.executeupdate(); // pause vain samanaikaisuuden testiä varten - odotetaan toisella // sovelluksella testattavaa ristiriitaista päivitystä System.out.print("\nJatka ENTER-nappaimella..."); BufferedReader reader = new BufferedReader( new InputStreamReader(System.in)); String s = reader.readline(); // pausen loppu PreparedStatement pstmt2 = conn.preparestatement( "UPDATE Tilit SET saldo = saldo +? WHERE tilino =?"); pstmt2.setint(1, siirtosumma); pstmt2.setint(2, ); // mille tilille pstmt2.executeupdate(); conn.commit(); pstmt1.close(); pstmt2.close(); catch (SQLException ex) { try { errmsg = "\nsqlexception:"; while (ex!= null) { SQLState = ex.getsqlstate(); // tutkitaan onko sarjallistuvuusongelma if (SQLState.equals("40001") // Solid, SQL Server,... SQLState.equals("61000")) // Oracle jatketaanyrityksia = true; errmsg = errmsg + "SQLState: "+ SQLState; errmsg = errmsg + "Message: "+ ex.getmessage(); errmsg = errmsg + "Vendor: "+ ex.geterrorcode() + "\n"; ex = ex.getnextexception(); conn.rollback(); if (jatketaanyrityksia) { long pause = (long) (Math.random () * 10000); // max 10 sek. System.out.println("Odotetaan "+pause); // testiä Thread.sleep(pause); catch (Exception e) { // mahdolliset SQLException käsittelyn ongelmat conn.rollback(); ; // SQLException catch (Exception e) { conn.rollback();

14 HELIA TIKO-05 Sovellusarkkitehtuurit 14 ( 19) ; // tähän muiden poikkeusten käsittely // muut exceptionit while (jatketaanyrityksia && counter < 10); conn.close(); System.out.println("\n ohjelman loppu. " + errmsg); Esimerkki ei pyri olemaan täydellinen malli Java-ohjelmoinnista. Esimerkki näyttää kuitenkin JDBC-ohjelmoinnista mm. parametroitujen SQL-komentojen käytön, standardoidun SQLState-ilmaisimen käytön, jne. Monia tärkeitä JDBCohjelmoinnissa tarvittavia tekniikoita jää tässä pienessä esimerkissä esittelemättä, mm. SQL:n NULL-arvojen käsittely, SQL:n tietotyyppien ja Javan tietotyyppien vastaavuudet, aikatietojen käsittely ja SQL-murteiden sovitus JDBC:n escapenoaatioilla, jne. Vikasietoinen versio tästä transaktiomallista edellyttäisi tietokantayhteyksien avaamista jokaisella yrityskerralla. Näitä transaktioiden suunnittelumalleja tutkitaan tietokantaohjelmoinnin opintojaksolla tarkemmin.

15 HELIA TIKO-05 Sovellusarkkitehtuurit 15 ( 19) II Sovelluspalvelimet ja monikerrosarkkitehtuuri J2EE Sunin ja kumppaneiden määrittämä Java TM 2 Platform Enterprise Edition eli J2EE spesifikaatio määrittää Java-pohjaisen sovellusarkkitehtuurin (kuva 6), jonka takana ovat Microsoftia lukuunottamatta lähes kaikki ITC-alan keskeiset ohjelmistotoimittajat, mm. IBM ja Oracle, joilta on omat sovelluspalvelintoteutukset. Selain Web-palvelin Sovelluspalvelin Security Manager Transaction Manager Connection Pool Java-sovellus JDBC JDBC Tietokantapalvelin JDBC Kuva 6. J2EE-arkkitehtuuri lähde: Java TM 2 Platform Enterprise Edition Specification, v5.0 J2EE-arkkitehtuurin mukaan tietokantakäsittely toteutetaan JDBC:llä Javasovelluksista (Client/Server), Web-komponenteista (servletit ja Java beanit) tai sovelluspalvelimeen asennettavista EJB-komponenteista. Sovelluspalvelimen Transaction Manager mahdollistaa transaktionaaliset EJB-komponenttien metodit, jotka voivat käyttää luotettavasti useaakin tietokantaa samassa globaalissa transaktiossa ja transaktio voi kattaa useankin komponentin metodin. Tietokantapalvelimet ovat tässä Resource Managereita, jotka hallitsevat kannassa toteutetut paikalliset transaktiot (local transaction) osana sovelluspalvelimen globaalia eli hajautettua transaktiota. Sovelluspalvelimen Transaction Manager toimii hajautetun transaktion koordinoijana neuvotellen transaktion Commit-operaatiosta transaktioon osallistuneiden Resource Managereiden kanssa ns. XA Two-Phase

16 HELIA TIKO-05 Sovellusarkkitehtuurit 16 ( 19) prokollalla (2PC), jossa transaktio perutaan globaalisti, jos yksikin paikallinen transaktio jäisi committoimatta. Tämä edellyttää, että tietokantayhteyksissä käytetyt JDBC-ajurit tukevat XA-protokollaa. JDBC:n tietokantayhteyden avaaminen on melko raskas operaatio. Tätä varten sovelluspalvelimen Connection Pool palvelu pitää varastossa valmiita fyysisiä tietokantayhteyksiä ja komponentin avatessa tietokantayhteyden avaaminen onkin vain looginen operaatio, jossa komponetti saa käyttöönsä jo valmiin tietokantayhteyden. Komponentin sulkiessa tietokantayhteyden tämä onkin looginen operaatio, jossa yhteyttä ei suljeta, vaan se siirretään uudelleenkäytettäväksi yhteysaltaaseen. Tämä mahdollistaa sovelluksen skaalautumisen palvelemaan laajempaa samanaikaista käyttäjäjoukkoa. EJB-komponentteja on kolmea erilaista tyyppiä, joiden tietokantakäsittelyn ohjelmointimallit poikkeavat toisistaan. Session Bean tyypeissä tietokantakäsittely toteutetaan JDBC:llä. Entity Bean tyypeistä on käytettävissä tietokantakäsittelyn osalta malli, jossa tietokantakäsittely ohelmoidaan itse, ja malli, jossa tietokantakäsittely hoidetaan sovelluspalvelimen Persistence Managerin toimesta automaattisesti. J2EE-arkkitehtuurin nimeksi on vaihdettu JavaEE-arkkitehtuuri ja sitä on korjattu siten, että Entity Beanit on korvattu tavallisilla "persistenteillä" olioilla, joiden hakua ja talletusta tietokantaan hoitelee Java Persistence API:n (JPA) EntityManager-olio. Ohitamme kuitenkin tällä erää tämän mielenkiintoisen aiheen.

17 HELIA TIKO-05 Sovellusarkkitehtuurit 17 ( 19).NET, ADO.NET ja Client-Side XML Microsoftin uusi.net-arkkitehtuuri muistuttaa pitkälti Sunin J2EE-arkkitehtuuria ja näiden kehitys kulkeekin melkein tasajalkaa. Tietokantakäsittely toteutetaan.netarkkitehtuurissa ADO.NET luokkakirjastoilla, jota havainnollistaa viitteellisesti kuva 7. Client.NET Data Provider Generic objects with interfaces, versions depending on the Data Provider Object Array Object DataSet DataRelation Table X Table Y.ConnectionString.Open Transaction.BeginTransaction.Commit Connection.Rollback.Close Parameters.CreateCommand.ExecuteNonQuery Command.ExecuteScalar.CommandText.ExecuteReader.Read.Get<type> IDataReader DataReader DBMS DataAdapter XML XSD Kuva 7. ADO.NET:in client-side ja ADO.NET Data Providerien objektit JDBC:hen verrattuna mielenkiintoisia ratkaisuja ovat mm. Transaction-oliot, Command-olion erilaiset Execute-metodit, ResultSet-olioa vastaavan olion puuttuminen. ADO:n Recordset on korvattu toisaalta tulosjoukon forward-only tavalla purkavalla DataReader-oliolla ja toisaalta client-sovelluksen muistiavaruudessa toteutetulla varsinaiseen tietokantaan yhteydettömällä tietokantakopiolla DataSet, jossa voi olla useita paikallisia tauluja, näissä eheysrajoituksia ja näiden välillä eheyttä valvovia yhteyksiä. DataSetin käsittely ei ole SQL-pohjaista vaan navigoivaa. DataSetin rakenteet voidaan serialisoida WriteXmlSchema-metodilla XSD-tyyppiseen XML Schema tiedostoon ja rakenteet voidaan myös luoda ReadXmlSchemametodilla olemassaolevasta XSD-tiedostosta. Vastaavasti Datasetin tietosisältö voidaan serialisoida WriteXml-metodilla XML-tiedostoon ja lukea ReadXmlmetodilla XML-tiedostosta. DataSetista voidaan instantioida muistiin erillinen XmlDataDocument-tyyppinen DOM-puu, jota voidaan käsitellä XPath-kielellä ja XmlDataDocumentin tietosisältö voidaan synkronoida takaisin DataSetin tietosisällöksi.

18 HELIA TIKO-05 Sovellusarkkitehtuurit 18 ( 19) Kuvan 6 kaaviosta puuttu mm. XmlReader-olio, jolla voidaan lukea suoraan tietokannasta tulevaa XML-virtaa Web Services ja SOA Sekä J2EE että.net-arkkitehtuurit sisältävät Web Services palvelut, jossa palvelua käytetään XML-pohjaisilla alustariippumattomilla SOAP-sanomilla. Näin Web Services tarjoaa keinon integroida J2EE ja.net-pohjaisia järjestelmiä. Tästä palveluorientoituneesta sovellusarkkitehtuurista käytetään nimitystä SOA (Service Oriented Architecture). Sovelluspalvelinten lisäksi myös uudet Oracle ja SQL Server versiot mahdollistavat Web Service palvelun suoraan tietokantapalvelimesta.

19 HELIA TIKO-05 Sovellusarkkitehtuurit 19 ( 19) Harjoitukset (Tuntiharjoituksia opettajan johdolla) Harjoitus 1. Kokeile tekstissä esitetyn esimerkki 2:n JdbcTest-ohjelmaa sellaisenaan. Info9:n TUX2-instanssissa on Scott-käyttäjällä EMP-taulu ja testeri-käyttäjällä lukuoikeus Scott-käyttäjän esimerkkitauluihin. Harjoitus 2. Sovella esimerkkiä 2 TUX1-instanssissa omalla tunnuksellasi oleviin Takkulan tauluihin kyselyyn 29:. Minkä arvosanan kukin oppilas on eri kursseista saanut. Hae jokaiselle oppilaalle jokaisen suorituksen arvosana sekä aine- ja kurssitunnus ja aineen nimi. (Kaikilla oppilailla ei välttämättä ole arvosanoja, myös nämä tulostuvat). Lajittele oppilaan nimen mukaan.

RDBMS - Yhteyskäytännöt

RDBMS - Yhteyskäytännöt HAAGA-HELIA Heti-09 1 (11) RDBMS - Yhteyskäytännöt Johdanto... 2 Upotettu SQL... 3 ESQL esimerkki... 4 ODBC... 5 Visual Basic ja ADO... 6 JAVA ja JDBC... 7 JDBC esimerkki... 8 Oracle ja JDBC... 9 Connection

Lisätiedot

Sovellusarkkitehtuurit

Sovellusarkkitehtuurit HELIA TIKO-05 Sovellusarkkitehtuurit ja JDBC 1 ( 19) Sovellusarkkitehtuurit Edellä olemme tutustuneet SQL-kieleen ja transaktiokäsittelyn periaatteisiin. Tarkastelemme tässä osiossa tietokantakäsittelyn

Lisätiedot

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokantaohjelmointi 23.2.2000. Harri Laine 1. SQL:n käyttö ohjelmissa

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 Tietokantaohjelmointi 23.2.2000. Harri Laine 1. SQL:n käyttö ohjelmissa SQL:n käyttö ohjelmissa Tietokannan käyttö ohjelmasta Miksi vuorovaikutteinen käyttö ei riitä? kielen hallinta: maallikot? yhdistetään yleiskielen ja tietokantakielen edut, mm.» monimutkaisempi laskenta»

Lisätiedot

käännös käännösvaiheessa tarkasettaan linkitys

käännös käännösvaiheessa tarkasettaan linkitys Upotettu SQL Ohjelmoitaessa 3GL kielillä, käytetään relaatiotietokantaa yleensä esikääntäjien avulla. Tietokannan valmistaja toimittaa funktiokirjaston, jota esikääntäjän avulla hyödynnetään. Ongelmaksi

Lisätiedot

EXEC SQL BEGIN DECLARE SECTION

EXEC SQL BEGIN DECLARE SECTION Tietokantaohjelmointi Tietokantaa käytetään harvoin suoraan kyselyliittymän kautta Tyypillisesti käyttö tapahtuu sovellusohjelman kautta Sovellusohjelmaa laadittaessa vaihtoehtoja tietokantakäsitettelyn

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

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)

Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n

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

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

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos Insert lauseella on kaksi muotoa: insert into

Lisätiedot

Sovellusarkkitehtuurit

Sovellusarkkitehtuurit HELIA TiKo-05 1 (9) Sovellusarkkitehtuurit ODBC (Open Database Connectivity)... 2 JDBC (Java Database Connectivity)... 5 Middleware... 6 Middleware luokittelu... 7 Tietokanta -middleware... 8 Tapahtumamonitorit

Lisätiedot

Tietokantaohjelmoinnin tekniikkoja Java-kielellä

Tietokantaohjelmoinnin tekniikkoja Java-kielellä Tietokantaohjelmoinnin tekniikkoja Java-kielellä Ville Kuokkanen Helsinki 6. helmikuuta 2003 Relaatiotietokannat nyt seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos i Tietokantaohjelmoinnin

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

Pedacode Pikaopas. Tietokantaa hyödyntävän sovelluksen luominen

Pedacode Pikaopas. Tietokantaa hyödyntävän sovelluksen luominen Pedacode Pikaopas Tietokantaa hyödyntävän sovelluksen luominen Pikaoppaan sisältö Pikaoppaassa kuvataan, Netbeans-työkalulla luodaan uusi yksinkertainen Java DB -tietokantaa hyödyntävä sovellus. Opas kattaa

Lisätiedot

Tietokannan webbikytkentä. Janne Petäjä

Tietokannan webbikytkentä. Janne Petäjä Tietokannan webbikytkentä Janne Petäjä Helsinki 7. huhtikuuta 2003 Relaatiotietokannat nyt - seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Tietokannan webbikytkentä Janne Petäjä Relaatiotietokannat

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

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008 Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT Jouni Huotari S2008 2 Proseduurit Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

Lisätiedot

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009 PROSEDUURIT Ohjelmamoduuleita, jotka voidaan tallettaa tietokantaan (DBMS:n tietohakemistoon)

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

Web Services tietokantaohjelmoinnin perusteet

Web Services tietokantaohjelmoinnin perusteet ASP.NET Web Services Web Services tietokantaohjelmoinnin 2 (22) Sisällys Harjoitus 1: Tietokannat ja Web Services... 3 Harjoitus 2: Windows Client... 10 Harjoitus 3: Datan päivitys TableAdapterin avulla...

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

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. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

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

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka

Lisätiedot

Microsoft Visual Studio 2005

Microsoft Visual Studio 2005 Sovelluksen jako palvelimiksi: Palvelin on sille annettuun vastuulliseen tehtävään erikoistunut sovellusosa. Käyttöliittymäpalvelin (Web-palvelin) vastaa käyttöliittymän toteuttamisesta. Web-palvelin toteuttaa

Lisätiedot

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 HOJ Haja-aiheita Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista (1h)

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

12. Näppäimistöltä lukeminen 12.1 12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.

Lisätiedot

HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) ICT03D Tieto ja tiedon varastointi

HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) ICT03D Tieto ja tiedon varastointi HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) SQL-transaktiot Lähes kaikissa tietojärjestelmissä tietojen talletus on toteutettu tietokannoissa, joita käytetään tietokannanhallintajärjestelmien (DBMS) palvelujen

Lisätiedot

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet A271117, Tietokannat Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: Leon Atkinson: core MySQL Ari Hovi: SQL-opas TTY:n tietokantojen perusteet-kurssin

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

TIETOKANNAT JOHDANTO

TIETOKANNAT JOHDANTO TIETOKANNAT JOHDANTO JOUNI HUOTARI & ARI HOVI 2000-2011 Tieto TAUSTAA Yritykselle tiedot ovat tärkeä resurssi päätöksenteon tukena (JIT) varastointi ja käyttö vaativat investointeja vrt. energia (lähde,

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

HOJ J2EE & EJB & SOAP &...

HOJ J2EE & EJB & SOAP &... HOJ J2EE & EJB & SOAP &... Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/18 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

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

5. HelloWorld-ohjelma 5.1

5. HelloWorld-ohjelma 5.1 5. HelloWorld-ohjelma 5.1 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi. Tavukoodin suorittaminen. Virheiden korjaaminen 5.2

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

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

Oracle-tietokanta. Riku Nykänen 1/2010

Oracle-tietokanta. Riku Nykänen 1/2010 Oracle-tietokanta Riku Nykänen 1/2010 Sisältö Oraclen historiaa Tietokannan rakenne ja arkkitehtuuri Oraclen ominaisuuksia Tietokannan hallintatyökalut DB configuration assistant (DBCA) Enterprise Manager

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); Tietokannat SQL-peruskomentojen pikaopas CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi); INSERT INTO table VALUES(val1,val2,... ); Lisää tauluun

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: Linux-harjoitus 6 Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä: http://www.mysql.com/, MySQL-tietokantaohjelman kotisivu. http://www.mysql.com/doc/en/index.html,

Lisätiedot

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot) SQL sisältää operaatiot tietokannan sisällön muodostamiseen ja ylläpitoon: insert - uusien rivien vienti tauluun delete - rivien poisto update - rivien muutos 1 Insert lauseella on kaksi muotoa: insert

Lisätiedot

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -

Lisätiedot

Case TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä 1999. ! Java luokkia n. 5000

Case TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä 1999. ! Java luokkia n. 5000 Case TUHTI 17.12.2002 1 TietoEnator 2002 Projektin tunnuslukuja! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä 1999! Otettu tuotantokäyttöön syksyllä 2001! Proof of Concept (5 henkilöä 4 kk) ->

Lisätiedot

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas Tiedonhallinnan perusteet Viikko 1 Jukka Lähetkangas Kurssilla käytävät asiat Tietokantojen toimintafilosofian ja -tekniikan perusteet Tiedonsäilönnän vaihtoehdot Tietokantojen suunnitteleminen internetiä

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

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

Visual Basic -sovelluskehitin Juha Vitikka

Visual Basic -sovelluskehitin Juha Vitikka Visual Basic -sovelluskehitin Helsinki 30.10.2000 Seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Visual Basic sovelluskehitin Seminaari: Ohjelmistotuotantovälineet Tietojenkäsittelytieteen

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

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

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

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

MICROSOFT LINQ. Susanna Salonen

MICROSOFT LINQ. Susanna Salonen MICROSOFT LINQ Susanna Salonen Huhtikuu 2008 1 SISÄLTÖ 1 TIIVISTELMÄ... 2 2 JOHDANTO... 3 3 MIKÄ ON LINQ?... 3 4 LINQ:N OSA-ALUEET... 5 4. 1 LINQ to Objects... 6 4. 2 LINQ to ADO.NET... 6 4.3 LINQ to XML...

Lisätiedot

Microsoft Visual J++ ohjelmointiympäristö

Microsoft Visual J++ ohjelmointiympäristö Microsoft Visual J++ ohjelmointiympäristö Ohjelmistotuotantovälineet seminaarin alustus Raine Lehto Helsingin yliopisto Tietojenkäsittelytieteen laitos 08.11.2000 Helsinki Sisällys 1 Johdanto...2 2 Sovelluskehys

Lisätiedot

HSMT J2EE & EJB & SOAP &...

HSMT J2EE & EJB & SOAP &... HSMT J2EE & EJB & SOAP &... Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.1/15 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista

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

1. Olio-ohjelmointi 1.1

1. Olio-ohjelmointi 1.1 1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja

Lisätiedot

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki 9.3.2010 HELIA TIKO-05 1 (22) SQL SQL... 2 Historiaa... 2 Standardit... 3 Käyttö... 4 Sql-komentojen kirjoittaminen... 5 DDL... 7 Tietokantaobjektien määrittely... 7 SQL:n tietotyypit... 8 Eheyssääntöjen määrittely...

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

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa WWW ja tietokannat WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa tekstiä, kuvia, hyperlinkkejä Staattiset sivut kirjoitettu kerran, muuttaminen käsin ongelmana pysyminen ajantasalla Ylläpito hankalaa,

Lisätiedot

EJB-komponenttien tietokantakytkentä

EJB-komponenttien tietokantakytkentä hyväksymispäivä arvosana arvostelija EJB-komponenttien tietokantakytkentä Antti Harkola Helsinki 17. huhtikuuta 2003 Relaatiotietokannat nyt seminaari Helsingin yliopisto Tietojenkäsittelytieteen laitos

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri Järjestelmäarkkitehtuuri (TK081702) ja Järjestelmäarkkitehtuuri Sovellukset ovat olemassa Järjestelmien uudistaminen vie yleensä arvioitua enemmän resursseja ja kestää arvioitua kauemmin Migration (Migraatio

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

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

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen Object Framework - One OF-1 is a high-productive Multi-UI OpenEdge data driven development framework Veli-Matti Korhonen Aiheet OF-1 esittely Mitä ominaisuuksia saa ilman ohjelmointia Miten ohjelmoidaan

Lisätiedot

Koira testissä vai Racci tuotannossa O10G/IAS10 Linuxilla

Koira testissä vai Racci tuotannossa O10G/IAS10 Linuxilla Koira testissä vai Racci tuotannossa O10G/IAS10 Linuxilla Petri Tumppila/Bemecon Oy, petri.tumppila@bemecon.fi Tuomas Pystynen/Deepbase Oy, tuomas.pystynen@deepbase.com OUGF 4.11.2004 Agenda Ympäristö

Lisätiedot

P e d a c o d e ohjelmointikoulutus verkossa

P e d a c o d e ohjelmointikoulutus verkossa P e d a c o d e ohjelmointikoulutus verkossa J2EE - EJB Session Bean Teoria ja ohjelmointitehtävät J2EE - EJB Session Bean 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN... 7 YLEISKATSAUS KURSSIN SISÄLTÖIHIN... 7

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

Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy. 2005 Mermit Business Applications

Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy. 2005 Mermit Business Applications Helia Ohjelmointitaito 14.3.2005 Tuomas Kaipainen Mermit Business Applications Oy Esityksen sisältö Mermit yrityksenä Perustiedot Toimintamalli Mermit työpaikkana ohjelmistoinsinöörille Esimerkkiprojekti

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

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

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

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

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences TIEDONHALLINTA - SYKSY 2011 Kurssikoodi: Saapumisryhmä: Luento 11 TU00AA48-2002 TU10S1E Hannu Markkanen 22.11.2011 9/10/12 Helsinki Metropolia University of Applied Sciences 1 Indeksit Indeksit Taulun

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

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

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

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

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

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