Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

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

(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

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

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Föreläsning 14 Innehåll

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

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

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

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Java, klasser, objekt (Skansholm: Kapitel 2)

1 Comparator & Comparable

Föreläsning 2, vecka 8: Repetition

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

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

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

Kopiering av objekt i Java

Generiska konstruktioner. Kursbokens kapitel 13

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

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Tentamen, Algoritmer och datastrukturer

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

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

Föreläsning 3-4 Innehåll

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

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

Länkade strukturer, parametriserade typer och undantag

Föreläsning 5-6 Innehåll

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

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

SMD 134 Objektorienterad programmering

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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Exempeltenta GruDat 2002/2003

Föreläsning 1 Datastrukturer (DAT037)

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

Algoritmer. Två gränssnitt

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

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

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

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Föreläsning REPETITION & EXTENTA

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

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

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

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

Objektorienterad Programkonstruktion. Föreläsning jan 2016

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Föreläsning 2 Datastrukturer (DAT037)

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

Arrayer (fält)

F4. programmeringsteknik och Matlab

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

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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ördjupad Java. Undantagshantering. Fel

Skriftlig tentamen för kursen DV017A. Inledande programmering i Java A

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

TDDC77 Objektorienterad Programmering

Föreläsning 2 Datastrukturer (DAT037)

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

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

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

TDDC77 Objektorienterad Programmering

Objektorienterad programmering i Java

Föreläsning 9 Innehåll

Tentamen TEN1 HI

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

Classes och Interfaces, Objects och References, Initialization

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

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

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

Innehållsförteckning

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Föreläsning 3 Datastrukturer (DAT037)

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.

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

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Språkkonventioner och redigering av tal.

Repetition av OOP- och Javabegrepp

Polymorfi. Objektorienterad och komponentbaserad programmering

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

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Föreläsning 3. Stack

Objektorienterad Programmering (TDDC77)

Transkript:

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klassen Mio ffl Särfall ffl Interface Kungl. Tekn. Högskolan Förel 1, bild 2 ffl Abstraktion ffl Datastrukturer ffl Algoritmer Kursinnehåll För att klara kursen måste du bli godkänd på följande moment: ffl Sju labbar (LAB1; 2 p). ffl Tentamen på algoritmer och datastrukturer (TEN1; 2 p). Kungl. Tekn. Högskolan Förel 1, bild 3 Lärare Namn Datorpost Kursledare Ann Pan panda@nada.kth.se Föreläsare Felipe Wersén felipe@nada.kth.se Examinator Henrik Eriksson henrik@nada.kth.se Övn. grupp 1 Martin Gülich d99-mgl@nada.kth.se Övn. grupp 2 Elina Eriksson elina@kth.se Övn. grupp 3 Ann Pan panda@nada.kth.se Kungl. Tekn. Högskolan Förel 1, bild 4 Föreläsningarna 1 Introduktion, repetition 2 Java: Objekt, klasser, arv 3 Komplexitet, sökning 4 Abstrakta datatyper, stack, kö, lista 5 Rekursion 6 Binärträd och generella träd, binära sökträd 7 Problemträd: breddenförst och djupetförst 8 Sortering 9 Hashning, Bloomfilter 10 Prioritetskö, heap, heapsort 11 Textsökning, automater, KMP 12 Syntax, syntaxträd, rekursiv medåkning 13 Repetition inför tentan

Kungl. Tekn. Högskolan Förel 1, bild 5 Enkelt Javaprogram Här följer ett enkelt Javaprogram med exempel på ffl en klass ffl en metod ffl en parameter av vektortyp ffl tre olika typer av kommentarer ffl en variabel av primitiv datatyp ffl en slinga ffl metodanrop /** Skriver ut en multiplikationstabell */ class Exempel1 /* Vi väljer sjuans tabell */ int nr = 7; System.out.print("Tabell " + nr + ": "); for (int j = 1; j <= 10; j++) System.out.print(j*nr + " "); System.out.println(); // main // class Exempel1 Kungl. Tekn. Högskolan Förel 1, bild 6 Exempel körning /** Skriver ut en multiplikationstabell */ class Exempel1 /* Vi väljer sjuans tabell */ int nr = 7; System.out.print("Tabell " + nr + ": "); for (int j = 1; j <= 10; j++) System.out.print(j*nr + " "); System.out.println(); // main // class Exempel1 yellow08> ls Exempel1.java yellow08> javac Exempel1.java yellow08> ls Exempel1.class Exempel1.java yellow08> java Exempel1 Tabell 7: 7 14 21 28 35 42 49 56 63 70 yellow08> Kungl. Tekn. Högskolan Förel 1, bild 7 Referenser Kungl. Tekn. Högskolan Förel 1, bild 8 Referenser (forts.) ffl En referensvariabel lagrar den minnesadress där ett objekt finns. ffl Värdet null markerar att referensvariabeln är tom. ffl De tre operatorerna == och = och. kan användas på referensvariabler. ffl a == b blir true om a och b refererar till samma objekt. ffl a = b; tilldelar a b:s värde, dvs gör så att a kommer att referera till samma objekt som b. ffl a.färg plockar fram värdet på a:s instansvariabel färg ffl a.måla() anropar a:s metod måla() class Person String namn; public Person(String namn) this.namn = namn; // Person() // class Person class Referenser /* Jämförelse av referenser */ Person a = new Person("Andersson"); Person b = new Person("Andersson"); if (a == b) System.out.println("Refererar a och b " + "till samma objekt?"); /* Jämförelse av strängar */ String anamn = a.namn; String bnamn = b.namn; if (anamn.equals(bnamn)) System.out.println("a och b har samma namn!"); /* Tilldelning ändrar referensen */ a = b; if (a == b) System.out.println("Nu refererar a och b " + "till samma objekt!"); //class Referenser yellow08> java Referenser a och b har samma namn! Nu refererar a och b till samma objekt! yellow08>

Kungl. Tekn. Högskolan Förel 1, bild 9 Nyckelordet static static betyder att efterföljande metod eller variabel finns vid programstart i ett exemplar. Annars skapas objekten med new. Kungl. Tekn. Högskolan Förel 1, bild 10 Klassen Mio Klassen Mio förenklar in- och utmatning. Man kan antingen ffl kopiera filen Mio.java från kursbiblioteket ffl skapa en symbolisk länk till filen Mio.class close(bufferedinputstream in) Stäng den öppnade filen efter läsning eof() Returnera true om ctrl-d står i tur från tangenterna eof(bufferedinputstream in) Returnera true om filen är slutläst eoln() Returnera true om retur står i tur från tangenterna eoln(bufferedinputstream in) Returnera true om retur står i tur att läsas i filen getchar() Läs ett tecken från tangenterna och returnera det getchar(bufferedinputstream in) Läs ett tecken från filen och returnera det Kungl. Tekn. Högskolan Förel 1, bild 11 Klassen Mio (forts.) Kungl. Tekn. Högskolan Förel 1, bild 12 Klassen Mio (forts.) static double static double static int static int getdouble() Läs decimaltal avgränsat av blanka från getdouble(bufferedinputstream in) Läs ett decimaltal avgränsat av blanka från filen och returnera det getint() Läs ett heltal avgränsat av blanka från getint(bufferedinputstream in) Läs ett heltal avgränsat av blanka från filen och returnera det getline() Läs en rad från tangenterna, glufsa radbytet, returnera raden getline(bufferedinputstream in) Läs en rad från filen, glufsa radbytet, returnera raden getword() Läs ett ord avgränsat av blanka från getword(bufferedinputstream in) Läs ett ord avgränsat av blanka från filen och returnera det nextchar() Tjuvtitta på nästa tecken från nextchar(bufferedinputstream in) Tjuvtitta på nästa tecken i filen och returnera det BufferedInputStream openread(string s) Öppna filen för läsning static PrintWriter openwrite(string s) Öppna filen för skrivning skipblanks() Glufsa eventuella blanka på tur att läsas från tangenterna skipblanks(bufferedinputstream in) Glufsa eventuella blanka på tur att läsas i filen

Kungl. Tekn. Högskolan Förel 1, bild 13 Användning av Mio Alla metoder i Mio är static-deklarerade, så man behöver inte skapa något Mio-objekt för att anropa dom. Exempel: class Hej System.out.print("Vad heter du? "); System.out.flush(); String namn = Mio.getLine(); System.out.println("Hej " + namn + "!"); // main // class Hej Kungl. Tekn. Högskolan Förel 1, bild 14 Särfall (Exceptions) Särfall används för att hantera speciella händelser, t ex att det blir fel. I Mio finns metoden openread() som öppnar en fil för läsning. Om filen inte existerar kommer konstruktorn FileInputStream() att kasta ett särfall. Så här fångas det upp: public static BufferedInputStream openread(string s) try return new BufferedInputStream(new catch (IOException e) FileInputStream(new File(s))); System.err.println("Kan inte öppna " + s); return null; Kungl. Tekn. Högskolan Förel 1, bild 15 Att hantera särfall Kungl. Tekn. Högskolan Förel 1, bild 16 Att generera särfall ffl Kod som skulle kunna generera särfall bör man placera i ett try-block. ffl try-blocket följs av ett catch-block där man skriver den kod som ska utföras då ett särfall inträffat. ffl Om man vill kan man låta catch-blocket följas av ett finally-block där man skriver kod som alltid ska utföras sist. ffl Särfall är objekt och skapas med new. Exempel: Exception e = new Exception(); ffl Med satsen throw ser man till att ett särfall kastas iväg. ffl Särfallet kastas vidare tills det fångas upp av catch ffl Varje metod som kan kasta ett särfall vidare måste ha throws Exception efter parenteserna i metodhuvudet. ffl Om man inte nöjer sig med Exception så kan man deklarera sin egen särfallsklass: public class Särfall extends Exception public Särfall() super("mitt eget särfall!"); // Särfall() // class Särfall

Kungl. Tekn. Högskolan Förel 1, bild 17 Gränssnitt (interface) ffl Ett gränssnitt är en klass som bara består av konstanter och abstrakta metoder. ffl Ett gränssnitt kan användas som modell för en klass. ffl En klass som definierar alla metoder i ett gränssnitt implementerar gränssnittet. Klassen Melon lovar att implementera gränssnittet Frukt om den deklareras class Melon implements Frukt Så här kan ett gränssnitt definieras Kungl. Tekn. Högskolan Förel 1, bild 18 Övningar Övning grupp 1: mån 14/1 kl 10-12 i L52. Övning grupp 2: tis 15/1 kl 13-15 i L51. Övning grupp 3: tis 15/1 kl 13-15 i L52. Nästa föreläsning: ons 16/1 kl 15-17 i E1 (OBS!). public interface Comparable public int compareto(object o); En klass som implementerar Comparable måste definiera metoden compareto. Varför vill man använda interface? ffl Förenklar samarbetet mellan flera programmerare - man kommer först överens om hur gränssnittet ska se ut. ffl Man kan använda färdiga metoder (se t ex gränssnittet Comparator och klassen Arrays).