TDDC77 Objektorienterad Programmering

Relevanta dokument
Objektorienterad Programmering (TDDC77)

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

TDDC77 Objektorienterad Programmering

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

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

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

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Objektorienterad Programmering (TDDC77)

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

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

TDDC77 Objektorienterad Programmering

Typkonvertering. Java versus C

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Föreläsning 3-4 Innehåll

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Java, klasser, objekt (Skansholm: Kapitel 2)

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

DELPROV 1 I DATAVETENSKAP

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Objektorienterad Programmering (TDDC77)

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

SMD 134 Objektorienterad programmering

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

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

OOP Objekt-orienterad programmering

Instuderingsfrågor, del D

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Föreläsning 3: Booleans, if, switch

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.

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering i Java

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

LÖSNINGSFÖRSLAG TENTAMEN

Administrativt. Programmeringsteknik för I1. Dagens program. Objektorienterad programmering

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Kompilera och exekvera Javakod

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

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

JAVAUTVECKLING LEKTION 8

Tommy Färnqvist, IDA, Linköpings universitet

Tentamen OOP

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

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

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Föreläsning 2, vecka 8: Repetition

F4. programmeringsteknik och Matlab

for-satsen Fält for-satsen Föreläsning 8 (OH-bilder 7) for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende:

Den som bara har en hammare tror att alla problem är spikar

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

Programmering för språkteknologer I, VT2012. Rum

Föreläsning REPETITION & EXTENTA

Laboration 1 - Grunderna för OOP i Java

Föreläsning 5-6 Innehåll

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

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

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

JAVA Mer om klasser och objektorientering

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Objektorienterad Programmering (TDDC77)

Del A (obligatorisk för alla)

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Undervisning. Examination

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Objektorienterad programmering

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

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

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

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Anteckningar 1: Grundläggande saker

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 10. Pekare (Pointers)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

*Pekarvärden *Pekarvariabler & *

PROGRAMMERING-JAVA TENTAMINA

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

Transkript:

TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018

Outline Arrayer Metoder Räckvidd och Livslängd

Arrayer

Vända om inlästa värdena

Vända om inlästa värdena Vi kan lätt göra samma sak för fyra variabler... Hur gör vi för 400 inlästa värden? Oftast behöver man flera likadana variabler Kallas Array på engleska, ibland Fält på svenska

Arrays En array består av ett antal variabler av samma typ. En array:s längd kan inte ändras efter den har skapats. Varje variabel i array:en har ett nummer som heter index. Indexering börjar från 0. Alla variabler i arrayen initierar med värdet 0. Nyckelordet new används för att skapa array:er. När array:en är skapad, ersätts hela new uttrycket med referensen till skapade array:en i minnet. Referensen ska lagras i en variabel av typen datatype[] för att användas senare i koden. minne 0XFFCD myarray int 0 1 2... 7 int[] myarray = new int[8]; myarray[0] = 13; System.out.println(myArray[0]);

Arrays - syntax Att deklarera DataType[] variablename; Att skapa new DataType[length]; Att använda variablename[index] = eller = variablename[index] Exempel: int[] tddc77grades; tddc77grades = new int[37]; tddc77grades[0] = 100; indexen kan vara en literal, en variabel eller ett uttryck. Längden kan vara en literal, en variabel eller ett uttryck.

Att vända om 400 inlästa värden

Att korsa en array En for-slinga kan användas för att korsa en array. Att korsa betyder att gå genom variablerna i arrayen för att läsa eller uppdatera dem en för en i rad. Exempel: int[] grades = new int[10]; for (int index = 0 ; index < grades.length ; ++index){ grades[index] = input.nextint(); System.out.println (grades[index]);

Advanced for-loop En form av for-slinga som kan bara användas för att läsa variablerna i en array en för en i rad. Exempel: int[] grades = new int[10]; for (int grade : grades){ System.out.println (grade);

Att vända om 400 inlästa värden med For slingan

Task 1-5 minuter Skriv ett program som ska fråga hur många tal som ska läsas: godtyckligt många (fast minst ett tal) mellan 0 och maxvärdet för int. Gör inläsningar till en array. Beräkna medelvärdet; summan av talen antas rymmas i en long. Skriv ut resultatet som bör vara av flyttalstyp.

Metoder

Metoder En bit kod med ett eget namn. Kan anropas flera gånger från olika ställen i programmet. En metod kan returnera ett värde som resultat. En metod kan ta emot noll, ett eller flera värden. En metod består av en header och en kropp(body). kroppen skrivs mellan två måsvingar. exempel: int add(int op1, int op2){ //header //body int result = op1 + op2; return result;

Metoder - header Headern består av: Typen på datan som returneras av metoden Metodens namn En variabellista, parameterlista, som används för att ta emot data. Variabellistan ligger mellan parenthesis. exempel: int add(int op1, int op2){ //header //body int result = op1 + op2; return result;

Metoder - body kroppen består av: Ett antal instruktioner som exekveras när metoden anropas. Noll eller ett return-instruktion. En return-instruktion returnerar ett värde när metoden är klar. Det kan också finnas flera return-instruktioner men en av de ska bara köras varje gång metoden anropas. Return kan returnera en literal, en variabel eller ett uttryck exempel: int add(int op1, int op2){ //header //body int result = op1 + op2; return result;

Tillfälliga Regler Vi lägger till nyckelordet static till början av headern. Vi deklarerar/skapar bara våra metoder i klassen där main metoden finns. Exempel: public class Main{ public static void main(string[] args){ static int add(int op1, int op2){ int result = op1 + op2; return result;

Metoder - anrop En metod kan anropas från en annan metod. Till exempel, main metoden. Ett anrop består av följande: Metodens namn En lista på värdena som ska skickas till metoden(arguments). Argument skrivs mellan parenthesis. Varje värde i listan initierar motsvarande variabeln i parameterlistan. public class Main{ public static void main(string[] args){ add(3, 7); static int add(int op1, int op2){ int result = op1 + op2; return result;

Metoder - anrop Ett anrop är ett uttryck och ersätts av värdet som returneras av anropade metoden. public class Main{ public static void main(string[] args){ int returnedvalue = add(3, 7); static int add(int op1, int op2){ int result = op1 + op2; return result;

Metoder - anrop När ett anrop sker, pausas exekveringen i anropande metoden tills anropade metoden returneras. public class Main{ public static void main(string[] args){ int returnedvalue = add(3, 7); System.out.println(returnedValue); static int add(int op1, int op2){ int result = op1 + op2; return result;

main metoden Returnerar ingenting. Tar emot ett antal strängar som har skrivits i terminalen. main metoden är den enda metoden i varje program som anropas direkt av virtuella maskinen. public class Main{ public static void main(string[] args){ for (String argument : args){ System.out.println(argument); Terminal: java Main argument01 argument02 argument03

Metoder - arrayer En parameterlista kan också innehålla en variabel, eller flera, som pekar på en array. Ibland är det vettigare att använda en array istället för en lång parameterlista som består av flera variabler av samma typ. public class Main{ public static void main(string[] args){ int[] ops = new int[2]; ops[0] = 3; ops[1] = 7; int returnedvalue = add(ops); System.out.println(returnedValue); static int add(int[] ops){ int result = ops[0] + ops[1]; return result;

Task 2-5 minuter Skriv en funktion som tar emot en int array och returnerar summan av alla värden i emottagna arrayen.

Räckvidd och Livslängd

Räckvidden(scope) för en variabel Räckvidden för en variabel är området i koden där variabeln kan användas. Ett block har egen räckvidd En variabel som har deklarerats i ett block kan bara användas i det blocket. Initieringsdelen i en for-slinga har egen räckvidd. En sådan variabel kan användas i villkoret, uppdatering och for-slingans kropp. Det är inte möjligt att ha två variabler med samma namn i samma räckvidd. En variabel är inte användbar i kodrader som ligger före deklarationen. En metod har egen räckvidd. En variabel som deklareras i en metod kan användas bara i den metoden. En variabel som deklareras direkt i en metod, utanför block eller kontrollstrukturer, kallas för en lokal variabel. En parameter i parameterlistan kan användas i hela metoden.

livslängden(lifetime) för en variabel En variabel avallokeras när exekveringen lämnar området där variabeln är användbar.

Skuggning En variabel kan skugga en anna variabel med samma namn. Det händer mest när en variabel i ett block har samma namn som en annan variabel i metoden som har deklarerats utanför det blocket(en lokal variabel). Exempel: void add(int[] values){ int sum = 0; for(int value : values){ int sum; sum += value; return sum;

Inför första labben

Inför Lab 1 Webreg htttps://www.ida.liu.se/webreg/

Räkna växelpengar Om man ska betala 13.90 men lämnar en 50-lapp, vilken växel bör man få tillbaka? 36.10 totalt, men vilka valörer? Operatorn / genomför heltalsdivision när båda operanderna är heltal: 7/5 == 1 Om en av operanderna är en flyttal kan man för en liknande effekt använda Math.floor(a/b) Operatorn % är för modulo, i.e., ge rest vid heltalsdivision: 7%5 == 2.

Thanks for listening!