Forelæsning Uge 6 torsdag repetition

Størrelse: px
Starte visningen fra side:

Download "Forelæsning Uge 6 torsdag repetition"

Transkript

1 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) Identitet versus lighed (magen til) Klassevariabler og klassemetoder Levetid for variabler og parametre Virkefeltsregler Algoritmeskabeloner Sortering ved hjælp af Collections og Comparable

2 Java style guide Navngivning Navne skrives på engelsk (eller amerikansk) og skal være velvalgte (beskrivende) Klasser: med stort CamelCase eks.: Person, String, NumberDisplay, Variabler og metoder: med lille camelcase eks.: firstname, trackname, displaystring Indrykning Alt mellem { rykkes ét hak ind For hvert ekstra niveau af { rykkes endnu et hak ind Brug BlueJ's Auto-layout public class Person { private int age; public Person() { age = 32; BlueJ editor public class Person { private int age; public Person() { age = 32; Mine slides BlueJ styleguide: Link 2

3 Niveauer af programbeskrivelser Klassediagram (oversigt) Hvad (specifikation) JavaDoc (mellem-niveau) Hvad Java-kode (detaljeret) Hvordan (inplementation) Statisk (struktur) rum for hvad der generelt kan ske Objektdiagram (oversigt) Relationer mellem objekter (referencer) Sekvensdiagram (detaljeret) Interaktion mellem objekter (metodekald) Dynamisk scenarie for hvad der vil ske i en konkret situation 3

4 Klassediagram (statisk, oversigt) TestDriver run() UML 1 ClockDisplay timetick() settime(int h, int m) gettime() void updatedisplay() UML klassediagrammer kan også vise nogle af feltvariablerne 2 NumberDisplay BlueJ int getvalue() String getdisplayvalue() void setvalue(int val) void increment() 4

5 Java-kode (statisk, detaljeret) Skift mellem Java kode og dokumentation Disse kommentarer indsættes i klassens dokumentation Vi har to forskellige konstruktører med forskellige parametre 5

6 JavaDOC (statisk, mellem-niveau) Første sætning Tilsvarende gælder for kommentarer til klassen og kommentarer til metoder Hele kommentaren 6

7 Objektdiagram (dynamisk, oversigt) ClockDisplay NumberDisplay hours minutes limit value displaystring String "00:00" NumberDisplay public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); updatedisplay(); limit value Konstruktører public NumberDisplay(int rolloverlimit) { limit = rolloverlimit; value = 0; 7

8 Sekvensdiagram timetick 23:00 22:59 :ClockDisplay minutes :NumberDisplay hours :NumberDisplay timetick() increment() getvalue() increment() updatedisplay() getdisplayvalue() getdisplayvalue() public void timetick() { minutes.increment(); if (minutes.getvalue() == 0) { hours.increment(); updatedisplay(); private void updatedisplay() { displaystring = hours.getdisplayvalue() + ":" + minutes.getdisplayvalue(); 8

9 Arraylister (én-til-mange relation) Objektreferencer for at holde fast i et objekt skal der bruges en objektreference (en variabel) for at holde fast i objekter skal der bruges objektreferencer... Collections en særlig slags objekter, der kan opbevare (referencer til) objekter f.eks. ArrayList java.util en pakke, der bl.a. indeholder klasserne i Javas såkaldte collection framework 9

10 Klassediagram for adressebog Man kan Tilføje et vilkårligt antal personer Printe adressebogen Finde et telefonnummer (via personens navn) Finde gennemsnitsalderen på personerne AddressBook void addperson(person p) void print() String getphone(string name) int averageage() * Person String getname() String getnumber() int getage() Problem Hvordan kan man huske alle personerne? Hvordan realiseres én-til-mange relationen? Svar Det kan vi gøre ved hjælp af en arrayliste 10

11 Eksempel: Index over bekendte // feltvariabel private ArrayList<Person> persons;... // initialisering (i konstruktør) persons = new ArrayList<Person>();... Objekterne i arraylisten skal være af type Person // skab personer og tilføj dem til arraylisten public void createindex() { Person person; // lokal variabel Husk parenteserne Kald af konstruktør Ellers typenavn og compile fejl person = new Person( "Jeppe", " ", 33 ); persons.add(person); person = new Person( "Ole", " ", 28 ); persons.add(person); person = new Person( "Linda", " ", 21 ); persons.add(person); 11

12 Objektdiagram for createindex persons:arraylist<person> persons.add(person); ArrayList<Person> size() = 0123 Person name number age 33 String "Jeppe" String " " Bemærk at index'erne nummereres fra 0 til size()-1 person:person Person name number age 28 String "Ole" String " " Person name number age 21 String "Linda" String " " 12

13 Realisering af én-til-mange Feltvariabel (liste af personer) Metode (tilføjer person til listen) UML Parametriseret type AddressBook ArrayList<Person> persons void addperson(person p) void print() String getnumber(string name) int averageage() * Person String getname() String getnumber() int getage() BlueJ 13

14 Realisering af en-til-mange kode For at realisere en en-til-mange relation i koden skal man gøre 3 ting IM 1. Importere klassen ArrayList import java.util.arraylist; ER 2. Erklære en feltvariabel af typen ArrayList< > private ArrayList<Person> persons; KO 3. Initialisere feltvariablen (gøres normalt i konstruktøren) public AddressBook(){ persons = new ArrayList<Person>(); IMERKO-reglen Husk parenteserne Kald af konstruktør Ellers typenavn 14

15 ArrayList er en parametriseret type Erklæring af ArrayList Klassenavn Type parameter (i < > parenteser) public class ArrayList <E> { boolean add( E e){ void add(int index, E element){ boolean remove(object o){ E get(int index){ boolean contains (Object o){ boolean isempty(){ int size(){... Flere detaljer: se JavaDoc... Link 15

16 Arrayliste med heltal Parameteren til ArrayList skal være en objekt type Det betyder, at man ikke kan skrive ArrayList<int> I stedet skal man skrive ArrayList<Integer> Integer er en objekt type med de "samme værdier" som den primitive type int Integer er en wrapper klasse for int (wrapper = indpakning) Integer-værdier konverteres automatisk til int-værdier (og omvendt), når der er behov for det Eksempel private int i; private ArrayList<Integer> list list.add(i) int Integer i = list.get(3) Integer int 16

17 For-løkker ERKLÆRING + INITIALISERING Lokal variable i af type int med startværdi 0 Almindelig for-løkke TEST Falsk Sand Keyword (reserveret ord) KROP De instruktioner, der skal gentages for( int i=0 ; i<4 ; i++ ) { move(100); turn(90); OPDATERING i++ i = i+1 17

18 Javas for-each-løkke (udvidet for-løkke) private ArrayList<Person> persons;... persons = new ArrayList<Person>();... public void createindex() { Person person; person = new Person("Jeppe", " ", 33 ); persons.add(person); Vi vil gerne gennemløbe arraylisten og printe alle personerne i den Keyword (reserveret ord) Erklæring af lokal variabel (af type Person) Reference til den arrayliste, der skal gennemløbes for ( Person person : persons ) { System.out.println(person); KROP (de instruktioner, der skal gentages) 18

19 Find gennemsnitsalder /** * return the average age of the * people in the address book */ public int averageage() { return agesum() / persons.size(); Metoden er private (den kan kun bruges i denne klasse) /** * return the sum of the age of the * people in the address book */ private int agesum() { int result = 0; for (Person person : persons) { result += person.getage(); return result; Angiver at værdien af udtrykket på højresiden lægges til variablen på venstresiden 19

20 Print af arrayliste Elementerne i en arrayliste kan udskrives via sætningen System.out.println(list); Alle klasser er subklasser af klassen Object Indeholder en metode som returnerer en tekstrepræsentation af det pågældende objekt String tostring(){ Det er denne metode, der anvendes til at få en tekstrepræsentation af Person objekterne Ingen linjeskift Klassenavn ID-nr (hexa-decimal værdi) 20

21 Pænere print af arrayliste Redefinere tostring metoden til at returnere noget meningsfyldt (i stedet for klassenavn og hexadecimalt ID-nr) public String tostring() { return name + " " + age + " years"; Indsætte linjeskift mellem de enkelte objekter i listen for (Person person : list) { System.out.println(person); 21

22 Primitive typer i Java Heltal byte short int long 8 bit 16 bit 32 bit 64 bit Reelle tal float double 32 bit 64 bit Sandhedsværdier boolean 1 bit Tegn char 16 bit X Y angiver at udtryk af type X kan assignes til variabler af type Y Eksempel: double d; int i; Man må gerne assigne en "lille" værdi til en "stor" variabel Lovligt: int double Ulovligt: d = 7; i = 3.5; Man kan ikke proppe en "stor" værdi ind i en "lille" variabel 22

23 Forfremmelse og begrænsning En værdi kan forfremmes til en "større type" d = 7; Lovligt: integer udtrykket 7 bliver forfremmet til typen double Håndteres automatisk af compileren (når det er nødvendigt) i = d; Ulovligt: Man kan ikke proppe en stor værdi ind i en lille variabel En værdi kan begrænses til en "mindre type" i = (int) 3.5; type-cast Lovligt: double udtrykket 3.5 bliver begrænset til typen int og variablen i får værdien 3 Kræver et type-cast (indsat af programmøren) 23

24 Konstanter (literals) Type Literal Wrapper type byte 15 Byte short Short int Integer Primitive typer long float 45320L 15.03e5F Long Float Objekt typer double 15.03e5 Double char 'h' Character boolean false Boolean Objekt type String "hello" 24

25 Identitet versus lighed (magen til) I det virkelige liv skelner vi mellem objekter, der er identiske, og objekter, der ligner hinanden To personer er ikke identiske, selvom de hedder det samme og er født samme dag (har samme attributværdier). Hvis man fortæller tjeneren, at man vil have den Pizza, som står på nabobordet, kommer han med en der ligner (dvs. er magen til). Java Operator == identitet equals lighed (magen til) Metode i Object klassen (redefineres i mange underklasser, f.eks. String) 25

26 Identitet mellem objekter Person Person "Fred" "Jill" p1 p2 p1 == p2 evaluerer til false Operatoren == tester for identitet Det er ikke nok, at de to objekter har samme attributværdier Nedenfor peger p1 og p2 på samme objekt Person Person Person Person "Fred" "Fred" "Fred" "Jill" p1 p2 p1 p2 p1 == p2 evaluerer til false p1 == p2 evaluerer til true 26

27 Sammenligning af strenge Strenge skal altid sammenlignes ved hjælp af equals metoden fra String klassen Eksempel Næste input String input = reader.getinput(); equals tester lighed (magen til) == tester identitet Lad os antage, at input derved kan få værdien "stop" Test ved hjælp af equals metoden if( input.equals("stop") ) {... Testet evaluerer til true Test ved hjælp af == operatoren if( input == "stop" ) {... Testet evaluerer til false eller true, hvis det er en smart compiler String "stop" String "stop" input 27

28 Klassevariabler og klassemetoder Instansvariabler og instansmetoder Hvert objekt har sine egne feltvariabler Metoder kaldes ved at bede objekter om at udføre dem Det er imidlertid også muligt at erklære feltvariabler og metoder som tilhører klassen Klassevariabler og klassemetoder erklæres med keywordet static Klassevariabler bruges til at modellere egenskaber for klassen, f.eks.: myndighedsalder for personer, fælles rentesats for alle konti Klassemetoder bruges til at modellere operationer, der er uafhængige af objekters tilstande 28

29 Har I set dem før? Hvor har I mødt klassemetoder? new TestDriver() void run() Open Editor Compile Inspect Remove Klassemetode kan kaldes uden at lave et objekt af typen TestDriver Hvor har I mødt klassevariabler? System.out.println( ); Klasse i java.lang (importeres automatisk) Klassevariabel af type PrintStream Metode i PrintStream udskriver parameteren på "standard" output stream (BlueJ's terminal) 29

30 Eksempler fra java.lang.math public class Math konstant (kan ikke ændres) { public static final double PI = /** 0.0 random() < 1.0 */ public static double random() {... navne på konstanter skrives med store bogstaver og "underscores", fx MAX_NO /** sqrt(a) == a */ public static double sqrt(double a) {... /** pow(a,b) == a b */ public static double pow(double a, double b) {

31 Brug af klassevariabler og klassemetoder Klassevariable og klassemetoder tilgås via klassen Math.PI; Math.random(); Account.setInterestRate(2.65); Kan også tilgås via objekt, men det er "dårlig stil" og kan være forvirrende Account myaccount = new Account(...); myaccount.setinterestrate(2.65); Metoden kaldes på en specifik bankkonto, men det er rentesatsen for alle konti, der ændres 31

32 Levetid for variabler og parametre Feltvariabler modellerer tilstand for objekter levetid er den samme som objektets Lokale variabler hjælpevariabler i en metode/konstruktør levetid er metode/konstruktør kaldet Parametre parametrisering af metode/konstruktør levetid er metode/konstruktør kaldet lokale variabler hvor startværdien leveres af kalderen Klassevariabler programudførelsen 32

33 Virkefeltsregler (fortolkning af navne) Et navn fortolkes i en kontekst, som er med til at definere navnets betydning. Nogle eksempler: Duncan spillede blændende i søndags! Ring til Kirsten og sig at... Beskeden Ring til Kirsten og sig at... fortolkes vidt forskelligt på arbejde og hjemme! I Java (og andre programmeringssprog) er der præcise, utvetydige regler for fortolkning af navne 33

34 Tre slags variabler Feltvariabler Parametre public class Date { private int day; private int month; private int year; public void adddays(int d) { for ( int i=0; i<d; i++ ) { settonextdate(); Lokale variabler private int daysinmonth() { int[] daysinmonth = {0,31,28,31, ; int res; res = daysinmonth[month]; // handle leap year if (month == 2 && isinleapyear()) { res++; return res; 34

35 Feltvariabler public class Scope { public Scope() { i = 0; public void addtwo() { addone(); addone(); private int i; public void addone() { i = i + 1; Style guide: Feltvariabler bør erklæres i begyndelsen af klassen public int getvalue() { return i; En klasse definerer et navnerum, hvor alle navne erklæret i klassen er tilgængelige overalt i klassen 35

36 Metoder public class Scope { public Scope() { i = 0; public void addtwo() { addone(); addone(); private int i; public void addone() { i = i + 1; public int getvalue() { return i; En klasse definerer et navnerum, hvor alle navne erklæret i klassen er tilgængelige overalt i klassen 36

37 Parametre public void adddays( int d ) { for ( int i=0; i < d; i++ ) { settonextdate(); En metode definerer et navnerum, hvor parametre til metoden er tilgængelige overalt i metoden 37

38 Lokale variabler X X public void pip() { x = x++; int x = 0; Fejl (medmindre der er en feltvariabel x) x++; I en metode/konstruktør definerer en blok {... et navnerum, hvor alle navne erklæret i blokken er tilgængelige fra og med erklæringen og indtil blokkens afslutning 38

39 Indre blokke En blok kan have indre blokke {... { public void pip() { int i = 0; { i++; System.out.println(i); int x = 0; x = i; x++; i++; System.out.println(x); System.out.println(i); Reglen for indre blokke er den samme som reglen for blokke i metoder (forrige slide), dvs. lokale variabler er tilgængelig fra og med erklæringen og indtil afslutningen af den indre blok 39

40 Et navn virker også inde i indre blokke public void pip() { int i = 0; int x = 0;... { i++; System.out.println(i); x++; System.out.println(x);

41 Et navn kan skygge for et andet this.i public class Scope { private int i; public Scope() { Gør livet lettere for alle i = 0; Brug forskellige navne public void pip() { Brug beskrivende navne i++; { i++; System.out.println("a " + i ); int i = 0; i++; System.out.println("b " + i ); public void testmethod() { Scope s = new Scope(); s.pip(); 41

42 Kontrolvariabel i for-løkker Konstruktionen svarer til for ( int j=0 ; j<4; j++) { System.out.println(j); { int j; for (j=0; j<4; j++) { System.out.println(j); For-each løkke for ( Person p : persons) { System.out.println(p); 42

43 Virkefeltsregler i Java (opsummering) En feltvariabel erklæret i en klasse virker overalt i klassen med undtagelse af virkefeltet for eventuelle ens-benævnte lokale variabler erklæret i blokke i klassens metoder En lokal variabel erklæret i en blok virker overalt i blokken med undtagelse af den del af blokken, der går forud for erklæringen virkefeltet for eventuelle ens-benævnte lokale variabler erklæret i indre blokke i blokken 43

44 Hvilken variabel? Antagelse: Feltvariabler er erklæret øverst i klassen (jvf. style-guide) Søg opad og udad indtil en erklæring nås (spring indre blokke, løkker og metoder/konstruktører over) public class Scope { private int i = 0; public Scope ( int i ) { i = i + 1; this.i++ System.out.println("a " + i ); public void pip() { System.out.println("b " + i ); for ( int i = 0; i < 3; i ++){ System.out.println("c " + i ); System.out.println("d " + i );... 44

45 Algoritmeskabeloner Løkke Finder ét element med den angivne egenskab Test public TYPE findone( PARAM ) { for ( TYPE elem : LISTE ) { if ( TEST(elem,PARAM) ) { return elem; return null; Finder alle elementer med den angivne egenskab, og returnerer dem i en arrayliste public ArrayList<TYPE> findall( PARAM ) { ArrayList<TYPE> result = new ArrayList<TYPE>(); for ( TYPE elem : LISTE ) { if ( TEST(elem,PARAM) ) { result.add(elem); Når vi finder et element returneres det (og algoritmen standser) return result; Alle eksamenssæt indeholder opgaver, som kan løses ved hjælp af algoritmeskabeloner Når vi finder et element tilføjes det til result (som er en arrayliste) 45

46 Algoritmeskabeloner Finder antallet af elementer med den angivne egenskab public int findnoof( PARAM ) { int result = 0; for ( TYPE elem : LISTE ) { if ( TEST(elem,PARAM) ) { result++; return result; Når vi finder et element tælles result op public int findsumof( PARAM ) { int result = 0; for ( TYPE elem : LISTE ) { if ( TEST(elem,PARAM) ) { result += VALUE(elem, PARAM); return result; Finder summen af de elementer, der har den angivne egenskab Når vi finder et element adderes værdien af elementet til result 46

47 findbest = finder bedste element i liste Løkke Test Når vi har fundet et element, skal vi undersøge, om det er bedre end hidtil bedste public TYPE findbest( PARAM ) { TYPE result = null; Resultatvariabel indeholder hidtil bedste for ( TYPE elem : LISTE ) { Er elem bedre end hidtil bedste? if ( TEST(elem,PARAM) ) { if ( result == null BEST(elem,result,PARAM) ){ result = elem; or-operator (lazy) Højresiden evalueres result opdateres kun, hvis result!= null til at pege på elem Har vi et hidtil bedste? return result; Når result!= null kan vi referere til objektets metoder/variabler Algoritmeskabelon Gennemsøger LISTE og returnerer det BEDSTE af de elementer, der opfylder TEST Hvis flere elementer er lige gode, returneres et vilkårligt af disse Hvis ingen elementer opfylder TEST, returneres null Hvis man undlader TEST (og fjerner den yderste if-sætning), finder man det BEDSTE blandt alle i LISTE 47

48 Sammenligning af algoritmeskabeloner Fælles Alle skabeloner gennemsøger en arrayliste og tjekker hvert enkelt element i listen op mod en angiven betingelse (der kan afhænge af parametre) Betingelsen involverer kun det element i listen, der pt. undersøges Forskelle SKOBUTIK BETINGELSEN TESTER SKOENES FARVE findone returnerer ét element, der opfylder den angivne betingelse (og stopper så snart en sådant element er fundet) EN RØD SKO findall returnerer en arrayliste med alle elementer, der opfylder den angivne betingelse ALLE RØDE SKO findnoof returnerer antallet af elementer, der opfylder den angivne betingelse ANTALLET AF RØDE SKO findsumof returnerer summen af værdierne af de elementer, der opfylder den angivne betingelse SAMLET PRIS FOR ALLE RØDE SKO findbest returnerer det bedste Skabelon Initialisering Opdatering af de elementer, der opfylder den angivne betingelse findall tom liste add findnoof 0 += 1 BILLIGSTE RØDE SKO findsumof 0 += VALUE findbest null hidtil bedste 48

49 Sortering via Collections og Comparable Klassen Collections indeholder en række nyttige metoder Metoderne kan bruges på forskellige typer objektsamlinger Typen af objektsamlingen skal implementere Collection interfacet Det er f.eks. tilfældet for ArrayList T min(collection<t> c) //returnerer mindste element T max(collection<t> c) //returnerer største element void sort(list<t> l) //sorterer listen void shuffle(list<t> l) //blander listen void reverse(list<t> l) //vender listen om boolean disjoint(collection<t> c1, Collection<T> c2) int frequency(collection<t> c, Object o)... Alle metoderne er static Collections.metode() 49

50 Brug af Collections på ArrayList<Person> public class Driver { public static void run() { ArrayList<Person> list; list = new ArrayList<Person>(); list.add(new Person("Cecilie", 18)); list.add(new Person("Erik", 16)); list.add(new Person("Adam", 16)); list.add(new Person("Bo", 39)); list.add(new Person("Dora", 47)); print("*******************"); print("liste: " + list); Collections.shuffle(list); print("blandet liste: " + list); Collections.reverse(list); print("liste bagfra: " + list);... 50

51 Brug af Collections på ArrayList<Person> public class Driver { public static void run() { ArrayList<Person> list; list = new ArrayList<Person>(); list.add(new Person("Cecilie", 18)); list.add(new Person("Erik", 16)); list.add(new Person("Adam", 16)); list.add(new Person("Bo", 39)); list.add(new Person("Dora", 47)); print("*******************"); print("liste: " + list); print("min: " + Collections.min(list)); print("max: " + Collections.max(list)); Collections.sort(list); print("sorteret liste: " + list);... 51

52 Hvad gik galt? Metoderne min, max og sort i Collections kan kun anvendes, hvis elementerne i ArrayListen har en ordning String klassen har en indbygget ordning (alfabetisk sortering) Derfor kunne vi bruge min, max og sort på ArrayList<String> Person klassen (som vi selv har lavet) har (endnu ikke) en ordning Derfor kan vi ikke bruge min, max og sort på ArrayList<Person> Men vi kan godt bruge shuffle og reverse, idet disse metoder ikke kræver en ordning 52

53 Ordning kan defineres via interfacet Comparable public interface Comparable<T> { public int compareto(t o); Signatur for metode Person skal implementere interfacet Tænk på et interface som en rolle Person-objekter kan spille rollen Comparable, hvis to ting er opfyldt public class Person { implements Comparable<Person> {... T = Person public... int compareto(person p) { T = Person Person skal implementere en compareto metode med den signatur, der er specificeret i interfacet Metoden sammenligner to objekter af type Person, nemlig this og p Det objekt metoden kaldes på Det objekt parameteren angiver negativ this < p nul this = p positiv p < this Den ordning, som compareto definerer, kaldes den NATURLIGE ORDNING 53

54 compareto kan implementeres på mange måder Vi kan sortere (alfabetisk) efter personens navn Til dette formål kan vi bruge compareto metoden fra String klassen public int compareto(person p){ return this.name. compareto ( p.name ); Personens eget navn (this kan udelades) Metode fra String klassen (sorterer alfabetisk) Navnet på personen p Vi kan sortere efter personens alder public int compareto(person p){ return this.age - p.age; Personens egen alder Subtraktion (af heltal) Alderen på personen p 54

55 Vi kan kombinere de to sorteringskriterier De yngste først Hvis to personer er lige gamle: alfabetisk efter navn public int compareto(person p){ if ( this.age!= p.age ) { return this.age - p.age; //alderen er identisk return this.name.compareto(p.name); Er alderen forskellig? Yngste først Alfabetisk efter navn Alle eksamenssæt indeholder opgaver, som kan løses ved hjælp af Collections og Comparable 55

56 Multiple sorteringsmåder Hvad gør man, hvis vi har behov for at kunne sortere på flere forskellige måder, f.eks. Sommetider sortere personer efter navn Sommetider sortere personer efter alder Sommetider sortere personer efter alder og navn Så bruger man Collections sammen med Comparator interfacet (i stedet for Comparable interfacet) Det skal vi se på næste mandag 56

57 Det var alt for nu.. spørgsmål 57

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

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 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 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 Klassevariabler og klassemetoder Levetid for variabler og parametre Virkefeltsregler Projektopgave Kaninjagt Lommeregner (for MAT studerende) Klassevariabler og klassemetoder

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

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

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

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

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

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

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

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

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

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner Forelæsning 4.1 Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner finden findalle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Afleveringsopgave

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

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

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

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

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

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

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Funktionel programmering i Java (Kapitel 5) Forskellen på imperative og funktionelle programmeringssprog Lambda'er (kodestumper, der kan bruges som parametre i et metodekald) Streams

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

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

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Funktionel programmering i Java (Kapitel 5) Forskellen på imperative og funktionelle programmeringssprog Lambda'er (kodestumper, der kan bruges som parametre i et metodekald) Streams

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

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

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

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Funktionel programmering i Java (Kapitel 5) Lambda'er (kodestumper, der kan bruges som parametre i et metodekald) Streams (sekvenser af data / strømme af data) Brug af assignments

Læs mere

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Funktionel programmering i Java (Kapitel 5) Lambda'er (kodestumper, der kan bruges som parametre i et metodekald) Streams (sekvenser af data / strømme af data) Brug af assignments

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

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

Klasser og nedarvning

Klasser og nedarvning Datalogi C, Efterår 2004 OH er, forelæsning 21/9-2004 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Opgaven til senere: Generalisere

Læs mere

Quiz Uge 5 mandag første time

Quiz Uge 5 mandag første time Quiz Uge 5 mandag første time Hvilke erklæringer refereres der til? 1 2 3 4 5 public class Scope { private int i = 0; private int n = 0; public Scope ( int n ) { this.n = n + i ; System.out.println("a"

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

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

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

Quiz Uge 5 mandag første time

Quiz Uge 5 mandag første time Quiz Uge 5 mandag første time Hvilke erklæringer refereres der til? 1 2 3 4 5 public class Scope { private int i = 0; private int n = 0; public Scope ( int n ) { this.n = n + i ; System.out.println("a"

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

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

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

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

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

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

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

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

Tree klassen fra sidste forelæsning

Tree klassen fra sidste forelæsning Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years

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 10. Opremsningstyper. Forskellige teknikker til test og debugging. Afleveringsopgave: Debugging + Test.

Forelæsning Uge 10. Opremsningstyper. Forskellige teknikker til test og debugging. Afleveringsopgave: Debugging + Test. Forelæsning Uge 10 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), forsøger

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

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree. Programmering 1999 Forelæsning 11, tirsdag 5. oktober 1999 Oversigt Klasse-hierarkier: superklasser og subklasser Nedarvning Polymorfi Programmering 1999 KVL Side 11-1 Hierarkier En klasse repræsenterer

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

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

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden. Programmering 1999 Forelæsning 5, tirsdag 14. september 1999 Oversigt Mere om klasser og objekter Klassefelter: static Konstante felter: final Indkapsling og synlighed: private og public Overlæsning af

Læs mere

Forelæsning Uge 11. Nedarvning. Object klassen. Projektopgave om computerspil

Forelæsning Uge 11. Nedarvning. Object klassen. Projektopgave om computerspil Forelæsning Uge 11 Nedarvning En klasse kan være en subklasse af en anden Det betyder at subklassen arver superklassens feltvariabler og metoder Object klassen Superklasse for alle klasser Indeholder en

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

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

COMPUTERSPIL 1. Opgave 1

COMPUTERSPIL 1. Opgave 1 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

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

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

Forelæsning Uge 10 Mandag

Forelæsning Uge 10 Mandag Forelæsning Uge 10 Mandag 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

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

//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

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

Programmering i C. Lektion september 2009

Programmering i C. Lektion september 2009 Programmering i C Lektion 1 8. september 2009 Målgruppe Motivation Indhold Form Materiale 2 / 47 Kursusintroduktion 1 Målgruppe 2 Motivation 3 Indhold 4 Form 5 Materiale Målgruppe Motivation Indhold Form

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

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

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

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

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen. Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19

Læs mere

Forelæsning Uge 11 Torsdag

Forelæsning Uge 11 Torsdag Forelæsning Uge 11 Torsdag Nedarvning En klasse kan være en subklasse af en anden Det betyder at subklassen arver superklassens feltvariabler og metoder Object klassen Superklasse for alle klasser Indeholder

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

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

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

Anvendelse af metoder - Programmering

Anvendelse af metoder - Programmering Denne guide er oprindeligt udgivet på Eksperten.dk Anvendelse af metoder - Programmering En forhåbentlig rigtig god forklaring på hvad metoder er og hvordan de anvendes. Lidt om private og public, retur

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

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

#AlleKanKode. Lektion 2 - Konstanter og Variabler

#AlleKanKode. Lektion 2 - Konstanter og Variabler #AlleKanKode Lektion 2 - Konstanter og Variabler Disclaimer / Ansvarsfraskrivelse Alt du deler og siger mm bliver optaget. Lad være med at dele privat oplysninger, adgangskoder, kreditkort oplysninger

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

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17

Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Datastrukturer & Algoritmer, Datalogi C Forelæsning 2/11-2004 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Fundamentale datastrukturer man får brug for igen og igen Et

Læs mere

Forelæsning Uge 9 Mandag

Forelæsning Uge 9 Mandag Forelæsning Uge 9 Mandag Arrays Objektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog Principper for design af klasser Undgå f.eks. at have den samme

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

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

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit 3.1-3.5. if (indkomst > 267000) topskat = (indkomst-267000) * 0.

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit 3.1-3.5. if (indkomst > 267000) topskat = (indkomst-267000) * 0. Kursus 02199: Programmering afsnit 3.1-3.5 Anne Haxthausen IMM, DTU 1. Kontrol af programudførn (afsnit 3.1) 2. Valg-sætninger (if og switch) (afsnit 3.2 og 3.3) 3. Bloksætninger (afsnit 3.2) 4. Logiske

Læs mere

Har kun én enkelt abstract metode De steder, hvor man skal bruge et objekt, hvis type er et funktionelt interface, kan man i stedet bruge en lambda

Har kun én enkelt abstract metode De steder, hvor man skal bruge et objekt, hvis type er et funktionelt interface, kan man i stedet bruge en lambda Forelæsning Uge 12 Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser af En abstrakt klasse kan indeholde abstrakte metoder, hvor kun hovedet er angivet, mens

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