dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

Størrelse: px
Starte visningen fra side:

Download "dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4"

Transkript

1 dintprog Manual Revision: 1241 August 24, 2010 Indhold I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 3 Grundbegreber om modellering 4 III Sprogkonstruktioner 5 4 Klasser (Classes) Type Feltvariabel (Fieldvariable, Attribut, Attribute) Metoder (methods) Metodesignatur Accessor Mutator Konstruktør (constructor) Sætninger (statements) Simple sætninger Tildeling (assignment) Metodekald Sammensatte sætninger Sekvens Selektion Rev: 1241, August 24, manual.tex

2 6.2.3 Iteration Blok IV Javas klassebibliotek 15 7 Collection Basale konstruktioner Erklæring og initialisering Tilgængelige metoder Gennemløb af collection Realisering af en-til-mange Algoritme-mønstre: find-en og find-alle Find-en Find-alle Comparable og Comparator Comparable Comparator Opsummering Collections klassen 22 2

3 Del I Introduktion Denne manual indeholder de vigtigste elementer af kurset Introduktion til Programmering ved Datalogisk Institut, Aarhus Universitet. Manualen er under revidering og vil blive udfyldt løbende som kurset skrider frem. Manualen er ment som et opslagsværk der skal give let adgang til de vigtigste elementer i kurset som f.eks. definitioner af begreber, beskrivelse af syntax og lignende. Manualen kan således under og efter kurset bruges som et opslagværk i programmeringsarbejdet. Den nyeste version af manualen er tilgængelig på: 1 Notation I dokumentet bruges kodestumper til at vise generelle former af konstruktioner og til at give eksempler. Kode der står med maskinskrift kan skrives direkte i Java-programmerne, hvorimod kursiv skrift skal erstattes med noget konkret. I nedenstående notationseksempel skal Klassenavn for eksempel erstattes med navnet på den klasse man gerne vil skrive. 1 public class Klassenavn{ } Listing 1: Notationseksempel 3

4 Del II Begreber I dette afsnit beskrives og relateres vigtige begreber fra kurset. 2 Grundbegreber om programmering Program Et sæt instruktioner. Genererer ofte output. Programmeringssprog Dét sprog i hvilket programmet udtrykkes. Programmør Personen som designer/implementerer/skriver programmet. Processor Den komponent (hardware eller software) der udfører instruktionerne i programmet. Hardware Ordet har mange betydninger, men med hardware menes oftest et stykke udstyr (oftest elektronik) som kan stille én eller flere slags funktionalitet til rådighed for programmet under udførelse. Data Dét input programmet tager samt det output der genereres. En indkøbsseddel kan ses som et program: Programøren er forfatteren af sedlen, programmeringssproget er det danske sprog, processoren er personen der handler ind, hardwaren er indkøbskurven og dataen er varerne. 3 Grundbegreber om modellering Begreb En idé som kan bruges til at udtrykke fælles karakteristika for separate objekter, dvs. en idé om hvordan en bestemt ting bør/kan opføre sig. Fænomen En enkelt instans af et begreb, dvs. én specifik ting som falder under et begrebs paraply. Fænomener tager deres egenskaber fra begreber. I objektorienteret programmering udtrykkes begreber som klasser og fænomener som objekter. Objekter har samme forhold til klasser som fænomener har til begreber. Begreb Fænomener Studerende Rasmus, Stine, Søren,... Fag dintprog, Perspektiverende datalogi, Calculus,... Prøveresultat bestået, ikke bestået, udeblevet,... 4

5 Del III Sprogkonstruktioner 4 Klasser (Classes) Overordnet består en klasse af tilstand og opførsel. Tilstand kan beskrive som et objekts hukommelse og et objekts opførsel er hvad det kan. Tilstand realiseres vha. feltvariabler (jf. 4.2) og opførsel realiseres med metoder (jf. 5). 4.1 Type Beskriver hvad for en kategori den efterfølgende variabel hører til. Defineres for variabler, retur-værdier, parametre, etc. 1 String 2 int 3 Person 4 double Listing 2: på typer 4.2 Feltvariabel (Fieldvariable, Attribut, Attribute) Et objekts tilstand udgøres af feltvariablerne. Disse erklæres på klasseniveau (og altså ikke inde i metoder), og bruges af objektet til at gemme data specifikt for objektet. Herunder kan du se en række eksempler på erklæringer af feltvariabler. 1 private String name; 2 private int age; 3 private double angle; Listing 3: på feltvariabler Den generelle form på en fejlvariabelerklæring er som i linje 3 herunder. Husk altid at erklære en feltvariabel private. 1 public class Klasse { 2 3 private type variabelnavn; 4 5 metoder 5

6 6 } Listing 4: Den generelle form på en feltvariabelerklæring 5 Metoder (methods) En metode repræsenterer et objekts opførsel. Det er altså metoderne der sørger for, at vi kan gøre noget og interagere med et objekt. En metode kan være en accessor (jf. 5.2), en mutator (jf. 5.3) eller en konstruktør (jf. 5.4). En metode består af: En metodesignatur (jf. 5.1) En metodekrop som indkapsler metodens funktionalitet. Kroppen består af en række sætninger (jf. 6) mellem to krølleparenteser {}. Den generelle form på en metodeerklæring ses i linje 2 4: 1 public class Klasse { 2 metodesignatur { 3 sætninger 4 } 5 } Listing 5: Den generelle form på en metodeerklæring 1 public void setname(string n) 2 { 3 name = n; 4 } 5 6 public void birthday() 7 { 8 age = age + 1; 9 System.out.println("Happy Birthday!"); 10 } public int getage() 13 { 14 return age; 15 } Listing 6: på metoder 6

7 5.1 Metodesignatur Den første linje i metoden, der navngiver metoden og beskriver (på et meget basalt niveau) hvordan den benyttes. En Overskrift for metoden. Konkret består en metodesignatur af (i nævnte rækkefølge): En access modifier der beskriver fra hvilke klasser der er adgang til metoden. Er metoden public kan den tilgås fra alle klasser og hvis den er private kan den kun tilgås fra den klasse den er erklæret i. En returtype (hvis ikke metoden er en konstruktør). Der beskriver typen (jf. 4.1) af de værdier (om nogen) metoden giver som svar Et metodenavn der bruges når man skal kalde metoden (skal begynde med et lille bogstav medmindre metoden er en konstruktør) (jf ) En start-parentes Et antal parametre, erklæret med type, der beskriver hvad man skal sende med hvis vil kalde metoden en slut-parentes Den generelle form er altså: 1 access modifier returtype metodenavn ( parameter 1, parameter 2,... ) Listing 7: Metodesignaturers generelle form 1 public void settonextdate() 2 public void adddays(int d) 3 public String tostring() Listing 8: på metodesignaturer 5.2 Accessor En metode der bruges til at spørge til et objekts tilstand. Har aldrig void som retur type. Metoden må ikke ændre på objektets tilstand. 7

8 1 public int getage() 2 { 3 return age; 4 } 5 6 public String getname() 7 { 8 return name; 9 } Listing 9: på acessors 5.3 Mutator En metode der bruges til at ændre et objekts tilstand. Har oftest void som retur type. 1 public void setage(int a) { 2 age = a; 3 } 4 5 public void setname(string n) { 6 name = n; 7 } Listing 10: på mutators 5.4 Konstruktør (constructor) En metode der bruges til at gøre et objekt klar til brug ved at sætte værdierne for feltvariablerne og lign. Navnet på en konstruktør-metode er det samme som navnet på klassen, og konstruktør-metoder har ingen retur type (heller ikke void). Den generelle form ses i linje 2 4: 1 public class Klassenavn{ 2 public Klassenavn( parameter 1, parameter 2,...){ 3 statements 4 } 5 } Listing 11: Konstruktørers generelle form 8

9 1 public class Person 2 { 3 private String name; 4 private int age; 5 6 /** 7 * Constructor for class Person. 8 * Creates a Person with name n and age a. 9 */ 10 public Person(String n, int a) 11 { 12 name = n; 13 age = a; 14 } /** 17 * Constructor for class Person. 18 * Creates a newborn Person with name n. 19 */ 20 public Person(String n) 21 { 22 name = n; 23 age = 0; 24 } 25 } Listing 12: To kontruktører til klassen Person 6 Sætninger (statements) Typisk vil kroppen af en metode bestå af en række sætninger som enten kan være simple (jf. 6.1) eller sammensatte (jf. 6.2). 6.1 Simple sætninger Simple sætninger kendetegnes ved at de typisk udgør en linje i en metode og at denne linje afsluttes af et semi-kolon (;). Man kan godt skrive mere end én simpel sætning per linje (f.eks. x = 42; y = 9;), men koden bliver næsten altid lettere at gennemskue hvis hver simpel sætning står på en linje for sig Tildeling (assignment) En tildeling sætter værdien på en variabel. Den generelle form af en assignment (tildeling) kan ses i listing 13. Når en assignment udføres, udregnes først udtrykket på højre side og dernæst gemmes resultatet i variablen på venstre side. 9

10 1 variabel = udtryk; Listing 13: Assignment 1 age = 29; 2 name = "Peter"; 3 k = Greenfoot.getRandomNumber(20) + 1; Listing 14: på assignments Metodekald Som beskrevet i afsnit 5, er en metode en måde at indpakke noget funktionalitet opførsel. For at bruge denne funktionalitet, skal man lave et metodekald. Hvis metodekaldet er i samme klasse som den metode man vil kalde er defineret, kan man nøjes med et internt metodekald - hvis ikke skal man bruge et eksternt metodekald. Den generelle form på et internt metodekald er: 1 metode(argumenter); Listing 15: Internt metodekald metode er metodens navn og argumenter er de argumenter som metoden tager. Den generelle form på et eksternt metodekald er: 1 objekt-reference.metode(argumenter); Listing 16: Eksternt metodekald Når man laver et eksternt metodekald, har man også brug for en objekt-reference der specificerer hvilket objekt metoden skal kaldes på. 1 w.eatleaf(); 2 c.moveto(200, 300); 3 eatlead(); Listing 17: på metodekald 6.2 Sammensatte sætninger Sammensatte sætninger kendetegnes ved, at de består af flere sætninger sat sammen. Basalt set findes der fire typer sammensatte sætnigner, sekvens, selektion, itetation og blok, som hver beskrives herunder. 10

11 6.2.1 Sekvens Er en række sætninger efter hinanden som udfører en eller anden form for process. Givet to sætninger A og B (simple eller sammensatte) er den generelle form: 1 A 2 B Listing 18: Sekvens I listing 19, er linje 2 3 et eksempel på en sekvens af sætninger. Ligeledes er for-løkken i linje 1 4 og linje 5 to sammenstillede sætninger (hvoraf den ene er sammensat). 1 for(int i=0;i<10;i++){ 2 move(i*10); 3 turn(i*90); 4 } 5 System.out.println("Done!") Listing 19: sekvenser Selektion En selektion er en sætning som via en betingelse opstiller et enten-eller udtryk og derved udfører en række sætninger alt efter hvad udfaldet af en betingelse bliver. Den generelle form ses i listing 20. Bemærk at else-delen i linje 3 4 i kan udelades. 1 if (betingelse) 2 A 3 else 4 B Listing 20: Selektion 1 r = Greenfoot.getRandomNumber(100); 2 if (r < 20) 3 { 4 turn(40); 5 } 6 else 7 { 8 turn(-40); 9 } 11

12 Listing 21: på selektion Iteration Iteration er en sætning som udfører en anden sætning en eller flere gange. Der findes tre typer iterations-sætniger: for-løkker, while-løkker og udvidede for-løkker. for-løkker består grundlæggende af fire elementer. En initialiserings sætning hvor en løbevariabel erklæres og initialiseres, en løbe-betingelse der afgør om iterationen skal forsætte, en inkrementering af løbevariablen og endelig de sætninger der skal udføres et antal gange. Den generelle form ses herunder: 1 for (initialisering; betingelse; inkrementering) { 2 sætninger 3 } Listing 22: for-løkke Når en for-løkke skal udføres gøres følgende: 1. initialiserings sætningen udføres. Dette skulle gerne resultere i at der erklæres en løbevariabel og at denne initialiseres. Det kunne f.eks. være int i = Det checkes om betingelsen er opfyldt. Hvis dette ikke er tilfældet, stopper for-løkken og udførslen forsætter uden for for-løkken. 3. Er betingelsen opfyldt udføres de sætninger der er inde i for-løkken. 4. Herefter udføres inkrementerings-sætningen og der gås til skridt 2. 1 for(int i=0;i<10;i++){ 2 move(i*10); 3 turn(i*90); 4 } Listing 23: på for-løkker Udvidet for-løkke bruges til at iterere over en collection (se afsnit 7), f.eks. en liste. Et eksempel kunne være, at man gerne ville udføre et stykke kode for hvert element i en liste. Den udvidede for-løkke består af fire elementer. En objektreference til en collection af en bestemt type, en løbe-variabel og en række statements (sætninger), der skal udføres. Den generelle form er: 12

13 1 for (type variabel : collection) { 2 statements 3 } Listing 24: Den udvidede for-løkke 1 for (Die d : mydiecup) 2 { 3 d.roll(); 4 } Listing 25: Eksempel på udvidede for-løkker while-løkken består af to elementer: en løbe-betingelse og en række statements (sætninger) der skal udføres. Den generelle form er: 1 while( betingelse ) { 2 statements 3 } Listing 26: While-løkken Inden hver udførelse af while-løkkens indre statements tjekkes om løbe-betingelsen er opfyldt. Hvis dette er tilfældet, udføres de indre statements. Hvis ikke, forsætter udførelsen efter while-løkken. 1 int i = 0; 2 while( i<10 ){ 3 move(i*10); 4 turn(i*90); 5 i++; 6 } 7 8 while ( true ) { 9 System.out.println("Im looping forever"); 10 } Listing 27: på while-løkken while-løkken i linje 1 6 gør det samme som for-løkken i listing

14 6.3 Blok En blok er en måde at lave en række at sætninger til en enkelt sætning. Den generelle form er: 1 { 2 statements 3 } Listing 28: Blok En blok bruges tit som kroppen på en if-sætning eller en for-løkke for(int i=0;i<10;i++) 2 { 3 move(i*10); 4 turn(i*90); 5 } Listing 29: Eksempel på en blok 14

15 Del IV Javas klassebibliotek 7 Collection Collections giver mulighed for at opbevare mange objektreferencer i ét objekt. Samtidig giver en collection muligheden for en-til-mange relationer. Dette betyder at et objekt kan relatere til flere objekter. Et eksempel, hvor man kan bruge en collection, kan være at man har en række Adresse-objekter og at man derudfra ønsker at lave en Adressebog som kan indeholde alle Adresse-objekterne. En collection felt-variabel i Adressebog-objektet kan her bruges til at indeholde referencer til alle Adresse-objekterne. Et andet scenarie kan være at man ønsker at opbevare et antal tekststrenge (String-objekter) i en collection. 7.1 Basale konstruktioner Erklæring og initialisering Det første man skal sørge for er at importere Java pakken java.util.arraylist! Hvis man er doven kan man bruge java.util.*, som importerer alle klasser fra java.util pakken. Erklæring og initialisering foregår i det store hele, som ved enhver anden variabel. I eksemplet herunder er taget udgangspunkt i, at vi ønsker en liste der kan indeholde objekter af typen String. 1 ArrayList<String> listofstring; 2 listofstring = new ArrayList<String>(); Listing 30: Erklæring og initialisering af en collection-variabel Tilgængelige metoder Man kan tilføje et String-objekt til listofstrings, via metoden add som findes i ArrayList, på følgende måde: 1 listofstrings.add("string1"); Listing 31: Tilføje til en collection For at finde ud af hvor mange objekter der er gemt i ArrayList-objektet listof Strings kan man bruge metoden size() der returner hvor mange elementer der er i en given collection: 1 listofstrings.size(); Listing 32: Inspektion af størrelsen på en collection 15

16 Der findes adskillige andre. Hvis man vil se en liste over alle tilgængelige metoder kan en sådan findes i Java API en under f.eks. ArrayList Gennemløb af collection For at løbe igennem alle elementer i ArrayList-objektet listofstrings, kan man bruge en udvidet for-løkke (jf ) og f.eks. bruge System.out.println()- metoden til at printe hvert enkelt objekt ud med. Resultatet vil se sådan ud: 1 for(string s : listofstrings){ 2 System.out.println(s); 3 } Listing 33: Udskrivning af elementer 7.2 Realisering af en-til-mange Figur 1 nedenfor er et UML diagram, der illustrerer en en-til-mange relation mellem klasserne A og B. Betydningen af diagrammet er, at hvert A-objekt kender til et eller andet antal B-objekter. Til hvert A-objekt er der et antal B-objekter der hører til. A * B Figur 1: En-til-mange relation For at realisere sådan en en-til-mange relation i Java-kode skal man gøre tre ting. Man skal: Importere den collection man vil bruge. Det kunne f.eks. være en ArrayList - i det tilfælde skal man skrive: import java.util.arraylist Erklære en feltvariabel med passende type. Typen skal være typen på den collection man vil bruge og som man har importeret Initialisere den ovenfor erklærede feltvariabel i konstruktøren. Vil man altså realisere en en-til-mange relation mellem to klasser, A og B, som i figur 1, er den generelle form som følger: 1 import java.util.collection-klasse; 2 public class A { 3 private Collection-klasse<B> feltvariabel-navn; 4 5 public A(){ 16

17 6 feltvariabel-navn = new Collection-klasse<B>(); 7 } 8 } Listing 34: Realisering af en en-til-mange relation I listing 34, importeres i linje 1, der erklæres i linje 3 og der initialiseres i linje 6. I Listing 35 realiseres en-til-mange relationen illustreret i figur 2. AddressBook * Person Figur 2: Eksempel på realisering af en en-til-mange relation 1 import java.util.arraylist: 2 public class AddressBook { 3 private ArrayList<Person> persons; 4 public AddressBook(){ 5 persons = new ArrayList<Person>(); 6 } 7 } Listing 35: Eksempel på realisering af en en-til-mange relation 7.3 Algoritme-mønstre: find-en og find-alle Find-en Princippet i en find-en-algoritme, er at den leder en liste igennem, indtil den møder et element der matcher betingelserne. Den holder så op med at lede og returnerer det element den har fundet. Den generelle form kan ses i listing 36 nedenfor. Element-type er typen på de elementer der er i listen liste. I linje 2 6 gennemløbes listen liste ved hjælp af en udvidet for-løkke (jf ) og det første element e der gør søge-udtrykket udtryk (linje 3) sandt, returneres i linje 4. Hvis intet element gør søge-udtrykket sandt, returneres null (linje 7). 1 public Element-type metodennavn(parametre) { 2 for ( Element-type e : liste ) { 3 if ( udtryk) { 4 return e; 17

18 5 } 6 } 7 return null; 8 } Listing 36: Den generelle form på en find-en algoritme 1 public Dice findonedice(int eyes) { 2 for ( Dice d : dice ) { 3 if ( d.geteyes() == eyes ) { 4 return d; 5 } 6 } 7 return null; 8 } 9 10 public Pixel findonepixel(int color) { 11 for ( Pixel p : pixels ) { 12 if ( p.getcolor() == color) { 13 return p; 14 } 15 } 16 return null; 17 } public Person findoneperson(string q) { 20 for ( Person p : persons ) { 21 if(p.getfirstname().contains(q) p.getlastname().contains(q)) { 22 return p; 23 } 24 } 25 return null; 26 } Listing 37: på find-en algoritmer Find-alle En find-alle-algoritme, søger ligesom en find-en-algoritme en liste igennem. Forskellen, ligger i at den laver en ny liste med alle de objekter der matcher søgekriterierne, og returnerer så denne liste. Den generelle form kan ses i listing 38 nedenfor. Element-type er typen på de elementer der er i listen liste. I linje 3 7 gennemløbes listen liste ved hjælp af en udvidet for-løkke (jf ) hver gang et element e gør søge-udtrykket udtryk 18

19 (linje 4) sandt, tilføjes det til listen result. Når for-løkken er færdig vil listen re sult indeholde alle de elementer der opfylder søge-udtrykket og derfor returneres result i linje 8. 1 public ArrayList<Element-type> metodennavn(parametre) { 2 ArrayList<Element-type> result = new ArrayList<Element-type>(); 3 for ( Element-type e : liste ) { 4 if ( udtryk) { 5 result.add(e); 6 } 7 } 8 return result; 9 } Listing 38: Den generelle form på en find-alle algoritme 1 public ArrayList<Dice> findalldice(int eyes) { 2 ArrayList<Dice> result = new ArrayList<Dice>(); 3 for ( Dice d : dice ) { 4 if ( d.geteyes() == eyes ) { 5 result.add(d); 6 } 7 } 8 return result; 9 } public ArrayList<Pixel> findallpixels(int color) { 12 ArrayList<Pixel> result = new ArrayList<Pixel>(); 13 for ( Pixel p : pixels ) { 14 if ( p.getcolor() == color) { 15 result.add(p); 16 } 17 } 18 return result; 19 } public ArrayList<Person> findallpersons(string q) { 22 ArrayList<Person> result = new ArrayList<Person>(); 23 for ( Person p : persons ) { 24 if(p.getfirstname().contains(q) p.getlastname().contains(q)) { 25 result.add(p); 26 } 27 } 28 return result; 29 } 19

20 Listing 39: på find-alle algoritmer 8 Comparable og Comparator Comparable og Comparator er to interfaces der gør det muligt at fortælle Java hvordan objekter skal sammenlignes. Det er nyttigt hvis man f.eks. har brug for at sortere en liste med objekter: Hvis objekterne kan sammenlignes, enten vha. Comparable eller Comparator, kan man bruge Collections klassens sort metode. Begge interfaces implementeres ved at implementere en enkelt metode (compare To for Comparable og compare for Comparator). Denne metode skal sammenligne to objekter a og b og returnere et heltal: hvis a < b så returneres -1 hvis a > b så returneres 1 hvis a = b så returneres Comparable Comparable bruges til at udtrykke en naturlig ordning på objekter. Hvis man vælger at anvende Comparable kan man derfor kun specificere én måde hvorpå elementer skal sammenlignes. Når Comparable implementeres skal compareto metoden skrives direkte i den klasse der skal implementere Comparable interfacet. Antag at der findes en Person-klasse som specificeret i UML diagrammet i figur 3. Person int age double weight String name Figur 3: En Person klasse Ønsker man nu at sammenligne Person-objekter ved at sammenligne deres alder, kan dette gøre ved at implementere Comparable interfacet i Person klassen, som vist i listing 40. Bemærk at det a og b der refereres til i det ovenstående i dette tilfælde er this og other. 1 public class Person implements Comparable<Person>{

21 3 public int compareto(person other){ 4 if (this.age < other.age) return -1; 5 if (this.age > other.age) return 1; 6 return 0; 7 } 8 } Listing 40: Implementation af Comparable Nogen gange ønsker man også at have en sekundær ordning. Altså en alternativ måde at sammenligne objekter på, hvis objekterne viser sig at være ens i forhold til det primære sammenligningskriterie. F.eks. kunne man forestille sig for en Person, at hvis to personer har samme alder, så ønsker vi at sammenligne dem på deres navn i stedet. Dette kan gøres som vist i listing public class Person implements Comparable<Person>{ public int compareto(person other){ 4 if (this.age < other.age) return -1; 5 if (this.age > other.age) return 1; 6 return this.getname().compareto(other.getname()); 7 } 8 } Listing 41: Implementation af Comparable Ovenstående er også et eksempel på hvad man gør, hvis det ikke er tal der skal sammenlignes. I sådanne tilfælde kan < og > ikke bruges. Men det vil tit være tilfældet at de egenskaber man vil sammenligne selv har en compareto metode. I ovenstående eksempel har vi gjort brug af at et navn har typen String, og at String klassen allerede implementerer Comparable interfacet. Når vi i sidste linje kalder metoden compareto er det altså den der sammenligner strenge. 8.2 Comparator Hvis man ønsker at kunne sammenligne objekter på mange forskellige måder, kan man med fordel anvende Comparator interfacet. I modsætning til Comparable interfacet skal man nu oprette en ny klasse der implementerer Comparator interfacet for hver type sammenligning man ønsker. Sammenligningen fra forrige afsnit kan således også lægges i en klasse for sig selv vha. Comparator-interfacet. Dette ses i listing 42. Bemærk igen at det a og b der refereres til i det ovenstående i dette tilfælde er a og b. 1 public class AgeComparator implements Comparator<Person>{ 2 public int compare(person a, Person b){ 3 if (a.getage() < b.getage()) return -1; 21

22 4 if (a.getage() > b.getage()) return 1; 5 return 0; 6 } 7 } Listing 42: Implementation af Comparator Ønsker man i stedet at sammenligne på en persons navn kan man også lave en NameComparator som vist i listing public class NameComparator implements Comparator<Person>{ 2 public int compare(person a, Person b){ 3 return a.getname().compareto(b.getname()); 4 } 5 } Listing 43: Implementation af Comparator På denne måde kan man have en hel masse forskellige måder at sammenligne personer på. I forskellige sammenhænge kan man så vælge den man har brug for. Som man kan se ved sammenligning af eksemplerne i listing 40 og 42 ligner compareto og compare metoderne meget hinanden. Og de samme teknikker kan derfor også bruges i de to tilfælde. 8.3 Opsummering Comparable og Comparator interfacesene bruges til at angive hvordan objekter af samme type skal sammenlignes. Hvilken man vil bruge afhænger af om man ønsker at objekter skal kunne sammenlignes på én eller flere måder. 9 Collections klassen Vi skal nu se hvordan man kan bruge en implementation af Comparable eller Com parator interfacet til noget nyttigt. Klassen Collections indeholder en masse praktiske metoder til f.eks. at sortere lister, eller finde det største eller mindste element i en liste. Disse metoder kan bruges så længe at elementerne i listen enten implementerer Comparable eller Comparator interfacet. Hvordan metoderne i Col lections bruges afhænger af om det er Comparable eller Comparator man bruger. Vi vil nu se på nogle eksempler af brug af metoderne i Collections klassen, både vha. Comparable og Comparator. Lad A og B være to klasser med en indbyrdes en-til-mange relation som vist i UML diagrammet i figur 4. Det vil altså sige at et A objekt indeholder mange B objekter, de kunne f.eks. ligge i en liste. 22

23 A * B Figur 4: En-til-mange relation Eksempel med Comparable Givet et A objekt lad os antage at vi ønsker at lave en metode der sorterer og udskriver alle de tilhørende B objekter. Til det formål kan vi bruge metoden Col lections.sort, såfremt at B har implementeret Comparable interfacet. I eksemplet er variablen liste en liste i klassen A som indeholder objekter af typen B. Metoden kan derfor nu se ud som vist i listing public void sortandprint() { 2 Collections.sort(liste); 3 System.out.println(liste); 4 } Listing 44: Brug af Collections.sort vha. Comparable Bemærk igen at vi her har antaget at klassen B allerede implementerer Compa rable interfacet. Eksempel med Comparator Lad os se på et lignende eksempel, men hvor Comparator interfacet er brugt. Når vi siger at vi har implementeret Comparator interfacet for en klasse, i dette tilfælde B, har vi altså lavet en ny klasse der implementerer Comparator interfacet for klassen B. Lad os kalde denne klasse for FirstComparator. Man kan selvfølgelig også i dette tilfælde sortere sine elementer som før, men lad os i stedet se på hvordan man kan finde et mindste element i listen liste. En metode der udfører denne opgave kan ses i listing public B findminimum() { 2 return Collections.min(liste, new FirstComparator()); 3 } Listing 45: Brug af Collections.min vha Comparator Bemærk at i dette eksempel, i modsætning til eksemplet med Comparable, skal vi her eksplicit angive hvordan vi ønsker at elementerne i listen skal sammenlignes. Vi kunne således også have haft en SecondComparator, ThirdComparator, osv. som alle kunne sammenligne på forskellige måder. Hvilken vi brugte som argument i kaldet til metoden Collections.min, ville så have betydning for hvad resultatet blev. 23

24 At vi lige valgte at bruge Comparable sammen med sort og Comparator sammen med min er ikke af betydning. Der findes varianter af begge metoder i Col lections klassen der arbejder sammen med både Comparable og Comparator. Der findes desuden masser af andre nyttige metoder i Collections klassen, du kan se dem alle ved at kigge i Java API en. 24

25 Indeks ;, 9 =, 9 Access modifier, 7 Accessor, 7 Assignment, 9 Attribut, 5 Attribute, 5 Begreb, 4 Class, Klasse, 5 Collections, 22 Comparable, 20 Comparator, 20, 21 Constructor, Konstruktør, 8 Programmør, 4 Programmeringssprog, 4 public, 7 Returtype, 7 Sætninger, Statements, 9 Sekvens, 11 Selektion, 11 Statements, Sætninger, 9 Tildeling, 9 Udvidet for-løkke, 12 while-løkke, 13 Data, 4 else, 11 Fænomen, 4 Feltvariabel, 5 Fieldvariable, 5 for-løkke, 12 Hardware, 4 if, 11 Iteration, 12 Klasse, Class, 5 Konstruktør, Constructor, 8 Method, Metode, 6 Metode, Method, 6 Metodekald, 10 Metodesignatur, 7 Mutator, 8 Parameter, 7 private, 7 Processor, 4 Program, 4 Rev: 1241, August 24, manual.tex

dintprog Manual Revision: 731 September 30, 2009 1 Introduktion 3 1.1 Notation... 3 I Begreber 4 2 Grundbegreber om programmering 4

dintprog Manual Revision: 731 September 30, 2009 1 Introduktion 3 1.1 Notation... 3 I Begreber 4 2 Grundbegreber om programmering 4 dintprog Manual Revision: 731 September 30, 2009 Indhold 1 Introduktion 3 1.1 Notation................................. 3 I Begreber 4 2 Grundbegreber om programmering 4 3 Grundbegreber om modellering

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet i JavaDoc) MusicOrganizer projektet Eksempel på brug af ArrayList

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Tingene i denne forelæsning er ikke eksamenspensum Forelæsningen afrunder kurset, og forklarer nogle af de begreber, som I har mødt under kurset uden at få detaljeret forklaring

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

Læs mere

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2 DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld

Læs mere

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11

DM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11 DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4

Læs mere

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007

AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 AAU, Programmering i Java Intern skriftlig prøve 18. maj 2007 Opgavebesvarelsen skal afleveres som enten en printerudskrift eller som et passende dokument sendt via email til fjj@noea.dk. Besvarelsen skal

Læs mere

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber

Klasser. Grundlæggende Programmering med Projekt. Peter Sestoft Tirsdag 2. september 2008. (Tak til Jakob Bardram for nogle slides) Dagens begreber Klasser Grundlæggende Programmering med Projekt Peter Sestoft Tirsdag 2. september 2008 (Tak til Jakob Bardram for nogle slides) Dagens begreber Felt (field) Metode (method) Parameter (parameter) Sætning,

Læs mere

Software Construction 1 semester (SWC) Spørgsmål 1

Software Construction 1 semester (SWC) Spørgsmål 1 Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /

Læs mere

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations Tabelbegrebet Klassediagrammer (III) Tabeller og qualified associations originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:

Læs mere

Virkefeltsregler i Java

Virkefeltsregler i Java Virkefeltsregler i Java int i; int k; Sequence s; int j; What s in a name? Brian spillede blændende i søndags! Skolen ligger i Viby Ring til Kirsten og sig at... Et navn fortolkes i en kontekst og konteksten

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004

DATALOGI 1E. Skriftlig eksamen torsdag den 3. juni 2004 Københavns Universitet Naturvidenskabelig Embedseksamen DATALOGI 1E Skriftlig eksamen torsdag den 3. juni 2004 Opgaverne vægtes i forhold til tidsangivelsen herunder, og hver opgaves besvarelse bedømmes

Læs mere

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104

Civilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Kursusnavn: Programmering. Tilladte hjælpemidler: Alle skriftlige hjælpemidler Opgavesættet består af fire opgaver, der har følgende vægtning: Opgave

Læs mere

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java

Kursus i OOP og Java. Kursus i Objektorienteret programmering i Java Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger

Læs mere

SWC eksamens-spørgsmål. Oversigt

SWC eksamens-spørgsmål. Oversigt SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition

Læs mere

Kursus navn: Indledende programmering Kursus nr. 02101

Kursus navn: Indledende programmering Kursus nr. 02101 Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning

Læs mere

Hvad er Objekter - Programmering

Hvad er Objekter - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Hvad er Objekter - Programmering En rigtig god gennemgang af hvad objekter er! Hvordan de oprettes og anvendes! Det er helt klart til nybegyndere, som

Læs mere

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 9 Andre designmønstre Andre designmønstre: Uforanderlig, Fluevægt, Lagdelt Initialisering, Komposit/Rekursiv Komposition, Kommando/Ændring Fremlæggelse af programmering/status

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Vinter 1998/99 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 16% Opgave 2 12% Opgave 3 10% Opgave

Læs mere

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense

Jacob Christiansen, Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense 7 DM -. Obligatoriske Opgave Løsning af ligningssystem vha. fipunktmetoden Jacob Christiansen, 8 moffe@imada.sdu.dk Institut for MAtematik og DAtalogi, Syddansk Universitet, Odense. Opgaven Der skal implementeres

Læs mere

JavaScript. nedarvning.

JavaScript. nedarvning. JavaScript er et sprog, der kan give en hjemmeside mere funktionalitet og gøre den interaktiv, så den reagerer på læsernes handlinger. CGI (Common Gateway Interface) har hidtil været de protokoller, man

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2015 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 3. marts, 2015 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater

Design by Contract. Design and Programming by Contract. Oversigt. Prædikater Design by Contract Design and Programming by Contract Anne Haxthausen ah@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design by Contract er en teknik til at specificere

Læs mere

Dokumentation af programmering i Python 2.75

Dokumentation af programmering i Python 2.75 Dokumentation af programmering i Python 2.75 Af: Alexander Bergendorff Jeg vil i dette dokument, dokumentere det arbejde jeg har lavet i løbet opstarts forløbet i Programmering C. Jeg vil forsøge, så vidt

Læs mere

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion

Polymorfi. Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type. Coercion Polymorfi Arv (inheritance) Abstrakte klasser, substitutionsprincippet, overriding, statisk og dynamisk type Coercion Tvangskonvertering (forfremmelse og begrænsning) Oversigt Abstrakt klasse abstrakt

Læs mere

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004

Videregående Programmering Obligatorisk opgave - 3. semester, efterår 2004 Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),

Læs mere

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api

Specifikation Abstrakt OO OS-API Rev. 1.7. Specifikation. Abstrakt, objektorienteret operativsystem-api Specifikation Abstrakt, objektorienteret operativsystem-api Indhold 1 Indledning... 3 1.1 Introduktion... 3 1.2 Formål... 3 1.3 Overordnede krav... 3 2 Ressourcer i OS-API et... 4 2.1 Tråde... 4 2.2 Timere...

Læs mere

BRP 6.9.2006 Kursusintroduktion og Java-oversigt

BRP 6.9.2006 Kursusintroduktion og Java-oversigt BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:

Læs mere

Videregående Programmering for Diplom-E Noter

Videregående Programmering for Diplom-E Noter Videregående Programmering for Diplom-E Noter 1. Uddelegering Ét af de væsentlige principper i objektorienteret programmering er, at enhver klasse selv skal kunne "klare ærterne". Enhver klasse skal altså

Læs mere

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner

Java Programmering. En bog for begyndere. Skrevet af Henrik Kressner Java Programmering En bog for begyndere Skrevet af Henrik Kressner Indholdsfortegnelse Introduktion...3 1 Introduktion til Java...4 1.1 Javakoden...4 1.2 Det første program...6 1.2 Skriv til skærmen...6

Læs mere

Introduktion til ActionScript, fortsat

Introduktion til ActionScript, fortsat Introduktion til ActionScript, fortsat Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling

Læs mere

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22.

Klasser og Objekter i Python. Uge 46 Learning Python: kap 15-16, 19-22. Klasser og Objekter i Python Uge 46 Learning Python: kap 15-16, 19-22. Klasser og objekter En klasse beskriver en klump af samhørende funktioner og variable En klasse er en beskrivelse. En kage form Klassens

Læs mere

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. 10) til heltal (10). if (udtryk) else Programmering 1999 Forelæsning 2, fredag 3. september 1999 Betingede ordrer: if-, if Indlejrede betingede ordrer Løkker med begrænset iteration: for Løkker med ubegrænset iteration: while Betingede ordrer,

Læs mere

Forelæsning Uge 6 torsdag repetition

Forelæsning Uge 6 torsdag repetition Forelæsning Uge 6 torsdag repetition Java style guide Niveauer af programbeskrivelser Arraylister (én-til-mange relation) For-løkker (almindelig og udvidet) Primitive typer (forfremmelse og begrænsning)

Læs mere

Modern Concurrency Abstractions for C#

Modern Concurrency Abstractions for C# Modern Concurrency Abstractions for C# Nick Benton Luca Cardelli Cédric Fournet Presenter: Henrik Kragh-Hansen September 27, 2007 Motivation for concurrency Forbedring af concurrency Baggrundsinformation

Læs mere

Webserverprogrammering

Webserverprogrammering Webserverprogrammering WSP fortsat - dag 11 Behandling af XML (StAX) Syndikering og RSS med XML JAXB - XML Java-objekter Projekthjælp Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html

Læs mere

Aritmetiske Forelæsning Pr ogrammering operatorer tir 1999 sda præcedens september 1999 Logiske Sammenligningsoperatorer operatorer præcedens

Aritmetiske Forelæsning Pr ogrammering operatorer tir 1999 sda præcedens september 1999 Logiske Sammenligningsoperatorer operatorer præcedens Programmering 1999 Forelæsning 3, tirsdag 7. september 1999 Aritmetiske og logiske operatorer, præcedens Den indbyggede klasse String: tegnstrenge Metoder i klasser Metoder: returtype eller void Metoder:

Læs mere

Assignment #5 Toolbox Contract

Assignment #5 Toolbox Contract Assignment #5 Toolbox Contract Created by: René Kragh Trine Randløv E mail address cph rk70@cphbusiness.dk 23 11 2014 1 Introduktion Dette dokument indeholder en vertikal kontrakt for et system som skal

Læs mere

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/

DM502. Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ DM502 Peter Schneider-Kamp (petersk@imada.sdu.dk) http://imada.sdu.dk/~petersk/dm502/ 1 DM502 Bog, ugesedler og noter De første øvelser Let for nogen, svært for andre Kom til øvelserne! Lav opgaverne!

Læs mere

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

Introduktion til ActionScript

Introduktion til ActionScript Introduktion til ActionScript Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling på

Læs mere

Test af It-komponent

Test af It-komponent Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side

Læs mere

Programmering i C. Lektion 4. 5. december 2008

Programmering i C. Lektion 4. 5. december 2008 Programmering i C Lektion 4 5. december 2008 Funktioner Eksempel Fra sidst 1 Funktioner 2 Eksempel Funktioner Eksempel Eksempel: 1 / f u n k t i o n s p r o t o t y p e r / i n t i n d l a e s ( void )

Læs mere

Bits DM534. Rolf Fagerberg, 2012

Bits DM534. Rolf Fagerberg, 2012 Bits DM534 Rolf Fagerberg, 2012 Resume af sidst Overblik over kursus Introduktion. Tre pointer: Datalogi er menneskeskabt og dynamisk. Tidslinie over fremskridt mht. ideer og hardware. Algoritme er et

Læs mere

Objects First with Java A Practical Introduction Using BlueJ

Objects First with Java A Practical Introduction Using BlueJ Objects First with Java A Practical Introduction Using BlueJ En introduktion til objektorienteret programmering for begyndere ud fra et software engineering aspekt Om at programmere i Java, ikke om værktøjet

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i)

Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i) Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i) 1: KLASSE METODE KONSTRUKTØR EKS. PÅ TYPE (VARIABLE) PUBLIC/PRIVATE OBJECT UD FRA KLASSE KALD METODE TILFØR PARAMETER TIL METODE RETURNERE VARIBEL.

Læs mere

Tabeller (I) Tabeller

Tabeller (I) Tabeller Tabeller (I) Klassediagrammer (III) Tabeller og qualified associations Michael R. Hansen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark En tabel fra en mængde A til

Læs mere

IFC Egenskaber. Mohammad Hussain Parsianfar s102951 BYG DTU

IFC Egenskaber. Mohammad Hussain Parsianfar s102951 BYG DTU Mohammad Hussain Parsianfar s102951 Indholdsfortegnelse 1 Introduktion... 3 1.1 Hvorfor er det interessant... 3 1.2 Formål... 4 2 Simplebim... 5 2.1 Præsentation af softwaren... 5 2.1.1 Brugergrænseflade...

Læs mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

Læs mere

Objektorientering. Programkvalitet

Objektorientering. Programkvalitet 1 PROSA-Bladet nr. 4 1993 Objektorientering = Programkvalitet? Af Finn Nordbjerg, adjunkt ved Datamatikeruddannelsen, Aalborg Handelskole 1. Indledning Objektorientering er blevet et edb-fagets mest udbredte

Læs mere

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Opbyg løsningen skridt for skridt ved hele tiden af vælge lige

Læs mere

Computerspil som vindue til læring

Computerspil som vindue til læring Computerspil som vindue til læring Space Marines Stave Challenger Series Af Nikolaj Egholk Jakobsen og Suayb Köse Roskilde Tekniske Gymnasium Informationsteknologi B 9/1 2014 1 Indledning Analyse Danmark

Læs mere

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. 19 Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. Sammenligning af hashtabeller og søgetræer. 281 Hashing-problemet (1). Vi ønsker at afbilde n objekter på en tabel

Læs mere

Programmering I Java/C#

Programmering I Java/C# Programmering I Java/C# Dit første projekt Datatekniker Intro to C# C# (C Sharp) Et enkelt, moderne, generelt anvendeligt, objektorienteret programmeringssprog Udviklet af Microsoft, ledet af danskeren

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition)

Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 - forstå datastrukturer og algoritmer (teoretisk forståelse og intuition) Datalogi OB, Efterår 2002 OH er, forelæsning 3/9-2002 Datastrukturer og algoritmer Henning Christiansen henning@ruc.dk http://www.ruc.dk/~henning Formål: at kunne - forstå datastrukturer og algoritmer

Læs mere

Adgangsgivende eksamen (udeladt kategori: Matematisk student med matematik på niveau A)

Adgangsgivende eksamen (udeladt kategori: Matematisk student med matematik på niveau A) Økonometri 1 Forår 2003 Ugeseddel 13 Program for øvelserne: Gruppearbejde Opsamling af gruppearbejdet og introduktion af SAS SAS-øvelser i computerkælderen Øvelsesopgave 6: Hvem består første årsprøve

Læs mere

Løsning af skyline-problemet

Løsning af skyline-problemet Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle

Læs mere

Uniq.Survey-Xact.DK. Vejledning. Rambøll Management Olof Palmes Allé 20 DK-8200 Århus N Denmark. Tlf: 8944 7800 www.ramboll-management.

Uniq.Survey-Xact.DK. Vejledning. Rambøll Management Olof Palmes Allé 20 DK-8200 Århus N Denmark. Tlf: 8944 7800 www.ramboll-management. Uniq.Survey-Xact.DK Vejledning Rambøll Management Olof Palmes Allé 20 DK-8200 Århus N Denmark Tlf: 8944 7800 www.ramboll-management.dk TU1.UT TUIndledningUT TU2.UT TUKlargøring TU3.UT TUOprettelse TU4.UT

Læs mere

Introduktion til ActionScript

Introduktion til ActionScript Introduktion til ActionScript Kaspar Rosengreen Nielsen kaspar@interactivespaces.net HUSK: Studentermøde for datalogistuderende Torsdag d. 11/2 kl. 15 - i lokale Ada 333 Har du en mening om dit studie?

Læs mere

Databaseadgang fra Java

Databaseadgang fra Java Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,

Læs mere

Hashing og hashtabeller

Hashing og hashtabeller Datastrukturer & Algoritmer, Datalogi C Forelæsning 16/11-2004 Hashing og hashtabeller Teknik til at repræsentere mængder Konstant tid for finde og indsætte men ingen sortering af elementerne Specielt

Læs mere

Manual og Hjælp Skoletasken 2

Manual og Hjælp Skoletasken 2 Manual og Hjælp Skoletasken 2 I Skoletasken 2 - Hjælp Indhold I Introduktion 1 Velkomst 2... 2 2 Systemkrav... 2 3 Installation... 3 4 Skoletasken... 8 II Opsætning 10 1 Systemopsætning... 10 2 Bogopsætning...

Læs mere

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).

RMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation). Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer

Læs mere

BOSK F2011, 1. del: Udsagnslogik

BOSK F2011, 1. del: Udsagnslogik ( p q) p q February 1, 2011 Sandhedsværdier og udsagnsvariable I dag handler det om logiske udsagn. Mere præcist om de logiske udsagn vi kan bygge ud fra sandhedsværdier, udsagnsvariable og logiske konnektiver.

Læs mere

Noter til C# Programmering Iteration

Noter til C# Programmering Iteration Noter til C# Programmering Iteration Programflow Programmer udfører det meste af deres arbejde vha. forgrening og løkker. Løkker Mange programmeringsproblemer kan løses ved at gentage en handling på de

Læs mere

Forelæsning Uge 10 Torsdag

Forelæsning Uge 10 Torsdag Forelæsning Uge 10 Torsdag Opremsningstyper Enumerated types Forskellige teknikker til test og debugging Når man tester undersøger man, om opførslen (semantikken) er den ønskede Når man debugger (afluser),

Læs mere

UML til kravspecificering

UML til kravspecificering UML til kravspecificering UML mini-kompendium - til brug i forbindelse med modellering af kravspecifikationer. Copyright 2006 Teknologisk Institut, IT-Udvikling Aktivitetsdiagram 2/9 Aktion Aktionsnavn

Læs mere

Enigma. Et programmeringssprog. Forfatter: Niels Serup X. Y Vejleder: A B C. Fag: Programmering Uddannelsessted: N M

Enigma. Et programmeringssprog. Forfatter: Niels Serup X. Y Vejleder: A B C. Fag: Programmering Uddannelsessted: N M Enigma Et programmeringssprog Forfatter: Niels Serup X. Y Vejleder: A B C Fag: Programmering Uddannelsessted: N M 25. maj 2010 Indholdsfortegnelse Indledning 3 Sproget 3 Syntax.............................................

Læs mere

Indhold. Side 2 af 26

Indhold. Side 2 af 26 Tema Design Design, Programmering og test af Adressebog Fra d. 17 april til 20 april 2012 Vejledere: Gunhild Marie Andersen Kis Boisen Hansen Gruppe B Deltagere Side 1 af 26 Indhold Indledning.... 3 Kodestandard...

Læs mere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere

Integrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere Integrationsmanual Anvendelse af webservice til kursusoversigt i Campus Brugervejledning til udviklere Moderniseringsstyrelsen Webservice manual til udviklere 2016 1 1. Indholdsfortegnelse Nyt kapitel

Læs mere

Python programmering. Per Tøfting. MacFest

Python programmering. Per Tøfting. MacFest Python programmering MacFest 2005 Per Tøfting http://pertoefting.dk/macfest/ Indhold Måder at afvikle Python program på Variabler Data typer Tal Sekvenser Strenge Tupler Lister Dictionaries Kontrolstrukturer

Læs mere

DM01 DM01. 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 13/5-2003. Side 1 af 7

DM01 DM01. 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 13/5-2003. Side 1 af 7 DM01 DM01 4. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 13/5-2003 Side 1 af 7 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DNA2:...4 2.1.1 METODER:...4

Læs mere

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11 DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void

Læs mere

Python 3 kursus lektion 1:

Python 3 kursus lektion 1: Python 3 kursus lektion 1: Her laves et nyt program Her køre programmet! Her skrives koden: Gem (CTRL-s) Tryk F5 (for at køre) www.madsmatik.dk d.14-01-2016 1/5 At skrive til skærmen: Hello World Man kan

Læs mere

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output...

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... Indhold Maskinstruktur... 3 Kapitel 1. Assemblersprog...3 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... 9 Kapitel 2. Maskinkode... 13 2.1 Den fysiske maskine... 13 2.2 Assemblerens

Læs mere

Miniprojekt i Programmering (MIP) for DAT2 og SW2, Forår 2012

Miniprojekt i Programmering (MIP) for DAT2 og SW2, Forår 2012 Miniprojekt i Programmering (MIP) for DAT2 og SW2, Forår 2012 Opgaven er delt op i 2 dele. Læs hele opgaven igennem inden I begynder. 1. Struktur I denne opgave skal der laves et system der håndterer salg

Læs mere

4 Basal Objekt-orienteret Programmering I.

4 Basal Objekt-orienteret Programmering I. 4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.

Læs mere

18 Multivejstræer og B-træer.

18 Multivejstræer og B-træer. 18 Multivejstræer og B-træer. Multivejs søgetræer. Søgning i multivejssøgetræer. Pragmatisk lagring af data i multivejstræer. B-træer. Indsættelse i B-træer. Eksempel på indsættelse i B-træ. Facts om B-træer.

Læs mere

Videregående programmering i Java

Videregående programmering i Java Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter

Læs mere

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract

Sproget Six. Til brug i rapportopgaven på kurset Oversættere. Vinter 2006. Abstract Sproget Six Til brug i rapportopgaven på kurset Oversættere Vinter 2006 Abstract Six er baseret på det sprog, der vises i figur 6.2 og 6.4 i Basics of Compiler Design. Den herværende tekst beskriver basissproget

Læs mere

A Profile for Safety Critical Java

A Profile for Safety Critical Java A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren

Læs mere

Note om Monte Carlo eksperimenter

Note om Monte Carlo eksperimenter Note om Monte Carlo eksperimenter Mette Ejrnæs og Hans Christian Kongsted Økonomisk Institut, Københavns Universitet 9. september 003 Denne note er skrevet til kurset Økonometri på. årsprøve af polit-studiet.

Læs mere

DM34-1. Obligatorisk opgave Dilemma spillet. Jacob Aae Mikkelsen 191076 kok04

DM34-1. Obligatorisk opgave Dilemma spillet. Jacob Aae Mikkelsen 191076 kok04 DM34-1. Obligatorisk opgave Dilemma spillet Jacob Aae Mikkelsen 191076 kok04 April 2005 Kapitel 1 Resumé Denne rapport dokumenterer udviklingsforløbet og afprøvningen af et spil Dilemma. Spillet går ud

Læs mere

PHP 3 UGERS FORLØB PHP, MYSQL & SQL

PHP 3 UGERS FORLØB PHP, MYSQL & SQL PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at

Læs mere

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav.

Miniprojekt2011. Formålet er at lære og indlære god objektorienteret programudvikling og programmering med Java, samt undervejs at opfylde studiekrav. Miniprojekt2011 Projektbeskrivelse Der skal fremstilles en lille java application på PC, hvor brugeren kan foretage interaktioner med en simpel database på disken via et grafisk brugerinterface. Formålet

Læs mere

Eksempel: et ordresystem note 5 Lagdeling s. 1

Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordresystem note 5 Lagdeling s. 1 Eksempel: et ordre-system NiceHair er et firma, som sælger udstyr, inventar og frisørartikler til frisørsaloner over hele landet. Det er ejet af et ægtepar

Læs mere

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004

DATALOGI 0GB. Skriftlig eksamen tirsdag den 6. januar 2004 Københavns Universitet bacheloruddannelsen i datalogi side 1 af 6 DATALOGI 0GB Skriftlig eksamen tirsdag den 6. januar 2004 Dette opgavesæt består af 6 nummererede sider. Eksamensdeltagerne bør straks

Læs mere

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft

Programmering. Udvidet Programmering. Kurserne. Kurset: programmering i sproget Java. Lærerne: Morten Larsen og Peter Sestoft Kurserne Kurset: programmering i sproget Java Programmering og Udvidet Programmering Lærerne: Morten Larsen og Peter Sestoft Kursusmål: I skal lære at skrive interessante programmer i Java Forudsætninger:

Læs mere

Dag 10 Flertrådet programmering

Dag 10 Flertrådet programmering Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,

Læs mere

Sproget Rascal (v. 2)

Sproget Rascal (v. 2) Sproget Rascal (v. 2) Til brug i K1 på kurset Oversættere Opdateret 29/11 2004 Abstract Rascal er et simpelt Pascal-lignende imperativt sprog. Dette dokument beskriver uformelt Rascals syntaks og semantik

Læs mere

Rekursion og dynamisk programmering

Rekursion og dynamisk programmering Rekursion og dynamisk programmering Datastrukturer & Algoritmer, Dat C Forelæsning 12/10-2004 Henning Christiansen Rekursion: at en procedure kalder sig selv eller et antal metoder kalder hinanden gensidigt.

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 29. april, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere