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

Like dokumenter
Mer om programmering av aggregeringer

Klasser skal lages slik at de i minst mulig grad er avhengig av at klienten gjør bestemte ting STOL ALDRI PÅ KLIENTEN!

Introduksjon til fagfeltet

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Databaser: Relasjonsmodellen, del I

LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring. Else Lervik, januar 2012.

Videregående programmering 6

1. SQL datadefinisjon og manipulering

Oppgaver Oppgave a: Sett opp mulige relasjoner

Datamodellering og databaser SQL, del 2

Sortering med Comparable og Comparator

Miniverden og ER- modell

< T extends Comparable<T> > Indre klasser mm. «Det du bør ha hørt om før oblig 4»

Kapittel 9: Sortering og søking Kort versjon

Datamodellering og databaser SQL, del 2

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

Datamodellering og databaser SQL, del 2

Test 2 OOP. - Prøveeksamen

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Plan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler

Databaser kort intro. Tom Heine Nätt

INF1010. Grensesnittet Comparable<T>

Kap.8 Sortering og søking sist oppdatert 16.03

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Leksjon 6. Objekt. Evt. importsetninger. public class Klasse { Konstruktør. Objektmetoder. Innkapsling (private): set-og get-metoder

Eksamen i Internetteknologi Fagkode: IVA1379

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

1. Innføring i bruk av MySQL Query Browser

Kapittel 9: Sortering og søking Kort versjon

ITGK - H2010, Matlab. Dagens tema : Teori - Databaser

HØGSKOLEN I SØR-TRØNDELAG

Introduksjon til objektorientert programmering

Kapittel 8: Sortering og søking INF100

HØGSKOLEN I SØR-TRØNDELAG

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

Læringsmål for forelesningen

Tilkobling og Triggere

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

Innhold uke 7. Objektorientert programmering i Python: Introduksjon. Lite tilbakeblikk: Programflyt og skop. Lite tilbakeblikk: Funksjoner er uttrykk

INF106 Objektorientert programmering

Kapittel 9: Sortering og søking Kort versjon

Kapittel 8: Sortering og søking INF100

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

1. Relasjonsmodellen Kommentarer til læreboka

Kapittel 8: Sortering og søking

INF Innleveringsoppgave 6

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

2 Om statiske variable/konstanter og statiske metoder.

Kapittel 9: Sortering og søking Kort versjon

Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB?

HØGSKOLEN I SØR-TRØNDELAG

GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka

Løsningsskisse, eksamen J2EE og distribuerte systemer 19.mai 2004

AlgDat 10. Forelesning 2. Gunnar Misund

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

Å programmere databasetjeneren JavaDB. Programkoden ligger i databasen

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

Java Database Connectivity (JDBC) Norvald H. Ryeng

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

SQL 3: Opprette tabeller, datainnsetting og utsnitt

En lett innføring i foreninger (JOINs) i SQL

1- og 2-veis Innkapsling Java Stabel Kø Prio-kø Iterator. Enveis- og toveislister Innkapsling («boxing») (Big Java 6.8.5)

8. JDBC-programmering med tilrettelegging for webapplikasjoner

Applikasjonsutvikling med databaser

Liste som abstrakt konsept/datatype

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

programeksempel Et større En større problemstilling Plan for forelesingen Problemstillingen (en tekstfil) inneholdt ordet "TGA"

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

Kapittel 8: Programutvikling

Løsningsforslag Test 2

Etter uke 6 skal du. Introduksjon til objektorientert programmering. Hva skjedde ~1967? INF1001. Grunnkurs i objektorientert programmering

HØGSKOLEN I SØR-TRØNDELAG

AlgDat 12. Forelesning 2. Gunnar Misund

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Eksamensoppgave i IFUD1025 Programmering i Java

Eksamensoppgave i IFUD1025 Programmering i Java

Dagens temaer. Sortering: 4 metoder Søking: binærsøk Rekursjon: Hanois tårn

UNIVERSITETET I OSLO

Eksamen Objektorientert Programmering 2011

BOKMÅL Side 1 av 7. KONTINUASJONSEKSAMEN I FAG TDT4100 Objektorientert programmering / IT1104 Programmering, videregående kurs

Repitisjonskurs. Arv, Subklasser og Grensesnitt

10. ASP og SQL Innledning Recordset-objektet. Innhold. Referanse til læreboka Kapittel Se detaljer nedenfor.

Læringsmål uke 7. Objektorientert programmering i Python: Introduksjon. Innhold uke 7. Lite tilbakeblikk: Programflyt og skop

Gjennomgang av eksamen H99

Innhold uke 8. Objekter: Bruk og intern organisering. Beskjeder: Oblig 1 6. Beskjeder: Oblig 7 (og 8)

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

8. ASP med databasekopling, del I

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

JDBC. Java DataBase Connectivity SQL i Java Læreboken: 8.5, s Forelesning i TDT4145, 9. mars 2004 Av Gisle Grimen

INF1010. Stein Michael Storleer (michael) Lenkelister

HØGSKOLEN I SØR-TRØNDELAG

Maps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

Transkript:

Sortering og søking i Java-API-et Tabeller og Arraylister Comaparable Comparator equals() LC9D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc9d.php Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring Else Lervik, januar 202 Å 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

Eksemplet fra forelesning 3 Register registeret Utstyr Klassen Utstyr er gitt. Programmer deler av klassen Register med enkel testklient. 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. Forelesning 3/5, side 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 2

Oversikt over metoder i Java API-et Sortering Tabell java.util.arrays.sort(tabell) java.util.arrays.sort(tabell, komp) ArrayList java.util.collections.sort(arrayliste) java.util.collections.sort(arrayliste, komp) Binærsøk, returnerer indeksen, eventuelt (-indeks -) 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 - objektmetode i klassen ArrayList: indexof(element) lastindexof(element) Forelesning 3/5, side 5 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 3

Hva er en database? Hva er SQL? Å ta i bruk JavaDB Å lage Java-program mot en database LC9D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc9d.php Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring Else Lervik, januar 202 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 4

Eksempel (fra forelesning 3) Student -studnr +getpoststed() +getstudnr() +setpoststed() +setstudnr() +finnpostnr() +finnsted() class Student { private Poststed poststed; private int studnr; class Poststed { private final String postnr; private final String sted; poststed Poststed postnr Poststed -postnr {readonly} -sted {readonly} +getpostnr() +getsted() sted 7022 Trondheim 75 Halden 5020 Bergen I en vanlig relasjonsdatabase lagres kun dataene. Student studnr postnr 2345 75 23456 7025 34567 7025 Forelesning 3/5, side 9 Spesielle krav til tabellene Poststed postnr sted 7022 Trondheim 75 Halden 5020 Bergen Student studnr postnr 2345 75 23456 7025 34567 7025 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 0 5

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. Konferanse - senter rommene Rom reservasjonene Reservasjon Forelesning 3/5, side 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 (00, 'Ole', 'Hansen'); INSERT INTO person VALUES (0, 'Anne Grethe', 'Ås'); INSERT INTO person VALUES (02, 'Jonny', 'Hansen'); Utfør enkle SQL-setninger Forelesning 3/5, side 2 6

Å lage Javaprogram mot en database standardisert grensesnitt (JDBC), forskjellige drivere (husk classpath!) Demonstrasjon: Lag enkle Java-program som henter ut / legger inn data Forelesning 3/5, side 3 7