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
|
|
- Frederik Mikkelsen
- 5 år siden
- Visninger:
Transkript
1 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 implementationen (kroppen) mangler I et interface er alle metoder abstrakte Funktionelle interfaces 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 Wildcards (jokere) Gør det muligt at beskrive komplicerede typebegrænsninger i forbindelse med generiske klasser Afleveringsopgave: Computerspil 2 Dokumentation og test af de klasser, som I har implementeret i den første delaflevering
2 Træning i mundtlig præsentation Deltag i træningen i mundtlig præsentation Den er uhyre vigtig for jeres succes ved mundtlig eksamen Eneste gang under jeres studier, hvor I får systematisk træning heri Træning gør mester de timer I bruger på det, er godt givet ud Se videoerne om den "perfekte" eksamenspræstation og hør jeres medstuderendes præsentationer det lærer I også af Hvis I er nervøse og usikre omkring eksamen og det at skulle lave præsentationer for andre, har I netop brug for træning Det er vigtigt for it-folk at kunne præsentere tekniske problemstillinger for fagfæller og lægfolk Det er en essentiel del af vores faglige kompetencer, og I kommer alle til at gøre det i jeres daglige arbejde 2
3 Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser af new operatoren kan ikke anvendes på klassen I vores Newsfeed system vil det være oplagt at erklære Post til at være en abstrakt klasse Det signalerer, at vi ikke vil lave instanser af Post, men kun instanser af dens subklasser MessagePost og PhotoPost Formålet med Post er udelukkende at samle de ting, der er fælles for MessagePost og PhotoPost, og på den måde undgå kodedublering og opnå større læsbarhed Angiver, at klassen er abstrakt (rækkefølgen af public og abstract er uden betydning) Angiver at klassen er abstrakt <<abstract>> public abstract class Post { 3
4 Abstrakte metoder En abstrakt klasse kan indeholde abstrakte metoder En abstrakt metode er en metode, der ikke er implementeret i klassen Vi angiver kun metodens hoved, mens kroppen udelades I vores Newsfeed system har vi en display metode i hver af klasserne Post, MessagePost og PhotoPost Lad os for et øjeblik antage, at display metoden i Post klassen ikke har noget fornuftigt at lave, f.eks. fordi Post klassen ingen feltvariabler har Så kan vi erklære display metoden til at være abstrakt public abstract void display(); Betyder at implementationen af metoden overlades til subklasserne Hvis en subklasse ikke implementerer metoden, skal subklassen selv være abstrakt Det sikrer, at alle konkrete subklasser har en implementation af metoden 4
5 Interfaces Et interface ligner en abstrakt klasse, hvor alle metoder er abstrakte der ikke er feltvariabler og konstruktører De abstrakte metoder implementeres i de klasser, der implementerer interfacet Interfaces kan nedarve fra hinanden på samme måde som klasser Vi kan have subinterfaces og superinterfaces Eksempel: Comparable For hver metode angives hovedet, mens kroppen udelades Alle metoder er public og abstract (hvorfor dette ikke angives) Comparable har kun én metode, compareto Angiver at Comparable er et interface public interface Comparable<T> { int compareto(t o); Angiver, at klassen inplementerer interfacet Metoden implementeres i de klasser, der implementerer interfacet public class Person implements Comparable<Person> { public int compareto(person p) { 5
6 List interfacet List interfacet beskriver en sekvens af elementer. Det har mange forskellige implementationer, bl.a. ArrayList opbevarer elementerne i et array LinkedList opbevarer elementer i en dobbeltkædet liste, hvor element har en pegepinde til det foregående og det efterfølgende element Brug af List interfacet gør det let at skifte mellem de forskelige implementationer Hvis man har erklæret alle sine variable til at være af typen List (i stedet for ArrayList eller LinkedList), er det eneste, der skal ændres, det sted hvor listen instantieres Her skal man udskifte new ArrayList<>() med new LinkedList<>() (eller omvendt) 6
7 Set og Map interfacet Set interfacet beskriver en mængde. Det har mange forskellige implementationer, bl.a. HashSet opbevarer mængden i en hashtabel, hvor nøglerne er elementernes hashkoder LinkedHashSet opbevarer mængden i en hashtabel og har derudover en dobbeltkædet liste, der gennemløber alle elementer, og bestemmer den rækkefølge de besøges i, når man bruger en iterator (eller en for-each løkke) TreeSet opbevarer mængden i en træstruktur, hvilket bevirker at de fleste operationer kan udføres i logaritmisk tid Map interfacet beskriver en afbildning, hvor man ud fra en nøgle kan slå en værdi op. Det har mange forskellige implementationer, bl.a. HashMap LinkedHashMap TreeMap 7
8 Hvad opnår vi? Fælles for abstrakte klasser og interfaces De bestemmer en type Man kan lave polymorfe metoder, som kan bruges på objekter fra alle subklasser af en abstrakt klasse alle de klasser, der implementerer et interface F.eks. kan reverse og shuffle metoderne i Collections klassen bruges på alle objektsamlinger, der implementerer List interfacet, mens min, max og sort metoderne endvidere kræver, at elementtypen i objektsamlingen implementerer Comparable interfacet Nedarvning fra abstrakt eller konkret superklasse Vi arver både noget implementation og en type Klassen bliver en subtype af superklassen, og dens objekter kan bruges alle de steder superklassens objekter kan bruges Implementation af interface Vi arver kun typen (der er jo ingen implementation at arve) Klassen bliver en subtype af interfacet, og dens objekter kan bruges alle de steder, hvor der kræves et objekt af interface typen 8
9 Abstrakte klasse eller interface? Hvorfor har Java både abstrakte klasser og interfaces? En abstrakt klasse kan indeholde implementation (og feltvariabler) det kan et interface ikke En klasse kan implementere flere interfaces men kun være (direkte) subklasse af én anden klasse Multipel nedarvning De tre røde klasser nedarver fra begge blå klasser Dette kan kun lade sig gøre, hvis mindst en af de blå er et interface Hvor meget er implementeret? Almindelig konkret klasse: alt er implementeret (100%) Interface: ingen implementation (0%) Abstrakt klasse: delvis implementation (0-100%) 9
10 Abstract klasse eller interface (fortsat) Virkeligheden er (desværre) ikke helt så pæn og simpel som beskrevet på de foregående slides Fra og med Java 8 kan et interface indeholde implementation i form af klassemetoder og såkaldte default metoder Implementation af disse metoder nedarves til de klasser, der implementerer interfacet Default metoder er bl.a. indført for at kunne tilføje nye metoder til et eksisterende interface uden at genere de klasser, der allerede implementerer det Da et interface ikke har feltvariabler og konstruktører, er det begrænset, hvad man kan gøre i en default metode (der er ingen tilstand at operere på) Eksempel fra funktionel sortering Klassemetode i Comparator interfacet (tager en lambda som parameter og returnerer et Comparator objekt) Collections.sort(persons, Comparator. comparing((person p) -> p.getname()).thencomparing (p -> p.getage()) ); Klassemetode i Collections klassen default metode i Comparator interfacet (kaldes på det objekt, som comparing metoden returnerer, og returnerer et Comparator objekt) 10
11 Collection frameworket (udsnit) 2 forskellige slags UML pile Fuldt optrukne: nedarvning Stiplede: implementation <<interface>> Collection <<abstract class>> AbstractCollection <<interface>> Set <<interface>> List <<interface>> Queue HashSet <<interface>> SortedSet <<abstract class>> AbstractList LinkedList PriorityQueue LinkedHashSet <<interface>> NavigableSet TreeSet ArrayList Vector Collection frameworket består af 12 interfaces 5 abstrakte klasser 30 konkrete klasser AbstractList implementerer nogle metoder, der er fælles for alle lister AbstractCollection implementerer nogle metoder, der er fælles for alle collections De to abstrakte klasser gør det nemmere at lave sine egne List og Collection klasser Dele af implementationen er allerede er lavet (i de abstrakte klasser) Bemærk at Map<K,V> ikke er et subinterface af Collection<E> (selvom Map indgår i det såkaldte collection framework) 11
12 Brug af Collections og Comparable 3 forskellige slags UML pile Fuldt optrukne: nedarvning Stiplede pile: implementation Stiplede med åbent hoved: brug Collections T min(collection<t> c) T max(collection<t> c) void sort(list<t> l) <<interface>> Collection boolean add(e e) boolean contains(object o) <<interface>> Comparable int compareto(t o) <<interface>> List <<interface>> Queue <<interface>> Set Pixel Person String ArrayList HashSet LinkedList Adult Child 12
13 Funktionelle interfaces Et funktionelt interface har é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 Man kan erklære variabler, hvis type er et funktionelt interface Dermed bliver det muligt at assigne lambda'er til variabler, og dermed bruge dem forskellige steder i programmet, f.eks. som parameterværdier java.util.function definerer en række funktionelle interfaces, bl.a. Predicate bruges til lambda'er, der returnerer en boolsk værdi BinaryOperator bruges til lambda'er, hvor de to parametre og returværdien er af samme type (f.eks. String x String String) UnaryOperator bruges til lambda'er, hvor parameteren og returværdien er af samme type (f.eks. String String) Function bruges til lambda'er, hvor parameteren og returværdien er af forskellig type (f.eks. String Integer) Consumer bruges til lambda'er der ikke returnerer en værdi, men typisk har en sideeffekt 13
14 Billedredigering via funktionelle interfaces Operationerne i billedredigeringsopgaven fra uge 4 kan implementeres ved hjælp af funktionelle interfaces I de simple billedoperationer (såsom brighten, darken, invert og noise) kan en pixel's nye gråtone beregnes ud fra den gamle ved hjælp af en lambda public Image simplefilter( UnaryOperator<Integer> modification) { for(int x = 0; x < image.getwidth(); x++) { for(int y = 0; y < image.getheight(); y++) { int oldvalue = image.getpixel(x,y).getvalue(); image.getpixel(x,y).setvalue( modification.apply(oldvalue)); image.updatecanvas(); return image; public Image brighten(int amount) { return simplefilter( v -> v + amount ); Funktionelt interface (Integer Integer) Beregning af den nye værdi ved hjælp af apply metoden i det funktionelle interface UnaryOperator, dvs. den lambda, der bruges som parameterværdi i kaldet Ved kald af simplefilter er parameterværdien en lambda, der automatisk giver os et objekt af typen UnaryOperator public Image invert() { return simplefilter(v -> 255 v); 14
15 Billedredigering (fortsat) I de operationer, der spejler, roterer og resizer, bliver gråtonen for en pixel kopieret fra en anden pixel Beregningen af denne pixel's koordinater kan beskrives ved hjælp af to lambda'er public Image complexfilter(int width, int height, BinaryOperator<Integer> xpos, BinaryOperator<Integer> ypos) { Image newimage = new Image(width, height, image.gettitle(), false); for(int x = 0; x < width; x++) { Positionen, hvor gråtoneværdien skal hentes for(int y = 0; y < height; y++) { Pixel p = image.getpixel( xpos.apply(x,y), ypos.apply(x,y) ); newimage.getpixel(x,y).setvalue(p.getvalue()); image = newimage; image.updatecanvas(); return image; Funktionel interface (Integer * Integer Integer) public Image mirror() { int w = image.getwidth(); Den nye gråtoneværdi int h = image.getheight(); for (i,j) hentes i (w-i-1,j) return complexfilter (w, h,(i,j) -> w-i-1,(i,j) -> j); I næste forelæsning vil vi se, at funktionelle interfaces også er særdeles nyttige i forbindelse med grafiske brugergrænseflader public Image rotate() { int w = image.getwidth(); Den nye gråtoneværdi int h = image.getheight(); for (i,j) hentes i (j,h-i-1) return complexfilter (h, w,(i,j) -> j,(i,j) -> h-i-1); 15
16 Wildcards og typebegrænsninger Klasser med typeparametre (fx. ArrayList<E>) kaldes generiske klasser Når man, for metoderne i en generisk klasse, skal beskrive parametrenes type (og returtypen) bruges der en speciel notation indeholdende wildcards (jokere) og typebegrænsninger Det kan være nyttigt, at kende og forstå de hyppigst forekomne wildcard konstruktioner, f.eks. når man slår op i Java API'en Dem vil vi nu illustrere ved hjælp af nogle eksempler Eksempel fra Class<T> Vi vil lave en afbildning (Map), hvor nøglerne er klasser (Fox og Rabbit) og værdierne de farver, hvormed objekterne i disse klasser vises på spillepladen? angiver, at vi på dette sted kan bruge et vilkårlig Class objekt private Map<Class<?>, Color> colors; colors.put( Rabbit.class, Color.ORANGE ); colors.put( Fox.class, Color.BLUE ); Nøgler af type Class<?> Class<Fox> og Class<Rabbit> Konstanter i Color klassen 16
17 Eksempler fra ArrayList<E> klassen boolean add(e e) Tilføjer elementet e til enden af listen Nem at forstå (ingen wildcards) boolean addall(collection<? extends E> c) Tilføjer alle elementerne fra c Parameteren skal være en objektsamling (implementere Collection interfacet) Elementtypen i objektsamlingen skal være en subtype af E (inklusiv E selv) Sikrer at det er lovligt at tilføje elementerne i c til vores arrayliste boolean removeif(predicate<? super E> filter) Fjerner alle de elementer der opfylder filter Parameteren skal være et prædikat (dvs. en boolsk lambda) Prædikatets parameter skal være en supertype af E (inklusiv E selv) Sikrer at prædikatet kan bruges på elementer af typen E 17
18 Eksempler fra Collections void shuffle(list<?> list) Permuterer listens elementer Parameteren skal være af en type, der implementere List interfacet Elementtypen i listen kan være vilkårlig Metoden kan bruges på alle lister, men f.eks. ikke på en Set eller Queue (med mindre de også er lister) int frequency(collection<?> c, Object o) Returnerer antallet af forekomster af objektet o i objektsamlingen c Første parameter skal være af en type, der implementerer Collection interfacet Anden parameter er af vilkårlig type (alle klasser er subklasser af Object) Lovligt at spørge om frekvensen af objekter, der slet ikke kan forekomme i listen (de har trivielt frequency lig med 0) 18
19 Eksempler fra Collections (fortsat) <T> void copy(list<? super T> dest, List<? extends T> src) Kopierer alle elementer fra source listen (src) til destination listen (dest) Begge parametre skal være af typer, der implementerer List interfacet Der skal eksistere en type T, således at elementtypen i dest er en supertype af T, og elementtypen i src er en subtype af T Dvs. at elementtypen i src er en subtype af elementtypen i dest (eller lig med denne) Sikrer at det er lovligt at indsætte elementerne fra src i dest Foran returtypen listes, de typer, der bruges til typebegrænsninger Det er dog ikke nødvendigt at liste de typer, der er type parametre for den generiske type, som vi er i færd med at definere F.eks. behøver vi ikke at liste E i boolean addall(collection<? extends E> c) idet E allerede er introduceret som en type parameter i ArrayList<E> 19
20 Eksempler fra Collections (sort metoderne) <T> void sort(list<t> list, Comparator<? super T> c) Sorterer listen ved hjælp af en comparator Første parameter skal være en liste med elementtypen T Anden parameter skal være af en type, der implementere Comparator interfacet for T (eller en supertype af T) Sikrer at T (eller en supertype af T) stiller en compare metode til rådighed for sorteringen <T extends Comparable<? super T>> void sort(list<t> list) Sorterer listen ved hjælp af den naturlige ordning Parameteren skal være en liste Elementtypen skal implementerer Comparable interfacet (eller have en supertype, der gør det) Sikrer at T (eller en supertype af T) stiller en naturlig ordning til rådighed for sorteringen Yderligere info om wildcards: Link 20
21 Afleveringsopgave: Computerspil 2 I den anden delaflevering skal I bruge de ting, som I har lært om regression tests, på de fire klasser, som I har implementeret i den første delaflevering Lav velvalgte regression tests for de fire klasser Positive tests skal afprøve programmets normale opførsel herunder om det fungerer korrekt omkring forskellige grænseværdier (f.eks. om personer på 12, 13, 14, 18, 19 og 20 år er teenagere) Negative tests skal afprøve om programmet kan håndtere uventede situationer (f.eks. hvad der sker, hvis en bruger forsøger at sætte en persons alder til noget negativt eller meget stort) I behøver ikke lave testmetoder for trivielle accessor og mutator metoder, der blot returnerer/ændrer en enkelt feltvariabel uden at gøre andet Herudover skal I rette de fejl og mangler, som instruktoren har påpeget i jeres første delaflevering 21
22 Test All: Test of Road klassen Fra den generelle Test Fixture kan I "stjæle" import sætningerne Feltvariablerne for landene og byerne Sætningerne i setup metoden (idet vi dog sætter netværket til null, da vi ikke skal bruge det) For overskuelighedens skyld bør I fjerne de dele, som I ikke bruger I skal lave en testmetode for hver (ikke triviel) konstruktør/metode Hver testmetode tester flere forskellige ting (via forskellige assertions) Testmetode for konstruktøren Vi skaber et Road objekt og tjekker at feltvariablerne initialiseres korrekt Testmetode for compareto Vi skaber veje mellem byerne fra vores Test Fxiture (setup metode) og tjekker at compareto returnerer værdier med korrekt fortegn import static org.junit.assert.*; import org.junit.after; import org.junit.before; import org.junit.test; public class RoadTest { private Country country1, country2; private City citya, cityb, public void setup() { country1 = new Country("Country 1", null); citya = new City("City A", 80, country1); cityb = cityc public void constructor() { Road road = new Road(cityA, cityb, 4); assertequals(citya, public void compareto() { Road road1 = new Road(cityA, cityb, 0); Road road2 = new Road(cityA, cityc, 0); Road road3 = new Road(cityB, citya, 0); assertequals(true, (road1.compareto(road2) < 0); assertequals(true, road2.compareto(road1) > 0); assertequals(0, road1.compareto(road1)); 22
23 Test af Position klassen Disse ting kan I (som før) stjæle fra den generelle Test Fixture Sætningerne i de to grønne bokse skal I selv tilføje Fjern de ting i Test Fixturen, som ikke bruges Som før skal I lave en testmetode for hver (ikke triviel) konstruktør/ metode Hver testmetode tester flere forskellige ting (via forskellige assertions) Testmetode for konstruktøren Vi tjekker at feltvariablerne initialiseres korrekt Testmetode for hasarrived metoden Hvor mange gange skal move metoden kaldes før hasarrived returnerer true? Når man har lavet et par optagelser af testmetoder og set, hvordan de ser ud, er det langt hurtigere at skrive testmetoderne selv import public class PositionTest { private Country country1; private City citya, cityb; private Position public void setup() { country1 = new Country("Country 1", null); citya = cityb = pos = new Position(cityA, cityb, public void constructor() { assertequals(citya, pos.getfrom()); Spilleren står i citya og er på vej mod cityb, som kan nås i 3 public void hasarrived() { assertequals(false, pos.hasarrived()); pos.move(); assertsequals(false, pos.hasarrived()); pos.move(); assertequals(true, pos.hasarrived()); 23
24 Test af Position klassen (fortsat) Testmetode for move Kald move metoden et antal gange og test hver gang værdierne af distance og returværdi Husk at teste tilfældet, hvor distance er nul Testmetode for turnaround A. move + turnaround B. move + turnaround C. turnaround Efter hvert kald af turnaround tjekkes, at de 4 feltvariablerne i pos har de korrekte værdier Hvis man højreklikker testklassen og vælger Test All skulle man gerne få public void move() { assertequals(3, pos.getdistance()); assertequals(true, pos.move()); assertequals(2, public void turnaround() { pos.move(); A A pos.turnaround(); assertequals(cityb, pos.getfrom()); pos.move(); B B pos.turnaround(); assertequals(, pos.getfrom()) Cpos.turnAround(); C assertequals(, pos.getfrom()) ; 24
25 Test af metoder med tilfældige værdier Når man skal teste arrive metoden i City klassen kan det være nyttigt at resette den seed værdi som Random objektet bruger På den måde kan man finde ud af hvad bonus metoden returnerer, når den kaldes inde fra arrive Test at returværdi og værdien af value er public void arrive(){ game.getrandom().setseed(0); // Set seed int bonus = country1.bonus(80); // Remember bonus game.getrandom().setseed(0); // Reset seed assertequals(bonus, citya.arrive()); // Same bonus assertequals(, citya.getvalue()); Man kan også proppe det hele ind i en for løkke og dermed teste mange forskellige seed værdier Tager ikke meget længere tid Det er opsætningen af Test Fixturen, der er dyr Som ovenfor, bortset fra, at seed nu resettes til public void arrive(){ for(int seed = 0; seed < 1000; seed++) { // Try different seeds game.getrandom().setseed(seed); // Set seed int bonus = country1.bonus(80); // Remember bonus game.getrandom().setseed(seed); // Reset seed assertequals(bonus, citya.arrive()); // Same bonus assertequals(, citya.getvalue()); citya.reset(); Husk at resette byen mellem de enkelte tests 25
26 Eksempler på testmetoder for Country arrive kaldes 3 gange for hver by Så er man nogenlunde sikker på at byens værdi er public void reset() { citya.arrive(); citya.arrive(); citya.arrive(); citye.arrive(); citye.arrive(); citye.arrive(); int valuee = citye.getvalue(); // Remember value of citye country1.reset(); assertequals(80, citya.getvalue()); // citya is reset assertequals(valuee, citye.getvalue()); // citye is Husk de negative test såsom public void bonus() { getroads(c), hvor byen c ikke for(int seed = 0; seed < 1000; seed++) { // Try findes 1000 i landet different seeds game.getrandom().setseed(seed); int sum = 0; Set<Integer> values = new HashSet<>(); getcity("city"), hvor byen "city" ikke findes i landet for(int i = 0; i < 10000; i++) { // Call method times int bonus = country1.bonus(80); assertequals(true, <= bonus && bonus <=); // Correct interval sum += bonus; values.add(bonus); assertequals(true, < sum && sum < ); // Average close to 40 assertequals(, values.size()); // All values returned Man bør lave tilsvarende tests for grænsetilfældene, hvor bonus kaldes med parametrene 0 og 1 26
27 TestServeren TestServeren skal også anvendes for Computerspil 2 Værktøjet tester at jeres regression tests er fornuftige Regression tests kan imidlertid laves på mange forskellige måder, og det er ikke altid entydigt, hvad der bør testes TestServeren afprøver derfor, at jeres regression tests ikke finder fejl i et korrekt projekt finder alle oplagte fejl i nogle forkerte projekter finder de fleste mindre oplagte" fejl i nogle forkerte projekter Brug TestServeren med omtanke Når I får en fejlrapport, bør I rette alle de fejl, der rapporteres og kontrollere, at rettelserne er korrekte, før I atter forsøger at køre TestServeren TestServeren understøtter ikke Hamcrest (som bruges på andre kurser) Når instruktorerne retter jeres opgaver, bruger de links i TestServeren til at tilgå det seneste projekt, som I har kørt på TestServeren Det er derfor vigtigt, at det projekt som I uploader på Blackboards afleveringsside er identisk med det seneste projekt, som I har kørt på TestServeren (for samme aflevering). 27
28 Opsummering 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 implementationen (kroppen) mangler I et interface er alle metoder abstrakte Funktionelle interfaces 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 Wildcards (jokere) Gør det muligt at beskrive komplicerede typebegrænsninger i forbindelse med generiske klasser Afleveringsopgave: Computerspil 2 Dokumentation og test af de klasser, som I har implementeret i den første delaflevering 28
29 Det var alt for nu.. spørgsmål 29
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 Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser af En abstrakt klasse kan indeholde
Læs mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæsning Uge 11 Mandag
Forelæsning Uge 11 Mandag 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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereCOMPUTERSPIL 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 mereCOMPUTERSPIL 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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereUgeseddel 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 mereBILLEDREDIGERING (IMAGES)
BILLEDREDIGERING (IMAGES) I dette projekt skal I redigere gråtonebilleder ved hjælp af nogle af de teknikker, der blev beskrevet i en forelæsning. Hent BlueJ-projektet Image (zip) og husk at pakke det
Læs mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereDRONNINGER (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 mereForelæ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 mereForelæ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 mereDANMARKS 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 meredintprog 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 mereForelæ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 mereForelæ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 meredintprog 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 mereb) 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 mereDM507 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 mereBilledbehandling. Processering af digitale billeder
Billedbehandling Processering af digitale billeder Billedbehandling Lighten Blur Darken Invert Billedrepræsentation 0 0 x width Pixel (x, y) [0..255] 0 ~ sort, 255 ~hvid x [0..width[, y [0..heigth[ y height
Læs mereForelæ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 mereForelæ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 mereForelæ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 mereKlasser 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 mereForelæ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 mereOpfø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 mereKursus 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 mereForelæ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 mereDatalogi 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 mereForelæ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 mereForelæ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 mereDM507 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 mereForelæ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 mereDM507 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 mereDM507 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 mereForelæ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 mereForelæ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 mereForelæ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 mereAAU, 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 mereTree 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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereclass 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 mereForelæ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 mereDM507 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 mereDM507 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 mereForelæ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 mereTabelbegrebet. 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 mereKlasser 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 mereForelæ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 mereForelæ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 mereUniversity 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 mereSoftware 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 mereclass 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 mereAlgoritmeskabeloner: 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 merePolymorfi. 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 mereForelæ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 mereOm 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 mereAbstrakte 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 mereSoftware 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 mereSkriftlig 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 mereForelæ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 mereHvad 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 mereSkriftlig eksamen i Datalogi
Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave
Læs mereSWC 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 mereI denne artikel vil vi bruge en User klasse som vi så vil gruppere på forskellige måder.
Denne guide er oprindeligt udgivet på Eksperten.dk Collections i.net Når du kigger i namespacet System.Collections finder du over 10 forskellige klasser. At vælge den rigtige til netop din applikations
Læs mereStakke, 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 mereVirkefeltsregler 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 mereSkriftlig 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 mereDM01 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 merepublic Set(int size) { this.listelement = new LinkedList<Integer>(); }
// Henri AYCARD import java.util.linkedlist; public class Set { private LinkedList listelement; public Set(int size) { this.listelement = new LinkedList(); public boolean contains(int
Læs mereObjektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog
Forelæsning Uge 9 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 kode
Læs mereCivilingeniø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 mereDM507 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 mereTabeller (I) Tabeller
Tabeller (I) Klassediagrammer (III) Tabeller og qualified associations Michael R. Hansen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark En tabel fra en mængde A til
Læs mereStakke, køer og lidt om hægtede lister
Datastrukturer & Algoritmer, Datalogi C Forelæsning 4/11-2003 Henning Christiansen Stakke, køer og lidt om hægtede lister - kapitel 16 og 17 Hvorfor? Fundamentale datastrukturer man får brug for igen og
Læs mere4 Basal Objekt-orienteret Programmering I.
4 Basal Objekt-orienteret Programmering I. Klasser i forhold til abstrakte datatyper og record-typer. Variable og operationer. Klasse-interfaces. Klasser og typer. Klasse-instantiering og initialisering.
Læs mereRMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).
Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer
Læs mereVejledende løsninger
Roskilde Universitetscenter side 1 af 8 sider Vejledende løsninger Opgave 1 Spørgsmål 1.1 a = b - a; b = b - a; a = b + a; Opgaven har flere løsninger. En anden løsning er: a = b + a; b = a - b; a = a
Læs mereMETODER 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 mereVideregående programmering i Java
Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter
Læs mereUniversity 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 mereMålet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.
Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål
Læs mere