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

Relevanta dokument
TDDC30. 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

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

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

Språkkonventioner och redigering av tal.

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

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

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

Mer om grafiska komponenter. Händelsestyrda program

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

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

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

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

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

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

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

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

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

Föreläsning 15: Repetition DVGA02

OOP Objekt-orienterad programmering

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

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

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

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

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

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

GUI Nyckelbeståndsdelar

Java Direkt, upplaga 5 Innehåll

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

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

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 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

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

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

Objektorienterad Programmering (TDDC77)

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

Algoritmer. Två gränssnitt

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

Java-concept och Swing. Swing low, sweet chariot

TDDC Terminologi Uppdaterad Fö #1

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

Lösningsförslag till tentamen

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

Lektion Händelsehanterare

Klasser för grafik och bildhantering

Föreläsning 10. ADT:er och datastrukturer

Tentamen , Introduktion till Java, dtaa98, dtea53

Länkade strukturer, parametriserade typer och undantag

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

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

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

Exempel på användning av arv: Geometriska figurer

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

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

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

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

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

Java Direkt, upplaga 7 Innehåll

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

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

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

1 Grafiska komponenter

Java Direkt, upplaga 6 Innehåll

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

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

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

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

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

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. Exempel: FlowLayout. Klassen FlowLayout

4.4 Swing ett interaktivt grafiskt gränssnitt

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

Lösningsförslag till tentamen

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 1

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 2

Formatering Ofta vill man skriva ut på en viss form double f = 10.0/3.0; System.out.println(f); // 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 x f e Heltal, decimal fom Heltal, hexadecimal form Reellt tal, decimalform Reellt tal, exponentform - Vänsterjustering + Talets tecken skrivs ut blankt Positivt tal inleder med blank, Siffrorna grupperas tre och tre 6 Fler specificerare finns, se javas API-dokumentation 3

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. 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 4

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, 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 files, or risk losing data! scanner.nextint(); //this will produce an error, since file is closed 10 5

Hantering av (binära) datafiler För datafiler, använd DataInputStream resp. DataOutputStream String filename = myfile.dat ; try { DataInputStream 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 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 6

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 olika ut 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 7

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) { JOptionPane.showMessageDialog(null, Hej + namn); } 15 Dialogrutor(2) Körexempel: 16 8

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 9

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... Komponenterna placeras från vänster till höger, 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 10

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 MenuListener Lyssnare ActionListener MouseListener, MouseMotionListener KeyEvent MenuEvent 22 11

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) Graphics ska ses som en verktygslåda för att rita och är dessutom själva ritytan 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 12