Java-opgraderingskursus

Størrelse: px
Starte visningen fra side:

Download "Java-opgraderingskursus"

Transkript

1 Java-opgraderingskursus Danmarks Meteorologiske Institut Dette materiale er under Åben Dokumentlicens, se

2 Et Javaprogram // Et simpelt program, der skriver "Hej verden" // og et citat af Storm P. ud til skærmen // filnavn: HejVerden.java public class HejVerden public static void main (String[] arg) System.out.println("Hej Verden!"); System.out.println("Hvornår smager en Tuborg bedst?"); System.out.println("Hvergang!"); Den binære kode bytecode i.class filerne Platformsuafhængig dvs. ingen.exe filer Platformsafhængig optimering sker først under kørslen

3 JBuilder og projekter Projektet holder rede på filer og egenskaber for programmet ikke det samme som et katalog projekter ligger ofte i C:\jbproject Problemer med stier? Tjek at projektet forventer kildetekst det rigtige sted! Tjek stierne i projektet Åbn "Project Properties" Kildekode i src/.class filer i classes/ Sti på.java fil = src/ + pakke mitprojekt mitprojekt.jpx JBuilders Projektfil <?xml version="1.0" encoding="utf 8"?> <! JBuilder XML Project > <project> <property category="sys" name="workingdirectory" value="."/> <file path="src/benytboennemedvaerktoej.java"/> <file path="src/benytboenneskrevetselv.java"/> <file path="src/vinduemedgentagtekst.java"/> </project> src Program.java classes Program.class

4 Løkker sæt alder = 15 alder < 18? nej ja skriv "vent.." læg 1 til alder skriv "tillykke..." public class Alder4 public static void main(string[] arg) int alder; alder = 15; while (alder < 18) System.out.println("Du er "+alder+" år. Vent til du bliver ældre."); alder = alder + 1; System.out.println("Tillykke med fødselsdagen!"); System.out.println("Nu er du "+alder+" år og myndig."); Du er 15 år. Vent til du bliver ældre. Tillykke med fødselsdagen! Du er 16 år. Vent til du bliver ældre. Tillykke med fødselsdagen! Du er 17 år. Vent til du bliver ældre. Tillykke med fødselsdagen! Nu er du 18 år og myndig.

5 De simple typer Type Art Antal bit Mulige værdier byte heltal til short heltal til int heltal til long heltal til float kommatal 32 ± E-45 til ± E double kommatal 64 ± E-324 til ± E+308 Standardværdi char unicode 16 \u0000 til \uffff (0 til 65535) \u0000 boolean logisk 1 true og false false Samme størrelse på alle platforme (i modsætning til C og C++) Hvor der muligvis mistes information, fordi intervallet af mulige værdier indsnævres, skal man skrive en eksplicit typekonvertering. F.eks: int x; double y; y = 3.8; x = (int) y; 0.0

6 Arrays public class Maaneder public static void main(string[] arg) int[] måneder = 31,28,31,30,31,30,31,31,30,31,30,31; System.out.println("Længden af januar er: " + måneder[0]); System.out.println("Længden af april er: " + måneder[3]); for (int i=0; i <måneder.length; i++) System.out.print(måneder[i] + ", "); System.out.println(); Længden af januar er: 31 Længden af april er: 30 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, main() har en parameter, som er et array af strenge. Dette array indeholder kommandolinie argumenter ved kørsel af programmet. public class Kommandolinie public static void main(string[] arg) System.out.println("Antallet af argumenter er: " + arg.length); for (int i=0; i< arg.length; i=i+1) System.out.println("Argument "+i+" er: " + arg[i]); Antallet af argumenter er: 3 Argument 0 er: x Argument 1 er: y Argument 2 er: z Programmet herover er kørt med "java Kommandolinie x y z".

7 Klassens anatomi // Klassenavn skal være i filen Klassenavn.java import klasser; // f.eks. import java.util.*; public class Klassenavn // erklæring af variabler (og evt. samtidig initialisering) adgang type navnpåobjektvariabel; private String s2 = "goddag"; // samtidig initialisering // erklæring af konstruktører, evt. med parametre adgang Klassenavn(type1 parameter1, type2 parameter2,...)... // kode der sætter objektvariablerne til startværdier // erklæring af metoder, evt. med parametre adgang returtype metodenavn(type1 parameter1, type2 parameter2,...)... // kode // eksempler på metoder: public int metode1() return 15; // noget af type int public void metode2(int nn, String ss)

8 public class Boks3 private double længde, bredde, højde; public Boks3() System.out.println("Standardboks oprettes"); sætmål(10, 10, 10); /** en anden konstruktør der får bredde, højde og længde */ public Boks3(double lgd, double b, double h) System.out.println("Boks oprettes med lgd="+lgd+" b="+b+" h="+h); sætmål(lgd,b,h); public void sætmål(double lgd, double b, double h) if (lgd<=0 b<=0 h<=0) System.out.println("Ugyldige mål. Bruger standardmål."); længde = 10.0; bredde = 10.0; højde = 10.0; else længde = lgd; bredde = b; højde = h; public double volumen() double vol = længde*bredde*højde; return vol; Boks3 længde :double bredde :double højde :double +Boks3() +Boks3(lgd, b, h) +sætmål(lgd, b, h) +volumen() :double public class BenytBoks3 public static void main(string[] arg) Boks3 enboks; enboks = new Boks3(); // brug konstruktøren uden System.out.println("Volumen er: "+ enboks.volumen()); Boks3 enandenboks; enandenboks = new Boks3(5,5,10); // brug den anden konstruk System.out.println("Volumen er: "+ enandenboks.volumen()); Standardboks oprettes Volumen er: Boks oprettes med lgd=5.0 b=5.0 h=10.0 Volumen er: 250.0

9 Synlighed public, protected og private Variabler og metoder erklæret public er altid tilgængelige, både inden og uden for klassen. Variabler og metoder erklæret protected er tilgængelige for alle klasser inden for samme pakke. Klasser i andre pakker kan kun få adgang hvis de er nedarvinger. Skriver man ingenting er det kun klasser i samme pakke der har adgang til variablen eller metoden. private er det mest restriktive. Hvis en variabel eller metode er erklæret private, kan den kun benyttes indenfor samme klasse (og derfor kan den ikke tilsidesættes med nedarving). Adgang public protected (ingenting) private i samme klasse ja ja ja ja klasse i samme pakke ja ja ja nej arving i en anden pakke ja ja nej nej klasse der ikke arver i en anden pakke ja nej nej nej Holder man sig inden for samme pakke er der altså ingen forskel mellem public, protected og ingenting.

10 Arv En klasse kan arve variabler og metoder fra en anden klasse Klassen, der nedarves fra, kaldes superklassen Klassen, der arver fra superklassen, kaldes underklassen Underklassen kan tilsidesætte (omdefinere) metoder arvet fra superklassen ved at definere dem igen Superklasse Underklasse

11 Nedarving public class Boks3medDensitet extends Boks3 private double densitet; Boks3 public Boks3medDensitet() // super(); kaldes hvis intet andet angives densitet = 10.0; public Boks3medDensitet(double lgd, double b, double h, double densitet) Boks3medDensitet densitet : double + Boks3medDensitet() + Boks3medDensitet(l,b,h,d) + vægt() : double // vælg en anden konstruktør i superklassen end den uden parametre super(lgd,b,h); this.densitet = densitet; public double vægt() return volumen() * densitet; // superklassen udregner volumen for os

12 Arv og konstruktører Konstruktører skal defineres på ny i en underklasse En konstruktør kalder først en af superklassens konstruktører Superklassens konstruktør kan kaldes med: super(parametre) Hvis man ikke selv kalder en af superklassens konstruktører, indsætter Java automatisk et kald af superklassens konstruktør uden parametre

13 UML og klasserelationer Har-relationen At X har Y betyder: i klassen X er defineret en variabel af type Y. Et X-objekt har derfor en reference til et Y-objekt, og derfor har X-objektet mulighed for at kalde metoder og bruge variabler fra Y-objektet gennem denne reference. Y- objekter kender ikke nødvendigvis noget til X-objekters eksistens. Eksempel: public class X private Y yobj = new Y();... Er-en-relationen At X er-en Y betyder: i klassen X er defineret, at X arver fra klassen Y. Et X-objekt indeholder derfor (mindst) alle de metoder og variabler, som et Y-objekt indeholder. Eksempel: public class X extends Y... Det er også en er-en-relation, når man implementerer et interface.

14 UML og klasserelationer Felt navn :String + passeret(sp :Spiller) + landet(sp :Spiller) Helle gevinst :double +landet(sp:spiller) Start gevinst :double + passeret(sp:spiller) + landet(sp :Spiller) Spiller navn :String konto :double feltnr :int + transaktion(kr :double) + betal(modt :Spiller, kr :double) + tur(felter :Vector) Rederi ejer :Spiller pris :double grundleje :double +landet(sp:spiller) Gade ejer :Spiller pris :double grundleje :double antalhuse :int huspris :double +landet(sp:spiller) Rederi og Gade har en Spiller. Helle, Start, Rederi og Gade er et Felt.

15 Collection: Samling af data Indeholder metoder fælles for alle datastrukturer List: Ordnet liste To klasser implementerer List: ArrayList og LinkedList. Set: Uordnet mængde HashSet implementerer Set. SortedSet: Sorteret mængde TreeSet implementerer Set. Samlinger af data

16 Eksempel på brug af liste List liste; Samlinger af data liste = new ArrayList(); liste.add("æh"); // alle samlinger af data liste.add("øh",0); // kun lister Gennemløb v.hj.a. tællevariabel for (int i=0; i<liste.size(); i++) String s = (String) liste.get(i); // gør noget med s System.out.println(s); Gennemløb v.hj.a. iterator for (Iterator iter=liste.iterator(); iter.hasnext(); ) String s = (String) iter.next(); // gør noget med s System.out.println(s); Man kan få et iterator objekt ved at kalde iterator() på enhver datastruktur (Collection) Et (lille) objekt, der hjælper med at gennemløbe data

17 Visuelt design af et grafisk program (1) Design fanen (2) Visuelt designområde (3) Struktur af programmet (4) Egenskaber (og hændelser) på valgt element (5) Komponentfaner

18 Genbrugelige komponenter Komponenter er programmørens byggeklodser De kan bruges igen og igen i mange sammenhænge De kan sættes sammen på alle mulige måder De er nemme at indstille Udviklingsværktøj kan generere programkoden for programmøren Grafiske brugergrænseflader er som regel helt bygget op af komponenter! Komponenter i Java hedder Javabønner (eng.: JavaBeans)

19 Komponentbaseret udvikling Eksempel: Bønnen TextField Egenskab Type Egenskab sættes med Egenskab aflæses med text String settext(string t) gettext() editable boolean seteditable(boolean rediger) iseditable() columns int setcolumns(int bredde) getcolumns() echochar char setechochar(char tegn) getechochar() Bruge en javabønne fra et udviklingsværktøj import java.awt.*; import java.awt.event.*; public class BenytBoenneMedVaerktoej extends Frame TextField textfieldnavn = new TextField(); // opret bønnen public BenytBoenneMedVaerktoej() try jbinit(); catch(exception e) e.printstacktrace(); private void jbinit() throws Exception textfieldnavn.settext("jacob"); // sæt egenskaben text textfieldnavn.setbounds(new Rectangle(141, 61, 112, 29)); this.setlayout(null); this.add(textfieldnavn, null);

20 Komponenter og containere Button Choice Label Component Canvas Container 0.. * 1 Checkbox 0.. * 1 CheckboxGroup List TextComponent TextField TextArea Panel Applet ScrollPane Window Dialog Frame Hule pile: er en relationer (dvs. nedarvning) De andre pile: har relatioer En container har nul til mange komponenter Hver komponent har/tilhører én container Tilsvarende med CheckboxGroup og Checkbox

21 Layout-managere FlowLayout BorderLayout GridBagLayout BoxLayout intet layout (null)

22 Persistensproblemet Strategier til databaseadgang Rigtig mange muligheder, f.eks.: JDBC kode blandet sammen med resten af koden JDBC kode i dedikerede klasser JDBC RowSet ResultSet, der også opdaterer databasen CachedRowSet kan eksistere løsrevet fra databasen WebRowSet giver XML, der kan transformeres, f.eks. med XSLT (XSL style sheet) Javas XML behandling EJB Enterprise JavaBeans ét serverobjekt pr. række JDO Java Data Objects ét objekt pr. række Proprietære løsninger Giver mulighed for grafiske databasekomponenter Oracle JDeveloper ADF Application Developer Framework Borland JBuilder: DataModule IBM WebSphere Studio Bedste løsning? Afhænger af omstændighederne! Hvor omfattende databasedelen af ens applikation er Hvor meget man forventer den senere skal vedligeholdes.

23 JDBC databaseadgang Indlæse driveren Med Java under Windows følger en standard JDBC-ODBC-bro med, så man kan kontakte alle datakilder, der er defineret under ODBC: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Er det en anden database, skal man have en jar-fil med en driver fra producenten. Nyeste drivere kan findes på Driver til en Oracle-database (hedder typisk classes12.zip): Class.forName("oracle.jdbc.driver.OracleDriver"); Driver til en MySQL-database (hentes på Class.forName("com.mysql.jdbc.Driver") Etablere forbindelsen Herefter kan man oprette forbindelsen med (for en ODBC-driver): Connection forb = DriverManager.getConnection("jdbc:odbc:datakilde1"); Datakildens navn (her "datakilde1") skal være defineret i Windows. Databasedrivere JDBC-drivere findes i fire typer: Type 1: JDBC-ODBC-broen. Langsomste og kun til Windows. Type 2: Drivere skrevet i C eller C++ til den specifikke platform (normalt de hurtigste). Type 3: Platformsuafhængig (ren Java-) driver med databaseuafhængig kommunikationsprotokol Type 4: Platformsuafhængig (ren Java-) driver skrevet til at kommunikere med en specifik database (mest udbredte og næsten lige så hurtig som type 2). Oracle-database: Connection forb = DriverManager.getConnection( "jdbc:oracle:thin:@ora.javabog.dk:1521:student","jacob","jacob"); MySQL-database: DriverManager.getConnection("jdbc:mysql:///jacob","root","xyz");

24 JDBC databaseadgang Kommunikere med databasen import java.sql.*; public class Databasekommunikation public static void main(string[] arg) throws Exception Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection forb = DriverManager.getConnection("jdbc:odbc:datakilde1"); Statement stmt = forb.createstatement(); // forsøg at slette tabel - hvis den ikke findes opstår en fejl som fanges try stmt.executeupdate("drop table KUNDER"); catch (Exception e) stmt.executeupdate("create table KUNDER (NAVN varchar(32), KREDIT number)"); stmt.executeupdate("insert into KUNDER values('jacob', -1799)"); // indsæt data fra variabler String navn = "Hans"; double kredit = 500; stmt.executeupdate("insert into KUNDER(NAVN,KREDIT) values('"+navn+"', "+kredit+")"); // forespørgsler ResultSet rs = stmt.executequery("select NAVN, KREDIT from KUNDER"); while (rs.next()) navn = rs.getstring("navn"); kredit = rs.getdouble("kredit"); System.out.println(navn+" "+kredit); Jacob Brian 0.0 Hans 500.0

25 Lave JDBC-ODBC-bro til Access-fil Eksempel: 1. Denne computer 2. Kontrolpanel 3. Administration

26 Forbindelse til database (MySQL) Installér MySQL Hent fra mysql.com test database god i starten Grafiske værktøjer Installér JDBC driver Connector/J fra mysql.com Læg JAR fil i java/jre/lib/ext/ Kontakt test database: Class.forName("com.mysql.jdbc.Driver"); Connection forb = DriverManager.getConnection("jdbc:mysql:///test");

27 Forberedte SQL-kommandoer import java.sql.*; public class ForberedtSQL public static void main(string[] arg) throws Exception Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql:///test"); // Forbered kommandoerne til databasen, f.eks. i starten af programmet: PreparedStatement indsætpstm = con.preparestatement( "INSERT INTO kunder (navn,kredit) VALUES(?,?)"); PreparedStatement hentpstm = con.preparestatement( "SELECT navn, kredit FROM kunder WHERE navn=?"); // under programudførelsen kan de forberedte kommandoer udføres mange gange: for (int i=0; i<100; i++) indsætpstm.setstring(1, "Brian"); indsætpstm.setint(2, i); indsætpstm.execute(); indsætpstm.setstring(1, "Hans' venner"); // bemærk ' i strengen indsætpstm.setint(2, 1042+i); indsætpstm.execute(); hentpstm.setstring(1, "Hans' venner"); ResultSet rs = hentpstm.executequery(); // bemærk ' i SQL-forespørgslen // man løber igennem svaret som man plejer while (rs.next()) String navn = rs.getstring(1); double kredit = rs.getdouble(2); System.out.println(navn+" "+kredit);

28 Samlede batch-opdateringer import java.sql.*; public class Batchopdateringer public static void main(string[] arg) throws Exception Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql:///test"); PreparedStatement pstmt = con.preparestatement( "INSERT INTO kunder (navn,kredit) VALUES(?,?)"); pstmt.setstring(1, "Hans"); pstmt.setint(2, 142); pstmt.addbatch(); pstmt.setstring(1, "Grethe"); pstmt.setint(2, 242); pstmt.addbatch(); // send ændringer til databasen pstmt.executebatch();

29 Uden automatisk commit import java.sql.*; public class UdenAutocommit public static void main(string[] arg) throws Exception Class.forName("oracle.jdbc.driver.OracleDriver"); Connection forb = DriverManager.getConnection( "jdbc:oracle:thin:@ora.javabog.dk:1521:student","jacob","jacob"); try forb.setautocommit(false); Statement stmt = forb.createstatement(); stmt.executeupdate("insert into KUNDER(NAVN,KREDIT) values('jacob',-17)"); stmt.executeupdate("insert into KUNDER(NAVN,KREDIT) values('brian', 0)"); // flere transaktioner... System.err.println("Alt gik godt, gør ændringerne forpligtigende"); forb.commit(); catch (Exception e) e.printstacktrace(); System.err.println("Noget gik galt! Annullerer ændringerne..."); forb.rollback(); finally // Husk at sætte auto-commit tilbage, af hensyn til andre transaktioner forb.setautocommit(true);

30 Undtagelser og stakspor public class SimpelUndtagelse public static void main(string[] arg) System.out.println("Punkt A"); ArrayList l = new ArrayList(); System.out.println("Punkt B"); l.get(5); System.out.println("Punkt C"); // punkt A // punkt B // punkt C Punkt A Punkt B java.lang.arrayindexoutofboundsexception: 5 >= 0 at java.util.arraylist.get(arraylist.java:417) at SimpelUndtagelse.main(SimpelUndtagelse.java:10) Exception in thread "main" Throwable RuntimeException Exception herunder: valgfri håndtering ArithmeticException NullPointerException ClassCastException IllegalArgumentException IndexOutOfBoundsException herunder: tvungen håndtering ClassNotFoundException InterruptedException SQLException IOException FileNotFoundException UnknownHostException SocketException Error herunder: bør ikke håndteres InternalError OutOfMemoryError StackOverflowError

31 Undtagelser Programudførelsen afbrydes, når der opstår en undtagelse Kode, hvori der kan opstå en undtagelse og efterfølgende afhængig kode, bør være i samme try catchblok Undtagelser med tvungen håndtering skal enten fanges (med try catch i metodekroppen) eller sendes videre til kalderen (med throws i metodehovedet) try... // programkode hvor der er en risiko... // for at en undtagelse opstår catch (Undtagelsestype u) // Undtagelsestype er f.eks. Exception... // kode som håndterer fejl af... // typen Undtagelsestype... // dette udføres både hvis ingen undtagelse opstod... // og hvis der opstod fejl af typen Undtagelsestype

32 Rydde op med finally Finally blokke bliver altid udført, selv når undtagelsen ikke fanges, eller der hoppes ud af metoden på anden vis public void metode1() try... if (...) return; if (...) throw new IllegalArgumentException(...);... catch (NullPointerException e) System.out.println("Intern fejl:"); e.printstacktrace(); finally System.out.println("Dette bliver altid udført."); System.out.println("Slut på metode1()");

33 mport java.sql.*; ublic class BenytMetadataOgUdskrivTabel Metadata /** Udskriver et ResultSet pænt. Finder selv ud af kolonnenavnene. */ public static void udskriv(string titel, ResultSet rs) throws Exception ResultSetMetaData rsmd = rs.getmetadata(); int antalkolonner = rsmd.getcolumncount(); System.out.println(); System.out.println(" " + titel + " ("+antalkolonner+" kolonner)"); // udskriv kolonnenavnene for (int i=1; i<=antalkolonner; i++) skrivformateret(rsmd.getcolumnname(i)); System.out.println(); // udskriv cellerne i hver række while (rs.next()) for (int i=1; i<=antalkolonner; i++) skrivformateret(""+rs.getstring(i)); System.out.println(); System.out.println(" "); public static void main(string[] arg) throws Exception Class.forName("oracle.jdbc.driver.OracleDriver"); Connection forb = DriverManager.getConnection( "jdbc:oracle:thin:@ora.javabog.dk:1521:student","jacob","jacob"); DatabaseMetaData dmd = forb.getmetadata(); System.out.println("DatabaseProductName = "+dmd.getdatabaseproductname()); System.out.println("DriverName = "+dmd.getdrivername()); System.out.println("MaxRowSize = "+dmd.getmaxrowsize()); ResultSet rs = dmd.gettables(null, "JANO", "%", null); udskriv("tabeller i databasen", rs); Statement stmt = forb.createstatement();

34 mport java.sql.*; ublic class BenytMetadataOgUdskrivTabel Metadata /** Udskriver et ResultSet pænt. Finder selv ud af kolonnenavnene. */ public static void udskriv(string titel, ResultSet rs) throws Exception ResultSetMetaData rsmd = rs.getmetadata(); int antalkolonner = rsmd.getcolumncount(); System.out.println(); System.out.println(" " + titel + " ("+antalkolonner+" kolonner)"); // udskriv kolonnenavnene for (int i=1; i<=antalkolonner; i++) skrivformateret(rsmd.getcolumnname(i)); System.out.println(); // udskriv cellerne i hver række while (rs.next()) DatabaseProductName = Oracle for (int i=1; i<=antalkolonner; DriverName i++) skrivformateret(""+rs.getstring(i)); = Oracle JDBC driver System.out.println(); MaxRowSize = 2000 System.out.println(" "); tabeller i databasen (5 kolonner) TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE TABLE_REMARKS null JANO KUNDER TABLE null null JANO PERSONER TABLE null public static void main(string[] arg) throws Exception Class.forName("oracle.jdbc.driver.OracleDriver"); kunder (2 kolonner) Connection forb = DriverManager.getConnection( NAVN KREDIT "jdbc:oracle:thin:@ora.javabog.dk:1521:student","jacob","jacob"); Jacob Brian 0 DatabaseMetaData dmd = forb.getmetadata(); Hans 500 System.out.println("DatabaseProductName = "+dmd.getdatabaseproductname()); System.out.println("DriverName = "+dmd.getdrivername()); System.out.println("MaxRowSize = "+dmd.getmaxrowsize()); ResultSet rs = dmd.gettables(null, "JANO", "%", null); udskriv("tabeller i databasen", rs); Statement stmt = forb.createstatement();

35 Opdatere og navigere i ResultSet De fleste ResultSet har metoder til at bevæge sig aktivt rundt i svaret og endda opdatere databasen gennem svaret. Det gøres med f.eks.: Statement stmt = con.createstatement(resultset.type_scroll_insensitive, ResultSet.CONCUR_UPDATABLE); ResultSet rs = stmt.executequery("select NAVN, KREDIT from KUNDER"); Derefter kan man navigere rundt i ResultSet-objektet med f.eks.: rs.absolute(3); // går til 3. række i svaret (regnet fra 1 af) rs.previous(); // går en række tilbage (modsatte af next()) rs.first(); // går til starten af svaret (svarende til rs.absolute(1)) rs.relative(3); // går 3 rækker frem, dvs. til 4. række int r = rs.getrow();// giver hvilken række vi nu er i (her returneres 4) Man kan ændre i data med f.eks.: rs.updatestring("navn", "Jakob"); // ændrer kundens navn til Jakob rs.updaterow(); // opdaterer rækken i databasen rs.movetoinsertrow(); // flyt til speciel indsættelses-række rs.updatestring("navn", "Søren"); // sæt navn rs.updatedouble("kredit", 1000); // sæt kredit rs.insertrow(); // indsæt rækken i databasen rs.movetocurrentrow(); // gå væk fra speciel indsættelsesrække Derudover findes cancelrowupdates(), der annullerer opdateringer i en række, deleterow(), der sletter den aktuelle række fra både svaret og databasen, refreshrow(), der opfrisker ResultSet-objektet med de nyeste data.

36 JDBC RowSet RowSet = et sæt rækker hentet fra databasen =ResultSet+oprindelse+ændringer RowSet objekter giver mulighed ny arbejdsform Man behøver kun at spørge på data (f.eks. med SELECT) hvorefter man får et RowSet objekt. Når man skal opdatere nogle rækker, slette eller oprette nye, opererer man blot det eksisterende RowSet objekt Slut med at rode med INSERT, DELETE eller UPDATE sætninger i SQL. Flere undertyper af RowSet i JDK 1.5 JdbcRowSet =ResultSet+oprindelse+ændringer CachedRowSet =rækkerne er gemt i hukommelsen kan altså eksistere afbrudt fra databasen! Undertyper: FilteredRowSet og JoinRowSet WebRowSet =CachedRowSet repræsenteret som XML

37 JdbcRowSet import java.sql.*; import javax.sql.*; import javax.sql.rowset.*; import com.sun.rowset.*; // Bemærk: rowset.jar fra Sun skal være i CLASSPATH public class BenytJdbcRowSet public static void main(string[] arg) throws Exception Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql:///test"); JdbcRowSetImpl jrs = new JdbcRowSetImpl(con); // Lav forespørglen jrs.setcommand("select * FROM kunder WHERE navn =?"); jrs.setstring(1,"jacob"); jrs.execute(); // Udskriv resultatet while (jrs.next()) String navn = jrs.getstring("navn"); double kredit = jrs.getdouble("kredit"); System.out.println(navn+" "+kredit);

38 CachedRowSet import java.sql.*; import javax.sql.*; import javax.sql.rowset.*; import com.sun.rowset.*; // Bemærk: rowset.jar fra Sun skal være i CLASSPATH public class BenytCachedRowSet public static void main(string[] arg) throws Exception Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql:///test"); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select * FROM kunder"); CachedRowSetImpl crs = new CachedRowSetImpl(); crs.populate(rs); rs.close(); // Opdatér første række i CachedRowSet-objektet crs.first(); crs.updatedouble("kredit", -2000); crs.updaterow(); // Indsæt række crs.movetoinsertrow(); crs.updatestring("navn", "Poul Nyrup"); crs.updatedouble("kredit", ); crs.insertrow(); crs.movetocurrentrow(); // Opdatér data i databasen crs.seturl("jdbc:mysql:///test"); crs.setusername("root"); crs.setpassword(""); crs.acceptchanges();

39 WebRowSet import com.sun.rowset.*; // Bemærk: rowset.jar fra Sun skal være i CLASSPATH public class BenytWebRowSet public static void main(string[] arg) throws Exception Class.forName("com.mysql.jdbc.Driver"); Connection con = DriverManager.getConnection("jdbc:mysql:///test"); Statement stmt = con.createstatement(); ResultSet rs = stmt.executequery("select * FROM kunder"); WebRowSetImpl wrs = new WebRowSetImpl(); wrs.populate(rs); rs.close(); // Generér XML wrs.writexml(system.out); // Opdatér første række i WebRowSet-objektet wrs.first(); wrs.updatedouble("kredit", -3000); wrs.updaterow(); // Indsæt række wrs.movetoinsertrow(); wrs.updatestring("navn", "Fogh"); wrs.updatedouble("kredit", 72); wrs.insertrow(); wrs.movetocurrentrow(); // Generér XML der nu også omfatter ændringerne wrs.writexml(system.out); // Opdatér data i databasen wrs.seturl("jdbc:mysql:///test"); wrs.setusername("root"); <?xml version="1.0"?> <webrowset xmlns=" <metadata> <column-count>2</column-count> <column-definition> <column-index>1</column-index> <column-display-size>32</column-di <column-name>navn</column-name> <table-name>kunder</table-name> <column-type-name>varchar</column- </column-definition> <column-definition> <column-index>2</column-index> <column-name>kredit</column-name> <schema-name></schema-name> <table-name>kunder</table-name> <column-type-name>float</column-ty </column-definition> </metadata> <data> <currentrow> <columnvalue>jacob</columnvalue> <columnvalue> </columnvalue> </currentrow> <currentrow> <columnvalue>brian</columnvalue> <columnvalue>0.0</columnvalue> </currentrow> <currentrow> <columnvalue>poul Nyrup</columnVal <columnvalue> </columnvalue </currentrow> </data> </webrowset>

Web- og serverprogrammering

Web- og serverprogrammering Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Web- og serverprogrammering Databasekommunikation - dag 7 Strategier til databaseadgang JDBC (Java DataBase Connectivity)

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java VPJ dag 1 Introduktion og overblik over kurset Datastrukturer: Lister, mængder og iteratorer Opsamling: Grafikprogrammering, komponenter, containere og layout Bruge komponenter

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 3 Skabende designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Eksempel: Forskellige slags

Læs mere

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004

Jacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004 Genbrugelige komponenter og designmønstre i Java Jacob Nordfalk Ingeniørhøjskolen i København Nykøbing F itvisioncenter 24. februar 2004 Program Om Jacob Nordfalk introduktion (ikke-teknisk del) Komponentbaseret

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 11 Persistens Fremlæggelse af programmering/status for projekter medbring klassediagram og skærmbillede Projektvejledning JNI og kald til maskinkode/c/c++ fra Java

Læs mere

Eksempel på en database: studenter, kurser, eksamener

Eksempel på en database: studenter, kurser, eksamener Udvidet Programmering 1999 Forelæsning 20, fredag 12. november 1999 Relationsdatabaser: relationer, tupler, attributter Forespørgselssproget SQL Databasesystemet PostgreSQL Tilgang til relationsdatabaser

Læs mere

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.

Prepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Denne guide er oprindeligt udgivet på Eksperten.dk Prepared Statements Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Skrevet den 18. Feb 2010

Læs mere

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i)

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i) Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i) 1: KLASSE METODE KONSTRUKTØR EKS. PÅ TYPE (VARIABLE) PUBLIC/PRIVATE OBJECT UD FRA KLASSE KALD METODE TILFØR PARAMETER TIL METODE RETURNERE VARIBEL.

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 2 Objektorienterede principper Fastlæggelse af emne for projekt Ansvarsområder, kobling og indkapsling Programmere i pakker Specificere funktionalitet i et interface

Læs mere

Kursus i OOP og Java

Kursus i OOP og Java Kursus i OOP og Java Sidst opdateret 24. november 2001 kun afpudset t.o.m lektion 12 Indholdsfortegnelse Kursus i OOP og Java 1 Til underviseren 5 Om transparenterne 5 Om ugesedlerne 5 Lektion 1 6 Mål

Læs mere

Geografisk lokalisering i JSP

Geografisk lokalisering i JSP Denne guide er oprindeligt udgivet på Eksperten.dk Geografisk lokalisering i JSP Denne artikel forklarer lidt om hvorfor og hvordan man laver geografisk lokalisering og viser noget kode. Der er andre artikler

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter..

9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter.. 9.8 Kildekode Pakke Klasse Sidenummer db Aktivitetstype 91 Behandler 91 ConnectDB 92 DagensKommentar 93 Helligdag 94 IkkePrimaerTid 94 Patient 96 Patientaftale 96 PatientAktivitet 97 Patientgruppe 98 PatientgruppeItem

Læs mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11 DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void

Læs mere

import java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label

import java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label Programmering 1999 Forelæsning 13, tirsdag 12. oktober 1999 Oversigt Grafiske brugergrænseflader. Komponenter: Knapper, tekstfelter, checkbokse... Vinduer (containere). Hændelser, hændelsesstyret programmering.

Læs mere

Dag 10 Flertrådet programmering

Dag 10 Flertrådet programmering Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,

Læs mere

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

Læs mere

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007

MySQL i Java. Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007 MySQL i Java Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007 Hvad er MySQL? Det er et database system, som er gratis for os at bruge. Det er lidt mere besværligt i starten at bruge

Læs mere

En kort introduktion til JDBC

En kort introduktion til JDBC En kort introduktion til JDBC af Henrik Bulskov Datalogi Roskilde Universitetscenter 22. marts 2001 JDBC er et generelt klassebibliotek til kommunikation med databaser. Det er ikke målrettet en bestemt

Læs mere

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

Læs mere

Software Construction 1 semester (SWC) Spørgsmål 1

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

Over Forelæsning omponenter ogrammering sigt 14, 1999 freda containere 15. oktober 1999 Eksempel: out GUI til beregning fakultet.

Over Forelæsning omponenter ogrammering sigt 14, 1999 freda containere 15. oktober 1999 Eksempel: out GUI til beregning fakultet. Programmering 1999 Forelæsning 14, fredag 15. oktober 1999 Oversigt Repetition: GUI komponenter og containere. Layout af grafiske brugergrænseflader i Java. Større layout-opgave. Programmering 1999 KVL

Læs mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 9 Andre designmønstre Andre designmønstre: Uforanderlig, Fluevægt, Lagdelt Initialisering, Komposit/Rekursiv Komposition, Kommando/Ændring Fremlæggelse af programmering/status

Læs mere

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...

Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... 9 Nogle HTML tags... 9 Databaser og PHP Når vi snakker

Læs mere

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1 Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Serialization i Java

Serialization i Java Serialization i Java Tutorial lavet af Jákup W. Hansen TSU 2006 1.semester 06.novemter 2006 Hvad er Serialization? I vores tekstbog Objects First with Java bliver denne del af Java ikke gennemgået. Men

Læs mere

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 4 1. marts - 8. marts Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,

Læs mere

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen. Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19

Læs mere

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree. Programmering 1999 Forelæsning 11, tirsdag 5. oktober 1999 Oversigt Klasse-hierarkier: superklasser og subklasser Nedarvning Polymorfi Programmering 1999 KVL Side 11-1 Hierarkier En klasse repræsenterer

Læs mere

Tree klassen fra sidste forelæsning

Tree klassen fra sidste forelæsning Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years

Læs mere

Klasser og nedarvning

Klasser og nedarvning Datalogi C, Efterår 2004 OH er, forelæsning 21/9-2004 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Opgaven til senere: Generalisere

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11 DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4

Læs mere

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen Studiepraktik Thomas Bøgholm boegholm@cs.aau.dk Mikkel Hansen mhan@cs.aau.dk Jacob Elefsen jelefs12@student.aau.dk 1 Studiepraktik -- program Program onsdag 10.00 10.15 Registrering af fremmøde og gennemgang

Læs mere

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002

Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002 Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002 På datalogi har vi en databaseserver, som de studerende på datalogi kan benytte til projekter og som også benyttes i forbindelse

Læs mere

Indholdsfortegnelse. javabog.dk Forord

Indholdsfortegnelse. javabog.dk Forord javabog.dk Forord javabog.dk Forord Indholdsfortegnelse 0 Forord...1 0.1 Bogens opbygning...1 0.1.1 Veje gennem bogen...1 0.1.2 Kapitlernes opbygning...3 0.2 Til underviseren...3 0.3 Ændringer i tredje

Læs mere

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML SQL kap 6-7 + 17-20 DDL og DML 1 De vigtigste SQL-sætninger Data Definition Language (DDL) create table: opretter en ny tabel create unique index: tilføjer et index til en tabel drop table : sletter en

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

Dag 10 Flertrådet programmering

Dag 10 Flertrådet programmering Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,

Læs mere

Objektorienterede metoder

Objektorienterede metoder Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering (bl.a. brug af for-løkker) Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt)

Læs mere

Rigtig SQL Programmering

Rigtig SQL Programmering Rigtig SQL Programmering 1 SQL i Rigtige Programmer Indtil nu har vi brugt SQL direkte i kommandolinje promt/gui program, hvor vi kan lave forespørgsler til databasen I virkeligheden: Programmer kontakter

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Brug af klassen Collections og interfacet Comparable BlueJ s Debugger Nyttig til at inspicere

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

Læs mere

Løsning af møntproblemet

Løsning af møntproblemet Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Øvelse 9. Klasser, objekter og sql-tabeller insert code here

Øvelse 9. Klasser, objekter og sql-tabeller insert code here Øvelse 9. Klasser, objekter og sql-tabeller Denne opgave handler om hvordan man opbevarer data fra databasekald på en struktureret måde. Den skal samtidig give jer erfaringer med objekter, der kommer til

Læs mere

Virkefeltsregler i Java

Virkefeltsregler i Java Virkefeltsregler i Java int i; int k; Sequence s; int j; What s in a name? Brian spillede blændende i søndags! Skolen ligger i Viby Ring til Kirsten og sig at... Et navn fortolkes i en kontekst og konteksten

Læs mere

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation). Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer

Læs mere

med Java og Linux Jacob Nordfalk Linuxforum 2004 Lørdag 6. marts 17.00-17.45 Center for Videreuddannelse Ingeniørhøjskolen i København

med Java og Linux Jacob Nordfalk Linuxforum 2004 Lørdag 6. marts 17.00-17.45 Center for Videreuddannelse Ingeniørhøjskolen i København Webprogrammering med Java og Linux Jacob Nordfalk Center for Videreuddannelse Ingeniørhøjskolen i København Linuxforum 2004 Lørdag 6. marts 17.00-17.45 Program Om Jacob Nordfalk Reklame Intro til Java

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt) antal elementer Afleveringsopgave:

Læs mere

Exceptions i Delphi. Try except

Exceptions i Delphi. Try except Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,

Læs mere

PHP Snippets. De små korte. Skrevet af Daniel Pedersen

PHP Snippets. De små korte. Skrevet af Daniel Pedersen PHP Snippets De små korte Skrevet af Daniel Pedersen Indhold PHP Snippets De små korte er en samling af små og praktiske kode eksempler med kort forklaring, som med formål at kunne benyttes til opsalgsværk

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 13 valgfrie emner Evt: Introduktion til J2EE og EJB Hvordan definere egne generics Evt.: Værktøjer til forbedring af kodekvalitet kodemetrikker og audit Projektvejledning

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Opfølgning på Skildpadde

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList Collection (samling af objekter) med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet i JavaDoc) MusicOrganizer projektet Eksempel

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet

Læs mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%

Læs mere

Hvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter

Hvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter OOP e2002 - uge 42 6. kursusgang Hvordan organiseres et programs grafik-elementer? 1. Teori: class Component og subklasser: Composite pattern layout-managere hændelsesstyret programmering 2. XP-program:

Læs mere

DM01 DM01. 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 13/5-2003. Side 1 af 7

DM01 DM01. 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 13/5-2003. Side 1 af 7 DM01 DM01 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 13/5-2003 Side 1 af 7 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DNA2:...4 2.1.1 METODER:...4

Læs mere

En Kort Introduktion til Oracle

En Kort Introduktion til Oracle En Kort Introduktion til Oracle Henrik Bulskov 12. februar 2001 bulskov@ruc.dk 1 Start SQL*Plus... 1 1.1 TELNET... 1 1.2 WINDOWS SQL PLUS... 2 2 Kør et SQL-script... 3 3 Hjælp i SQL*Plus... 3 4 Editering

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense 7 DM -. Obligatoriske Opgave Løsning af ligningssystem vha. fipunktmetoden Jacob Christiansen, 8 moffe@imada.sdu.dk Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense. Opgaven Der skal implementeres

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner Java Programmering En bog for begyndere Skrevet af Henrik Kressner Indholdsfortegnelse Introduktion...3 1 Introduktion til Java...4 1.1 Javakoden...4 1.2 Det første program...6 1.2 Skriv til skærmen...6

Læs mere

Forelæsning Uge 12 Torsdag

Forelæsning Uge 12 Torsdag Forelæsning Uge 12 Torsdag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

Læs mere

applikation----x----odbc driver manager----foobar ODBC driver----foobar database

applikation----x----odbc driver manager----foobar ODBC driver----foobar database Denne guide er oprindeligt udgivet på Eksperten.dk ODBC i C/C++ Denne artikel beskriver hvordan man bruger ODBC i C/C++. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004 Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),

Læs mere

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.

Bemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse. Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i

Læs mere

Import af rekursivt (parent-child) hierarki i Palo

Import af rekursivt (parent-child) hierarki i Palo Import af rekursivt (parent-child) hierarki i Palo Dette dokument beskriver hvordan et simpelt rekursivt (parent-child) hierarki kan importeres ind i Palo på forskellige måder via SQL og samtidig bibeholde

Læs mere

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999

Forelæsning 17, tirsdag 2. november 1999 Søgning efter en given værdi i en tabel. Programmering 1999 sammenligninger, hvor Programmering 1999 Forelæsning 17, tirsdag 2 november 1999 Søgning efter en given værdi i en tabel Lineær søgning og binær søgning Effektivitet: maskinuafhængig vurdering af køretid

Læs mere

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Kursusnavn: Programmering. Tilladte hjælpemidler: Alle skriftlige hjælpemidler Opgavesættet består af fire opgaver, der har følgende vægtning: Opgave

Læs mere

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft Kurserne Kurset: programmering i sproget Java Programmering og Udvidet Programmering Lærerne: Morten Larsen og Peter Sestoft Kursusmål: I skal lære at skrive interessante programmer i Java Forudsætninger:

Læs mere

Database programmerings tips

Database programmerings tips Denne guide er oprindeligt udgivet på Eksperten.dk Database programmerings tips Denne artikel vil introducere nogle problem stillinger med flere samtidige brugere, som man skal tænke på, når man udvikler

Læs mere

Anvendelse af metoder - Programmering

Anvendelse af metoder - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur

Læs mere

SigmaT.

SigmaT. Java + Groovy Disposition Om SigmaT Eksempel på indlejring af Groovy Overvågning af PEM Ønske om dynamisk loaded Java uden at fifle med classloaderen Groovy til hjælp Opsamling hvad jeg ikke har fortalt

Læs mere

Udvikling af DOTNET applikationer til MicroStation i C#

Udvikling af DOTNET applikationer til MicroStation i C# Udvikling af DOTNET applikationer til MicroStation i C# Praktiske tips for at komme i gang. Gunnar Jul Jensen, Cowi Hvorfor nu det? Mdl og Vba kan det hele Fordelene er : udviklingsmiljøet er eksternt

Læs mere

Forskellige databaser

Forskellige databaser Denne guide er oprindeligt udgivet på Eksperten.dk Forskellige databaser Denne artikel beskriver kort forskellige database typer, produkter og API'er. Målet er at give et overblik over hvad der findes

Læs mere

Java web applikationer med Tomcat

Java web applikationer med Tomcat Denne guide er oprindeligt udgivet på Eksperten.dk Java web applikationer med Tomcat Denne artikel beskriver hvordan man kan konfigurere container managed security og en database connection pool i Tomcat.

Læs mere

Forelæsning Uge 12 Mandag

Forelæsning Uge 12 Mandag Forelæsning Uge 12 Mandag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList klassen Gør det let at lave en objektsamling (collection) med et variabelt antal elementer Der er mange andre slags objektsamlinger (se Collection interfacet i JavaDoc)

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere