forts. fra vprg 3

13
Sortering og søking i Java-API-et Tabeller og Arraylister Comaparable Comparator equals() LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_LC191D.php Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring Else Lervik, januar 2012

Upload: sancha

Post on 07-Jan-2016

33 views

Category:

Documents


6 download

DESCRIPTION

Forts. fra Vprg 3. Sortering og søking i Java-API-et Tabeller og Arraylister Comaparable Comparator equals(). LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_LC191D.php Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Forts. fra Vprg 3

Sortering og søking i Java-API-etTabeller og Arraylister

ComaparableComparator

equals()

LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_LC191D.php

Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læringElse Lervik, januar 2012

Page 2: Forts. fra Vprg 3

Å bruke Java API-et til å sortere tabeller/ArrayLister der elementene er (referanser til) objekter

De ferdige metodene må kunne sammenligne de elementene som skal sorteres (søkes i)

Intet problem hvis primitive datatyper Hva hvis objekter? A. Sorterer etter objektenes naturlige orden

Sorteringsmetoden må bruke en metode for å sammenligne objektene, og den må vite navnet på denne metoden og hvordan den fungerer

Metoden skal hete compareTo() og metodehodet fins i interfacet Comparable En klasse implementerer et interface hvis vi skriver

implements <interfacenavn> etter klassenavnet og programmerer alle metodene i interfacet Kjenner java.io.Serializable fra før

B. Sorterer etter noe annet enn «objektenes naturlige orden» Da legger vi sammenligningen i en egen klasse som implementerer interfacet

Comparator. Et objekt av denne klassen blir argument til sorteringsmetoden

Forelesning 3/5, side 2

Page 3: Forts. fra Vprg 3

Eksemplet fra forelesning 3

Forelesning 3/5, side 3

Finn antall typer forskjellig utstyr I regeisteret Lag en utstyroversikt Registrer ny utstyrstype Finn antall på lager av en bestemt type utstyr Endre lagerbeholdningen for en bestemt type utstyr Søke fram detaljinfo om en bestemt type utstyr

Vis fram koden fra forelesning 3, eksempel på sortering av arraylister etter naturlig orden.

Utvid med annen sortering.

*1

registeretRegister Utstyr

Klassen Utstyr er gitt.Programmer deler av klassenRegister med enkel testklient.

Page 4: Forts. fra Vprg 3

Søking i arraylister, Java API-et

Binærsøk krever sammenligning, bruker Comparable eller Comparator Lineærsøk krever kun test på likhet / ikke likhet. Meoden indexOf() i klassen

ArraList bruker equals(). Rimelig at equals() programmeres med samme funksjonalitet som

compareTo() == 0. Hva skjer hvis vi bruker disse metodene og

ikke programmerer compareTo()? ikke programmerer equals()?

Prøv ut indexOf() i registerklassen.

Forelesning 3/5, side 4

Page 5: Forts. fra Vprg 3

Oversikt over metoder i Java API-et

Forelesning 3/5, side 5

Tabell ArrayList

Sortering java.util.Arrays.sort(tabell)java.util.Arrays.sort(tabell, komp)

java.util.Collections.sort(arrayliste)java.util.Collections.sort(arrayliste, komp)

Binærsøk,returnerer indeksen, eventuelt (-indeks -1)

java.util.Arrays.binarySearch( tabell, søkeverdi)java.util.Arrays.binarySearch( tabell, søkeverdi, komp)

java.util.Collections.binarySearch( arrayliste, søkeverdi)java.util.Collections.binarySearch( arrayliste, søkeverdi, komp)

Lineær søk,Returnerer indeksen, eventuelt -1

objektmetode i klassen ArrayList:indexOf(element)lastIndexOf(element)

Page 6: Forts. fra Vprg 3

Sammenligne tekster iht lokalt tegnsett

String implementerer Comparable<String> Hvordan fungerer compareTo() for strenger? Hva med compareToIgnoreCase()? Klassen java.text.Collator implementerer Comparator<String> slik at

tekstene sorteres iht lokalt tegnsett public int compareTo(Utstyr u) { // skal sammenligne this med u

return betegnelse.compareTo(u.betegnelse); // tar ikke hensyn til æ, ø og å

}

Skiftes ut med public int compareTo(Utstyr u) { // skal sammenligne this med u

java.text.Collator koll = java.text.Collator.getInstance();

return koll.compare(this.betegnelse, u.betegnelse); // tar hensyn til æ, ø og å

}

Forelesning 3/5, side 6

Page 7: Forts. fra Vprg 3

Hva er en database?Hva er SQL?

Å ta i bruk JavaDBÅ lage Java-program mot en database

LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_LC191D.php

Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læringElse Lervik, januar 2012

Page 8: Forts. fra Vprg 3

Introduksjon til databaser

Når er det ikke godt nok med datafiler? Vi trenger å gjøre hyppige oppslag Vi trenger å lagre/endre ting fortløpende Vi trenger å hente ut spesifikke kombinasjoner av data Vi har høye krav til sikkerhet Flere brukere samtidig

Så hva er en database? ”En logisk samling med data satt sammen etter bestemte krav”

Sentrale begreper databasesystem: Programvare som lar oss håndtere data (lagre, hente ut, endre,

slette) og som tilbyr mekanismer for sikkerhetskopiering, adgangskontroll, transaksjonskontroll, med mer. Oracle, SQL Server, mySql, postgreSQL, Java DB (Derby), (Access)

database: dataene tjener – klient, flerbrukersystemer

Vi ser data på tabellform og intet annet, ofte en tabell pr ”klasse”

Forelesning 3/5, side 8

Page 9: Forts. fra Vprg 3

Eksempel (fra forelesning 3)

class Student { private Poststed poststed; private int studnr;

class Poststed { private final String postnr; private final String sted;

Forelesning 3/5, side 9

1*

poststedStudent

-studnr

+getPoststed()+getStudnr()+setPoststed()+setStudnr()+finnPostnr()+finnSted()

Poststed

-postnr {readonly}-sted {readonly}

+getPostnr()+getSted()

postnr sted

7022 Trondheim

1751 Halden

5020 Bergen

studnr postnr

12345 1751

23456 7025

34567 7025

Poststed Student

I en vanlig relasjons-database lagres kun

dataene.

Page 10: Forts. fra Vprg 3

Spesielle krav til tabellene

kun én verdi i hver rute ingen rader er like, det eksisterer en såkalt ”primærnøkkel” som identifiserer

raden de samme dataene lagres ikke flere ganger enn nødvendig. I praksis betyr

det at data lagres dobbelt bare dersom det trengs for å kople sammen tabeller – vi kopler sammen tabeller via kolonner med felles dataverdier

Forelesning 3/5, side 10

postnr sted

7022 Trondheim

1751 Halden

5020 Bergen

studnr postnr

12345 1751

23456 7025

34567 7025

Poststed Student

Page 11: Forts. fra Vprg 3

Oppgave

Hvilke tabeller foreslår du for klassene fra Øving 3? Anta at du skal lage en database for et konferansesenter for å holde oversikt over reservasjoner.

Forelesning 3/5, side 11

*1

rommeneKonferanse-

senterRom

*1

reserva-sjonene Reservasj

on

Page 12: Forts. fra Vprg 3

Hva er SQL?

Standardisert språk for å lage, slette og endre tabeller å hente ut data, å legge inn, slette og endre data

Å ta i bruk JavaDB - demo

Lag en database som består av en enkelt tabell

CREATE TABLE person( persnr INTEGER PRIMARY KEY, fornavn VARCHAR(30) NOT NULL, etternavn VARCHAR(30) NOT NULL);INSERT INTO person VALUES (100, 'Ole', 'Hansen');INSERT INTO person VALUES (101, 'Anne Grethe', 'Ås');INSERT INTO person VALUES (102, 'Jonny', 'Hansen');

Utfør enkle SQL-setninger

Forelesning 3/5, side 12

Page 13: Forts. fra Vprg 3

Å lage Javaprogram mot en database

standardisert grensesnitt (JDBC), forskjellige drivere (husk classpath!)

Forelesning 3/5, side 13

Demonstrasjon: Lag enkle Java-program som henter ut / legger inn data