Modelleren en Programmeren Jeroen Bransen 9 december 2015 Foreach String arrays Boomstructuren Interfaces Ingebouwde datastructuren Quiz
Foreach
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen Werkt voor arrays, Set, List, etc.
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen Werkt voor arrays, Set, List, etc. Definitie:
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen Werkt voor arrays, Set, List, etc. Definitie: Keyword for
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen Werkt voor arrays, Set, List, etc. Definitie: Keyword for Haakje openen
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen Werkt voor arrays, Set, List, etc. Definitie: Keyword for Haakje openen Type van elementen
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen Werkt voor arrays, Set, List, etc. Definitie: Keyword for Haakje openen Type van elementen Naam van variabele
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen Werkt voor arrays, Set, List, etc. Definitie: Keyword for Haakje openen Type van elementen Naam van variabele Dubbele punt
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen Werkt voor arrays, Set, List, etc. Definitie: Keyword for Haakje openen Type van elementen Naam van variabele Dubbele punt Expressie die rijtje teruggeeft
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen Werkt voor arrays, Set, List, etc. Definitie: Keyword for Haakje openen Type van elementen Naam van variabele Dubbele punt Expressie die rijtje teruggeeft Haakje sluiten
Foreach Speciale versie van for om iets voor alle elementen van een rijtje te doen Werkt voor arrays, Set, List, etc. Definitie: Keyword for Haakje openen Type van elementen Naam van variabele Dubbele punt Expressie die rijtje teruggeeft Haakje sluiten Opdracht die voor elk element moet worden uitgevoerd
Foreach voorbeeld class Search { public static void main(string[] args) { int[] nums = { 6, 8, 3, 7, 5, 6, 1, 4 }; int val = 5; boolean found = false; // Use for-each style for to search nums for val. for(int x : nums) { if(x == val) { found = true; break; } } } } if(found) System.out.println("Value found!");
Foreach voorbeeld met 2d-array class ForEach2 { public static void main(string[] args) { int[][] nums = new int[3][5]; for(int i = 0; i < 3; i++) for(int j=0; j < 5; j++) nums[i][j] = (i+1)*(j+1); } } // Use for-each for loop to display and sum the values int sum = 0; for(int[] x : nums) { for(int y : x) { System.out.println("Value is: " + y); sum += y; } } System.out.println("Summation: " + sum);
String arrays
String arrays class StringArrays { public static void main(string[] args) { String[] strs = { "This", "is", "a", "test." }; } } System.out.println("Original array: "); for(string s : strs) System.out.print(s + " "); System.out.println(); // change a string strs[1] = "was"; strs[3] = "test, too!"; System.out.println("Modified array: "); for(string s : strs) System.out.print(s + " ");
String arrays Van elk type kunnen we array maken Dus ook String
String arrays Van elk type kunnen we array maken Dus ook String Maar daar krijgen we er ook een van als argument: args Demo commandline-arguments
Boomstructuren
Boomstructuren 5 2 1 3 6 7 8 5 1 2 8 3
Boomstructuren 5 2 1 3 6 7 8 5 1 2 8 3 Zulke bomen kunnen we als volgt representeren:
Boomstructuren 5 2 1 3 6 7 8 5 1 2 8 3 Zulke bomen kunnen we als volgt representeren: Boom bestaat uit top-knoop
Boomstructuren 5 2 1 3 6 7 8 5 1 2 8 3 Zulke bomen kunnen we als volgt representeren: Boom bestaat uit top-knoop Knoop bevat een getal
Boomstructuren 5 2 1 3 6 7 8 5 1 2 8 3 Zulke bomen kunnen we als volgt representeren: Boom bestaat uit top-knoop Knoop bevat een getal Knoop heeft maximaal 2 kinderen, die elk ook bomen zijn
Boomstructuren public class Knoop { // Knoop bevat waarde int waarde; } // Knoop bevat maximaal 2 kinderen, // die zelf ook weer knopen zijn Knoop links; Knoop rechts;
Boomstructuren public class Knoop { // Knoop bevat waarde int waarde; } // Knoop bevat maximaal 2 kinderen, // die zelf ook weer knopen zijn Knoop links; Knoop rechts; // Standaard constructor public Knoop(int waarde, Knoop links, Knoop rechts) { this.waarde = waarde; this.links = links; this.rechts = rechts; }
Boomstructuren public class Knoop { // Knoop bevat waarde int waarde; } // Knoop bevat maximaal 2 kinderen, // die zelf ook weer knopen zijn Knoop links; Knoop rechts; // Standaard constructor... snip... // Knoop met 1 kind public Knoop(int waarde, Knoop kind) { this.waarde = waarde; this.links = kind; this.rechts = null; }
Boomstructuren public class Knoop { // Knoop bevat waarde int waarde; } // Knoop bevat maximaal 2 kinderen, // die zelf ook weer knopen zijn Knoop links; Knoop rechts; // Standaard constructor... snip... // Knoop met 1 kind... snip.. // Knoop zonder kind public Knoop(int waarde) { this.waarde = waarde; this.links = null; this.rechts = null; }
Oefenopgave Schrijf een methode die de som van alle waarden in een boom berekent.
Oefenopgave Schrijf een methode die de som van alle waarden in een boom berekent. public class Knoop { // Knoop bevat waarde int waarde; // Knoop bevat maximaal 2 kinderen, // die zelf ook weer knopen zijn Knoop links; Knoop rechts; // Constructors... snip... }
Oefenopgave Schrijf een methode die de som van alle waarden in een boom berekent. public class Knoop { int waarde; Knoop links; Knoop rechts; } // Constructors... snip... public int som() { int result = waarde; if(links!= null) result += links.som(); if(rechts!= null) result += rechts.som(); return result; }
Representatie boomstructuren Een object is een groepje variabelen
Representatie boomstructuren Een object is een groepje variabelen Die variabelen kunnen ook naar een object verwijzen
Representatie boomstructuren Een object is een groepje variabelen Die variabelen kunnen ook naar een object verwijzen En die objecten van hetzelfde type zijn als het object dat ernaar verwijst
Representatie boomstructuren Een object is een groepje variabelen Die variabelen kunnen ook naar een object verwijzen En die objecten van hetzelfde type zijn als het object dat ernaar verwijst Recursie op het niveau van objecten
Representatie boomstructuren Een object is een groepje variabelen Die variabelen kunnen ook naar een object verwijzen En die objecten van hetzelfde type zijn als het object dat ernaar verwijst Recursie op het niveau van objecten Deze objecten kunnen ook methoden hebben die elkaar aanroepen
Interfaces
Interface Een interface specificeert wat een klasse moet doen, maar niet hoe
Interface Een interface specificeert wat een klasse moet doen, maar niet hoe Interface heeft een naam en een aantal methode-declaraties
Interface Een interface specificeert wat een klasse moet doen, maar niet hoe Interface heeft een naam en een aantal methode-declaraties Een klasse kan een interface implementeren met: class KlasseNaam implements InterfaceNaam
Interface Een interface specificeert wat een klasse moet doen, maar niet hoe Interface heeft een naam en een aantal methode-declaraties Een klasse kan een interface implementeren met: class KlasseNaam implements InterfaceNaam Klasse moet dan ook alle methoden van die interface implementeren
Interface Een interface specificeert wat een klasse moet doen, maar niet hoe Interface heeft een naam en een aantal methode-declaraties Een klasse kan een interface implementeren met: class KlasseNaam implements InterfaceNaam Klasse moet dan ook alle methoden van die interface implementeren Hiermee maken we verschillende objecten met dezelfde functies
Interface Een interface specificeert wat een klasse moet doen, maar niet hoe Interface heeft een naam en een aantal methode-declaraties Een klasse kan een interface implementeren met: class KlasseNaam implements InterfaceNaam Klasse moet dan ook alle methoden van die interface implementeren Hiermee maken we verschillende objecten met dezelfde functies Interface geeft ook een type
Interface Een interface specificeert wat een klasse moet doen, maar niet hoe Interface heeft een naam en een aantal methode-declaraties Een klasse kan een interface implementeren met: class KlasseNaam implements InterfaceNaam Klasse moet dan ook alle methoden van die interface implementeren Hiermee maken we verschillende objecten met dezelfde functies Interface geeft ook een type Elk object van een klasse die de interface implementeert kan dat type hebben
Voorbeeld: reeksen Getallenreeksen, bijvoorbeeld 1,2,3,..., tafel van 3, Fibonacci reeks, etc.
Voorbeeld: reeksen Getallenreeksen, bijvoorbeeld 1,2,3,..., tafel van 3, Fibonacci reeks, etc. Operaties:
Voorbeeld: reeksen Getallenreeksen, bijvoorbeeld 1,2,3,..., tafel van 3, Fibonacci reeks, etc. Operaties: Geef volgende element
Voorbeeld: reeksen Getallenreeksen, bijvoorbeeld 1,2,3,..., tafel van 3, Fibonacci reeks, etc. Operaties: Geef volgende element Reset
Voorbeeld: reeksen Getallenreeksen, bijvoorbeeld 1,2,3,..., tafel van 3, Fibonacci reeks, etc. Operaties: Geef volgende element Reset Gebruik van een reeks: print de eerste 10 getallen
Reeks interface public interface Reeks { // Reset naar het begin public void reset(); } // Geef volgende getal in de reeks // en doe een stap public int volgende();
Tafel van 3 public class Tafel3 implements Reeks { int huidige = 0; } public void reset() { huidige = 0; } public int volgende() { int resultaat = huidige; huidige += 3; return resultaat; }
Kwadraten public class Kwadraten implements Reeks { int grondgetal = 1; } public void reset() { grondgetal = 1; } public int volgende() { int resultaat = grondgetal * grondgetal; grondgetal++; return resultaat; } public int geefgrondgetal() { return grondgetal; }
Reeks gebruik public class ReeksMain { public static void main(string[] args) { // print 0 3 6 9 12 15 18 21 24 27 Tafel3 tafelvandrie = new Tafel3(); printtien(tafelvandrie); // print 1 4 9 16 25 36 49 64 81 100 Kwadraten kwadraten = new Kwadraten(); printtien(kwadraten); // Wat print dit? System.out.println(kwadraten.geefGrondgetal()); } public static void printtien(reeks reeks) { for(int i = 0; i < 10; i++) System.out.print(reeks.volgende() + " "); System.out.println(); } }
Ingebouwde datastructuren
Ingebouwde datastructuren Java heeft een hoop ingebouwde datastructuren
Ingebouwde datastructuren Java heeft een hoop ingebouwde datastructuren Een datastructuur is een object dat gebruikt kan worden om data op een slimme manier op te slaan
Ingebouwde datastructuren Java heeft een hoop ingebouwde datastructuren Een datastructuur is een object dat gebruikt kan worden om data op een slimme manier op te slaan In het vak Datastructuren meer over die slimme manier van opslaan
Ingebouwde datastructuren Java heeft een hoop ingebouwde datastructuren Een datastructuur is een object dat gebruikt kan worden om data op een slimme manier op te slaan In het vak Datastructuren meer over die slimme manier van opslaan In ons vak gebruiken we ingebouwde datastructuren, die vaak een algemene interface implementeren
Set Een set of verzameling kennen we uit de wiskunde
Set Een set of verzameling kennen we uit de wiskunde Rijtje dingen zonder dubbelen en volgorde maakt niet uit
Set Een set of verzameling kennen we uit de wiskunde Rijtje dingen zonder dubbelen en volgorde maakt niet uit Dit kan in Java op verschillende manieren worden geïmplementeerd
Set Een set of verzameling kennen we uit de wiskunde Rijtje dingen zonder dubbelen en volgorde maakt niet uit Dit kan in Java op verschillende manieren worden geïmplementeerd Maar het gebruik van een set is altijd hetzelfde: interface Set { void add(string s); void remove(string s); boolean contains(string s); //... } NB: Deze set kan alleen String waarden opslaan, in het echt iets ingewikkelder
Set gebruik public class SetExample { public static void main(string[] args) { // Dit print twee keer false Set<String> set1 = new HashSet<String>(); Test(set1); Set<String> set2 = new TreeSet<String>(); Test(set2); } } public static void Test(Set<String> set) { set.add("test"); set.add("test"); set.remove("test"); System.out.println(set.contains("Test")); }
Ingebouwde datastructuren Door alleen de interface te kennen, kunnen we deze gebruiken!
Ingebouwde datastructuren Door alleen de interface te kennen, kunnen we deze gebruiken! Andere nuttige datastructuren:
Ingebouwde datastructuren Door alleen de interface te kennen, kunnen we deze gebruiken! Andere nuttige datastructuren: List: rijtje van dingen, met add kun je makkelijk een element toevoegen
Ingebouwde datastructuren Door alleen de interface te kennen, kunnen we deze gebruiken! Andere nuttige datastructuren: List: rijtje van dingen, met add kun je makkelijk een element toevoegen Map: Mapping tussen twee waarden, bijvoorbeeld om aan een variabele (String) een waarheidswaarde toe te kennen (boolean)
Ingebouwde datastructuren Door alleen de interface te kennen, kunnen we deze gebruiken! Andere nuttige datastructuren: List: rijtje van dingen, met add kun je makkelijk een element toevoegen Map: Mapping tussen twee waarden, bijvoorbeeld om aan een variabele (String) een waarheidswaarde toe te kennen (boolean) Stack: stapel van dingen, het ding wat je het laatst toevoegt haal je als eerste er weer af
Quiz