Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

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

Algoritmer. Två gränssnitt

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

Klassen javax.swing.timer

Input. Programmering. Andra källor

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

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

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

Testning av program. Verklig modell för programutveckling

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

Tentamen i Objektorienterad programmering

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

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

Objektorienterad Programmering (TDDC77)

Föreläsning 14. Filhantering

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

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

DAT043 Objektorienterad Programmering

OOP Objekt-orienterad programmering

Föreläsnings 10 - Överlagring, Konstruerare, Arv, Mer Exceptions, Reguljära Uttryck

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

Lösningar för tenta 2 DAT043,

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

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

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

Arrayer. results

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Lösningsförslag till exempeltenta 2

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

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

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

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

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.

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Kopiering av objekt i Java

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Tentamen FYTA11 Javaprogrammering

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Repetition av OOP- och Javabegrepp

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Parallellism, återblick

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

Tentamen ID1004 Objektorienterad programmering May 29, 2012

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Föreläsningsmaterial (Arv) Skrivet av Andreas Lund

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Repetition av OOP- och Javabegrepp

Objektorienterad Programmering (TDDC77)

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Objektorienterad programmering D2

Typkonvertering. Java versus C

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

Tentamen OOP

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

TENTAMEN. Objektorienterade applikationer CHALMERS. 2018/2019, lp 3 DAT055. Uno Holmer

Föreläsning 3-4 Innehåll

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

JAVAUTVECKLING LEKTION 7

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Länkade strukturer, parametriserade typer och undantag

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

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

Objektorienterad programmering i Java

Objektorienterad Programmering (TDDC77)

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

Tentamen, EDAA10 Programmering i Java

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

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

DEL 1 För att få godkänt på tentan (betyg 3) måste du lösa minst fem av sju uppgifter i denna del.

Tentamen i Objektorienterad programmering

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Laboration 13, Arrayer och objekt

Laboration 3, uppgift En klass för en räknare

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

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

Lösningsförslag övning 2.

JAVA Mer om klasser och objektorientering

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

Tentamen i Programmeringsteknik MN

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

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

PROGRAMMERINGSTEKNIK TIN212

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:

Generisk klass med typparameter Inre klass - ListIterator

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

Objektorienterad Programmering (TDDC77)

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

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

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

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

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

Språkkonventioner och redigering av tal.

Transkript:

Objektorienterad programmering E Telefonboken, än en gång Föreläsning 5 Wrapper classes Exempel, histogram. Inldening om undantag. Mer om klassen Påminnelse Vår senaste version bestod av två klasser, bägge på cirka 35 rader (inklusive tomma rader). SimplePhoneBook, en klass vars instanser kan lagra många par (namn,nummer) samt tillhandahåller metoderna put och get. Main, som innehåller main-rutinen, som sköter interaktionen med användaren. Ett scenario Tänk er att de två klasserna är så omfattande att två skilda programmeringsteam måste ansvara för utvecklingen av de två delarna. Vilken överenskommelse måste de göra innan de kan börja arbeta var för sig? Gränssnitt En generell princip För att delsystem ska kunna utvecklas var för sig och ändå samverka måste man noga specificera gränssnittet (eng interface) mellan de två systemen. Exempel Exempel Telefonboken med gränssnitt specificerat, del 1 PhoneBook.java public interface PhoneBook { public void put(string name, String nr); public String get(string name); SimplePhoneBook.java public class SimplePhoneBook implements PhoneBook { 19mm långa stift, 4.8 mm diam, 19 mm centrumavstånd. 230 V växelström, 50 Hz. Vänster koppling, mitten broms, höger gas.... Resten av klassen oförändrad Kompilatorn kontrollerar att klassen verkligen har metoderna i interfacet, med rätt parametrar.

Telefonboken med gränssnitt specificerat, del 2 Interaction.java import java.util.; public class Interaction { public static void interact(phonebook book) {... All kod från den tidigare main Kompilatorn kontrollerar att parametern book används på rätt sätt (bara book.put och book.get, med rätt parametrar). PhoneMain.java public class PhoneMain { public static void main(string[] args) { Interaction.interact(new SimplePhoneBook(100)); Otaliga tillämpningar Kan vi definiera generella klasser för många situationer? Två grundidéer Modellklassen som objekt Det är naturligt att tänka på histogram som objekt. Vi kan skapa ett histogram med given klassindelning, lägga till nya datavärden, rita histogrammet,... Vi vill därför definiera en klass från vilken vi kan skapa flera olika histogramobjekt. Separera modell och vy Definiera en klass för att hålla reda på data och en annan (eller flera andra) för att visualisera data. Många frågor 1 Vilken typ av data? (int, double?) 2 Vilken intervallindelning? 3 Kan data hamna utanför intervallen? Vad gör man då? Slutsats: Ingen lösning passar alla situationer. Ett exempel på tänkbara svar 1 Data är av typ double. 2 Givna min- och maxvärden; lika breda intervall. 3 Var beredd på data utanför [min,max]. Räkna dessa också. Definiera först ett interface baserad på dessa svar.

Interfacet.java public interface { public void addobs(double obs); public double getmin(); public double getmax(); public int getnrclasses(); public int getobscount(int i); public int getsmallvalues(); public int getbigvalues(); Att definiera en klass för histogram Vilka tillståndsvariabler behövs? Vilka parametrar ska konstrueraren ha? Implementera alla metoder., inledning Ett undantag (eng exception) är en händelse under exekvering som bryter den vanliga exekveringsordningen. I enklaste fallet avbryts programmet och ett felmeddelande skrivs ut. i Java Java har komplicerade regler och mekanismer för undantag. Dessa är delvis kontroversiella. Vi kommer bara att hantera enkla fall i den här kursen. ; några exempel Ett exempelprogram public class Exceptions { public static void main(string[] args) { String[] a = new String[5]; int n = Integer.parseInt(args[0]); System.out.println(a[n].length()); Vad händer vid exekvering i dessa tre fall? > java Exceptions > java Exceptions abc > java Exceptions 3 ; olika typer Programmeringsfel En vanlig anledning till undantag är att programmeraren tänkt fel och missat något möjligt fall. Typiskt avbryts programmet med ett felmeddelande. Några vanliga undantag och motsvarande programmeringsfel ArrayIndexOutOfBoundsException Försök att indicera i ett fält till ett element som inte finns. NullPointerException Försök att anropa en metod hos ett objekt, men där referensen är null. NumberFormatException Försök att konvertera en sträng till tal, där strängen innehåller otillåtna tecken.

Att skicka undantaget vidare En metod som kan råka ut för undantag när den anropar andra metoder måste deklarera att den själv kan kasta undantaget: import java.util.; import java.io.*; public class Exceptions3 { public static void main(string[] args) throws FileNotFoundException { in = new (new File(args[0])); int count = 0; while (in.hasnext()) { in.next(); count++; System.out.println(args[0]+" contains "+count+" words"); En användning av histogram Temperaturdata för Göteborg På SMHI s webbplats kan man finna datafiler med dagliga temperaturdata från och med 1973 för 52 mätstationer. Filen för Göteborg börjar 7142 GÖTEBORG A 1973 2008 0101 1231 577000. 119800. DATUM TT1 TT2 TT3 TTN TTTM TTX 19730101-0.4-0.2-0.3-1.1-0.3 0.5 19730102 0.8 2.0 3.7-0.6 2.1 3.8 19730103 5.0 5.8 1.8 1.7 3.9 6.3 Kolumnen TTX är maxtemperaturen för den aktuella dagen. Skriv ett program som visualiserar maxtemperaturen i Göteborg. Att söka i textfiler Mer om klassen En webbservers loggfil En webbserver lagrar normalt information om varje access i en loggfil, typiskt i formatet Combined Log Format. Varje access beskrivs med en rad. En sådan rad (radbruten här av utrymmesskäl) 148.123.045.101 - - [23/Jan/2010:09:05:35-0100] "GET schedule.html HTTP/1.0" 200 3427 "-" "-" En loggfil innehåller ett stort antal sådana rader. Vi vill rensa bort allt utom storlekarna på de hämtade filerna (3427 bytes i ovanstående rad). Hur gör man? Sökning efter mönster (eng. patterns) Klassen innehåller metoden String findinline(string pattern) som försöker hitta en sträng som matchar pattern på den aktuella raden. Misslyckas detta returneras null och aktuell position är oförändrad. Reguljära uttryck Matchningen utnyttjar reguljära uttryck. Reguljära uttryck utnyttjas i många sammanhang för sökning.

Reguljära uttryck Härnäst Ett reguljärt uttryck är en sträng där vissa tecken (metatecken) har särskild betydelse. Metatecken är + *? [ ] ^. Matchning Vi ger exempel på när ett reguljärt uttryck matchar en sträng. "a[dg]a" matchar "ada" och "aga". "a[d-g]a" matchar "ada","aea", "afa" och "aga". "a[1-4]" matchar "a1","a2", "a3" och "a4". "ab+a" matchar "aba","abba", "abbba"... "ab*a" matchar samma strängar och också "aa". "[0-9]+" matchar alla icke-tomma strängar med bara siffror. Labbar Gör färdigt labb 3 (deadline på måndag). Labb 4 utnyttjar sökning med reguljära uttryck. Nästa föreläsning Mer om grafiska program och undantag.