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

Størrelse: px
Starte visningen fra side:

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

Transkript

1 dintprog Manual Revision: 731 September 30, 2009 Indhold 1 Introduktion Notation I Begreber 4 2 Grundbegreber om programmering 4 3 Grundbegreber om modellering 4 II Syntaks 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 Iteration Blok Rev: 731, September 30, manual.tex

2 III Collections 15 7 Realisering af en-til-mange 16 8 Algoritme-mønstre: find-en og find-alle Find-en Find-alle IV Java API 19 9 Comparable og Comparator Collections klassen Comparable 22 2

3 1 Introduktion Denne manual indehodler de vigtigste elementer af kurset Introduktion til Programmering ved Datalogisk institut, Aarhus Universitet. Manualen vil blive udfyldt løbende af studerende som kurset skrider frem. Der er to hovedformål med manualen. Den er ment som: Et opslagsværk Manualen 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. Et læringsværktøj Da indholdet genereres af de studerende får disse mulighed for at reflektere de vigtigste elementer i kurset. Dette sker ved at de studerende besvarer en række opgaver tilknyttet manualen. Ud fra besvarelserne af disse opgaver udvælges indholdet til manualen. Den nyeste version af manualen er tilgængelig på: 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-programmerm hvorimod kursiv skrift skal erstattes med noget konkret. I nedenstående notationseksempel skal Klassenavn erstattes med navnet på den klasse man gerne vil skrive. 1 public class Klassenavn{ } Listing 1: Notationseksempel 3

4 Del I 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 Pung Person Kunstner Fænomener Min pung, din pung, Karstens pung Albert, Niels, Leo. Madonna, Prince, Queen, Coldplay 4

5 Del II Syntaks 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. Defines 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) Feltvariabler er variabler bundet til et objekt. De kan f.eks. fortælle hvor objektet er henne som ved x og y koordinaterne for krabben eller hvor mange orme krabben har spist. Normalt gøres feltvariabler private da de oftest vil være af afgørende betydning for objekters funktionalitet. Feltvariabler kan bruges på samme måde som andre variabler, men de erklæres på klasseniveau og f.eks. ikke inde i kroppen af en metode. Den generelle form på en erklæring af en feltvariabel ses i linje 3: 1 public class Klasse { 2 3 private type variabelnavn; 4 5 metoder Listing 3: Den generelle form på en feltvariabelerklæring 5

6 1 private String name; 2 private int age; 3 private double angle; Listing 4: på feltvariabler 5 Metoder (methods) En metode kan sammenlignes med en funktion i den matematiske verden. Den har et antal parametre (nul eller flere) og ændrer ved tilstanden på ens objekt og/eller giver en værdi som svar. 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 statements 4 } 5 } Listing 5: Den generelle form på en metodeerklæring 1 public void nextlap() { 2 lap++; 3 time = 0; 4 } 5 6 private void setage(int a) { 7 age = a; 8 } 9 10 public String getfullname(){ 11 return firstname + " " + lastname; 12 } 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 nextlap() 2 private int getiterations(int item) 3 public Vector(int x, int y) 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 return age; 3 } 4 public String getjoke() { 5 return historie + pointe; 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 public void setpointe(string p) { 5 pointe = p; 7 private int setk(int y) { 8 k = Math.round(Math.sqrt(y) + 3); 9 } 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 Vector 2 { 3 private int x; 4 private int y; 5 6 /** 7 * Constructor for class Vector. 8 * Creates the zero vector (0, 0). 9 */ 10 public Vector() { 11 x = 0; 12 y = 0; 13 } /** 16 * Constructor for class Vector. 17 * Creates the vector (x0, y0). 18 */ 19 public Vector(int x0, int y0) { 20 x = x0; 21 y = y0; 22 } Listing 12: To kontruktører til klassen Vector 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 assigment 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 pointe = p; 3 k = Math.round(Math.sqrt(y) + 3); 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 method(argumenter); Listing 15: Internt metodekald method er metodens navn og argumenter er de argumenter som metoden tager. Den generelle form på et eksternt metodekald er: 1 objekt-reference.method(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 det består af flere sætninger sat sammen. Basalt set findes fire typer sammensatte sætnigner, sekvens, selektions, 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 sekvenser alt efter hvad udfaldet af 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 int i = 1; 2 if (i==1){ 3 System.out.println("Hello"); 4 } else { 5 System.out.println("World"); 7 8 if (i==1){ 9 return true; 11

12 10 } 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 statements (sætninger) der skal udføres et antal gange. Den generelle form ses herunder: 1 for (initialisering; betingelse; inkrementering) { 2 } 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 statements 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??), f.eks. en liste. Dvs. at man er interesseret i at udføre nogle sætninger for hvert element i collection en. 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(fields a : fieldlist){ 2 System.out.println(a.name); 3 System.out.println(a.value); 4 } Listing 25: på udvidede for-løkker while-løkken består af to elementer: en løbe-betingelse og en række statements (sætnigner) 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++; 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 III Collections 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 skulle bruge en collection, kunne være at man har række Nyhed objekter og man derudfra skal lave en Nyhedsliste som skal kunne indeholde alle Nyhed-objekterne. En collection gør det her muligt at opbevare Nyhed-objekterne ved at tilføje en collection felt-variabel i Nyhedslist-object som derved kan indeholder referencer til alle Nyhed-objekterne Et andet scenarie kunne være at man ønsker at opbevare et antal tekststrenge (String-objekter) i en collection. For at erklære en variabel som kan indeholde strings i en ArrayList skal man skrive følgende: 1 ArrayList<String> listofstrings; Listing 30: Erklæring af en String liste Dog er det vigtigt at man før man erklærer denne variabel har importeret Java pakken java.util.arraylist. Man kan herefter gemme et nyt ArrayList<String> objekt i listofstrings på følgende måde: 1 listofstrings = new ArrayList<String>(); Listing 31: Initialisering af en collection Man kan nu tilføje et String object til listofstrings, via metoden add som er i ArrayList, på følgende måde: 1 listofstrings.add("string1"); Listing 32: Tilføje til en collection For at finde hvor mange objekter der er gemt i ArrayList objektet listof Strings kan man bruge metoden int size() der returner hvor mange elementer der er i collectionen: 1 listofstrings.size(); Listing 33: Inspektion af størrelsen på en collection For at løbe igennem ArrayList-objektet listofstrings, kan vi bruge en udvidet for-lykke (jf ) og bruge System.out.println() metoden til at printe med. Resultatet vil se sådan ud: 1 for(string s : listofstrings){ 2 System.out.println(s); 15

16 3 } Listing 34: Udskrivning af elementer 7 Realisering af en-til-mange Figur 1 nedenfor er et UML diagram, der illustrerer en en-til-mange relation men 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 attribut med passende type. Typen skal være typen på den collection man vil bruge og som man har importeret Initialisere den ovenfor erklærede attribut 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> attribut-navn; 4 5 public A(){ 6 attribut-navn = new Collection-klasse<B>(); 7 } 8 } Listing 35: Realisering af en en-til-mange relation I listing 35, importeres i linje 1, der erklæres i linje 3 og der initialiseres i linje 6. 16

17 AddressBook * Person Figur 2: Eksempel på realisering af en en-til-mange relation I Listing 36 realiseres en-til-mange relationen illustreret i figur 2. 1 import java.util.arraylist: 2 public class AddressBook { 3 private ArrayList<Person> persons; 4 public AddressBook(){ 5 persons = new ArrayList<Person>(); 7 } Listing 36: Eksempel på realisering af en en-til-mange relation 8 Algoritme-mønstre: find-en og find-alle 8.1 Find-en Princippet i en find-en-algoritme, er at den leder listen igennem, indtil den møder et element der matcher betingelserne. Den holder så op med at lede, og returnerer så det element den har fundet. Den generelle form kan ses i listing 37 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; 5 } 7 return null; 8 } Listing 37: Den generelle form på en find-en algoritme 17

18 1 public Dice findonedice(int eyes) { 2 for ( Dice d : dice ) { 3 if ( d.geteyes() == eyes ) { 4 return d; 5 } 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; 2 Listing 38: på find-en algoritmer 8.2 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 39 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 (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) { 18

19 5 result.add(e); 7 } 8 return result; 9 } Listing 39: 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); 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); 1 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); 2 27 } 28 return result; 29 } Listing 40: på find-alle algoritmer 19

20 Del IV Java API 9 Comparable og Comparator Comparable og Comparator er to interfaces der gør det muligt at separere sammenligning af objekter. 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 Collection klassens sort metode. Det er med andre ord en måde at fortælle hvordan objekter af en bestemet klasse skal sammenlignes - og det kan så bruges af andre klasser (som f.eks. Col lections). 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 hvis a < b så returnér -1 hvis a > b så returnér 1 nu ved vi at a = b og derfor kan vi returnere 0 Forskellen mellem Comparable og Comparator er, at hvor Comparable skal udtrykke en naturlig ordning, kan Comparator bruges til at udtrykke vilkårlige ordninger. En anden forskel er, at hvis man bruger Comparable er det typisk den klasse man ønsker at kunne sammenligne, der skal implementere Comparab le. Modsat skal man, hvis man bruger Comparator, lave en helt ny klasse der implementerer Comparator. Altså laves der en ny klasse der implementerer Compa rator for hver sammenligning man vil have. 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 vægt og samtidig vil have Person-klassen til at implementere Comparable (så man f.eks. kan bruge Collections-klassen) gøres dette som vist i listing 41. Bemærk at det a og b der refereres til i det ovenstående i dette tilfælde er this og other. 20

21 1 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 0; 7 } 8 } Listing 41: Implementation af Comparable Den samme sammenligning kan også lægges i en klasse for sig selv vha. Compa rator-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; 4 if (a.getage() > b.getage()) return 1; 5 return 0; 7 } Listing 42: Implementation af Comparator Er det ikke tal der skal sammenlignes kan man ikke bruge < og >. Men det vil tit være tilfældet at de egenskaber man vil sammenligne selv har en compareto eller compare-metode. Hvis man f.eks. vil kunne sammenligne Person-objekter ved at sammenligne deres navn kan man lave en NameComparator der benytter sig af Strings compareto-metode som vist i listing public class AgeComparator 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 Endelig vil man i nogen tilfælde have bruge for at have en primær og sekundær ordning. Det kunne f.eks. være at man ville sammenlige Person-objekter ved først at se på deres alder, og hvis denne er den samme så sekundært se på deres navn. Dette kunne implementeres som vist i listing 44 herunder. 1 public class AgeComparator implements Comparator<Person>{ 2 public int compare(person a, Person b){ 3 if (a.getage() < b.getage()) return -1; 4 if (a.getage() > b.getage()) return 1; 5 return a.getname().compareto(b.getname()); 21

22 7 } Listing 44: Implementation af Comparator 10 Collections klassen Lad A og B være to klasser med en indbyrdes en-til-mange relation som vist i UML diagrammet i figur 4. A * x B Figur 4: En-til-mange relation 11 Comparable Når man har et A objekt og vil udskrive alle tilhørende B objekter sorteret, kan man bruge Comparable interfacet og Collections-klassen. Dette realiseres ved at man i klassen B implementerer Comparable<B> interfacet og udfylder metoden compareto(b o), hvor man fortæller hvad der skal sammenlignes. B objekter er f.eks. gemt i en liste og derfor kan man ved at udføre ovenstående implementering nu kalde Collections.sort(..) metoden på listen. Metoden er en del af Java standard biblioteket og sørger for at sortere listen, netop ved at sammenligne objekterne i listen ved brug af compareto. Vil man bruge Comparator i stedet for Comparable, skal der, sammen med listen, sendes et Comparator-objekt som argument til Collections.sort. Collections-klassen har en række andre brugbare metoder som f.eks. min og max der er beskrevet i Java API et. Det kan bruges når man skal lede efter bøger i en søgeportal i et bibliotek og vil have resultatlisten i alfabetisk orden. Det kan bruges i et styresystems mapper, der er funktioner hvor man sorterer efter dato eller navn eller type. Hvis man vil sortere sine mp3 numre efter kunster eller titel. 22

23 Indeks ;, 9 =, 9 Access modifier, 7 Accessor, 7 Assignment, 9 Attribut, 5 Attribute, 5 Begreb, 4 Class, Klasse, 5 Comparable, 20 Comparator, 20 Constructor, Konstruktør, 8 Programmeringssprog, 4 public, 7 Returtype, 7 Sætninger, Statements, 9 Sekvens, 11 Selektion, 11 Statements, Sætninger, 9 Tildeling, 9 Udvidet for-lykke, 12 while-løkke, 13 Data, 4 else, 11 Fænomen, 4 Feltvariabel, 5 Fieldvariable, 5 for-løkke, 12 Hardware, 4 if, 11 Itaration, 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 Programmør, 4 Rev: 731, September 30, manual.tex

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

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 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

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 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Brug af klassen Collections og interfacet Comparable BlueJ s Debugger Nyttig til at inspicere

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

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

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

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

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet

Læs mere

Forelæsning Uge 2 Mandag

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

Læs mere

Forelæsning Uge 1 Torsdag

Forelæsning Uge 1 Torsdag Forelæsning Uge 1 Torsdag Objekters tilstand og opførsel Java og BlueJ Skabelse af objekter (via new-operatoren) Iteration (gentagelser) og parametrisering Java's for løkke Parametre i metoder Forskellige

Læs mere

Forelæsning Uge 1 Torsdag

Forelæsning Uge 1 Torsdag Forelæsning Uge 1 Torsdag Objekters tilstand og opførsel Java og BlueJ Skabelse af objekter (via new-operatoren) Iteration (gentagelser) og parametrisering Java's for løkke Parametre i metoder Forskellige

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList klassen Gør det let at lave en objektsamling (collection) med et variabelt antal elementer Der er mange andre slags objektsamlinger (se Collection interfacet i JavaDoc)

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

Forelæsning Uge 2 Mandag

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

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Sortering ved hjælp af klassen Collections Ved hjælp af interfacet Comparable Ved hjælp af interfacet Comparator findbest som sorteringsproblem Information om køreprøven i uge

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

Forelæsning Uge 3 Mandag

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

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering (bl.a. brug af for-løkker) Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt)

Læs mere

Forelæsning Uge 2 Mandag

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

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

Forelæsning Uge 2 Mandag

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

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Sortering ved hjælp af klassen Collections Ved hjælp af interfacet Comparable Ved hjælp af interfacet Comparator findbest som sorteringsproblem Køreprøven i uge 7 Form Forberedelse

Læs mere

SWC Elementer i klassedefinition

SWC Elementer i klassedefinition SWC Elementer i klassedefinition Indhold Eksempel... 2 Karakteristika for en klasse... 3 Karakteristika for et instance field... 4 Karakteristika for en constructor... 5 Karakteristika for en property...

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 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Objekters tilstand og opførsel BlueJ og Greenfoot Java Skabelse af objekter (via new-operatoren) Iteration (gentagelser) og parametrisering Forskellige slags variabler Afleveringsopgave:

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Sortering ved hjælp af klassen Collections Ved hjælp af interfacet Comparable Ved hjælp af interfacet Comparator findbest som sorteringsproblem Information om køreprøven i uge

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

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 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt) antal elementer Afleveringsopgave:

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 4 1. marts - 8. marts Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,

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

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

DM507 Algoritmer og datastrukturer

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

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

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

Software Construction 1. semester (SWC) januar 2014 Spørgsmål 1 Spørgsmål 1 Grundlæggende objektorienterede begreber o Klasse (class) o Objekt (object) o Metode (method), herunder return type og parametre o Instansvariable (instance variables) & egenskaber (properties),

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Forelæsning Uge 12 Torsdag

Forelæsning Uge 12 Torsdag Forelæsning Uge 12 Torsdag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

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

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

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

Forelæsning Uge 12 Mandag

Forelæsning Uge 12 Mandag Forelæsning Uge 12 Mandag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

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

Fundamentale sprogbegreber

Fundamentale sprogbegreber Fundamentale sprogbegreber Sætninger og udtryk Niveauer af programbeskrivelse (statisk versus dynamisk syn) Oversigt Sætninger simple sætninger (assignment, metodekald) sammensatte sætninger (selektion,

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Klassevariabler og klassemetoder Levetid for variabler og parametre Virkefeltsregler Projektopgave Kaninjagt Lommeregner (for MAT studerende) Klassevariabler og klassemetoder

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

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

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

//Udskriver System.out.println(Hej  + ditfornavn +   + ditefternavn + .); System.out.println(Du er  + dinalder +  aar gammel! Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for

Læs mere

METODER ARV KLASSER. Grundlæggende programmering Lektion 5

METODER ARV KLASSER. Grundlæggende programmering Lektion 5 METODER KLASSER ARV Grundlæggende programmering Lektion 5 1 METODER Sekvenser af kode om samme emne 2 REPETITION Række af statements der udfører en handling Mindst én metode der hedder main Forskellen

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

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

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

Skriftlig eksamen i Datalogi

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

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Opfølgning på Skildpadde

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

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

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

Løsning af møntproblemet

Løsning af møntproblemet Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet

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

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

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

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt

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

Singleton pattern i C#

Singleton pattern i C# Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i C# Denne artikel beskriver Singleton pattern og implementation i C#. Den forudsætter kendskab til C# men ikke til Singleton. Der er

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Rekursive metoder Metoder der kalder sig selv Giver ofte meget elegante og simple løsninger på komplekse

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

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

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

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen Studiepraktik Thomas Bøgholm boegholm@cs.aau.dk Mikkel Hansen mhan@cs.aau.dk Jacob Elefsen jelefs12@student.aau.dk 1 Studiepraktik -- program Program onsdag 10.00 10.15 Registrering af fremmøde og gennemgang

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

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Rekursive metoder Metoder der kalder sig selv Giver ofte meget elegante og simple løsninger på komplekse

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

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

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

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

Lektion 6. Grundlæggende programmering i VR

Lektion 6. Grundlæggende programmering i VR Lektion 6 Grundlæggende programmering i VR Plan for i dag Simpelt FPS Triggerzones og animationer C# og objekt orienteret programmering Interfaces Generics Google Cardboard Video om VRs fremtid App til

Læs mere

DRONNINGER (QUEENS) Opgave 1

DRONNINGER (QUEENS) Opgave 1 DRONNINGER (QUEENS) I denne opgave vil vi beskæftige os med det såkaldte 8-dronningeproblem, hvor man skal placerede 8 dronninger på et 8 x 8 skakbræt, således at ingen af dronningerne kan slå hinanden.

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Rekursive metoder Metoder der kalder sig selv Giver ofte meget elegante og simple løsninger på komplekse

Læs mere

Programmering for begyndere Lektion 2. Opsamling mm

Programmering for begyndere Lektion 2. Opsamling mm Lektion 2 Opsamling mm God tone Der er indlagt spørge sessioner Lektion 2 - Agenda Programmering for Lidt ændringer til teknikken, herunder hvordan du genser en lektion Lidt generelle tilbagemeldinger

Læs mere

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen Sekvensafstand DM34 - Eksamensopgave Jacob Aae Mikkelsen 19 10 76 kokken@grydeske.dk 27. maj 2005 Resumé Rapporten her beskriver tre forskellige rekursive metoder til at sammenligne tekst strenge med.

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

COMPUTERSPIL 1. Opgave 1. Opgave 2

COMPUTERSPIL 1. Opgave 1. Opgave 2 COMPUTERSPIL 1 I løbet af de kommende fem uger skal I programmere et computerspil, hvor spillerne rejser rundt mellem byer i forskellige lande og indsamler point. Der er en delaflevering hver uge, hvor

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

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

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

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser

It og informationssøgning Forelæsning oktober 2006 Jakob Grue Simonsen. Klasser It og informationssøgning Forelæsning 7 25. oktober 2006 Jakob Grue Simonsen Klasser Downey, Elkner & Meyers: Chapt. 12-14 Andersen & Simonsen: kap. 7 Vi har tidligere set, at Python tilbyder en række

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

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

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

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