Datastrukturer & Algoritmer, Datalogi C

Henning Christiansen 20/9-2001

 

Opgaver til forel¾sningen 24/9-2002

 

Opgaverne fra sidste gang og nedenstŒende; der stilles ingen afleveringsopgave til DatC denne gang.

 

Opgave

Opgaven handler bl.a. om at udnytte eksisterende faciliterne i java.lang og java.util sΠgodt som muligt. Den bedste besvarelse er altsΠden der indeholder sΠlidt kode som muligt.

 

Vi skal lave noget, der minder om noget om en afbildning (Map) og noget om en m¾ngde(Set), men med mulighed for effektiv opslag pŒ flere Òn¿glerÓ.

 

Vi skal implementere et lille delsystem som holder styr pŒ en database over ÒrecordsÓ af formen:

 

cpr-nummer

Navn

Videoklip

 

En given person er registreret med cpr-nummer, navn og et Vidoeklip der viser personen. Der skal defineres en klasse Person som svarer til sŒdanne ÒrecordsÓ.

 

Som cpr-nummer benyttes blot ÒintÓ, og som navn en String. Vi g¿r ikke det store nummer ud af at repr¾sentere videoklip. Brug blot en klasse i stil med f¿lgende:

 

class Videoklip; {public Videoklip(float f); {ff=f}; private int ff}

 

Vi skal t¾nke pŒ videoklip som noget, der fylder meget Ñ og derfor er det forbudt at kopiere objekter af denne klasse.

 

F¿rste version af en databaseklasse: Vi antager at der ikke er forskellige personer med samme navn. Skriv en klasse med f¿lgende metoder (skitseret ved ÒsignatureÓ):

 

                  add( <Person>)                                                    Tilf¿jer et personobjekt til databasen

                  get_by_cpr( <Cpr-nummer>)                    Finder personobjektet svarende til <Cpr-nr.>

                  get_by_name( <String> )                             Finder personobjektet med navn <String>

 

Metodernes opf¿rsel skal i¿vrigt v¾re sŒ det ligner de tilsvarende fra Map eller Set. Overvej hvilke andre metoder, databaseklassen b¿r udstyres med Ñ og hvad betyder Òb¿rÓ?

 

Implementer og aftest klassen.

 

Anden version af en databaseklasse: (beh¿ver ikke implementeres)

Nu tillader vi at der kan forekomme flere personer, som hedder det samme, men vi ¿nsker at opretholde en funktionalitet, som ligner den f¿rste version sŒ meget som muligt. Overvej hvorden metoderne kan se ud og hvordan implementationen kan tilpasses.