Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Indentering är viktigt! Efter startparentes, {, ska du indentera.

Slides:



Advertisements
Liknande presentationer
Föreläsning 9 Programmeringsteknik och Matlab 2D1312/2D1305
Advertisements

INTRODUKTION TILL PROGRAMMERING
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Funktioner och programorganisation
Välkommen Vahid Mosavat
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Föreläsning 13 Allt om tentan. Sistaminutenhjälp: På fredag 17 december kl 12 sitter Linda i kemi-fiket och svarar på frågor.
Programkodens uppbyggnad
Att programmera i språket Java
Grundläggande programmering
Föreläsning 6 Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Alice in Action with Java
i olika programmeringsspråk
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser och instansvariabler -Tabeller av klassobjekt.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Programmering i C# 3. Klasser.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Klasser och objekt Klasser, objekt och instansvariabler
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
int res2=Math.max(tal1,tal2);
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Modulär programutveckling
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Metoder -Lokala variabler -Mera om klasser: -Nyckelorden.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Java paket och jar-filer
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 5 ( ) INNEHÅLL: -Metoder.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
Föreläsning 12 Om slutprovet. Repetition –deklaration av variabler –skapande av objekt (instansiering) –Vektorer och Vector-klassen –Klasser –Instans-/klassvariabler.
Föreläsning 4 Klasser Och Objekt.
Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
INTRODUKTION TILL PROGRAMMERING
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Övning2 programmeringsteknik och Matlab 2D1312/ 2D1305
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning4 Repetition slingor Metoder. while-sats består av följande delar: 1. while 2. Villkor-sats (condition) 3. uttryck (statement) while-sats int.
1 Föreläsning 6 Repetition på metoder Referenser Objekt som parametrar public/private Klassvariabler och klassmetoder.
Föreläsning 7 Metoder Parametrar Klassmetod.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng while-loop do-loop continue, break PROJEKT Föreläsning 5.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
1 Föreläsning 4 Metoder & parametrar Array API och klassen ArrayList.
Malmö högskola Rolf Axelsson 2003/2004 DA7235, 4 poäng Fält som returvärde Sortera fält Söka i fält Tvådimensionella fält Fält och spelplan Föreläsning.
Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng Fält - Vektor - Array Deklarera, skapa och använda Fält som parameter Föreläsning 9.
DA7351 Programmering 1 Fält och objekt Tvådimensionella fält Sortera fält Föreläsning 13.
Föreläsning 3 Algoritm Grundstrukturer i en algoritm Sekvens Selektion Iteration Selektion - if-sats Selektion - if-else-sats Selektion - switch-sats jämförelseoperatorer.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Referensvariabel Klass och konstruktorer Klass med set- och get-metoder Klass och fält Fler metoder.
Malmö högskola Rolf Axelsson 2003/2004 DA7231, 4 poäng Fält - Vektor - Array Deklarera, skapa och använda Fält som parameter Föreläsning 9.
Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng char Klassen String Klass och attribut Klass och metoder Föreläsning 30/
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8.
Föreläsning 4: for, while, do-while
Föreläsning 8: Exempel och problemlösning
Iteration – Repetitionssats - while
Presentationens avskrift:

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Indentering är viktigt! Efter startparentes, {, ska du indentera. Även om start- parenteser inte används (ej nödvändigt vid 1 programrad då du använder if, for och while) så ska du indentera. import extra.*; public class Kapital1 { public static void main(String[] args) { double kapital, räntesats; int antalÅr; System.out.print("Ange kapital: "); kapital = Input.readDouble(); System.out.print("Ange räntan i decimalform (3% som 0.03): "); räntesats = Input.readDouble(); System.out.print("Ange antalet år som kapitalet växer: "); antalÅr = Input.readInt(); System.out.println(); System.out.println("Startkapital: "+kapital); System.out.println("År Kapital"); for(int år=1; år<=antalÅr; år++) { kapital = kapital + räntesats*kapital; System.out.println(Output.format(år,2)+Output.format(kapital,10,0)); }

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Metoder Exempel på metoder Input-klassen respektive Output-klassen i extra-paketet. Klassmetoder Överlagrade metoder Föreläsning 6

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng public static int readInt() / readInt(String text) Låter användaren mata in ett heltal. Felaktig inmatning ger värdet 0 som resultat. public static double readDouble() / readDouble(String t) Låter användaren mata in ett tal. Felaktig inmatning ger värdet 0 som resultat. public static String readLine() / readLine(String text) Låter användaren mata in en sträng. public static void delay(long millisekunder) Pausar exekveringen i bifogat antal millisekunder Klassen Input - inmatning mm Kapital1.java

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng public static String format(int tal, int bredd) Returnerar en sträng med angiven längd(bredd). Strängen avslutas med talet och inleds med blanktecken för att ge strängen angiven längd. Output.format(23,8); returnerar strängen ” 23” public static void format(double tal, int bredd, int dec) Returnerar en sträng med angiven längd(bredd). Strängen avslutas med talet, med angivet antal decimaler, och inleds med blanktecken för att ge strängen korrekt längd. Output.format(2.3,8); returnerar strängen ” 2.3” public static void meddelande(String txt) Skriver ut en sträng i ett meddelandefönster. Med \n i strängen börjar följande text på ny rad. Klassen Output - talformatering Output.java

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Metoder En metod innehåller kod vilken exekveras när metoden anropas. // Klassen Output public static String format(int tal, int bredd) { String talStr = String.valueOf(tal); return blanka.substring(talStr.length(), Math.max(bredd,talStr.length()))+talStr; } När ett program kommer till koden String toPrint; toPrint = Output.format(133,5); så tilldelas parametern tal värdet 133 och parametern bredd värdet 5 och därefter utförs koden: String talStr = String.valueOf(tal); // talStr=”133” return blanka.substring(talStr.length(), // return ” ”+”133” Math.max(bredd,talStr.length()))+talStr;

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Metoder public static String format(int tal, int bredd) { String talStr = String.valueOf(tal); return blanka.substring(talStr.length(), Math….)+talStr; } En metod består av huvud public static String format(int tal, int bredd) och av kropp { String talStr = String.valueOf(tal); return blanka.substring(talStr.length(), Math….)+talStr; }

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Metodens huvud public static String format(int tal, int bredd) Modifierare public static synlighet public, private, protected, (ingen - paket) klassmetod static Metoden/variabeln finns alltid. klassvariabelÅtkomst genom klassnamn Returvärde String Anger vilken typ av variabel som returneras. -void Metoden returnerar ej ett värde. -int, char, boolean, double,.. Metoden returnerar ett värde av angiven typ. -Klassnamn, t.ex. String Metoden returnerar en referens till ett objekt.

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Metodens huvud public static String format(int tal, int bredd) Metodens namn format Namnet hittar du på själv men det ska vara beskrivande och börja med liten bokstav. Parameterlista (int tal, int bredd) Beskriver den information som ska bifogas vid metod- anropet. Parameterlistan kan vara tom och utgörs då av ett tomt parentespar ( ). Man måste ange typen på varje parameter i listan, (String namn, double längd, double vikt) och parametrarna ska bifogas i angiven ordning och i angivet antal.

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Parametrar Parametrarna i parameterlistan brukar benämnas formella parametrar. De visar vilken typ av värden som ska bifogas vid anrop till metoden. static void format(double tal, int bredd, int dec) Till denna version av metoden format ska det bifogas en double, en int och en int. Detta ska ske i uppräknad ordning! De bifogade värdena brukar benämnas argument eller aktuella parametrar. Output.format(1.3422, 10, 2)-> ” 1.34” Output. format(1.3422, 2, 10)-> ” ” Output. format(10,1.3422, 2)Felaktigt Inuti metoden fungerar en parameter som en vanlig variabel. Parametrar ska ges beskrivande namn. Deras namn ska börja med liten bokstav.

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Överföring av värde till enkla typer Om en parameter är av enkel typ, dvs byte, int, short, long, float, double, char och boolean, så kopieras värdet på argumentet till den formella parametern.

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Överföring av värde till objekt En variabel till ett objekt är en referens till objektet. Det innebär att variabeln vet vilket objekt den är knuten till, dvs. typ av objektet och var objektet finns i minnet. Om en parameter är någon typ av objekt så kopieras inte hela objektet utan endast referensen till objektet.

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Metoder ger struktur import extra.*; public class Kapital1 { public static void main(String[] args) { double kapital, räntesats; int antalÅr; System.out.print("Ange kapital: "); kapital = Input.readDouble(); System.out.print("Ange räntan i decimalform (3% som 0.03): "); räntesats = Input.readDouble(); System.out.print("Ange antalet år som kapitalet växer: "); antalÅr = Input.readInt(); System.out.println(); System.out.println("Startkapital: "+kapital); System.out.println("År Kapital"); for(int år=1; år<=antalÅr; år++) { kapital = kapital + räntesats*kapital; System.out.println(Output.format(år,2)+Output.format(kapital,10,0)); } * En tabell * Kapital1.java

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Metoder ger struktur import extra.*; public class Kapital2 { public static void sammansattRänta(double summa, double räntesats, double antalÅr) { System.out.println("Startkapital: "+summa); System.out.println("År Kapital"); for(int år=1; år<=antalÅr; år++) { summa = summa + räntesats*summa; System.out.println(Output.format(år,2)+Output.format(summa,10,0)); } public static void main(String[] args) { double kapital, räntesats; int antalÅr; System.out.print("Ange kapital: "); kapital = Input.readDouble(); System.out.print("Ange räntan i decimalform (3% som 0.03): "); räntesats = Input.readDouble(); System.out.print("Ange antalet år som kapitalet växer: "); antalÅr = Input.readInt(); System.out.println(); sammansattRänta(kapital,räntesats,antalÅr); } Kapital2.java

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Metoder kan vara nyttiga import extra.*; public class Kapital2 { public static void sammansattRänta(double summa, double räntesats, double antalÅr) { System.out.println("Startkapital: "+summa); System.out.println("År Kapital"); for(int år=1; år<=antalÅr; år++) { summa = summa + räntesats*summa; System.out.println(Output.format(år,2)+Output.format(summa,10,0)); } public static void main(String[] args) { double kapital, räntesats; int antalÅr; System.out.print("Ange kapital: "); kapital = Input.readDouble(); System.out.print("Ange räntan i decimalform (3% som 0.03): "); räntesats = Input.readDouble(); System.out.print("Ange antalet år som kapitalet växer: "); antalÅr = Input.readInt(); System.out.println(); sammansattRänta(kapital,räntesats,antalÅr); } Ledtext + Läsa in double Ledtext + Läsa in double Ledtext + Läsa in int

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Metoder kan vara nyttiga import extra.*; public class Kapital3 { public static void sammansattRänta(….) { // samma kod som förra sidan } public static double getDouble(String text) { double tal; System.out.print(text); tal = Input.readDouble(); return tal; } public static int getInt(String text) { System.out.print(text); return Input.readInt(); } public static void main(String[] args) { double kapital, räntesats; int antalÅr; kapital = getDouble("Ange kapital: "); räntesats = getDouble("Ange räntan i decimalform (3% som 0.03): "); antalÅr = getInt("Ange antalet år som kapitalet växer: "); System.out.println(); sammansattRänta(kapital,räntesats,antalÅr); } Kapital3.java

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Klassmetoder En metod som deklareras som static kallas för en klassmetod. public static void meddelande(String txt) { } En klassmetod anropas med hjälp av klassnamnet följt av en punkt: Output.meddelande(”Hej”); Klassen heter Output och metoden heter meddelande. Det behövs inget objekt av typen Output för att anropa meddelande. Däremot måste programmet ha tillgång till filen Output.class. import extra.*; // Output.class finns i extra-paketet

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Att skriva metoder MetodnamnhundraÅr1 Beskrivning:Metoden frågar användaren om åldern år 2001 och berättar när vederbörande fyller 100 år. Parametrar:- Returvärde:- public static void hundraÅr1() { int ålder, årtal; System.out.print(”Ange ålder: ”); ålder = Input.readInt(); årtal = 2001+(100-ålder); System.out.println(”År ”+årtal+” fyller du 100 år”); } Metod1.java

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Att skriva metoder MetodnamnhundraÅr2 Beskrivning:Metoden berättar när vederbörande fyller 100 år. Parametrar:ålder (int) Returvärde:- public static void hundraÅr1() { int ålder, årtal; System.out.print(”Ange ålder: ”); ålder = Input.readInt(); årtal = 2001+(100-ålder); System.out.println(”År ”+årtal+” fyller du 100 år”); } public static void hundraÅr2(int ålder) { int årtal = 2001+(100-ålder); System.out.println(”År ”+årtal+” fyller du 100 år”); } Vad är det för skillnad mellan metoderna? Metod2.java Skillnad.java

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Att skriva metoder MetodnamnhundraÅr3 Beskrivning:Metoden returnerar det år då personen fyller 100 år Parametrar:ålder (int) Returvärde:årtal (int) public static int hundraÅr3(int ålder) { return (2001+(100-ålder)); } Metod3.java

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Att skriva metoder MetodnamnbiljettPris Beskrivning:Metoden returnerar biljettpriset för bifogade personer. Barn: 60 kr, vuxen: 110 kr, pensionär: 80 kr Parametrar:vuxna (int), barn (int), pensionärer (int) Returvärde:biljettpris (long) public static long biljettPris(int vuxna, int barn, int pensionärer) { return vuxna*110+barn*60+pensionärer*80; }

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Att skriva metoder Metodnamntecken Beskrivning:Metoden returnerar ’+’ om bifogat tal är positivt, ’0’ om bifogat tal är noll ’-’ om bifogat tal är negativt. Parametrar:tal (int) Returvärde:talets tecken (char) if(tal<0) return ’-’; else if(tal==0) return ’0’; else return ’+’; public static char tecken(int tal) { char tkn = ’+’; if(tal<0) tkn = ’-’; else if(tal==0) tkn = ’0’; return tkn; }

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Att skriva metoder Metodnamnintervall Beskrivning:Metoden returnerar true om ett tal är i ett intervall false om talet är utanför intervallet Parametrar:tal (int), min (int), max (int) Returvärde:boolean return (tal>=min && tal<=max); public static boolean intervall(int tal, int min, int max) { if(tal>=min && tal<=max) return true; else return false; } Diverse.java

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Samla metoder i en klass Metoder som funktionsmässigt hör ihop kan man samla i samma klass. Exempel: I klassen Input finns det metoder för inmatning av variabler och paus-metoder. Man skriver metoderna i samma klass. Glöm inte att klassens namn ska börja med stor bokstav medan metodernas namn ska börja med liten bokstav. Använd endast bokstäverna a-z, A-Z och siffror i klassnamnet. public class Diverse { public static long biljettPris(int vuxna, int barn, int pensionärer ) { return vuxna*110+barn*60+pensionärer*80; } public static char tecken(int tal) { // kod } public static boolean intervall(int tal, int min, int max) { // kod } } Diverse.java

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Placera en klass i ett paket När man skrivit in metoderna i en klass är det dags att bestämma var klassen ska lagras. Detta gör man med package-kommandot. Package-kommandot ska inleda java-filen. package extra; // paketnamn ska börja med liten bokstav När du kompilerar java-filen så placeras class-filen i angiven katalog. I JBuilder skapas katalogen om den inte finns. Katalogen finns i Output Path (normal projektkatalogen). Det går bra att skapa underpaket. package diverse.matematik; ger katalogerna diverse/matematik. Class-filen placeras i katalogen matematik. Placera slutligen paketet i M:\java eller där JBuilder 5 hittar katalogen.

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng Överlagrade metoder Ibland är det praktiskt om en metod kan ta emot olika typer av parametrar. Detta har du använt dig av vid utskrifter: System.out.println(); System.out.println(”Hej”); System.out.println(123); println-metoden är definierad för flera variabeltyper. Att deklarera ett antal metoder med samma namn men med olika parameterlistor kallas för att överlagra metoder. Om vi tittar i klassen String så finner vi flera exempel på överlagrade metoder, t.ex.:String int compareTo 2 versioner int indexOf 4 versioner static String valueOf 9 versioner

Malmö högskola Rolf Axelsson 2001/2002 DA7010 Objektorienterad programmering 1, 5 poäng public char tecken(double tal) { char tkn = ’+’; if(tal<0) tkn = ’-’; else if(tal==0) tkn = ’0’; return tkn; } Överlagrade metoder Metoden public char tecken(int tal) borde gå att använda även med flyttal. Vi skriver därför en tecken-metod som tar emot en double som parameter: Diverse2.java