Objektorienterad Programmering (TDDC77)

Relevanta dokument
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

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

Objektorienterad Programmering (TDDC77)

TDDC77 Objektorienterad Programmering

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

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

Objektorienterad Programmering (TDDC77)

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)

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

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.

Skillnader mellan Python och Java

Föreläsning 3-4 Innehåll

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

TDDC77 Objektorienterad Programmering

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

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

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

Kompilera och exekvera Javakod

Instuderingsfrågor, del D

"if"-satsen. Inledande programmering med C# (1DV402)

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

(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 2, vecka 8: Repetition

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

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

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

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

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

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

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

OOP Objekt-orienterad programmering

F4. programmeringsteknik och Matlab

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

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

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

TENTAMEN OOP

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

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

OOP Objekt-orienterad programmering

Del A (obligatorisk för alla)

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Objektorienterad Programmering (TDDC77)

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

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

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

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 REPETITION & EXTENTA

OOP Objekt-orienterad programmering

Chapter 4: Writing Classes/ Att skriva egna klasser.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Tentamen , Introduktion till Java, dtaa98, dtea53

TDDC77 Objektorienterad Programmering

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

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

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

Anteckningar 1: Grundläggande saker

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

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

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.

Föreläsning 1 & 2 INTRODUKTION

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

Föreläsnings 9 - Exceptions, I/O

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Tentamen OOP

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Tentamen FYTA11 Javaprogrammering

Föreläsning 1 & 2 INTRODUKTION

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

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

Del A (obligatorisk för alla)

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.

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

Typkonvertering. Java versus C

Objekt som argument. Föreläsning 7-8 Innehåll. Hur komma åt den andra kvadratens attribut? Anropa metod på objektet självt

DAT043 - föreläsning 8

Tentamen i Programmeringsteknik I,, KandMa/Fy,

Föreläsning 7-8 Innehåll

Objektorienterad programmering. Telefonboken igen, en bättre version. En jämförelse. Föreläsning 4

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

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

SMD 134 Objektorienterad programmering

Objektorienterad Programmering (TDDC77)

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

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

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

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

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

D0010E. Hello world! Nedräkning. Sågtand. Övningsuppgifter i Eclipse. Skapa ett program som skriver ut "Hello world" på skärmen.

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

TENTAMEN OOP

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Objektorienterad Programmering (TDDC77)

Transkript:

Objektorienterad Programmering (TDDC77) Föreläsning V: arrayer, metoder, räckvidd (scope), eclipse Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016

Outline Arrayer Metoder Räckvidd (Scope) Eclipse

Outline Arrayer Metoder Räckvidd (Scope) Eclipse

Vända om inlästa värden /* Reverse. java * Programmet demonstrera hur man kan läsa * in verden och skriva ut de i omvänd ordning */ import java.util.scanner; class Reverse{ /* Be användaren om två tal och skriver ut de * i omvänd ordning */ public static void main(string[] args){ Scanner in = new Scanner (System.in); int x0, x1, x2, x3; System.out.println (" Mata in ett heltal: "); x0 = in.nextint(); System.out.println (" Mata in ett heltal: "); x1 = in.nextint(); System.out.println (" Mata in ett heltal: "); x2 = in.nextint(); System.out.println (" Mata in ett heltal: "); x3 = in.nextint(); System.out.print("Du matade in:"); System.out.print(" "+ x3); System.out.print(" "+ x2); System.out.print(" "+ x1); System.out.print(" "+ x0); System.out.println();

Vända om inlästa värden Vi kan lätt göra samma sak för fyra variabler... Hur gör vi för 400 inlästa värden? Ofta behöver man flera likadana variabler Kallas Array på engleska, ibland Fält på svenska En jätte bra tutorial http://docs.oracle.com/javase/ tutorial/java/nutsandbolts/arrays.html int[] numbers = new int[4]; //... eller... int[] numbers; numbers = new int[4]; //... eller... int[] numbers = {3,5,8,13; System.out.println("Första elementet är: " + numbers[0]); System.out.println(" Sista elementet är: " + numbers[numbers.length - 1]); float[] ratios = new float[12]; String[] names = new String[MAX]; boolean[] flags = new boolean[numberofflags]; String[] names = {" TDDC77", " TDDD39", " TDDC75";

Att vända om 400 inlästa värden int nrofints = 400; int[] värden = new int[nrofints]; int pos = 0; while(pos <nrofints){ System.out.println(" Mata in ett heltal: "); värden[pos] = in.nextint(); pos = pos + 1; pos = 399; while(pos >= 0){ System.out.println(värden[pos] + " "); pos = pos - 1;

Att vända om 400 inlästa värden med For slingan int nrofints = 400; int[] vaerden = new int[nrofints]; for( int pos=0; pos<nrofints; pos++){ System.out.println(" Mata in ett heltal: "); vaerden[pos] = in.nextint(); for( int pos=nrofints -1; pos >=0; pos--){ System.out.println(vaerden[pos] + " ");

Outline Arrayer Metoder Räckvidd (Scope) Eclipse

Metoder En bit kod med ett eget namn Kan anropas flera gånger från olika delar av programmet När de körts färdigt fortsätter programmet där man var innan

Att skapa en metod public static int nextint(){... public static void println(){... public static int nextint(){... public static void println(string s){... får ett heltal i retur får inte något i retur alls använder inte några parametrar kräver en String som parameter

Medelvärdet Skriv ett program som ska fråga hur många tal som ska läsas: godtyckligt många (fast minst ett tal) mella 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

/* Monolitisk. java * Programmet illustrerar hur man kan skriva ett monolitisk * kod istället för att brytta ner problemet i mindre bittar. */ import java.util.scanner; class Monolitisk{ /* Lä ser in antalet element, sen lä ser in själva elementerna, * rä kna upp medelvärdet och skriver ut den. */ static public void main(string[] args){ int size; Scanner scan = new Scanner(System.in); do{ // lä ser in ett heltal som är minst 1 System.out.print(" Enter an int that is larger or equal to 1: "); size=scan.nextint(); while(size < 1); int[] numbers = new int[size]; for( int k=0; k<numbers.length; k++){ do{ // skriver om varje gång jag vill lä ser in ett heltal?? System.out.print(" Enter an int that is larger or equal to 0: "); numbers[k]=scan.nextint(); while(numbers[k] < 0); long sum = 0; for( int p=0; p < numbers.length; p++) sum = sum + numbers[p]; System.out.println(" The average value is: " + ((double)sum / size));

/* NerBryten. java * Illustrerar hur programmet Monolitisk. java kan brytas ner */ import java.util.scanner; public class NerBryten{ // Få en int array som parameter och returnera summan av dess element static public long computesum(int[] nums){ long result = 0; for( int p=0; p<nums.length; p++) result += nums[p]; return result; //Få en int array som parameter och returnerar medelvärdet av dess element static public double computeaverage(int[] nums){ return ( double)computesum(nums)/nums.length; //läser in ett heltal som är större eller lik med parametern " min" static public int readintlargerorequalto(int minimal){ Scanner scan = new Scanner(System.in); int result; do{ System.out.print(" Enter an int that is larger or equal to " + minimal + ": "); result=scan.nextint(); while(result<minimal); return result; //läser in antalet element och deras värden, skriver upp deras medelvärde static public void main(string[] args){ int[] numbers = new int[readintlargerorequalto(1)]; for( int k=0; k<numbers.length; k++) numbers[k] = readintlargerorequalto(0); System.out.println(" The average value is: " + computeaverage(numbers));

Outline Arrayer Metoder Räckvidd (Scope) Eclipse

/* NerBryten. java * Illustrerar hur programmet Monolitisk. java kan brytas ner */ import java.util.scanner; public class NerBryten{ // Få en int array som parameter och returnera summan av dess element static public long computesum(int[] nums){ long result = 0; for( int p=0; p<nums.length; p++) result += nums[p]; return result; //Få en int array som parameter och returnerar medelvärdet av dess element static public double computeaverage(int[] nums){ return ( double)computesum(nums)/nums.length; //läser in ett heltal som är större eller lik med parametern " min" static public int readintlargerorequalto(int minimal){ Scanner scan = new Scanner(System.in); int result; do{ System.out.print(" Enter an int that is larger or equal to " + minimal + ": "); result=scan.nextint(); while(result<minimal); return result; //läser in antalet element och deras värden, skriver upp deras medelvärde static public void main(string[] args){ int[] numbers = new int[readintlargerorequalto(1)]; for( int k=0; k<numbers.length; k++) numbers[k] = readintlargerorequalto(0); System.out.println(" The average value is: " + computeaverage(numbers));

/*... */ import java.util.scanner; class NerBryten{ //... static public long computesum(int[] nums){ long result = 0; for( int p=0; p<nums.length; p++) result += nums[p]; return result; //... static public double computeaverage(int[] nums){ return ( double)computesum(nums)/nums.length; //... static public int readintlargerorequalto(int min){ Scanner scan = new Scanner(System.in); int result; do{ System.out.print(" Enter an int that is larger or equal to " + min + ": "); result=scan.nextint(); while(result<min); return result; //... static public void main(string[] args){ int numbers = new int[readintlargerorequalto(1)]; for( int k=0; k<numbers.length; k++) numbers[k] = readintlargerorequalto(0); System.out.println(" The average value is: " + computeaverage(numbers));

/*... */ import java.util.scanner; class NerBryten{ public static int[] numbers; //ny variabel som alla kan "se" //... static public long computesum(/*int[] nums*/){ long result = 0; for( int p=0; p<numbers.length; p++) result += numbers[p]; return result; //... static public double computeaverage(/*int[] nums*/){ return ( double)computesum(numbers)/numbers.length; //... static public int readintlargerorequalto(int min){ Scanner scan = new Scanner(System.in); int result; do{ System.out.print(" Enter an int that is larger or equal to " + min + ": "); result=scan.nextint(); while(result<min); return result; //... static public void main(string[] args){ numbers = new int[readintlargerorequalto(1)]; for( int k=0; k<numbers.length; k++) numbers[k] = readintlargerorequalto(0); System.out.println(" The average value is: " + computeaverage(numbers));

/*... */ import java.util.scanner; class NerBryten{ public static int[] numbers; //Klass variabel numbers //... static public long computesum(/*int[] nums*/){ long result = 0; for( int p=0; p<numbers.length; p++) result += numbers[p]; //läser från klass variabeln numbers return result; //... static public double computeaverage(/*int[] nums*/){ return ( double)computesum(numbers)/numbers.length; //läser från klass variabeln num //... static public int readintlargerorequalto(int min){ Scanner scan = new Scanner(System.in); int result; do{ System.out.print(" Enter an int that is larger or equal to " + min + ": "); result=scan.nextint(); while(result<min); return result; //... static public void main(string[] args){ numbers = new int[readintlargerorequalto(1)]; //tilldela ett vä rde till klass varia for( int k=0; k<numbers.length; k++) numbers[k] = readintlargerorequalto(0); System.out.println(" The average value is: " + computeaverage(numbers));

/*... */ import java.util.scanner; class NerBryten{ public static int[] numbers; //Klass variabel numbers //... static public long computesum(/*int[] nums*/){ long result = 0; //lokal variabel result for( int p=0; p<numbers.length; p++) result += numbers[p]; //läser från klass variabeln numbers return result; //... static public double computeaverage(/*int[] nums*/){ return ( double)computesum(numbers)/numbers.length; //läser från klass variabeln num //... static public int readintlargerorequalto(int min){ Scanner scan = new Scanner(System.in); //lokal variabel scan int result; //lokal variabel result do{ System.out.print(" Enter an int that is larger or equal to " + min + ": "); result=scan.nextint(); while(result<min); return result; //... static public void main(string[] args){ numbers = new int[readintlargerorequalto(1)]; //tilldela ett vä rde till klass varia for( int k=0; k<numbers.length; k++) numbers[k] = readintlargerorequalto(0); System.out.println(" The average value is: " + computeaverage(numbers));

Vad blir resultatet? /* SkuggningLokalt. java * Programmet illustrerar hur lokala variabler * kan skugga klass variabler. */ class SkuggningLokalt{ public static int a = 6; public static int addition (int c){ int a = 2; return a + c; public static void main(string[] args){ a = addition(b); System.out.println(a); public static int b = 5;

Nu då? /* SkuggningParam. java * Programmet illustrerar hur parametrar * kan skugga klass variabler. */ class SkuggningParam{ public static int a = 6; public static int addition (int a){ return a + b; public static void main(string[] args){ a = addition(b); System.out.println(a); public static int b = 5;

Outline Arrayer Metoder Räckvidd (Scope) Eclipse

Eclipse Eclipse är en Integrated Development Environement (IDE) Är helt gratis Till alla operativsystem finns i flera varianter för olika språk/tillämpningar Sköter organisationen av filer, editering av filer, kompilering, exekvering och felsökning

Hemma http://eclipse.org Klicka på Download Eclipse Välj Eclipse IDE for Java Developers

Starta Starta Eclipse (på universitetet med kommandot eclipse&) Eclipse vill att du ska välja workspace, välj en mapp som alltid är tillgänglig och som kan användas hela kursen. Här kommer alla dina projekt och filer att sparas Om du starta fe för första gången får du upp en välkomstskärm. Klicka på den böjda pilen till höger för att bli av med den Du bör nu ha Eclipse igång med sisådär fyra delfönster

Översikt Till vänster bör du se Package Explorer. Härserdudina olika projekt, och dess filer (tom första gången) ImittenliggerKodfönstret Till höger ligger Outline här syns en översikt över dina funktioner och globala variabler Längst ner finns en mängd tabbar, bland andra Problems för felmeddelanden om din kod och Console där in-/utmatning till/från programmet sker när du kör det

Skriv ut array Skriv en metod printarray(int[] list) som givet en array av heltal, list, skriver ut dess element separerade med kommatecken Skriv en likadan för flyttal och strängar