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

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

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

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

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

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

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

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

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

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

Fördjupad Java. Undantagshantering. Fel

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

Tentamen , Grundläggande programmering i Java

OOP Objekt-orienterad programmering

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

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

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Mer om grafiska komponenter. Händelsestyrda program

Språkkonventioner och redigering av tal.

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

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

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

JAVAUTVECKLING LEKTION 7

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

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

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

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

Föreläsning 3: Händelsestyrda program och användargränssnitt

GUI Nyckelbeståndsdelar

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

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

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

Algoritmer. Två gränssnitt

Föreläsning 15: Repetition DVGA02

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

OOP Objekt-orienterad programmering

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

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

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

Java Direkt, upplaga 5 Innehåll

TDDC Terminologi Uppdaterad Fö #1

Översikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop

Java-concept och Swing. Swing low, sweet chariot

Föreläsning 14: Grafik & mera händelsehantering

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

Klasser för grafik och bildhantering

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

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

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

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

Lösningsförslag till tentamen

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

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

Objektorienterad programmering med Java Swing. Programexempel. Swing och AWT AWT. = Abstract windowing toolkit

Ingenjörsfirman Stéen Java Sida 1 av 1

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Lektion Händelsehanterare

Inre klasser Anonyma klasser Kloning I/O-ramverket. anonyma klasser

Tentamen , Introduktion till Java, dtaa98, dtea53

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

OOP Objekt-orienterad programmering

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

Exempel på användning av arv: Geometriska figurer

Tentamen i Objektorienterad programmering

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

DAT043 Objektorienterad Programmering

Länkade strukturer, parametriserade typer och undantag

Java Direkt, upplaga 7 Innehåll

Lösningsförslag till tentamen

System.out.println("Jaså du har "+ antaldollar + " stycken.");

OOP Objekt-orienterad programmering

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

Objektorienterad Programmering (TDDC77)

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

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

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout

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

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers

TDDC30 Programmering i Java, datastrukturer och algoritmer

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

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

Laboration 3 GUI-programmering

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

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

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

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

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

4.4 Swing ett interaktivt grafiskt gränssnitt

Transkript:

TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 7 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Strömmar Grafiskt användargränssnitt, Swing Lyssnare och händelser 1

Hittills, och vidare! Objektorientering och Java Objekt, klasser, instanser Arv, polymorfism Dölj implementationen Interface! Abstrakta datatyper (ADT) Datastruktur med algoritmer Listor, köer och stackar Gränssnitt vs implementation Analys av algoritmer Komplexitet: tids-, rums- Fallstudie: Sorteringsalgoritmer (återstår) 2

In- och utmatning Definition: En ström (en. Stream) är en sekvens av data från någon källa och/eller till något mål. In och utmating i Java utförs av strömmar Vanliga exempel System.out (av klassen PrintStream) Vanligen kopplad till terminalen System.err (av klassen PrintStream) Vanligen kopplad till terminalen System.in (av klassen InputStream) Vanligen ihopkopplad med annan ström som formaterar indatat, ex. BufferedReader, BufferedLineReader, Scanner 3

In- och utmatning(2) Exempel // connect reader to inputstream BufferedReader input = new BufferedReader( new InputStreamReader(System.in)); // read a line and convert to int int num = Integer.parseInt(input.readLine()); // open file for reading FileInputStream stream = new FileInputStream( new File("test.txt")); Scanner scanner = new Scanner(stream); // read from file System.out.println(scanner.nextInt()); 4

Formatering Ofta vill man skriva ut på en viss form double d = 10.0/3.0; System.out.println(d); // 3.3333333333333335 Metoden format i PrintStream kan hjälpa till: System.out.format("Värdet %1.2f är bra grejor.\n", d); // 3,33 Locale.setDefault(Locale.UK); // format adjust itself by looking at default locale! System.out.format("The value %1.2f is indeed good\n.", d); // 3.33 5

Formatering(2) Formatspecificerare är på följande form: %[flagga][bredd]typ Typ Förklaring Flaggor Förklaring d Heltal, decimal fom - Vänsterjustering x Heltal, hexadecimal form + Talets tecken skrivs ut f Reellt tal, decimalform blankt Positivt tal inleder med blank e Reellt tal, exponentform, Siffrorna grupperas tre och tre 6 Fler specificerare finns, se Javas API-dokumentation

Datum och tid Klassen Date sparar en tid // num = number of milliseconds since Jan 1, 1970 Date date = new Date(num); Klassen Calendar är mer användbar, och kan ta fram nuvarande tid som ett Date. Calendar cal = Calendar.getInstance(); System.out.format("The time is: %tc \n", cal.gettime()); int minute = cal.get(calendar.minute); 7

Datum och tid(2) DateFormat: en (abstrakt) klass som formaterar datum åt oss DateFormat time = DateFormat.getTimeInstance(); DateFormat date = DateFormat.getDateInstance(); Date now = Calendar.getInstance().getTime(); // note that this is locale dependent System.out.println(time.format(now)); // 13:37:00 System.out.println(date.format(now)); // 2012-nov-14 (Mer kontroll? SimpleDateFormat!) 8

Scanner Scanner: En klass som hjälper oss att hantera inmatning Kopplas mot en InputStream // example usage of scanner Scanner scanner = new Scanner(System.in); while (scanner.hasnextint()) { mylist.add(scanner.nextint()); } 9

Hantering av strömmar Filer läses som strömmar För textfiler, använd FileReader resp. FileWriter String filename = "myfile.txt"; FileReader reader = new FileReader(new File(filename)); Scanner scanner = new Scanner(reader); //... scanner.close(); // always close your streams! scanner.nextint(); // error, since scanner + stream is now closed 10

Hantering av (binära) datafiler För binära filer, använd DataInputStream resp. DataOutputStream String filename = "myfile.dat"; DataInputStream input; try { input = new DataInputStream(new FileInputStream(filename)); while (true) { System.out.println(input.readInt()); } } catch (EOFException e) { System.out.println("Something went wrong while reading:"); e.printstacktrace(); // print the details! } finally { input.close(); // always close! } 11

Serialisering Det går att spara objekt på fil mellan körningar Java kan platta till ett objekt till en sekvens av bytes Perfekt för att spara Använd strömmarna ObjectInputStream och ObjectOutputStream Kräver att klassen implementerar interfacet Serializable Object readobject(); // casting is needed to be usable void writeobject(object o); ObjectOutputStream out = new ObjectOutputStream( new FileOutputStream(new File("test.dat"))); out.writeobject(new Cat("Isaac", 11)); // if Serializable! out.writeobject("hejsan"); // String is Serializable 12

Grafiskt användargränssnitt Motivering För vanligt folk är följande inte ett program: Men detta är: 13

Grafiskt användargränssnitt(2) Fönster ser ut och konstrueras på olika sätt i olika operativsystem Java abstraherar bort detta med grafikpaketet Swing Swing ett uniformt sätt att skapa GUI Byggd ovanpå föregångaren AWT 14

Dialogrutor JOptionPane används för att visa dialogrutor Ett urval av de statiska metoderna: showconfirmationdialog showinputdialog showmessagedialog String name = JOptionPane.showInputDialog("Vad heter du?"); If (name!= null) { // null if user cancels JOptionPane.showMessageDialog(null, "Hej " + namn); } 15

Dialogrutor(2) Körexempel: 16

Fönster Rätt snart vill man rita upp egna typer av fönster Lösning: Klassen JFrame implementerar ett fönster För att skapa ett eget, skriv en klass som ärver från denna Fyll sedan fönstret med de komponenter du vill ha 17

Fönster, exempel public class MyFrame extends JFrame { public MyFrame(){ super("välkomstfönster"); JLabel text = new JLabel("Hej allesammans!"); getcontentpane().add(text); setsize(new Dimension(300, 200)); setdefaultcloseoperation(jframe.exit_on_close); } } public static void main(string[] args) { JFrame thewindow = new MyFrame(); thewindow.setvisible(true); } 18

Komponenter 19

Layouthanterare Problem: Om två eller flera komponenter läggs till, var placeras de? Lösning: Använd en layouthanterare getcontentpane().setlayout(new FlowLayout()); FlowLayout GridLayout(r, k) BorderLayout BoxLayout(riktning)... Komponenterna placeras från vänster till höger i rader, uppifrån och ner Delar upp fönstret i rutmönster om r rader och k kolumner. Alla rutor (d.v.s. komponenter) blir lika stora Delar upp fönstret i fem delar: längs sidorna och i mitten: NORTH, SOUTH, WEST, EAST, CENTER En gör-det-själv layout. Placerar komponenterna brevid varandra antingen i x-led eller y-led. Lätt att förstå, mycket att skriva. 20

Layouthanterare(2) Gissa layouthanterare: Borderlayout - Layouten blir ofta ganska grov + Enkel att använda 21

Händelser och lyssnare För att programmet ska kunna reagera på händelser kopplar man på olika typer av lyssnare till komponenter i fönstret Lyssnarna kan fånga upp händelser som knapptryckningar och musrörelser Observera att lyssnare är interfaces, du måste själv implementera dem Händelse ActionEvent MouseEvent KeyListener MenuEvent Lyssnare ActionListener MouseListener, MouseMotionListener KeyEvent MenuListener 22

Graphics Problem: Ibland vill man inte använda standardkomponenter, utan behöver skapa något helt eget Lösning: Skapa en egen komponent genom att ärva från JComponent Överskugga metoden paintcomponent(graphics g) Nu finns tillgång att fritt rita ut sin komponent Komponenten kan sedan hanteras som vilken annan komponent som helst, t.ex. av en layouthanterare 23

Graphics(2) En Graphics kan ses som en pensel associerad till en viss rityta setcolor, setpen, setbrush, setfont drawline drawrect, fillrect drawoval, filloval drawimage drawstring Relaterade klasser: Color Pen Font Representerar en 24 bitars färg Beskriver en penna: tjocklek, stil.. Beskriver typsnitt 24

JComponent Användbara metoder: void repaint() Be om utritning void paintcomponent(graphics g) Anropas vid utritning Dimension getsize() Ger komponentens nuvarande storlek void setpreferredsize(dimension dim) Sätter komponentens önskade storlek 25