Introduktion till Datalogi DD1339. Föreläsning 4 7 okt 2014

Relevanta dokument
Introduktion till Datalogi DD1339. Föreläsning 5 13 okt 2014

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Föreläsning 2, vecka 8: Repetition

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Föreläsning 6: Metoder och fält (arrays)

Tentamen i Programmeringsteknik I, ES,

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

2203$( Föreläsning ii - Mer om Java bla this och konstruktorer. Exempel: lampa

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

Föreläsning 3-4 Innehåll

1 Egna klasser. 1.1 En punkt-klass

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

2 b) Bodega bodegan = new Bodega(); double moms = 0.235; String namn = "Vargtass"; System.out.println(namn + " " + moms + bodegan.ändra(moms, namn); S

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Föreläsningar 9, 10 (okt 01, okt 03 v 40). delvis DD Chapter 7.

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Malmö högskola 2008/2009 CTS

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Föreläsning 5-6 Innehåll

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Tentamen i Programmeringsteknik I,, KandMa/Fy,

Föreläsning 13 Innehåll

Lösningar för tenta 3 DAT043,

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Malmö högskola 2007/2008 Teknik och samhälle

Repetition av viktiga begrepp inom objektorienterad programmering

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

Malmö högskola 2007/2008 Teknik och samhälle

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Föreläsning REPETITION & EXTENTA

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Instuderingsfrågor, del D

DD1342 Programkonstruktion för F1, ht 2007

1 Repetition av viktiga begrepp inom objektorienterad programmering

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Typkonvertering. Java versus C

Saker du ska kunna Föreläsning 13 & 14

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Objektorienterad programmering (OOP) Föreläsning 15 & 16. Klasser för olika slags fordon. Klasser och objekt

Laboration 1: Figurer i hierarki

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8: Exempel och problemlösning

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Objektorienterad Programmering (TDDC77)

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

Tentamen OOP

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Lösningsförslag övning 2.

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

OOP Objekt-orienterad programmering

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Laboration A Objektsamlingar

int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element

Tentamen FYTA11 Javaprogrammering

Att skriva till och läsa från terminalfönstret

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

Tentamen, EDAA20/EDA501 Programmering

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Föreläsning 12. Länkade listor

TDDC77 Objektorienterad Programmering

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

DAT043 - Föreläsning 7

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

Föreläsning 10 OM DELMÅLSKONTROLLEN ; VARIABLERS SYNLIGHET STRING OCH STRINGBUILDER

Omentamen FYTA11 Javaprogrammering

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

PROGRAMMERING-Java TENTAMINA

Tentamen i Objektorienterad programmering

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Tentamen i Grundläggande Programvaruutveckling, TDA548

Objektorienterad Programkonstruktion. Föreläsning dec 2015

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Föreläsning 9-10 Innehåll

Laboration 13, Arrayer och objekt

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Laboration 1 - Grunderna för OOP i Java

JAVA Mer om klasser och objektorientering

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Transkript:

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