OOP dag 17

Datastrømme og filhåndtering

Bemærk at appletter ikke har adgang til filerne på det lokale filsystem.
Nedenstående er derfor kun relevant for almindelige programmer.

15.9 Opgaver (så langt du har lyst)

Prøv eksemplerne fra lærebogen kapitel 15 og løs

  1. Udvid LaesTekstfilOgLavStatistik.java sådan, at linier, der starter med "#", er kommentarer, som ignoreres, og afprøv, om programmet virker.

  2. Lav et program, der læser fra en tekstfil, skyld.txt, og udskriver summen af tallene i hver linie med navnet foranstillet (f.eks. Anne: 450). Filen kunne f.eks. indeholde:
    Anne 300 150
    Peter 18 300 900 -950
    Lis 1000 13.5

  3. Skriv programmet Grep.java, der læser en fil og udskriver alle linier, der indeholder en bestemt delstreng (vink: Ret LaesTekstfil.java - en linie undersøges for en delstreng med substring(...)).

  4. Skriv programmet Diff.java, der sammenligner to tekstfiler linie for linie og udskriver de linier, der er forskellige.

  5. Ret SkrivTekstfil.java til SkrivKomprimeretTekstfil.java, der gemmer data komprimeret med GZIPOutputStream (se appendiks).

  6. Lav den tilsvarende LaesKomprimeretTekstfilOgLavStatistik.java.

  7. Kør KopierFil på din maskine, og se, hvor lang tid det tager (husk at lægge en fil med navn bog.html på ca. 100 kb det rette sted, eller ret filnavnet i programmet).
    Prøv derefter, hvor du bruger buffere for mere effektiv læsning og skrivning.
    Prøv igen, hvor programmet læser og skriver 4 kb ad gangen.
    Gør det nu nogen forskel, om du bruger buffere? Hvorfor/hvorfor ikke?


Intro til kommunikation med databaser - JDBC (hvis interesse)

Hvis du har interesse for JDBC så prøv eksemplerne fra lærebogen kapitel 20.
Bemærk at du skal have adgang til en database for at få noget til at virke.

20.4 Opgaver

  1. Ændr SimpeltDatabaseeksempel, så den også laver en SQL-forespørgsel.

  2. Udvid Databaseforbindelse, så den kan søge efter en kunde ud fra kundens navn (antag, at navnet er en primærnøgle, så der ikke kan være flere kunder med samme navn).

  3. Udvid Databaseforbindelse, så den kan give en liste med alle kunder med negativ kredit.

  4. Lav et program, der holder styr på en musiksamling vha. en database. Databasen skal have tabellen UDGIVELSER med kolonnerne år, navn, gruppe og pladeselskab. Opret en tilsvarende klasse, der repræsenterer en Udgivelse (int år, String navn, String gruppe, String pladeselskab). Lav en passende Databaseforbindelse og et (evt. grafisk) program, der arbejder med musikdatabasen.

  5. Ret databasen i forrige opgave til at have tabellen UDGIVELSER med kolonnerne år, navn og gruppeID, tabellen GRUPPER med kolonnerne gruppeID, navn, pladeselskab. Hvordan skal Databaseforbindelse ændres? Behøves der blive ændret i resten af programmet? Hvorfor?

  6. Udvid programmet, så hver gruppe har en genre som f.eks. rock, tekno, klassisk (tabellen GRUPPER udvides med genreID, og tabellen GENRER med kolonnerne genreID og navn oprettes).