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

Relevanta dokument
JAR som tar eller zip. Java. Exekvering

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

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

F4. programmeringsteknik och Matlab

Classes och Interfaces, Objects och References, Initialization

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Design och konstruktion av grafiska gränssnitt

Design och konstruktion av grafiska gränssnitt

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

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

DAT043 Objektorienterad Programmering

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

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

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

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

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Chapter 4: Writing Classes/ Att skriva egna klasser.

Kursutvärdering/1MD222 Konstruktion av användargränssnitt II Datum för sammanställning:

JAVA Mer om klasser och objektorientering

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Ingenjörsfirman Stéen Java Sida 1 av 1

(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

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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)

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

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

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

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

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

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

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

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

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

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

Lösningar för tenta 2 DAT043,

Lösningar för tenta 3 DAT043,

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

Inlupp1 - kommentarer. Uppgift 2. Uppgift 2

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

UML. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Det finns många flaggor till g++,

TDDC77 Objektorienterad Programmering

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

OOP Objekt-orienterad programmering

Lösningsförslag till tentamen

Tentamen. Lösningsförslag

Laboration 1 - Grunderna för OOP i Java

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

Föreläsning 15: Repetition DVGA02

Objektorienterad Programmering (TDDC77)

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

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

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

TENTAMEN OOP

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

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

Arv. Objektorienterad och komponentbaserad programmering

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

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

Objektorienterad Programmering (TDDC77)

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

TUTORIAL: KLASSER & OBJEKT

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

TENTAMEN I PROGRAMSPRÅK -- DVG C kl. 08:15-13:15

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

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

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

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

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

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

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

Programmeringsteknik II

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

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

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

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

Laboration 10 - Eclipse

Föreläsning 2 Programmeringsteknik och Matlab DD1312. Programspråk. Utskrift på skärmen

Att använda Java SE JDK 6

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

Outline. Objektorienterad Programmering (TDDC77) Laborationsserie del två. Vad händer under HT2. Introduktion HT2 UML.

Objektorienterad Programmering (TDDC77)

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

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

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

Arrayer med primitiva datatyper

PROGRAMMERINGSTEKNIK TIN212

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

F1 - Introduktion. ID1004 Objektorienterad programmering Fredrik Kilander

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

Tentamen i Grundläggande Programvaruutveckling, TDA548

Transkript:

Konstruktion av användargränssnitt Kursvärdering 2002 Lärare Erik Borälv (1157), Arvid Kauppi (1258) Kurswebb, kolla ofta för nyheter och ändringar: http://www.hci.uu.se/courses/1it110/vt03/ Kursen var mycket omtyckt av studenterna som ansåg att det var inspirerande med praktiska uppgifter istället för tentamen. Studenterna ansåg även att det var roligt att lära sig Java Swing. Fler och djupare föreläsningar efterlyses dock av studenterna. Om Java Ingen tenta Hur bra var du på JAVA innan kursen? dålig mycket bra 1 2 3 4 5 22 10 29 10 1 Antal svar: 62 Medelvärde: 2.81 Hur bra var du på JAVA efter kursen? dålig mycket bra 1 2 3 4 5 0 2 28 38 4 Antal svar: 72 Medelvärde: 3.61 Vad tycker du om praktiska uppgifter istället för tentamen? dålig mycket bra 1 2 3 4 5 0 0 3 21 49 Antal svar: 73 Medelvärde: 4.63 Missar Förändringar 2003 Vi missar ibland tala om vad som varit bra, eftersom vi letar fel i era inluppar Säg till oss om vi slarvar! Fler/djupare föreläsningar efterfrågades Det är avsiktligt, men vi ger gärna fler föreläsningar på begäran Aningen högre tempo; fler kan Java Mindre grupper för bättre arbete Mer handledning genom Arvid (+Joppe?) Tydligare checklista för inluppar Aningen modifierade gruppträffar Mer redovisning än utfrågning 1

Kursinriktning Upplägg Kursen heter konstruktion, ej design eller formgivning. det handlar främst om att lära sig att bygga gränssnitt som är datalogiskt sunda kursen är 100% praktiskt orienterad; vetenskapliga teorier finns, men vi ska lära oss genom praktiska övningar Grupparbete 4 x Inlupp Ej tenta Valfri litteratur (finns på nätet) Föreläsningar: frivilliga, uppgiftutdelning, kort genomgång av teori Gruppträffar, obligatoriska, oftast torsdagar Gruppträffar Gruppträff 45 min. per vecka; 3 grupper/träff Obligatoriska, anmäl förhinder via någon i gruppen Redovisning Ni: kod på papper, skärmdump på papper, ha koll på aktuell tidsredovisning, förbered frågor Handledning Vi: exempel, svar, feedback, 8 9 : a+b+c 9 10: d+e+f 10-11: g+h+i 11-12: j+k+l 13-14: m+n+o 14-15: p+q+r 15-16: s+t+u 16-17: reserv Byt tid med varann om gruppen har förhinder en viss tid Examination Mål Aktivitet och visad förståelse på gruppträffar Personlig tidsredovisning Gruppens resultat Presentation/dokumentation av lösningar Betyg: 3, 4, eller 5 Efter kursen ska ni: på egen hand kunna implementera ett komplext grafiskt gränssnitt förstå hur gränssnitt uppdaterar sig själva, om rätt gjorda veta hur man bäst kopplar ihop logik med presentation kunna göra egna grafikkomponenter om så behövs 2

Språkoberoende Client-server Dynamiskt beteende Java Alla moment görs i Java, med editor + kompilator (ej builders) Gränssnittsbiblioteket heter Java Swing Detta är ej en kurs i objektorientering, krävs heller inte Behövs hjälp här så säg till och vi kan föreläsa om det! För att lära sig Java så är det viktigt med egna studier och försök En seriös initial insats är värd mycket om man inte redan kan Java 3

Nästa steg Inlupp 1 Registrering, kod 10 Gruppindelning 4 personer/grupp Anmäler sig på lappar/pärm vid rum 1157 Frivillig labb i morgon (känna på uppgift 1, prova CVS & Makefile) Ska in måndag 28:e! Enkel! Är ej speciellt viktig för kursen som helhet mest för att komma igång med Swing och gruppen Kolla kurssidan för instruktioner Mer hjälp på labben (tisdag) samt gruppträffen (torsdag) Laboration Instruktioner finns på: http://www.hci.uu.se/courses/1it110/vt03/lab.shtml Läs helst igenom innan.. När: Tisdag 21/1-03 Kl. 15.15. Var: Sal 1515 Polacksbacken Vad: Makefile, make och CVS Vem: De som inte har vana av ovanstående saker. Dvs. labben är bra för att komma igång men inte obligatorisk. Paus + Java 101 JAR som tar eller zip Make Används för att packa ihop en mängd filer jar cvf foo.jar ~user/inlupp1/* Packa upp jar xvf foo.jar Kan vara körbar Fil manifest + class-filer på rätt ställe Main-Class: cachet.ui.main java jar foo.jar Finns exempel i utdelad kod för inlupp1 Verktyg för att kompilera stora mängder filer man vill inte kompilera i onödan Används också av bekvämlighet Filen ska heta Makefile Kan vara enkel eller hur komplicerad som helst! http://www.gnu.org/software/make/make.html Känsligt för tabbar det ska vara (\t), ej space 4

Make - exempel Java #JAVAC=jikes JAVAC=javac all: t1 t1: t2 ${JAVAC t1.java t2: clean ${JAVAC t2.java clean: rm *.class Ett objektorienterat språk, påminner mycket om C och C++. Mycket enkelt att lära enkel syntax inga pekare garbage-collection färdiga bibliotek med (massor!) kod manualer alltid on-line; literate programming Exekvering Utrustning (Win) Kompilera javac Foo.java jikes Foo.java Skapar fil Foo.class Köra java Foo Java SDK (1.4.1) java.sun.com Editor (xemacs, gnu emacs, ) www.xemacs.org Makefile/bat/script (underlättar mycket) http://www.cygwin.com/ setup.exe (välj: openssh, cvs, make) Exempel på kod Hemlig eller offentlig public class Person { private String name; public Person(String s) { name = s; public String getname() { return name; public void sayhi(string s) { // notera append på strängar System.out.println( Hi + s); public String name; private int phone; protected User user; // friendly, syns inom ett package int bar = 42; se kap. 5, Eckel 5

Skapa objekt Constructor int i = 7; // primitiv, ej objekt String s = foo ; Vector v = new Vector(); Car volvo = new S80( red ); // måste inte hålla i objekten; fult new Person(new Name( erik )); public class Car { // attribut public String model; // konstruktor public Car(String model) { this.model = model; Car c = new Car( SAAB ); Primitiver Scope Primitiver int, float, long, char, Objekt Integer, Float, Long, Primitiver finns av effektivitetsskäl Objekt försvinner av sig självt { String s = new String( Hej ); // s är nu borta. helt OK. Namn på klass och fil Attribut public class Car { // stor bokstav! public String model; private String color; Måste finnas i en fil som heter Car.java public class Car { public String model; private String color; Car c = new Car(); c.model = Volvo ; // ok c.color = Green ; // fel 6

Metoder Returvärden public class Car { private String color; public void setcolor(string color) { this.color = color; // test Car c = new Car(); c.setcolor( Blue ); public class Car { public int maxspeed() { return 250; // test Car saab93 = new Car( SAAB ); int max = saab93.maxspeed(); Package Package Ettsättattpacketerakodföratt undvika krockar, visa vem som är ägare, visa hur koden är strukturerad com.volvo.salary com.sun.http.server com.borland.jbuilder.ui.menu Används ihop med import package kurs.konstruktion; import com.util.calculator; import java.math.*; // all in math! public class Foo { private Calculator cal; Static Debug Speciellt fall då ett attribut bör finnas oavsett om objektet är skapat eller ej. public class Integer { public static int MAX = 12345678; if (salary > Integer.MAX) // yahoo! // not nice, but works System.out.println( Val is = + val); // better private static Logger log = Logger.getLogger("cachet.ui"); log.severe( Going down ); log.warning( Salary is null ); log.info( Created account ); 7

Kommentarer Javadoc // this is a one-line comment /* two lines of bad comments */ /* * better to * write a * on each line */ Literate programming, Donald Knuth Bra kommentarer Namngivning av variabler och metoder /** A class comment */ public class DocTest { /** A variable comment */ public int i; /** A method comment */ public void f() { getlastname() setmaxoflines(int i) String longname = foo ; int loopcounter = 7; Eckel Ärvning Nu har vi gått igenom 133 sidor ur hans bok... class Student extends Person { private String studyprogram = ITP ; Finns bara enkel ärvning (extends)! Man kan uppfylla flera interface (implements): class Student implements Person, Poor { private String studyprogram = ITP ; 8

Interface, kap 8 Interface, kap 8 interface Car { int MAXSPEED = 250; // alltid public, ej friendly void brake(); void shift(int gear); class Saab implements Car { public void brake() { // do something public void shift(int gear) { // do sometihng Klasser, nästlade Klasser: composition class A { int i; // inner class class B { int k = 0; A { B b = new B(); You simply create objects of your existing class inside the new class // Bil.java class Hjul { int antal = 4; public class Bil { private Hjul hjul = new Hjul(); Klasser: inheritance Try/catch class Bil { // public class Volvo extends Bil { /// public class UrlStat { UrlStat(String s) { try { URL url = new URL(s); catch (MalformedURLException e) { e.printstacktrace(); 9

Stack Trace Swing java.lang.nullpointerexception at se.uu.it110.icqui.icqclient.setstatus(icq- Client.java:102) at se.uu.it110.icqui.icqui$15.actionperformed(icqui.java:343) at javax.swing.jcombobox.fireactionevent(jcombobox.java:654) at javax.swing.jcombobox.selecteditemchanged(jcombobox.java:678) at javax.swing.jcombobox.contentschanged(jcombobox.java:730) at javax.swing.abstractlistmodel.firecontentschanged(abstractlistmode.jav a:82) at javax.swing.defaultcomboboxmodel.setselecteditem(defaultcomboboxm odel.java:90) at javax.swing.jcombobox.setselecteditem(jcombobox.java:377) at javax.swing.jcombobox.setselectedindex(jcombobox.java:414) at... Kap. 14 + SDK online docs: JPanel BorderLayout JLabel JButton JTextField 10