Inlupp1 - kommentarer. Uppgift 2. Uppgift 2

Relevanta dokument
I18N språkoberoende. ResourceBundle. Ikoner. Färg. Javadoc. Meny

JAR som tar eller zip. Java. Exekvering

Lektion Händelsehanterare

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

Upplägg. Introduktion. Examination. Mål. Konsekvenser. Java. Kursen heter konstruktion, ej design eller formgivning.

Vad kännetecknar en god klass. Vad kännetecknar en god klass. F12 Nested & Inner Classes

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

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

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

Lösningar för tenta 3 DAT043,

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

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

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

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

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

Lycka till! TENTAMEN: Objektorienterade applikationer. Läs detta! 1 (6) Tentamen

Tentamen FYTA11 Javaprogrammering

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING

12 Metaprogrammering i Java

Tentamen i Objektorienterad programmering

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

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

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

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

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

Kopiering av objekt i Java

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.

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

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

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

"Är en"-relation. "Har en"-relation. Arv. Seminarium 2 Relevanta uppgifter. I exemplet Boll från förra föreläsningen gällde

Laboration 10 - Eclipse

Konstruktion av användargränssnitt. Kursvärdering Om Java. Ingen tenta. Förändringar Missar. Lärare

OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 2

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

Internationalisering/lokalisering på webben

Exemple på Tentauppgifter Webbprogrammering

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Tentamen Programmering fortsättningskurs DIT950

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

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

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

Den som bara har en hammare tror att alla problem är spikar

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

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

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

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

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

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

Java-concept och Swing. Swing low, sweet chariot

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

Föreläsning 3. Stack

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

DAT043 Objektorienterad Programmering

PROGRAMMERINGSTEKNIK TIN212

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Java, klasser, objekt (Skansholm: Kapitel 2)

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

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

NetBeans 5.5. Avsikt. Projektfönster

MVC-mönstret. model-view-control i Swing

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

Malmö högskola 2007/2008 Teknik och samhälle

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

This work by. Fredrik Wendt. is licensed under a. Creative Commons

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

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

Översikt MERA JAVA OCH ECLIPSE. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning. Uttryck och tilldelning

Beskrivning av gesällprov RMI Chat Mikael Rydmark

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Malmö högskola 2007/2008 Teknik och samhälle

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 Programkonstruktion. Föreläsning 2 2 nov 2016

Gränssnitt för FakeGranska. Lars Mattsson

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

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

Tentamen FYTA11 Javaprogrammering

Tentamen i Grundläggande programmering STS, åk 1 lördag

Projekt 2 XL. Observer-mönstret

Objektsamlingar i Java

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

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

Chapter 4: Writing Classes/ Att skriva egna klasser.

Objektorienterad Programmering (TDDC77)

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

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

Ingenjörsfirman Stéen Java Sida 1 av 1

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

Mer om grafiska komponenter. Händelsestyrda program

Tentamen i Grundläggande Programvaruutveckling, TDA548

Reguljära uttryck. Reguljära uttryck. Nu kommer en siffra78 och en till SIFFRA(78) men utan 7kstuga SIFFRA(89)

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

Lösningar för tenta 2 DAT043,

Föreläsning 2, vecka 6: Tillstånd i objektorienterade program (och mera interface)

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

F4. programmeringsteknik och Matlab

Transkript:

Inlupp1 - kommentarer Var gärna mer specifika när ni skriver i dagboken, jämför: arbetade på inlupp1 la in en avsluta-knapp i gränssnittet Servern ska självfallet startas när klienten startas och på samma sätt avslutas först när klienten avslutas. Sleep behövs inte i klienten utan fanns i testkoden mest för att tydligare illustrera förloppet. Ni följer javas kodkonventioner bra, men kanske ska man minska indraget till 2? /* -*- c-basic-offset: 2; -*- */ Generellt sett bra javadoc och kommentarer, men koda och kommentera på engelska Informationsteknologi #1 Uppgift 2 Deadline måndag 9/2 klockan 12.00, om två veckor Syfte Lära sig hur man internationaliserar program, hur centraliserad färgläggning fungerar, samt - viktigast - vad en listener är. Inre och anonyma klasser ska vara bekanta. Program ska kunna komma ihåg vad användaren gjorde senast. Informationsteknologi #2 Uppgift 2 1. Themes för all färg- och texthantering. 2. Inre klasser där så behövs. 3. Ikoner. 4. Meny med åtminstone Exit och About. 5. Actions, för alla knappar och menyer. 6. Internationalisering, I18N. Stödja minst 2 språk, via Property-filer. Alla strängar (som används i gränssnittet) ska vara internationaliserade. 7. Klienten ska komma upp med samma storlek och på samma plats som den hade vid förra avslut. (Spara/Läs från fil) 8. Resize. Klienten ska vara vettig trots att man ändrar storlek på fönstret 9. Ta emot och visa chat-meddelanden. Kaffe-meddelanden ska på något sätt hanteras annorlunda än de andra typerna av meddelande. 10. Presentera vilka användare som är online just nu. 11. Skriv en ant-regel inlupp2-dist för att göra en körbar jar som startar blazon.ui.inlupp2. 12. Skriv två ant-regler inlupp2-sv och inlupp2-en för att starta klienten på svenska respektive engelska. Informationsteknologi #3 1

Gruppträffarna Uppgift till torsdagen den 29/1 Presentera minst tre olika layout managers, hur de fungerar grafiskt och hur de hanterar storleksförändringar. Inga kodexempel behövs. Uppgift till torsdagen den 5/2 Förklara hur listeners och events hänger ihop - dvs vad är det som händer under ytan när en knapp trycks ned? Inga djupdykningar i kodexempel behövs, utan det viktigaste är att principerna framgår. Informationsteknologi #4 I18N språkoberoende java -Duser.region=SE -Duser.language=sv blazon.ui.inlupp1 java -Duser.region=US -Duser.language=en blazon.ui.inlupp1 Fil: blazon/ui/lang.properties: ui.ok = Ok ui.cancel = Cancel Fil: blazon/ui/lang_sv.properties: ui.ok = Okej ui.cancel = Avbryt ResourceBundle rb = ResourceBundle.getBundle( blazon.ui.lang ); String okstring = rb.getstring( ui.ok ); JButton okbutton = new JButton(okString); Informationsteknologi #5 ResourceBundle Läs javadoc för RB.getBundle() + alla getbundlemetoderna Bra om man enkelt kan se i resurs-filen var texten används: ui.menu.exit.name ui.menu.exit.mne = Exit = x Misslyckad försök: exit=exit Informationsteknologi #6 2

Färg/Theme Java Look & Feel Guidelines: http://java.sun.com/products/jlf/ed2/book/index.html Provkör och se kod: /it/sw/java/jdk/1.4.2/demo/jfc/metalworks Informationsteknologi #7 Kapitel 9: Look & Feel Guidelines Kapitel 6: Informationsteknologi #8 Ikoner På följande url finns en artikel om de ikoner Sun delar ut: http://java.sun.com/developer/techdocs/hi/repository/ Ikonerna finns även lokalt under: http://www.it.uu.se/edu/course/homepage/devgui/vt04/material/icons Informationsteknologi #9 3

Informationsteknologi #10 Ikoner i koden URL u = Client.class.getResource("exit.gif"); JButton exitbutton = new JButton(new ImageIcon(u)); Förutsätter att exit.gif ligger bredvid Client.class Alltså så måste man kopiera över sådan data efter kompilering (görs av Ant) All data, även bilder, måste ligga i src, eftersom det är den katalogen man sparar i CVS Informationsteknologi #11 Kapitel 8 i Eckel Viktigaste kapitlet! Inner classes Informationsteknologi #12 4

Inner class public class Foo { int i; public class Bar { int k = i; void test() { A a = new A(); B b = new B(); Informationsteknologi #13 Inner classes, upcasting interface Sedlar { int getnoof100(); public class Bankomat { public Sedlar getsedelstatus() { return new S(); // we only have 500! private class S implements Sedlar { public int getnoof100() { return 0; public int get500() { return 42; Informationsteknologi #14 Inner classes, anonymous interface Sedlar { int getnoof100(); public class Bankomat { public Sedlar getsedelstatus() { return new Sedlar() { public int getnoof100(){return 0; ; ; Informationsteknologi #15 5

Är det någon skillnad? interface Sedlar { int get100(); Sedlar s1 = new Sedlar() { public int get100() { return 0; ; class Foo implements Sedlar { public int get100() { return 0; Sedlar s2 = new Foo(); Informationsteknologi #16 Scope for inner class If you re defining an anonymous inner class and want to use an object that s defined outside the anonymous inner class, the compiler requires that the argument reference be final, like the argument to dest( ). If you forget, you ll get a compile-time error message. En inre klass ser yttre omgivande klass (dess globala var.) variabler deklarerade som final Informationsteknologi #17 Scope class Bank { int i; void bills() { int k = 0; final int f = 7; Sedlar s1 = new Sedlar() { // ser i & f, ej k public int get100() { return 0; ; // Bank Informationsteknologi #18 6

ActionListener (AL) // KASS, ej OOP class Foo implements ActionListener { JButton b = new JButton(); b.addactionlistener(this); // ugly! wrong! // doit Informationsteknologi #19 AL 2 // Nja, ibland ok oftast inte class Foo { class Bar implements ActionListener { // doit JButton b = new JButton(); b.addactionlistener(new Bar()); Informationsteknologi #20 AL 2.1 class Foo { class Bar implements ActionListener { // doit Bar bar = new Bar(); JButton b1 = new JButton(); JButton b2 = new JButton(); b1.addactionlistener(bar); b2.addactionlistener(bar); // smart, delar action Informationsteknologi #21 7

AL 3 // Bra! class Foo { JButton b = new JButton(); b.addactionlistener(new ActionListener() { // doit ); Informationsteknologi #22 AL 4 scope? class Foo { private int i; int k = 0; final m = 0; JButton b = new JButton(); b.addactionlistener(new ActionListener() { // ser i och m, ej k ); Informationsteknologi #23 Action Actions är ett sätt att på ett och samma ställe definiera egenskaper som behövs i samband med t.ex. knappar. Se javadoc för javax.swing.action. Innehåller Accelerator, Mnemonic, Name, Icon, Description (kort+lång), Enabled?, command Exempel new JButton(new ExitAction()); new JButton(new ExitAction(rb)); How to Use Actions http://java.sun.com/docs/books/tutorial/uiswing/misc/action.html Informationsteknologi #24 8

Action exempel Action left = new AbstractAction("Go left", new ImageIcon( a.gif")) { public void actionperformed(ae e) { move( left ); ; JButton b = new JButton(left); JMenuItem menuitem = moveaboutmenu.add(left); left.setenabled(false); Informationsteknologi #25 Action Det är ej nog att göra som i förra exemplet; vi behöver fler funktioner än namn & ikon från en Action mnemonic, description, Bättre skapa en inre klass, med riktig konstruktor Kom ihåg Allt ska vara språkoberoende! Informationsteknologi #26 Meny http://java.sun.com/docs/books/tutorial/uiswing/components/menu.html Använd Actions! Informationsteknologi #27 9