Föreläsningar nov 19, nov 20 v 47.
|
|
- Marcus Johansson
- för 6 år sedan
- Visningar:
Transkript
1 Föreläsningar nov 19, nov 20 v 47. Trådar, Undantag, DFA mm. Att göra ett dator-femtonspel. Ett "klick"-styrt grafiskt femtonspel som dessutom ändrar sig själv. I "vickspelet" vill vi att datorn med jämna tidsintervall skall anropa metoden tick(..) i föremålet av typ Gadget. Vi behöver en "klocka" som oberoende av programmet i övrigt med intervallet deltat sekunder anropar tick(deltat). Metoden tick(double deltat) avläser dragreglagen, räknar ut föremålets nya läge efter tiden deltat och ritar ut spelets nya utseende. I Java kallas en följd instruktioner som datorn kör för en tråd (engelsk thread). I alla ickegrafiska program hittills har våra datorprogram bara bestått av en enda tråd. Traditonellt brukar man i elementära programmeringskurser bara studera sådana program. I våra femtonspel har applikation startat med anropet till main vars körning varit en tråd som ritat femtonspelet, varefter tråden slutat. Varje klickning på en plats (bricka) har startat en ny kortlivad liten tråd som har kör koden i actionperformed. Metoden actionperformed har anropat flytta(..) i femtonspelet som ändrat femtonspelet om vi klickat platsen intill tomma platsen. Därefter har tråden slutat. I vickspelet behöver vi en tråd som fungerar som en klocka och t ex varje sekund anropar förmålets metod tick(...). För att visa hur sådan klocka programmeras skall jag förse vårt femtonspel med en oberoende tråd, en klocka, som varje sekund försöker flytta en slumpvist vald bricka. Att spela SpelaFemtonspel4 är alltså svårare eftersom "någon varje sekund lägger sig i". Eftersom troligheten att den slumpvist valda brickan är intill tomma brickan är ungefär 0.25 så ändras spelet gernomsnittligt ca var fjärde sekund. Ändrar man klockans periodtid till delar av sekunder är säkert spelet blodtryckshöjande. Att programmera trådar brukar, tros att sådan programmering är vanlig i praktiken, anses som avancerad programmering och studeras i kurser som brukar kallas "realtidsprogrammering", "reaktiv programmering", "parallellprogrammering" eller dylikt. I de följande beskrivs ej trådprogrammering ordentligt. Jag använder ideer som beskrivs i kap 9 i Jan Skansholms b
2 Java direkt, som varmt rekomenderas för den intresserade. I Java ingår språkelement för trådprogrammering i språket, vilket är ovanligt. I DD behandlas trådar i kap 14. I denna kurs hoppas jag det räcker med att läsa detta för att kunna programmera"vick-spelet". Man behöver inte förstå alla detaljer om hur den givna klassen för att göra en klocka är programmerad. Vi programmerar klockor med en klass LKClock så att klockor kan påverka alla objekt som har en metod tick(double time). För att understödja detta inför vi ett gränsnitt interface Ticked { public void tick(double deltat); och skriver en konstruktor i LKClock så att en klocka när den skapas med får veta vilket objekt av typen Ticked den ska en kan påverka med tick(..) och hur ofta : class LKClock implements Runnable { public Thread aktivitet = new Thread(this); // ny tråd // tråden startas med aktivitet.start() och datorn utför då // instruktionerna i metoden run i denna (this) instans private Ticked obj; private double ticktime = 1; //påverka detta objekt //påverka med detta intervall s public LKClock(Ticked iobj, double iticktime) { obj = iobj; ticktime = iticktime; public void run() { // anropas indirekt vid aktivitet.start(); while(true) { // klockan går i evighet try { // sleep kan kasta undantag som måste fångas Thread.sleep((int) (ticktime*1000)); // tråden "sover" // ticktime*1000 ms catch (InterruptedException e) { obj.tick(ticktime); //påverka objektet (tex femtonspelet) Men nu skall vårt femtonspel påverkas av en klocka. Vi kompletterar vår klass Femtonspel med en instans lkclock av en klass LKClock och en ny metod tick(double time). Objeketet lkclock anropar ju tick(...).
3 import java.util.*; // SpelaFemtonspel4 som SpelaFemtonspel3 class Femtonspel extends Frame implements Ticked { // som förut private LKClock lkclock; public Femtonspel() { // som förut lkclock = new LKClock(this); lkclock.aktivitet.start(); // startar klockan // som blir en oberoende tråd public void tick(double deltat) { int k = (int) (16.0*Math.random()); flytta(k); // som förut Ytterligare ett exempel på ett klockstyrt objekt : En TeknologTamagotchi En Teknologtamagotchi är ett datorprogram som fungerar som ett lite gosedjur (en cirkel) som man skall försöka få så stort som möjligt. Genom att trycka på knapparna kan man tillfredställa dess behov och på så sätt få den att växa. Vissa sekvenser av knapptryckningar skall vara bättre än andra. Till exempel är sekvensen sova - tenta - festa en kombination som premieras med extra stor tillväxt medan sekvensen festa - sova - tenta är en dålig kombination som leder till minskad storlek. Om samma sak händer tre gånger i rad blir tamagotchin uttråkad och minskar sin radie till hälften Gör också så att tamagotchin blir uttråkad och drar ihop sig om inget händer inom 6 sekunder. - Teknolog-tamagotchi. Tenta Festa Sova Plugga
4 Vi gör en design där vi skiljer på modellen av tamagotchin och bilden av tamagotchin. Att göra så är att tillämpa ett design mönster - design pattern - som kallas Model- View-teknik. Det finns i Java bibllioteket stöd för detta design mönster i form av klasserna Observable och Observer, men jag använder inte dessa klasser här. Objektetet som är bilden av tamagotchin har jag också gjort till lysnnare på de fyra knapparna. Eftersom då detta objekt lyssnar på fyra olika komponenter (de fyra knapparna) måste vi använda metoden getsource när vi skriver actionperformed. Växelspelet mellan instansvariabeln count och metoden gets(char b) kan belysas med denna bild: deterministisk finit automat (DFA) c radie = 0.3*radie c c c c c count=0 count=1 count=2 count=3 count=4 count=5 Ett klass diagram finn efter nedanstående implementation. Impelemntation : import java.awt.*; import java.awt.event.*; public class PlayTamagotchi { public static void main(string [] arg) { Tamagotchi t = new Tamagotchi(); TView tv = new TView(t); class Tamagotchi implements Ticked { private int radie = 40; private Sequence seq = new Sequence(); private CPanel cpanel; private LKClock clock; private int count = 0; public Tamagotchi() { clock = new LKClock(this, 1); clock.aktivitet.start(); public void tick(double itime) { gets( c ); public void gets(char b) { if (b == c ) { count = count + 1; if (count == 6) { count = 0; radie = (int) (((double) radie)*0.3); cpanel.update(radie);
5 else { count = 0; seq.add(b); radie = (int) (((double) radie)*seq.getfactor()); cpanel.update(radie); public void setview(cpanel icp) { cpanel = icp; class Sequence { private char vold; private char old; private char act; public void add(char ib) { vold = old; old = act; act = ib; public double getfactor() { System.out.println("NU = " + vold + old+act); if (vold == old && vold ==act) { return 0.5; else if (vold == s && old == t && act == f ) { return 1.5; else if (vold == f && old == s && act == t ) { return 0.5; else if (vold == f && old == f && act == t ) { return 0.1; else if (vold == p && old == s && act == t ) { return 2.0; else { return 1.0; class TView extends Frame implements ActionListener { private Tamagotchi t; private CPanel cpanel; private Button tenta = new Button("Tenta"); private Button festa= new Button("Festa"); private Button sova= new Button("Sova"); private Button plugga= new Button("Plugga"); public TView(Tamagotchi it) { super("teknolog-tamagotchi"); t = it; setsize(400,400); setlayout(new BorderLayout()); cpanel = new CPanel(); add("center", cpanel); add("north", tenta); add("west", festa); add("east", sova); add("south", plugga); tenta.addactionlistener(this); festa.addactionlistener(this); sova.addactionlistener(this); plugga.addactionlistener(this); setvisible(true); t.setview(cpanel); t.gets( );
6 public void actionperformed(actionevent e) { if (e.getsource() == tenta) { t.gets( t ); else if (e.getsource() == festa) { t.gets( f ); else if (e.getsource() == sova) { t.gets( s ); else if (e.getsource() == plugga) { t.gets( p ); else { class CPanel extends Panel { private int r = 10; public CPanel() { setvisible(true); public void paint(graphics g) { g.setcolor(color.red); g.filloval(150-r, 150-r, 2*r, 2*r); public void update(int ir) { r = ir; repaint();
7 PlayTamagotchi JPanel public static void main(..) { Tamagotchi t TView tv Frame ActionListener CPanel private int r = 10; public CPanel() public void paint(graphics g) public void update(int ir) TView private CPanel cpanel private Tamagotchi t private Button tenta private Button festa private Button sova private Button plugga 4 Button Sequence public TView(Tamagotchi it) public void actionperformed(...) private char vold; private char old; private char act; public void add(char ib) public double getfactor() Ticked LKClock Runnable public Thread aktivitet private RTicked obj: private double ticktime public LKClock(Ticked ioj, double iticktime) public void run() Tamagotchi private int radie private Sequence seq = new Sequence(); private CPanel cpanel; private LKClock clock; private int count public Tamagotchi() public void tick(double itime) public void gets(char b) public void setview(cpanel icp) Översikt över awt och swing paketen. Undantag (Exceptions) Kontrollskrivning 1. Dessa avsnitt finns endast ipappersupplagan)
8 Hemuppgifter redovisning v48 (preliminärt). 1. CBA-hemuppgift : Implementera ett "vick-spel" ett grafiskt användargränsnitt (GUI) enligt nedanstående figur (ungefär): läget för föremålet (typ Gadget, inte en grafisk komponent), en liten cirkel brädet (av typ Board en sorts JPanel) dragreglage (typ JSlider) dragreglage (typ JSlider) Om man med musen påverkar dragreglagen så innebär det att brädet lutas och föremålet accelereras. Spelet går ut på att få föremålet i hålet och undvika att föremålet hamna utanför brädet. Reglerna för föremålets rörelser beskrivs i tidigare hemuppgifter. Så här gjorde jag: Min utfomning av lösningen antyds av klassdiagrammet på nästa sida. Det blev väl mycket "känner till pilar" men jag kommer inte på någon mer elegant design på stubben. Använd BorderLayout som i förra veckans hemuppgift för att bygga ett Game (allt i bilden ovan) som är ett JFrame. Ett Game har också en klocka LKClock och ett föremål av typ Gadget. Klockan är en tråd som startas (sist i konstruktorn Game när allt är klart för start). När klockan instansieras får den reda på vilket objekt den skall "ticka" (i vårt fall föremålet av typ Gadget)och med vilket intervall. Klockan "tickar", dvs anropar tick i förmålet. Metoden tick i föremålet frågar då spelet efter vinklarna (dvs inställningarna på de två dragreglagen av tvp JSliders) och en ny position och en ny hastighet räknas ut för föremålet. Metoden tick i föremålet kollar därefter med brädet om det kommit i hålet eller utanför brädet, i så fall återplacerar föremålet sig själv i startläge. Till sist så beordrar metoden tick i föremålet omritning av brädet. Provkör min lösning på /info/inda01/game/cba genom att ge kommandot java PlayGame. På katalogen finns också mina förslag till LKClock och Ticked med källkod.
9 PlayGame public static void main(..) { Game game JPanel JFrame ChangeListener Board private final double scale (// pixels/m private int boardsizeinpixels; private double boardsize; private double gadgetsize; private Vector holecenter private double holeradius; private Gadget gadget public Board(Gadget ig) public void paintcomponent(graphics g) // ritar om brädet public boolean outsideboard(vector p) public boolean insidehole(vector p) public Dimension getpreferredsize() public Dimension getminimumsize() Game private JSlider alfaslider private JSlider betaslider private Board board private LKClock clock private Gadget gadget private double alpha private double beta public Game() public void resetsliders() public void statechanged(changeevent e) public getalpha() public getbeta() 2 JSlider Ticked LKClock Runnable public Thread aktivitet private RTicked obj: private double ticktime public LKClock(Ticked ioj, double iticktime) public void run() Gadget private Vector p private Vector v Game game Board board; public static final double g = 9.81 public void tick(double deltat) public void resetat(vector ip, Vector iv) public void getwhere();
10 2. B-hemuppgift : Implementera ett Luffarschack med GUI enligt nedanstående fig (ungefär): x o Knapparna med har blivit klickade. Använd GridLayout. Jag använde awt-paket, inte swing som jag inte är lika van med, men du kan välja vilket paket du vill. I början gör en klickning på någon av de nio knapparna i 3*3 matrisen gör att knappen markeras växelvis med ett x eller ett o. När tre x och tre o blivit placerade måste spelarna växelvis göra två klickningar : på rutan varifrån de vill flytta och på en tom angränsande ruta dit de vill flytta. Spelet vägrar göra felaktiga drag, om man ändå försäker får man felutskrifter. Spelet avslutas när någon spelare får "tre i rad", diagonalt eller rakt Provkör min lösning på /info/inda01/gui/b med kommandot java SpelaLSchack. Det är OK att förfina lösningaen en hel del, t ex att felmedelande skrivs i GUI och ej i terminalfönstret, spelet avslutas (eller återstartas) mer elegant när någon får "tre i rad" osv. Att programmera vad som skall hända när man klickar på en ruta är något komplicerat. Spelet har ju en första fas när spelarna växelvis med ett klick placerar sina x och o, och en andra fas där spelarna växelvis skall göra två klickningar, först klicka på en ruta med rätt markerering och sedan klicka på en angränsande tom ruta dit x eller o skall flyttas. Eventuellt har du glädje av DFA:n på nästa sida, som är något förenklad och skissartad. betyder att man klickar enligt spelets regler.
11 deterministisk finit automat (DFA) antaleto < 3 krysstur = true antaletx = antaletx +1 antaleto < 3 krysstur = false, antalet0 <3 antalet0 = antalet0 +1 gameover, antalet0 = 3 antalet0 = antalet0 +1 antaleto = 3 krysstur = true first = true antaleto = 3 krysstur = true first =false antaleto = 3 krysstur = false first = true antaleto = 3 krysstur = false first = false 3. A-hemuppgift : Implementera ett GUI som är ett spelbart schackbräde. Spelarna ska växelvis göra två klickningar : på rutan varifrån de vill flytta och på en tom angränsande ruta dit de vill flytta Brädet vägrar utföra felaktiga drag, om man ändå försäker får man felutskrifter. Dock frivilligt att göra rockad och en passent. Man behöver inte heller upptäcka schack och schak-matt och patt. Använd GridLayout. Jag använde awt-paket, inte swing som jag inte är lika van med, men du kan välja vilket paket du vill. Provkör min lösning på /info/inda01/game/a med kommandot java PlayChess. Det är OK att förfina lösningen en hel del, t ex att felmedelande skrivs i GUI och ej i terminalfönstret, rita riktiga schackpjäser (bilder går att hitta på nätet) istället för att skriva pjäsernas namn osv.
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :
Läs merFöreläsnings 11 - GUI, Händelsestyrda program, MVC
Föreläsnings 11 - GUI, Händelsestyrda program, MVC Josef Svenningsson Tisdag 20/11 Boken Denna föreläsning går igenom följande sektioner i boken: 10.1 och 10.2 11.1 Notera att kapitel 11 inte finns i boken
Läs merLab5 för prgmedcl04 Grafik
Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna
Läs merGrundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18
Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 18 Igår: Genomgång av dugga Rekursion Idag och på måndag: Om essän Lite, lite teori om konstanter Grafiska användargränssnitt Grundläggande
Läs merPROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2
DSV SU/KTH sid 1 (6) PROG2 VT13 PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 Tentan består av tre uppgifter. Max poäng är 38. För betyget E (godkänd) krävs minst
Läs merMer om grafiska komponenter. Händelsestyrda program
Layout Managers TDA143 I1 Programmerade system Föreläsning 14 (OH-bilder 10) Mer om grafiska komponenter. Händelsestyrda program Utplaceringen av komponenter i en behållare styrs med en Layout Manager.
Läs merITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter
ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering 1 DSV Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste åren I Java finns
Läs merDagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?
Programmeringsteknik och Matlab Övning 6 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312
Läs merDI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin
DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:
Läs merTvå designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 8 Två designmönster, MVC och Observer/Observable. Designrekommendation
Läs merLösningsförslag till tentamen
Uppgift 1 Lösningsförslag till tentamen 110317 a) Sant. b) Falskt. I ett RAM-minne är åtkomsttiden densamma för alla minnesadresser. c) Falskt. TCP är ett protokoll på transportlagret. d) Falskt. Binärsökning
Läs merProgrammeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt
Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur
Läs merITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius
ITK:P1 Att implementera en spelidé i Java DSV Peter Mozelius import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Lektion4 extends JFrame implements ActionListener { final int
Läs merTentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: 2:a september 200, klockan 8:30-12:30. Plats: V Ansvarig lärare: Katarina Blom, tel 772 10 0. Läraren besöker tentamen kl 9:30
Läs merFöreläsning 14: Grafik & mera händelsehantering
TDA 545: Objektorienterad programmering Föreläsning 14: Grafik & mera händelsehantering Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Idag: grafik läs kap 17 Viktigt i denna föreläsning: att rita
Läs merFöreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag
Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer
Läs merLösningsförslag till tentamen
Uppgift 1 a) Sant. b) Sant. c) Sant. Lösningsförslag till tentamen 170818 d) Falskt. IPv6 anger en IP-adress med 132 bitar. e) Falskt. Spoofing åsyftar användning av förfalskad eller lånad identitet på
Läs merLösningsförslag till tentamen
till tentamen 1 (5) Kurs Objektorienterad programmering Kursbeteckning DAT042 Program D2, TKDAT Läsår 2012/2013, lp 1 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift
Läs merFöreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers
Föreläsning 10 Mer om grafiska komponenter Händelsestyrda program Layout Managers Utplaceringen av komponenter i en behållare styrs med en layout manager. Det finns olika layout managers: FlowLayout GridLayout
Läs merFöreläsning 3: Händelsestyrda program och användargränssnitt
(2 september 2015 F3.1 ) Föreläsning 3: Händelsestyrda program och användargränssnitt Idag Från sekventiella till händelsestyrda program Lyssnare Kontroller Layout för ordning av kontroller (2 september
Läs merLösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel
Lösningar till Fiktiv Tentamen på kursen 2D4135 Objektorienterad programmering, design och analys med Java vt2004 Teoridel T1) (4p) Förklara kort följande grundläggande begrepp inom objektorienterad programmering:
Läs merTDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 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 På denna föreläsning: Grafiskt användargränssnitt, Swing Layout och komponenter Göra
Läs merTENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,
Läs merFöreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout
Layout Managers Föreläsning 10 Mer om grafiska komponenter Händelsestyrda program Föreläsn Utplaceringen av komponenter i en behållare styrs med en layout manager. Det finns olika layout managers: FlowLayout
Läs merKungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h
Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 3 (15p + 20p + 5p = 40 p) Lärare, jourhavande lärare
Läs merMalmö högskola 2007/2008 Teknik och samhälle
Laboration Gui Avsikten med denna laboration är att du ska träna på att bygga grafiska användargränssnitt. Spara dina resultat i paketet laborationgui. Längst bak i laborationen finns fullständiga lösningar
Läs merLaboration 4: Game of Life
Laboration 4: Game of Life Programmerade system I1 Bakgrund: I denna laboration ska vi ägna oss åt Game of Life, vilket är en mycket enkel modell av en population organismer som kan leva, dö och fortplanta
Läs merProperties. Användbara metoder som kan anropas i propertychanged:
Properties Ett objekt kan ha vissa egenskaper (som beskrivs med instansvariabler). En enkel egenskap X avläses och sätts med metoderna getx() och setx(värde). En indexerad egenskap (från t.ex. en array)
Läs merTentamen i Objektorienterad programmering
CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar
Läs merSubklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).
Läs merFrivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02
Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Denna laboration är frivillig och syftar till att låta dig lära mer om grafik i java. Labben är ganska grundlig och går igenom vad du skall
Läs merDenna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se
1 F18-20-2006 Denna vecka Måndag: Ett komplext problem Tisdag: Lektion. Kväll: Essäfrågan distribueras via webben. Dead-line onsdag 17 maj, kl 12.00. Inlämning elektroniskt och på papper. Onsdag: Grafik
Läs merTDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 Laboration 3 Visualisering (och implementering) av sortering Exempel på grafik (med Swing-paketet) Frågor 1 Laboration 3 Visualisering
Läs merFortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik
Fortsättningskurs i programmering F 5 GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 1 Abstract Window Toolkit Paket för hantering av grafik dvs skapa grafisk användargränssnitt java.awt
Läs merObjektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015
Objektorienterad Programkonstruktion Föreläsning 3 9 nov 2015 Kursnämnd Namn kommer... UML: Klassdiagram UML: Relationer Ärver från superklass Implementerar gränssnitt Dubbelriktad eller oriktad relation
Läs merIdag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Läs merObjektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016
Objektorienterad Programkonstruktion Föreläsning 3 7 nov 2016 Klass/instans Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik
Läs merLösningar till tentamen i EDAF25
Lösningar till tentamen i EDAF25 1 juni 2017 Lösning 1 Se figur 1. Figure 1: Tillståndsdiagram espressomaskin Lösning 2 (a) Kompositmönstret (b) Se figur 2 (c) Se figur 3 : Square : Drawing : Group : Circle
Läs merRita Egna Bilder, Timer
Rita Egna Bilder, Timer Josef Svenningsson November 27, 2012 Grafik Varje gång ett fönster behöver ritas om, pga av att det flyttas eller varit övertäckt, anropas automatiskt en metod som har namnet paintcomponent.
Läs merObjektorienterad Programkonstruktion, DD1346. Tentamen , kl
Skolan för datavetenskap och kommunikation Objektorienterad Programkonstruktion, DD1346 Tentamen 2016 03 18, kl. 14.00 17.00 Tillåtna hjälpmedel: Papper, penna och radergummi. Notera: Frågorna i del I
Läs merLösningsförslag tentamen FYTA11 Java
Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Lösningsförslag tentamen FYTA11 Java Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade
Läs merTentamen i Objektorienterad programmering E
CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA546 Tentamen i Objektorienterad programmering E Måndagen 8 mars 2010, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 1040. Inga hjälpmedel. Lösningar till
Läs merTentamen i Objektorienterad programmering
CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Fredagen 13 januari 2012, 14.00 18.00. Jourhavande lärare: Björn von Sydow, tel 0722/391401. Inga hjälpmedel. Lösningar
Läs merKort om klasser och objekt En introduktion till GUI-programmering i Java
Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på
Läs merDUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (8) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt namn, personnummer och e-postadress på försättsbladet. Skriv rent dina svar.
Läs merConcurrency Saker händer samtidigt. Process En instans av ett program
Concurrency Saker händer samtidigt Hur gör vi flera saker samtidigt på en dator? - Dela på en CPU - Flera CPU Flera processer på en dator. Operativsystemet (OS) tilldelar dem körtid (time slices, prioritet)
Läs merLösningsförslag till tentamen
Uppgift 1 a) Falskt! Bitmönstret är 10010111 b) Falskt! Memory Manager handhar Lösningsförslag till tentamen 170609 c) Falskt. En trojansk häst är ett program i förklädnad. Det är således program som på
Läs merLösningsförslag till tentamen 150317
Uppgift 1 Lösningsförslag till tentamen 150317 1) Sant 2) Falskt. I ett RAM-minne är åtkomsttiden densamma för alla minnesadresser.) 3) Falskt. Det är TCP som använder sig av en fast kommunikationsförbindelse.)
Läs merLÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p
UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det
Läs merlgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a
// Lösningar till gammal tentamen // Uppgift 1 a /* Felet beror på att det är klassen på referensen som avgör vilka metoder man får köra på ett objekt, inte klassen på objektet. På rad 5 i klassen C har
Läs merFöreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing
Föreläsning 15 (16) Introduktion till Swing Historik (java.awt) JDK 1.0 AWT (Abstract Window Toolkit) Paket för gränssnittsprogrammering Har en del nackdelar: Använder s.k. native code Stödjer endast komponenter
Läs merObjektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016
Objektorienterad Programkonstruktion Föreläsning 4 8 nov 2016 Nästade klasser I Java går det att deklarera en klass inuti en annan klass. Vi kallar detta för att en yttre klass innehåller en inre klass.
Läs merLaboration 15 Grafiskt användargränssnitt
Laboration 15 Grafiskt användargränssnitt Avsikten med denna laboration är att du ska träna på att skriva program som använder grafiskt användargränssnitt, dvs program som använder grafiska komponenter
Läs merFÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl
Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i
Läs merLite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Läs merif (n==null) { return null; } else { return new Node(n.data, copy(n.next));
Inledning I bilagor finns ett antal mer eller mindre ofullständiga klasser. Klassen List innehåller några grundläggande komponenter för att skapa och hantera enkellänkade listor av heltal. Listorna hålls
Läs merJavas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java
DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/4 2014 Innehåll Kort om Javas Exceptions Trådar i Java swing- klassen Timer Klient-Server-program Javas Exceptions Checked måste hanteras,
Läs merProgrammering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Läs merTung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013
DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 Innehåll Trådar i Java swing- klassen Timer Klient-Server-program Trådar Tråd = enkel process Ett program kan ha flera trådar, flera
Läs merGrafiska komponenter.
Grafiska komponenter. Kap J5-1 Grafiska användargränssnitt är det moderna alternativet till traditionell terminal-i/o. GUI-programmering bygger på en händelsestyrd flödeskontroll. I Java utförs GUI-programmeringen
Läs mer2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering
2I1049 Föreläsning 8 Grafiska gränssnitt, Java interface och händelsehantering 1 KTH-MI Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste
Läs merDet är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.
Tentamen Programmeringsteknik I 2011-03-17 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift
Läs merTentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34
Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger
Läs merThe Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.
Innehåll The Last Adventure Den sista lektionen Repetition Examination Slutar 14:45 (minnesstund) Många saker "flashar" förbi - hojta Objektorientering Språket Java Class Object Inheritance Polymorphism
Läs merLektion Händelsehanterare
Lektion Händelsehanterare Händelsehanterare kallas även lyssnare. En lyssnare har som uppgift att ta hand om olika händelser som kan inträffa. För att lyssnaren skall reagera på händelser måste den registreras
Läs merDI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson
DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson Lösningar till TENTAMEN I IXC003 SYSTEMUTVECKLING MED INTERNET/INTRANET, del 1 (5p) för IT3 och INTERNETPROGRAMMERING MED JAVA
Läs merTentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)
Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl
Läs merApplets med komponenter
5 Applets med komponenter Knappar Om gränssnitt (interface) Händelser Måla om appletytan Etiketter och textrutor Förvandla strängar till tal Aritmetik Omvandla datatyper med cast Felhantering Kap 5: Sid
Läs merDetta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling
Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max 30p i denna halvtentamen Hjälpmedel:
Läs merPROGRAMMERINGSTEKNIK TIN212
Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:
Läs merLösningsförslag till tentamen
Uppgift 1 Lösningsförslag till tentamen 150417 1) c 2) c 3) a 4) b 5) a 6) c 7) b 8) b 9) b 10) a Uppgift 2 Public-key encryption bygger på att man har två nycklar, en publik och en privat. Man måste således
Läs merLaboration 24 Databasen MySQL och java
Laboration 24 Databasen MySQL och java Avsikten med denna laboration är att du ska hämta information ur en eller flera tabeller och visa resultatet i en JTable-komponent. Du ska ändra innehållet i tabellen
Läs merObjektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
Läs merObjektorienterad programutveckling, fk
till tentamen P r e l i m i n ä r 1 (7) Kurs Objektorienterad programutveckling, fk Program DAI2 Läsår 2017/2018, lp 2 Examinator Uno Holmer Uppgift 1 (7 p) Abstrahera ut aktiviteten i ett gränssnitt Trainee
Läs merFrames, menyer och GUI-program
15 Frames, menyer och GUI-program Frames En frame-klass Om konstruktorer - igen Funktionella fönster Menyer Popupmenyer GUI-applikationer Dialogrutor Printerutskrift Kap 15: Sid 2 Frames Redan i kapitel
Läs merObjektorienterad programmering. Telefonboken igen, en bättre version. En jämförelse. Föreläsning 4
Telefonboken Objektorienterad programmering Telefonboken igen, en bättre version Telefonboken, igen. Tvådimensionella fält. Exempel: femtonspelet. Modellklassen. Ett textbaserat program. Ett grafiskt program.
Läs merLYCKA TILL!!! TENTAMEN I Programmeringsteknik F1. Var vänlig och läs detta: CTH 2007-12-18 TIN 211. DATAVETENSKAP Göteborg (2007-12-17) TENTAMEN
DATAVETENSKAP Göteborg (2007-12-17) TENTAMEN CTH 2007-12-18 TIN 211 TENTAMEN I Programmeringsteknik F1 DAG: TISDAG TID: 14.00-18.00 SAL: M Ansvarig: Erland Holmström tel. 1007, hem 270358. Resultat: Anslås
Läs merTentamen FYTA11 Javaprogrammering
Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Tentamen FYTA11 Javaprogrammering Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade
Läs merIntroduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014
Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public
Läs merLösningsförslag till tentamen
Uppgift 1 Lösningsförslag till tentamen 131220 a) Första felet beror på att namnet på klassen är felstavat i konstruktorn! Således har vi ingen konstruktor utan en metod med namnet Trubel. En metod måste
Läs merTDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3
TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 Laboration 3 Visualisering (och implementering) av sortering Exempel på grafik (med Swing-paketet) Frågor 1 Laboration 3 Visualisering
Läs merObjektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015
Objektorienterad Programkonstruktion Föreläsning 6 23 nov 2015 Designmönster Färdiga "recept" för att lösa (del-)problem i struktureringen av ens program Mönster kan beskriva små komponenter eller stora
Läs merLösningar för tenta 3 DAT043,
Lösningar för tenta 3 DAT043, 2018-08-22. Uppgift 1 class Person{ public String förnamn; public String efternamn; public int ålder; private double längd; private double vikt; public Person(String förnamn,
Läs merFöreläsning 10. ADT:er och datastrukturer
Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad
Läs merDD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion
DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/3 2014 Innehåll Kursöversikt Javarepetition/Javaintroduktion UML - klassdiagram-introduktion i anslutning till Java-exemplen Kursmål,
Läs merSwing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna
MER Java Foundation Classes (JFC) Swing Swing Många klasser Vettigt att lära sig dem utantill - Tror inte det -... men det kan vara bra att ha en liten överblick över vad som finns - Idag (och med fortsättning
Läs merDet finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.
Tentamen Programmeringsteknik I 2012-06-04 Skrivtid: 1400-1700 Hjälpmedel: Java-bok 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
Läs merTrådar. Motivering. Många program måste kunna hålla på med flera saker samtidigt, till exempel. fleranvändarsystem.
Motivering Uppsala Universitet 21 april 2005 Många program måste kunna hålla på med flera saker samtidigt, till exempel fleranvändarsystem en webserver som måste kunna leverera flera websidor samtidigt
Läs merLösningsförslag till tentamen
Uppgift 1 Lösningsförslag till tentamen 170314 a) Falskt. Talområdet för ett 8-bitars tal på tvåkomplementsform är -128 till 127. b) Sant. c) Falskt, HTTP är ett kommunikationsprotokoll som används för
Läs merTrådar. Aktiva objekt
Föreläsning 11 Trådar 1 Aktiva objekt Det är välkänt från vardagslivet att saker händer samtidigt. Aktiva objekt gör saker på eget initiativ, medan passiva objekt endast gör saker när de blir ombedda.
Läs merSwing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna
MER Java Foundation Classes (JFC) Swing Swing Många klasser" Vettigt att lära sig dem utantill" - Tror inte det" -... men det kan vara bra att ha en liten överblick över vad som finns" - Idag (och med
Läs merDAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU
DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU lösningsförslag till tentamen 2017-06-09 Tid: 8:30-12:30. Plats: SB. Ansvarig lärare: Fredrik Lindblad,
Läs merTentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.
Tentamen 101213 - LÖSNINGSFÖRSLAG Uppgift 1. a) Ger utskriften c( ) in D b) Ger utskriften true c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt. d) Ger utskriften b( )
Läs merOmtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-16, TDA540. Dag: , Tid:
Omtentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-08-24, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar:
Läs merLaboration 3 GUI-programmering
Laboration 3 GUI-programmering Syfte Erbjuder studenterna en möjlighet att lära sig grunderna i gränssnittsprogrammering i Java. Genomförande Genomförs individuellt eller i grupp om 2 personer. Uppskattad
Läs merTENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P
UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr
Läs merFöreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID
Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID Vad gör vi här? Programmeringsteknik fördjupningskurs (EDAA01; 7,5hp) Valfri för F, N & BME (kan läsas från åk 2 eller i sommar!) Avancerad
Läs merTentamen. Lösningsförslag
Sida 1/8 Tentamen Grundläggande programmering i Java A 5p, DTAA32 2002-03-22 Lösningsförslag Uppgift 1 ( 3p ) Utskriften blir: Skriv in ett tal 24 47 48 intal=471 Uppgift 2 ( 6p ) a.) b.) c.) d.) e.) falskt
Läs merOOP Objekt-orienterad programmering
OOP F16:1 OOP Objekt-orienterad programmering Föreläsning 16 Grafiska användargränssnitt, GUI Ytor Komponenter Layout-managers Lyssnare GUI - Graphical User Interface OOP F16:2 Man skapar en yta (ett fönster)
Läs mer