Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng char Klassen String Klass och attribut Klass och metoder Föreläsning 30/9-2004.

Slides:



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

Interface.  Interface är en datatyp och har alltså egen syntax och en hel del egna regler för vad arv från interface innebär.  Interface är renodlad.
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.
Klasser och objekt.
Programmeringsteknik
Fortsättningskurs i Programmering lektion 6
OOP Objekt-orienterad programmering
Föreläsning 4 Python: mera om funktioner och parametrar
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programkodens uppbyggnad
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.
1 Föreläsning 6 Klass Object, instans av klass public/private Klassvariabler och klassmetoder.
Alice in Action with Java
i olika programmeringsspråk
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
Föreläsning 5. Problemet Vi har sett att vi kan ersätta de metoder vi ärver från överklassen med egen funktionalitet (polymorfism) class Bil : public.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( )‏ Innehåll:Trådsäkerhet - Intrinsic locks och synkronisering - Synchronized statements.
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
Föreläsning 10 Minnesbilder. Minnesbilder steg 1 char ch; int[] vek; Bil bilen; Bil int[] char ch vek bilen.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
Arv.
Programmeringsteknik för Media1 & K1
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 7 ( ) INNEHÅLL: -Klasser -Att definiera egna klasser -Klassvariabler -Klassmetoder.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
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 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Föreläsning 4 Klasser Och Objekt.
1. Ett problem/uppgift.
Föreläsning 1 Om kursen Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
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.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
Föreläsning 5 Klasser och instanser
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Föreläsning 7 Repetition Sammansatta datatyper –vektor (hakvektor, array) –matris.
OOP - teori1 OOP del II– Föreläsning 5 vecka 6. OOP - teori2 Klasser Substantiv i singularis stavat med stor bokstav till exempel Human Dog Account Circle.
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.
OOP&M - teori1 OOP&M – Föreläsning 5 kap 8-13 Operatorer,typkonvertering, booleska operatorer, if och else.
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.
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.
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.
Arv, abstrakta klasser och gränssnitt
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.
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
1 Mer om metoder, variabler, klasser och objekt. Kursboken: - Kapitel 6 - Kapitel 8.
Föreläsning 3: Booleans, if, switch
Föreläsning 8: Exempel och problemlösning
Föreläsning 12: Exempel och problemlösning
Presentationens avskrift:

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng char Klassen String Klass och attribut Klass och metoder Föreläsning 30/9-2004

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng char

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng String namn.charAt(7); Ger tecknet i position 7, dvs. ’e’. Det första tecknet har position 0. namn.length(); Ger antalet tecken i strängen, dvs. 13. namn.substring(3,8); Ger en ny sträng som utgörs av tecknen med start i position 3 och slut i position 7, dvs ”f Axe”. namn.compareTo(str); Jämför strängarna namn och str. Resultat: 0 namn>str namn.equals(str); Jämför strängarna namn och str. Resultat: true - lika, false - olika

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng String - körresultat NamnAnalys.java

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng Klassen String innehåller variabler Om vi ser hur filen String.java är skriven så upptäcker vi att klassen String innehåller variabler. public final class String implements Serializable, Comparable, … { /** The value is used for character storage. */ private char value[]; /** The offset is the first index of the storage that is used. */ private int offset; /** The count is the number of characters in the String. */ private int count; /** Cache the hash code for the string */ private int hash = 0; String.java

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng En klass kan innehålla variabler Man kan samla variabler som hör ihop i en klass. I programmen om löpning (Här Lopp1.java) används två variabler för varje löpare, löparens namn och tid. int tid1,tid2; String namn1,namn2; Till en löpare hör variablerna namn1 och tid1 och till en variablerna namn2 och tid2. Klassen Deltagare innehåller variabler som kan lagra dessa data: public class Deltagare { public String namn; public int tid; } Variablerna benäms ofta instansvariabler eller attribut. Filen ska heta som klassen, dvs Deltagare.java. Lopp1.java Deltagare.java

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng En klass kan innehålla variabler public class Deltagare { public String namn; public int tid; } Ett objekt av klassen Deltagare kan användas varje gång man behöver lagra information om en löpare. Så här skaffar man sig ett objekt: Deltagare lopare1= new Deltagare(); Början av deklarationen liknar den du hittills mött: Deltagare lopare1 Först typ av objekt, Deltagare, och sedan ett bra variabelnamn, lopare1. Den stora skillnaden är att man måste skapa objektet. Detta sker i högerledet med operatorn new : = new Deltagare();

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng En klass kan innehålla variabler Deltagare löpare1= new Deltagare(); Deltagare löpare2= new Deltagare(); Nu kan man använda Deltagare-objekten i programmet. Man kommer åt instansvariablerna i objektet med punkt- operatorn + deras namn. löpare1.namn = Input.readLine("Ange namn på löpare 1: "); löpare2.namn = Input.readLine("Ange namn på löpare 2: "); : löpare1.tid = Input.readInt("Ange … för "+löpare1.namn); löpare2.tid = Input.readInt("Ange … för "+löpare2.namn); Lopp2.java

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng En klass kan innehålla metoder I klassen kan man även skriva metoder som använder instansvariablerna. Dessa metoder anropas med punktoperatorn. public class Deltagare { public String namn; public int tid; public String toString() { return "Namn="+namn+" Tid="+tid; } } : // Koden nedan finns i klassen Lopp3 public void resultat(Deltagare delt1, Deltagare delt2) { System.out.println("\nRESULTAT"); System.out.println(delt1.toString()); System.out.println(delt2.toString()); } När metoden toString anropas så används objektets instansvariabler, dvs vid anropet delt1.toString() används instansvariablerna i delt1 Lopp3.java

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng private och public Det har visat sig att instansvariabler nästa alltid ska vara private. Detta för att undvika fel i program. (jmf String) public class Deltagare { private String namn; private int tid; public String toString() { return "Namn="+namn+" Tid="+tid; } } private -deklarerade attribut och metoder är endast tillgängliga (synliga) inom klassen. Nu fungerar inte Lopp2.java och Lopp3.java längre eftersom namn och tid endast får användas inom klassen. public -deklarerade attribut och metoder är tillgängliga (synliga) utanför klassen. Vad man behöver för att använda dem är ett objekt (en instans) av klassen.

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng private attribut, set- och get-metoder Med hjälp av set- och get-metoder får andra klasser tillgång till attributen. Set-metoder till de attribut som ska kunna ändras och get-metoder för de attribut vars värde ska kunna avläsas. public class Deltagare2 { private String namn; private int tid; : public void setNamn(String inNamn) { namn = inNamn; } public String getNamn() { return namn; } public void setTid(int inTid) { tid = inTid; } public int getTid() { return tid; } public String toString() { String resultat = "Namn: "+namn+" Tid="+tid; return resultat; } } Deltagare2.java Lopp4.java

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng Fler metoder i klassen Om två deltagares tid ska jämföras kan metoden compareTo vara användbar. compareTo returnerar: 0om bifogad deltagare har lägst tid public class Deltagare2 { private String namn; private int tid; : public int compareTo(Deltagare2 delt) { if(tid<delt.getTid())// tid<delt.tid går bra return -1; else if(tid==delt.getTid())// tid==delt.tid går bra return 0; else return 1; } } Kortare skrivsätt: public int compareTo(Deltagare2 delt) { return tid-delt.getTid(); } Lopp5.java

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng Modell En modell är en förenklad representation av verkligheten. Endast de egenskaper som är viktiga ingår i modellen. En person kan beskrivas med varierande egenskaper, dvs. egenskapernas vikt beror på sammanhanget, t.ex.: Skattemyndigheten finner bl.a. följande egenskaper viktiga: Personnummer, Taxerad inkomst, Skatt Arbetsgivaren finner bl.a. följande egenskaper viktiga: Kompetens, Lönekrav, Lojalitet Adressboken finner bl.a. följande egenskaper viktiga: Namn, Adress, Telefonnummer På samma sätt beskrivs en bil på skilda sätt, t.ex.: Bilhandlaren är intresserad av modell och pris P-vakten är intresserad av modell och registreringsnummer Navigationssystemet är intresserat av bilens geografiska läge

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng Klass I datorprogram utgörs en modell av ett objekt. I Java bygger man objekt med hjälp av en klass. Ett komplicerat objekt kan vara uppbyggt av flera andra objekt, dvs. flera andra klasser i programmet. Ett program består normalt sett av många objekt som på olika sätt påverkar varandra. Och en del av objekten som används kan vara av samma typ. Om många personer behandlas i ett program så kommer programmet att använda många objekt av typen Person.

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng UppskattaTid.java Vi har tillgång till klassen Tidtagare, vilken kan användas för att mäta tid. Vi ska skriva ett program, UppskattaTid, vilket låter användaren uppskatta ett visst antal sekunder. Hur kan vi utnyttja Tidtagare? public void action() { long tid,tidsrymd; tidsrymd = …; tid = uppskattaTid(tidsrymd); resultat(tidsrymd,tid); System.exit(0); } Tidtagare + start():void + stop():void + getSekunder():double + getMillisSekunder():long Tidtagare – en tidtagare

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng Använda klassen Tidtagare UppskattaTid.java public class UppskattaTid { public long uppskattaTid(long tid) { Tidtagare klocka = new Tidtagare(); String txt ="Du ska uppskatta "+(tid/1000)+" sekunder.\n\n"+ "Tryck på OK för att starta tidtagningen."; Output.meddelande(txt); klocka.start(); Output.meddelande("Tryck på OK för att stoppa tidtagningen"); klocka.stopp(); return klocka.getMilliSekunder(); } public void resultat(long tidAttUppskatta, long tid) { String res = "Uppskattning: "+tid+"\n"+ "Fel: "+(tid-tidAttUppskatta)+" ms"; Output.meddelande(res); } public void action() { long tid,tidsrymd; tidsrymd = ((long)(Math.random()*4)+2)*1000; tid = uppskattaTid(tidsrymd); resultat(tidsrymd,tid); System.exit(0); } }

Malmö högskola Rolf Axelsson 2004/2005 DA7350, 10 poäng public class Tidtagare { private long startTid; private long stoppTid; public void start() { startTid = System.currentTimeMillis(); } public void stopp() { stoppTid = System.currentTimeMillis(); } public long getMilliSekunder() { return stoppTid-startTid; } public double getSekunder() { return (stoppTid-startTid)/1000.0; } Klassen Tidtagare Klassen Tidtagare lagras i filen Tidtagare.java Två instans- variabler Fyra instans- metoder Tidtagare.java