Mer om programmering av aggregeringer

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

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

HØGSKOLEN I SØR-TRØNDELAG

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

Kapittel 9: Sortering og søking Kort versjon

Sortering med Comparable og Comparator

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

Liste som abstrakt konsept/datatype

HØGSKOLEN I SØR-TRØNDELAG

Kapittel 9: Sortering og søking Kort versjon

Kap.8 Sortering og søking sist oppdatert 16.03

Kapittel 9: Sortering og søking Kort versjon

Introduksjon til fagfeltet

AlgDat 12. Forelesning 2. Gunnar Misund

Læringsmål for forelesningen

AlgDat 10. Forelesning 2. Gunnar Misund

Tittel Objektorientert systemutvikling 2

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Kapittel 7: Mer om arv

Kapittel 8: Sortering og søking

Kapittel 9: Sortering og søking Kort versjon

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

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

HØGSKOLEN I SØR-TRØNDELAG

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

Distribuerte objekter og objekt-basert mellomvare

Kapittel 8: Sortering og søking INF100

Eksamen i Internetteknologi Fagkode: ITE1526

INF106 Objektorientert programmering

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

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

HØGSKOLEN I SØR-TRØNDELAG

Distribuerte objekter og objekt-basert mellomvare

Datamodellering: ER-modeller ER = Enitity-Relationship del 1: Notasjon og oversetting av ulike ER-modeller til tilsvarende relasjonsmodeller

Datastrukturer for rask søking

HØGSKOLEN I SØR-TRØNDELAG

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

En klasse som arver, eller selv deklarerer en abstrakt metode, må deklareres som abstrakt.

Velkommen til. INF våren 2017

Kapittel 8: Sortering og søking INF100

Objektorientert programmering i Python

Objektorientering i ER-modeller EER-modeller Enhanced Entity Relationship Models

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

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

Distribuerte objekter og objekt-basert mellomvare

EKSAMEN OBJEKTORIENTERT PROGRAMMERING Alle trykte og skrevne. Java API dokumentasjon er tilgjengelig lokalt på hver maskin.

EKSAMEN 6109 OBJEKTORIENTERT PROGRAMMERING 5609 OBJEKTORIENTERT PROGRAMMERING

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

Introduksjon til objektorientert programmering

Obligatorisk oppgave 6 i INF1010: Dekryptering

Etternavn Fornavn Født Død Annet Felt

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

Sist gang (1) IT1101 Informatikk basisfag. Sist gang (2) Oppgave: Lenket liste (fysisk) Hva menes med konseptuelt og fysisk i forb med datastrukturer?

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

Hvorfor objektorientert programmering? Objektorientert programmering i Python: Introduksjon. Læringsmål uke 7. Undervisning og pensum IN1000

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

Eksamensoppgave i IFUD1025 Programmering i Java

Hvorfor objektorientert programmering?

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

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

Hvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010

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

HØGSKOLEN I SØR-TRØNDELAG

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

Objektorientering i ER-modeller EER-modeller Enhanced Entity Relationship Models

Tom Røise 2/28/2007. IMT2243 : Systemutvikling 1. Forelesning IMT mars Tema : Litteratur : Strukturert analyse. Strukturert analyse

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

Algoritmer og Datastrukturer

Oppgave 1 a. INF1020 Algoritmer og datastrukturer. Oppgave 1 b

UNIVERSITETET I OSLO

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

INF1010. Stein Michael Storleer (michael) Lenkelister

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

UNIVERSITETET I OSLO

Datakvalitet og Noark

Obligatorisk oppgave 1 INF1020 h2005

UNIVERSITETET I OSLO

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

Hvor raskt klarer vi å sortere?

IN2000. Gjennomgang av tekniske oppgaver på prøveeksamen. Erlend Stenlund og Steffen Almås + innspill fra Gaute Berge

Innhold. INF1000 Høst Unified Modeling Language (UML) Unified Modeling Language (UML)

HØGSKOLEN I SØR-TRØNDELAG

Dagens tema. Sortering. Fortsettelse om programmering vha tråder.

Velkommen til. IN1010 Objektorientert programmering Våren 2018

Studieaktiviteter i INF1010

Pensum: fra boken (H-03)+ forelesninger

1. Innføring i bruk av MySQL Query Browser

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

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

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

Dagens forelesning. INF1010 Datastrukturer Lister og køer Pekerkjedelister Øvelser. Innhold i dette lysarksettet

INF1010 våren januar. Objektorientering i Java

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder.

HØGSKOLEN I SØR-TRØNDELAG

IN1010 våren januar. Objektorientering i Java

Definisjon av binært søketre

HØGSKOLEN I SØR-TRØNDELAG

HØGSKOLEN I SØR-TRØNDELAG

Transkript:

Mer om programmering av aggregeringer Repetisjon: Komposisjon og aggregering En register-klasse: modellering En register-klasse: implementering Sortering og søking 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

Aggregering Student -studnr +getpoststed() +getstudnr() +setpoststed() +setstudnr() +finnpostnr() +finnsted() * poststed Poststed -postnr {readonly} -sted {readonly} +getpostnr() +getsted() Se på koden side 355-356 EksempelStudent2.java Ett studentobjekt er koplet til eksakt ett poststedobjekt. Poststedobjektet spiller rollen poststed i denne sammenhengen. Dette blir navnet på en objektvariabel i klassen Student. Stjerna sier at ett og samme poststedobjekt er knyttet til mange studentobjekter. En aggregering er en en-del-av-sammenheng mellom objekter. Ett objekt består av et eller flere andre objekter. De objektene som aggregatet består av, kan leve både før og etter aggregatet, og omverden har tilgang til disse objektene. Aggregatet vet alltid hvilke objekter det består av. Forelesning 3, side 2

Komposisjon Student -fdato {readonly} +getfdato() +getnavn() +setnavn() navn Navn -fornavn -etternavn +getfornavn() +getetternavn() +setfornavn() +setetternavn() Se på koden side 364-365 EksempelStudent4.java Et bestemt navneobjekt tilhører eksakt ett bestemt studentobjekt. Hver student har kun ett navn. En komposisjon er også en en-del-av-sammenheng mellom objekter, men her har vi en mye sterkere binding mellom objektene enn for aggregering. Omverden har ikke tilgang til de objektene som er gjemt inne i det sammensatte objektet (kompositten). Livet til disse objektene er like langt eller kortere enn livet til det sammensatte objektet. Forelesning 3, side 3

Aggregering, komposisjon og mutable objekter Aggregering Ved aggregering lager vi ikke kopier av objektene det er ofte i samsvar med virkeligheten Potensielt problem Mange referanser til samme objekt. Lett å miste oversikten. Mulige løsninger Bruk immutable objekter hvis mulig. Bruk pakketilgang for å beskytte objekter (se kap..7, side 379) Komposisjon Kompositten skal ha sine egne utgaver av objektene I praktisk programmering av komposisjon nøyer vi oss imidlertid med enkelteksemplarer av immutable objekter, da ingen kan ødelegge disse uansett Når komposisjon og når aggregering? Virkeligheten vi modellere bestemmer hvorvidt vi skal bruke det ene eller det andre. Jmf. Navn og poststed. (Tabeller inngår vanligvis i en komposisjon, dvs vi lager kopier.) Aggregering er mest vanlig. Forelesning 3, side 4

En register-klasse Register registeret * Utstyr Vi skal lage klasser for å administrere uttak av kontorrekvisita og -utstyr i en bedrift. Registeret skal omfatte alt fra blyanter, viskelær og opp til stoler og bord. Vi håndterer imidlertid alt utstyr på samme måte. Om hver utstyrsvariant lagrer vi betegnelse (navn), leverandør, hvor mye som er på lager (varebeholdning) nedre grense for bestilling (dersom lagerbeholdningen går under denne verdien, skal varen opp på bestillingslisten). Forelesning 3, side 5

Hvilke operasjoner bør en klient kunne gjøre i forhold til et registerobjekt? 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 Forelesning 3, side 6

Sortering av objekter. Søking blant objekter. Objektene ligger i en tabell eller i en ArrayList To typer sorteringsrekkefølger for objekter Sortering i henhold til objektenes naturlige orden Definert i metoden compareto() som er implementasjonen av interfacet Comparable. Likhet med compareto() bør bety det samme som likhet med equals() Sortering i henhold til en rekkefølge definert i en klasse som implementerer interfacet Comparator. Spesielt eksisterer det en Comparator-klasse som vi kan bruke hvis vi ønsker å sortere tekster i henhold til norsk tegnsett. Søking lineært søk binærsøk, forutsetter at objektene er sortert Søke- og sorteringsmetoder i Java-API-et etter objektenes naturlige orden eller Comparator-objekt som argument til sorteringsmetoden Gjennomgå SorterOgSoekTabellerJavaAPI.java (side 42-43) Gjennomgå SorterOgSoekArrayListJavaAPI.java (side 426-427) Forelesning 3, side 7

Klassen Register Sortere arraylisten Naturlig orden Java.util.Collections.sort(reg); // klassemetode Vil bruke den compareto()-metoden som vi har laget i klassen Utstyr Forelesning 3, side 8