Introduktion till Datalogi DD1339 Föreläsning 5 13 okt 2014
UML - klassdiagram Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4
UML - klassdiagram Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Namn2 Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4
UML - klassdiagram Namn Fält1 Fält2 Fält3 1 n Namn2 Metod1 Metod2 Metod3 Metod4 Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4
UML - Objektdiagram Namn Fält1 = val1 Fält2 = val2 Fält3 = array NamnA Fält1 = vala1 Fält2 = vala2 Fält3 = vala3 NamnB Fält1 = valb1 Fält2 = valb2 Fält3 = valb3 NamnC Fält1 = valc1 Fält2 = valc2 Fält3 = valc3
Villkorsats (Control flow) if(villkor){ else{ block A block B block C
Villkorsats (Control flow) while(villkor){ block A block B
Villkorsats (Control flow) while(villkor){ block A Upprepa block A så länge villkor är true block B
Villkorsats (Control flow) while(villkor){ block A Upprepa block A så länge villkor är true Om villkor är false från början så körs aldrig block A block B
While-sats (Control flow) while(notdone){ dosomething(); Upprepa block A så länge villkor är true Om villkor är false från början så körs aldrig block A
While-sats String s = ; while(s!= quit ){ s = getnextcommand(); executecommand(s);
While-sats int i = 0; while(i < 20){ System.out.println( Rad nr: + i); i++;
for-sats for(int i = 0; i < 20; i++){ System.out.println( Rad nr: + i);
for-sats for(int i = 0; i < 20; i++){ System.out.println( Rad nr: + i);
for-sats for(int i = 0; i < 20; i++){ System.out.println( Rad nr: + i);
for-sats for(int i = 0; i < 20; i++){ System.out.println( Rad nr: + i);
Samlingar av objekt - Collections Kort repetition: Vi kan skapa indexerade variabler med hjälp av vektorer:
Samlingar av objekt - Collections Kort repetition: Vi kan skapa indexerade variabler med hjälp av vektorer: String[] mywords; // Deklaration av vektorn mywords = new String[5]; // Initialisering av vektorn mywords[0] = new String( Boll ); // Initialisering av komponenten mywords[1] = mywords[0].touppercase();
Samlingar av objekt - Collections Kort repetition: Vi kan skapa indexerade variabler med hjälp av vektorer: String[] mywords; // Deklaration av vektorn mywords = new String[5]; // Initialisering av vektorn mywords[0] = new String( Boll ); // Initialisering av komponenten mywords[1] = mywords[0].touppercase(); Vi måste ange hur många element som ska finnas i vektorn
Samlingar av objekt - Collections Kort repetition: Vi kan skapa indexerade variabler med hjälp av vektorer: String[] mywords; // Deklaration av vektorn mywords = new String[5]; // Initialisering av vektorn mywords[0] = new String( Boll ); // Initialisering av komponenten mywords[1] = mywords[0].touppercase(); Vi måste ange hur många element som ska finnas i vektorn Vi måste ange vilken plats i vektorn ett element har
Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand.
Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen
Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen
Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten
Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten while(mywords.hasnext()){ // Skriver ut alla ord System.out.println(myWords.next());
Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten while(mywords.hasnext()){ // Skriver ut alla ord System.out.println(myWords.next()); mywords.add(new String( Penna )); // tillägg av ytterligare komponent
Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten while(mywords.hasnext()){ // Skriver ut alla ord System.out.println(myWords.next()); mywords.add(new String( Penna )); // tillägg av ytterligare komponent while(mywords.hasnext()){ // Skriver ut alla ord igen System.out.println(myWords.next());
En vektorbaserad samling public class StringCollection{
En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0];
En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; public void add(string s){
En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; public void add(string s){ String[] newarray = new String[size+1];
En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; public void add(string s){ String[] newarray = new String[size+1]; for(int i = 0; i<size; i++){ newarray[i] = myarray[i];
En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; public void add(string s){ String[] newarray = new String[size+1]; for(int i = 0; i<size; i++){ newarray[i] = myarray[i]; newarray[size++] = s;
En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; public void add(string s){ String[] newarray = new String[size+1]; for(int i = 0; i<size; i++){ newarray[i] = myarray[i]; newarray[size++] = s; myarray = newarray;
En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; private int index = 0; public void add(string s){ String[] newarray = new String[size+1]; for(int i = 0; i<size; i++){ newarray[i] = myarray[i]; newarray[size++] = s; myarray = newarray; public String next(){ return myarray[index++];
En vektorbaserad samling public class StringCollection{ private String[] myarray = new String[0]; private int size = 0; private int index = 0; public void add(string s){ String[] newarray = new String[size+1]; for(int i = 0; i<size; i++){ newarray[i] = myarray[i]; newarray[size++] = s; myarray = newarray; public String next(){ return myarray[index++]; public boolean hasnext(){ return (index < size);
Vektorbaserad samling Namn1 Fält3 = samling samling Fält1 = array NamnA Fält1 = vala1 Fält2 = vala2 Fält3 = vala3 NamnB Fält1 = valb1 Fält2 = valb2 Fält3 = valb3 NamnC Fält1 = valc1 Fält2 = valc2 Fält3 = valc3
Vektorbaserad samling Namn1 Fält3 = samling samling Fält1 = NamnA NamnA Fält1 = vala1 Fält2 = vala2 Fält3 = vala3 NamnB Fält1 = valb1 Fält2 = valb2 Fält3 = valb3 NamnC Fält1 = valc1 Fält2 = valc2 Fält3 = valc3
En samling med en länkad lista public class StringCollection{ private StringNode startnode = new StringNode( ); public void add(string s){ public String next(){ public boolean hasnext(){
En samling med en länkad lista public class StringCollection{ private StringNode startnode = new StringNode( ); private StringNode lastnode = null; private StringNode currentnode = null; public void add(string s){ StringNode newnode = new StringNode(s); if(lastnode == null){ startnode.addnext(newnode); lastnode = newnode; currentnode = startnode; else{ lastnode.addnext(newnode); lastnode = newnode; public String next(){ public boolean hasnext(){
En samling med en länkad lista public class StringCollection{ private StringNode startnode = new StringNode( ); private StringNode lastnode = null; private StringNode currentnode = null; public void add(string s){ StringNode newnode = new StringNode(s); if(lastnode == null){ startnode.addnext(newnode); lastnode = newnode; currentnode = startnode; else{ lastnode.addnext(newnode); lastnode = newnode; public String next(){ return (currentnode = currentnode.next()).tostring(); public boolean hasnext(){
En samling med en länkad lista public class StringCollection{ private StringNode startnode = new StringNode( ); private StringNode lastnode = null; private StringNode currentnode = null; public void add(string s){ StringNode newnode = new StringNode(s); if(lastnode == null){ startnode.addnext(newnode); lastnode = newnode; currentnode = startnode; else{ lastnode.addnext(newnode); lastnode = newnode; public String next(){ return (currentnode = currentnode.next()).tostring(); public boolean hasnext(){ return currentnode.hasnext();
En samling med en länkad lista public class StringNode{ private StringNode nextnode = null; private String mystring; public StringNode(String s){ mystring = s; public StringNode next(){ return nextnode; public void addnext(stringnode sn){ nextnode = sn; public boolean hasnext(){ return nextnode!= null; public String tostring(){ return mystring;
Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten while(mywords.hasnext()){ // Skriver ut alla ord igen System.out.println(myWords.next()); mywords.add(new String( Penna )); // tillägg av ytterligare komponent while(mywords.hasnext()){ // Skriver ut alla ord igen System.out.println(myWords.next()); /* PROBLEM!! */
Samlingar av objekt - Collections Ibland vill vi inte behöva känna till i förväg hur många element vi vill spara. Kanske vill vi kunna lägga till ett godtyckligt antal element efter hand. StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten while(mywords.hasnext()){ // Skriver ut alla ord igen System.out.println(myWords.next()); mywords.add(new String( Penna )); // tillägg av ytterligare komponent while(mywords.hasnext()){ // Skriver ut alla ord igen System.out.println(myWords.next()); /* PROBLEM!! */
Iterator Om vi skapar ett nytt iteratorobjekt varje gång vi loopar så slipper vi problemen! StringCollection mywords; // Deklaration av samlingen mywords = new StringCollection(); // Initialisering av samlingen mywords.add(new String( Boll )); // Initialisering av komponenten Iterator it = mywords.iterator(); while(it.hasnext()){ // Skriver ut alla ord igen System.out.println(it.next()); mywords.add(new String( Penna )); // tillägg av ytterligare komponent Iterator it2 = mywords.iterator(); while(it2.hasnext()){ // Skriver ut alla ord igen System.out.println(it2.next());
En samling med en länkad lista och iterator public class StringCollection{ private StringNode startnode = new StringNode( ); private StringNode lastnode = null; public void add(string s){ StringNode newnode = new StringNode(s); if(lastnode == null){ startnode.addnext(newnode); lastnode = newnode; else{ lastnode.addnext(newnode); lastnode = newnode; public Iterator iterator(){ return new Iterator(startNode);
Iterator public class Iterator{ private StringNode currentnode = null; public Iterator(StringNode sn){ currentnode = sn; public String next(){ return (currentnode = currentnode.next()).tostring(); public boolean hasnext(){ return currentnode.hasnext();
http://www.csc.kth.se/utbildning/kth/kurser/dd1339