Introduktion till Java

Relevanta dokument
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

(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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

UML. Översikt UML. Relationer mellan klasser. A är ett aggregerat av B:n. Kontor aggregat av Enheter. 12 olika diagramtyper, bl.a.

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

Introduktion till Java. (del1)

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

Enkla variabler kontra referensvariabel

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

Föreläsning 3-4 Innehåll

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

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

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

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

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

OOP Objekt-orienterad programmering

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)

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

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

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

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

Introduktion till Java

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

Objekt och klasser - Introduktion

Klassdeklaration. Metoddeklaration. Parameteröverföring

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

Java, klasser, objekt (Skansholm: Kapitel 2)

Översikt. Programmering tillämpningar och datastrukturer. Vad kursen täcker. Lärare. Rekommenderad litteratur. Kursmål 729G58 (HKGBB7)

Föreläsning 5-6 Innehåll

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

Tentamen OOP

Felsökning, UML. Översikt. Java starkt typat. Typomvandling (casting) Exempelhierarki. Stark typning

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

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

Programmering A. Johan Eliasson

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

Programmering för språkteknologer II, HT2011. Rum

Objektorienterad Programmering (TDDC77)

DAT043 - Föreläsning 7

Typkonvertering. Java versus C

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

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

Lösningsförslag övning 2.

Objektorienterad programmering i Java

Laboration 1 - Grunderna för OOP i Java

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

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

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

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

TDIU01 - Programmering i C++, grundkurs

Classes och Interfaces, Objects och References, Initialization

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

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

JAVA Mer om klasser och objektorientering

Objektorientering: Lagring och livstid

Parameteröverföring. Exempel. Exempel. Metodkropp

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Mer om klasser och objekt

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

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

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

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.

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Objektorienterad programmering

Malmö högskola 2008/2009 CTS

Föreläsning REPETITION & EXTENTA

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

F4. programmeringsteknik och Matlab

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

JAVAUTVECKLING LEKTION 11

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

Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT / 26

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.

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

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

Programmeringsteknik I

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

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

Objekt och referenser

Objektorienterad Programmering DAT043

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

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

Innehållsförteckning

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

TDDE10 TDDE11, 725G90/1. Objektorienterad programmering i Java, Föreläsning 2 Erik Nilsson, Institutionen för Datavetenskap, LiU

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Grundläggande programmering med C# 7,5 högskolepoäng

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

1 Egna klasser. 1.1 En punkt-klass

TENTAMEN OOP

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

TDDD78 Objektorientering: Lagring och livstid

Transkript:

Översikt Introduktion till Java Språket Java Operatorer Kontrollsatser Överlagring This Klassens beståndsdelar Klassvariabler och klassmetoder Instansvariabler och instansmetoder Strängar Paket Programmering tillämpningar och datastrukturer 2 Klassen är statisk Objekt skapas Jfr syntax (vad som står) och semantik (hur det tolkas) Objekt skapas dynamiskt med Klass som mall new Klass(); Innan första new-anropet finns det inga objekt! Därför som main måste dekl. som static Statisk struktur vid editering En samling klassdefinitioner Program i Java Dynamisk omgivning under körning Objekt skapas och skickar sedan meddelanden till varandra Objekten kan variera från körning till körning Måste sättas i gång med ett första anrop I det läget finns det fortfarande inga objekt som kan anropa andra objekt! Programmering tillämpningar och datastrukturer 3 Programmering tillämpningar och datastrukturer 4 Måste köra igång i statisk miljö Det finns inga instanser när programmet ska köras igång Därför krävs en startmetod som kan köras direkt på klasser Klassmetod: main Startpunkten för ett program Placeras antingen i huvudklassen eller t.ex. i egen testklass Inga returargument public static void main(string[] args) { <skapa objekt> Tillhör klassen, inte dess instans Programmering tillämpningar och datastrukturer 5 Programmering tillämpningar och datastrukturer 6

Klassmetod: exempel public static void main(string[] args) { Djur[] alladjur = new Djur[3]; int i; Skapa objekt i en arvshierarki Object Object alladjur[0] = new Katt("Kurre"); alladjur[1] = new Hund("Vilma"); alladjur[2] = new Katt("Bamse"); i = 0; while(i < alladjur.length) { alladjur[i].presenteradig(); i = i + 1; Programmering tillämpningar och datastrukturer 7 Programmering tillämpningar och datastrukturer 8 Pingvin Pingvin Rovfågel Rovfågel Fågel Fågel Falk Falk Duva Duva Instansiering Instansiering Klasser kan ha många olika instanser Ex. pingvinen pelle Ex. pingvinen kalle Skapas utifrån klassens beskrivning av variabler och metoder Klassen = mall Objekt = instanser byggda från mallen Programmering tillämpningar och datastrukturer 9 instans av Pingvin egen kopia referens Object Object Fågel Fågel variabler från Object metoddef i Object Rovfågel Rovfågel Duva Duva variabler från Fågel metoddef i Fågel var från Rovfågel metoddef i Rovfågel var från Pingvin Pingvin Pingvin Falk Falk metoddef i Pingvin Programmering tillämpningar datastrukturer och 10 Konstruktion av instans: This Klassen Person class Person { int ålder; String yrke; Person (int ålder, String yrke) { ålder = ålder; yrke = yrke;? Klassen Person class Person { int ålder; String yrke; Person (int ålder, String yrke) { this.ålder = ålder; this.yrke = yrke; This Pekar på objektet som håller på att skapas Programmering tillämpningar och datastrukturer 11 Programmering tillämpningar och datastrukturer 12

De minsta byggstenarna: primitiva typer int heltal Java syntax short decimaltal float flyttal (32 bitar) double decimaltal (64 bitar) Bästa precision, men tar mest minne boolean logisk variabel (true eller false) char tecken (Unicode) Programmering tillämpningar och datastrukturer 14 Refererar till ett objekt: String sträng Andra variabeltyper String klass som kan skapas utan new String mystring = Kalle ; // ny instans av String Initiering av variabel Type var = (villkor)? så : annars; // initiera med det mindre talet int pwidth = (width1 > width2)? width2 : width1; Referens till objekt av typen Pingvin Pingvin pingvin1 = new Pingvin(); // kolla null-pointer, annars initiera via create() Graphics co = (componentgraphics == null)? null : componentgraphics.create(); Programmering tillämpningar och datastrukturer 15 Programmering tillämpningar och datastrukturer 16 Java hårt typat Java håller reda på typ av variabel Om variabeln är av typ int kan den bara referera till heltal Etc. Typomvandling (casting) Automatisk expandering (ökad noggr) int i = 3; double d = i; // automatisk casting (int omvandlas till double innan tilldelningen Åt andra hållet: manuell typomvandling double d = 4.8; int i = (int) d; // explicit casting (i = 4) Programmering tillämpningar och datastrukturer 17 Programmering tillämpningar och datastrukturer 18

Variabler (forts) Vissa metoder förväntar sig en variabel som refererar till ett objekt men jag vill skicka ett tal Som ju bara refererar till ett värde Vad göra? Wrapper classes Vill kunna skicka primitiva variabler till metoder som vill ha objekt Lägg in variabelns värde i en omslagsklass double d = 3.14; Double c = new Double(d); skrivut(c); Via omslagsklasser lätt att få reda på min-max värde för double, etc. Double.MAX_VALUE // konstant som finns definierad i klassen Double Programmering tillämpningar och datastrukturer 19 Programmering tillämpningar och datastrukturer 20 Konstanter Operatorer Deklareras som final Konvention Stora bokstäver samt _ private final double ANNUAL_RATE = 2.5; konstant endast tillgänglig inom klassen +, *, &&,,!, <=, ==,!= if (i!= 0 && j == n/i) { else if ( ) { else if ( ) { OK eftersom denna del inte evalueras om i == 0 Programmering tillämpningar och datastrukturer 21 Programmering tillämpningar och datastrukturer 22 ++ / -- Öka på före tilldelning i = i + 1; j = i; j = ++i; Öka på efter tilldelning j = i; j = i++; i = i + 1; Operatorer Kontrollsatser for (int i=1; i<max; i++) { for (Element el: myset) { i = while (i<max) { do { i = while (i<max) Programmering tillämpningar och datastrukturer 23 Programmering tillämpningar och datastrukturer 24

switch (nertrycktknapp) { case E: ändraelement(); break; case S: skrivtillfil(); break; default: vänta(); Switch vilken variabel som testet gäller om värdet är E Metoder Programmering tillämpningar och datastrukturer 25 Klassvariabler class BankKonto { private static double räntesats; private double saldo; BankKonto.räntesats egenskap hos klassen Samma för alla instanser (konton) pettersonskonto.saldo egenskap hos enskilt konto Klassvariabler Har ett värde oberoende av om det finns instanser av klassen SEB:s räntesats är oberoende av om det finns kundkonton Behöver inte skapa instans för att komma åt variabelns värde Matematiska konstanter Math.PI (= 3.14) Math.E (= 2.17) Programmering tillämpningar och datastrukturer 27 Programmering tillämpningar och datastrukturer 28 Varför heter det static? Klassvariabler Klassmetoder Lever i en statisk kontext Kan inte referera till dynamiska variabler Kan inte anropa dynamiska metoder Statiska = klass Dynamiska = instans Programmering tillämpningar och datastrukturer 29 Programmering tillämpningar och datastrukturer 30

Klassmetoder Klassmetoder public class BankKonto { private static double räntesats; private double saldo; public BankKonto() { // konstruktor public static void sätträntesats(double nyräntesats) { räntesats = nyräntesats; Obs! Klassmetoder kommer inte åt icke-statiska variabler! public double beräknasaldobesked() { return räntesats*saldo; public class TestFåglar { public static void main(string[] args) { Rovfågel kalle = new Rovfågel(); Pingvin pelle = new Pingvin(); kalle.flyga(); pelle.flyga(); Deklarera statiska variabler lokalt Programmering tillämpningar och datastrukturer 31 Programmering tillämpningar och datastrukturer 32 Under körning Klass Klassvariabler Kod för alla metoder Även kod för instansmetoder lagras hos klassen (är ju samma för alla instanser) Objekt (instans av klass) Instansvariabler Pekare till instansmetoders kod Obs! En klassmetod kan inte anropa en instansmetod för ex.vis. delberäkning Anrop till klass (statisk metod) 1. Klassen tar emot meddelandet 2. Variabeln this har inget värde Finns ju ingen instans (som vi vet om) 3. Finns metoden i klassen utförs den Letar annars uppåt i klasshierarkin 4. Metoden utförs i kontext av klassen (klassvariabler satta, klassmetoder åtkomliga) Programmering tillämpningar och datastrukturer 33 Programmering tillämpningar och datastrukturer 34 Anrop till instans 1. Metoden tar emot anropet 2. Variabeln this sätts att peka på instansen 3. Instansen letar upp vilken klass den är instans av Dynamisk 4. Instansen letar efter metod-definitionen bindningi sin klass Söker sig annars uppåt i klasshierarkin ända upp till Object 5. Argumenten som instansen fått sätts in, koden utförs 6. Metoden tillämpas i den kontext som instansvariabler och instansmetoder utgör Överlagring (overloading) public class Djur { private String mittnamn; private int födelseår; private static int nuvarandeår = 2005; public Djur() { mittnamn = Pelle ; födelseår = nuvarandeår; // konstruktor Programmering tillämpningar och datastrukturer 35 Programmering tillämpningar och datastrukturer 36

Överlagring (overloading) Signatur Kan även definiera variant med två parametrar public Djur(String namn, int ålder) { mittnamn = namn; födelseår = nuvarandeår - ålder; De två metoderna har olika signatur OBS! Inte samma sak som överskuggning, där metoderna ligger i olika klasser Ex. Pingvin - flyga Metodens Namn Parametrar: typ och antal public boolean set(int index, Object o) { Har signaturen: set(int, Object) Programmering tillämpningar och datastrukturer 37 Programmering tillämpningar och datastrukturer 38 Signatur = namn + par. Protokoll public class Hiss { public void åkupp(int våningar) { position = position + våningar; public double åkupp(int våningar) { position = position + våningar; return position; Compiler error (same signature in two places) Lista av klassens publika signaturer (utökat med returvärden) En klass som har följande metoder public boolean set(int index, Object o) { public Object get(int index) { Har protokoll boolean set(int, Object) Object get(int) Programmering tillämpningar och datastrukturer 39 Programmering tillämpningar och datastrukturer 40 Metodkategorier Konstruktor Skapar nytt objekt Initierar variabler Returnerar objektet Modifierare Ändrar objektets tillstånd (dvs. ändrar variabelvärden) Accessor Hämtar variabelvärden Metodkategorier (forts) I/O-relaterade metoder Ex.vis. skriver ut objektets innehåll Omvandlare Omvandlar objektet till annan datatyp tostring() Anropas automatiskt av bl.a. System.print() Kan få häftiga effekter om man inte har definierat tostring() clone() Programmering tillämpningar och datastrukturer 41 Programmering tillämpningar och datastrukturer 42

Primitiva variabler - referenser Primitiva variabler referenser Primitiv variabel (ex. int, float, double, boolean) Innehåller själva värdet Referens Adress till ställe i datorns minne Programmering tillämpningar och datastrukturer 44 Exempel Referens String myname = Kalle ; String backupmyname = myname; // save old value myname = Jens ; System.print(backupMyName); Jens?! steg1: steg2: myname myname Kalle Jens backupmyname steg3: Programmering tillämpningar och datastrukturer 45 Programmering tillämpningar och datastrukturer 46 Lösning Kopiera strängen String myname = Kalle ; // vill ha nytt objekt, dvs. ny sträng String backupmyname = String.copyValueOf(myName); myname = Jens ; Skapar ett nytt objekt Strängar Strängar kan inte ändras sedan de skapats Vid varje ändring slängs gamla strängen och nytt skapas Om många ändringar, bättre att använda StringBuffer System.print(backupMyName); Kalle Programmering tillämpningar och datastrukturer 47 Programmering tillämpningar och datastrukturer 48

StringBuffer StringBuffer sb = new StringBuffer( Hej hej ); Objektets innehåll kan ändras sb.append(" Kalle!"); sb.insert(7, ","); // lägg in ", på pos 7 sb.replace(4, 7, "då"); // ersätt bokst 4-7 med "då" System.out.println(sb); Hej då, Kalle! Operationer på strängar Konkatenering: String s = Mitt namn är + namn; Om x inte är av typen sträng anropas x.tostring() automatiskt Om tostring() inte definierad: letar efter tostring() uppåt i klasshierarkin Kan se jättekonstigt ut om tostringdefinitionen i Object måste tillämpas Obs! första pos = 0 Programmering tillämpningar och datastrukturer 49 Programmering tillämpningar och datastrukturer 50 Operationer på strängar Sökning efter delsträng: int index = s.indexof( är, 0); // söksträng, startindex Plocka ut en delsträng: s.substring(0, s.length-1); // startindex, slutindex Operationer på strängar Escape-tecken ( kommandotecken ) \n = ny rad (Unix) \n\r = ny rad (Windows textfiler) \t = tab s = namn + \t + ålder + \n ; Konvertering till och från tal int x = Integer.parseInt(s); String s = Integer.toString(42); Programmering tillämpningar och datastrukturer 51 Programmering tillämpningar och datastrukturer 52 s1 == s2 Jämföra strängar Jämför två pekare! Inte vad vi vill ha! I stället: s1.equals(s2); s1.equalsignorecase(s2); Sortera strängar: s1.compareto(s2) 0 om lika -1 om s1 < s2 1 om s1 > s2 Programmering tillämpningar och datastrukturer 53