Introduktion till Datalogi DD1339 Föreläsning 4 7 okt 2014
Vad gör vi när alla bra namn är slut? Vi kan namnge variabler på följande sätt: public class Point{ private double x; private double y;
Vad gör vi när alla bra namn är slut? Vi kan namnge variabler på följande sätt: public class Point{ private double x; private double y; public void setx(double x){ // Problem!!! x = x;
Vad gör vi när alla bra namn är slut? Vi kan namnge variabler på följande sätt: public class Point{ private double x; private double y; public void setx(double newx){ // Inga problem x = newx;
Vad gör vi när alla bra namn är slut? Vi kan namnge variabler på följande sätt: public class Point{ private double x; private double y; public void setx(double newx){ // Inga problem x = newx;
Vad gör vi när alla bra namn är slut? Vi kan namnge variabler på följande sätt: public class Point{ private double x; private double y; public void setx(double newx){ x = newx; public double getdistance(point p){
Vad gör vi när alla bra namn är slut? Vi kan namnge variabler på följande sätt: public class Point{ private double x; private double y; public void setx(double newx){ x = newx; public double getdistance(point p){
Vad gör vi när alla bra namn är slut? Vi kan namnge variabler på följande sätt: public class Point{ private double x; private double y; public void setx(double newx){ x = newx; public double getdistance(point p){ return(math.sqrt( (x p.x)*(x p.x) + (y p.y)*(y p.y)));
Vad gör vi när alla bra namn är slut? Vi kan namnge variabler på följande sätt: public class Point{ private double x; private double y; public void setx(double newx){ x = newx; public double getdistance(point p){ return(math.sqrt( (x p.x)*(x p.x) + (y p.y)*(y p.y)));
Vad gör vi när alla bra namn är slut? Vi kan namnge variabler på följande sätt: public class Point{ private double x; private double y; public void setx(double x){ this.x = x; public double getdistance(point p){ return(math.sqrt( (x p.x)*(x p.x) + (y p.y)*(y p.y)));
Nyckelordet this Ordet this betyder alltid det objekt som just nu används. I exemplet innan såg vi hur vi kan tydliggöra att x betyder fältet och inte argumentet från metodanropet.
Nyckelordet this Ordet this betyder alltid det objekt som just nu används. I exemplet innan såg vi hur vi kan tydliggöra att x betyder fältet och inte argumentet från metodanropet. Vi kan också använda this när vi vill skicka med objektet självt som argument till en metod.
Nyckelordet this Ordet this betyder alltid det objekt som just nu används. I exemplet innan såg vi hur vi kan tydliggöra att x betyder fältet och inte argumentet från metodanropet. Vi kan också använda this när vi vill skicka med objektet självt som argument till en metod. public class ThisDemo{ public String tostring(){ return Object X ; public void printtext(){ System.out.println(this);
Abstraktion och modularisering Om man vill skriva ett lite mer komplext program kan det bli svåröverskådligt om man hela tiden jobbar med den allra mest detaljerade nivån. Exempel:
Abstraktion och modularisering Om man vill skriva ett lite mer komplext program kan det bli svåröverskådligt om man hela tiden jobbar med den allra mest detaljerade nivån. Exempel: public void paint(graphics g){... // Ritar en bild: g.setcolor(color.yellow); // Solen g.filloval(20,20,30,30);
Abstraktion och modularisering Om man vill skriva ett lite mer komplext program kan det bli svåröverskådligt om man hela tiden jobbar med den allra mest detaljerade nivån. Exempel: public void paint(graphics g){... // Ritar en bild: g.setcolor(color.yellow); // Solen g.filloval(20,20,30,30); g.setcolor(color.white); // Första molnet g.filloval(10,20,40,40); g.filloval(15,25,40,40); g.filloval(56,23,30,30); g.filloval(25,15,40,40);
Abstraktion och modularisering Om man vill skriva ett lite mer komplext program kan det bli svåröverskådligt om man hela tiden jobbar med den allra mest detaljerade nivån. Exempel: public void paint(graphics g){... // Ritar en bild: g.setcolor(color.yellow); // Solen g.filloval(20,20,30,30); g.setcolor(color.white); // Första molnet g.filloval(10,20,40,40); g.filloval(15,25,40,40); g.filloval(56,23,30,30); g.filloval(25,15,40,40); g.filloval(140,20,40,40); // andra molnet g.filloval(145,25,40,40); g.filloval(156,23,30,30); g.filloval(125,15,40,40);
Abstraktion och modularisering Om man vill skriva ett lite mer komplext program kan det bli svåröverskådligt om man hela tiden jobbar med den allra mest detaljerade nivån. Exempel: public void paint(graphics g){... // Ritar en bild: g.setcolor(color.yellow); // Solen g.filloval(20,20,30,30); g.setcolor(color.white); // Första molnet g.filloval(10,20,40,40); g.filloval(15,25,40,40); g.filloval(56,23,30,30); g.filloval(25,15,40,40); g.filloval(140,20,40,40); // andra molnet g.filloval(145,25,40,40); g.filloval(156,23,30,30); g.filloval(125,15,40,40); g.setcolor(color.red); // En husvägg g.fillrect(200,300,40,90);
Abstraktion och modularisering Om man vill skriva ett lite mer komplext program kan det bli svåröverskådligt om man hela tiden jobbar med den allra mest detaljerade nivån. Exempel: public void paint(graphics g){... // Ritar en bild: g.setcolor(color.yellow); // Solen g.filloval(20,20,30,30); g.setcolor(color.white); // Första molnet g.filloval(10,20,40,40); g.filloval(15,25,40,40); g.filloval(56,23,30,30); g.filloval(25,15,40,40); g.filloval(140,20,40,40); // andra molnet g.filloval(145,25,40,40); g.filloval(156,23,30,30); g.filloval(125,15,40,40); g.setcolor(color.red); // En husvägg g.fillrect(200,300,40,90); g.setcolor(color.blue); // Ett fönster g.fillrect(220,310,30,30);
public void paint(graphics g){... // Ritar en bild: g.setcolor(color.yellow); // Solen g.filloval(20,20,30,30); g.setcolor(color.white); // Första molnet g.filloval(10,20,40,40); g.filloval(15,25,40,40); g.filloval(56,23,30,30); g.filloval(25,15,40,40); g.filloval(140,20,40,40); // andra molnet g.filloval(145,25,40,40); g.filloval(156,23,30,30); g.filloval(125,15,40,40); g.setcolor(color.red); // En husvägg g.fillrect(200,300,40,90); g.setcolor(color.blue); // Ett fönster g.fillrect(220,310,30,30); g.fillrect(240,310,30,30); // Ett fönster till... Abstraktion och modularisering Om man vill skriva ett lite mer komplext program kan det bli svåröverskådligt om man hela tiden jobbar med den allra mest detaljerade nivån. Exempel:
Abstraktion och modularisering Vi vill hellre kunna skriva något i stil med detta:
Abstraktion och modularisering Vi vill hellre kunna skriva något i stil med detta: public void draw(){ drawsky(); drawgarden(); drawhouses();
Abstraktion och modularisering Vi vill hellre kunna skriva något i stil med detta: public void draw(){ drawsky(); drawgarden(); drawhouses(); De olika metoderna ser i sin tur ut som något i stil med detta: public void drawsky(){ drawcloud(20,10); drawcloud(40,10); drawsun(30,30);
Abstraktion och modularisering Vi vill hellre kunna skriva något i stil med detta: public void draw(){ drawsky(); drawgarden(); drawhouses(); De olika metoderna ser i sin tur ut som något i stil med detta: public void drawsky(){ drawcloud(20,10); drawcloud(40,10); drawsun(30,30);
Abstraktion och modularisering Externt exempel i Java:
Indexerade variabler Ibland har vi flera liknande variabler, som är enklast att hantera om vi bara ger dem ett nummer - ett index.
Indexerade variabler - vektorer Ibland har vi flera liknande variabler, som är enklast att hantera om vi bara ger dem ett nummer - ett index. I Java hanterar vi detta med vektorer:
Indexerade variabler - vektorer Ibland har vi flera liknande variabler, som är enklast att hantera om vi bara ger dem ett nummer - ett index. I Java hanterar vi detta med vektorer: Type[] name; // Deklaration av vektorn name = new Type[n]; // Initialisering av vektorn
Indexerade variabler - vektorer Ibland har vi flera liknande variabler, som är enklast att hantera om vi bara ger dem ett nummer - ett index. I Java hanterar vi detta med vektorer: Type[] name; // Deklaration av vektorn name = new Type[n]; // Initialisering av vektorn name[i] = new Type(); // Initialisering av komponenten
Indexerade variabler - vektorer Ibland har vi flera liknande variabler, som är enklast att hantera om vi bara ger dem ett nummer - ett index. I Java hanterar vi detta med vektorer: Type[] name; // Deklaration av vektorn name = new Type[n]; // Initialisering av vektorn name[i] = new Type(); // Initialisering av komponenten name[i].dosomething(); // komponenter används som vanliga variabler
Indexerade variabler - vektorer Ibland har vi flera liknande variabler, som är enklast att hantera om vi bara ger dem ett nummer - ett index. I Java hanterar vi detta med 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();
Indexerade variabler - vektorer Ibland har vi flera liknande variabler, som är enklast att hantera om vi bara ger dem ett nummer - ett index. I Java hanterar vi detta med vektorer: String[] mywords; // Deklaration av vektorn mywords = new String[5]; // Initialisering av vektorn name[0] = new String( Boll ); // Initialisering av komponenten name[1] = name[0].touppercase();
Indexerade variabler - vektorer Det går också att göra samma sak med alla komponenter i en vektor, med hjälp av en sk. for each - loop:
Indexerade variabler - vektorer Det går också att göra samma sak med alla komponenter i en vektor, med hjälp av en sk. for each - loop: for(string s:mynames){ System.out.println(s);
Indexerade variabler - vektorer Det går också att göra samma sak med alla komponenter i en vektor, med hjälp av en sk. for each - loop: for(string s:mynames){ System.out.println(s);
Indexerade variabler - vektorer Det går också att göra samma sak med alla komponenter i en vektor, med hjälp av en sk. for each - loop: for(string s:mynames){ System.out.println(s); { System.out.println(myNames[0]); System.out.println(myNames[1]); System.out.println(myNames[2]); System.out.println(myNames[3]); System.out.println(myNames[4]);... System.out.println(myNames[n]);
http://www.csc.kth.se/utbildning/kth/kurser/dd1339