Computer projekttid. Objektorienterad modellering och diskreta strukturer / design. Rapporter från verkligheten. EDAF10 i HT2

Relevanta dokument
HT1 2013, FÖRELÄSNING 14 (INFÖR TENTAN)

Information. Computer

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

HT1 2015, FÖRELÄSNING 14 (INFÖR TENTAN)

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

Tentamen i Objektorienterad modellering och diskreta strukturer

Tentamen i EDAF25. 1 juni Skrivtid: Skriv inte med färgpenna enda tillåtna färg är svart/blyerts.

Tentamen i Objektorienterad modellering och diskreta strukturer

Projekt 2 XL. Observer-mönstret

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

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

Alfabeten, strängar och språk. String

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

Lösningar till tentamen i EDAF25

Kursombud. Objektorienterad modellering och diskreta strukturer / design. Agile? Designprinciper EDAF10 EDA061. Lennart Andersson. Grupper för projekt

Grammatik. BNF-grammatik

Lösningar till tentamen i EDAF25

Tentamen i Objektorienterad modellering och diskreta strukturer

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

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Helsingborg

Förra föreläsningen. Dagens agenda. Command Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

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

4.7 Observatörsmönstret

UML Objektdiagram. Objektorienterad modellering och design (EDAF25) Föreläsning 3. UML Sekvensdiagram. UML Objektdiagram. Agenda

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

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design. Vad är Objektorienterad modellering?

Tentamen i EDAF oktober Skrivtid: Skriv bara på ena sidan av pappret tentorna kommer att scannas in, och endast framsidorna rättas.

Kursstruktur. Objektorienterad modellering och diskreta strukturer / design. Programmering utan OMD. Vad är Objektorienterad modellering?

HT1 2015, FÖRELÄSNING

EDAF10: Objektorienterad modellering och diskreta strukturer EDA061: Objektorienterad modellering och design

EDAF10: Objektorienterad modellering och diskreta strukturer. EDA061: Objektorienterad modellering och design. Diskreta strukturer.

Förra föreläsningen. Dagens agenda. Dagens agenda. Föreläsningsbilder EDAF10/EDA Ulf Asklund, Datavetenskap/LTH 1

Föreläsningsbilder EDAF10/EDA061 Ht 2015 HT1 2015, FÖRELÄSNING 3

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

10. Mängder och språk

Tentamen. DD2385 Programutvecklingsteknik vt 2014 Måndagen den 2 juni 2014 kl Hjälpmedel: penna, suddgummi, linjal

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

Kursstruktur. Objektorienterad modellering och diskreta strukturer / design. Vad är Objektorienterad modellering? Programmering utan OMD

Tentamen. DD2385 Programutvecklingsteknik vt 2015 Fredagen den 5 juni 2015 kl Hjälpmedel: penna, suddgummi, linjal

Integritetsprincipen. Objektorienterad modellering och diskreta strukturer / design

Laboration 2: Designmönster

Objektorienterad Programkonstruktion. Föreläsning jan 2016

HT2 2015, FÖRELÄSNING 15 (XL-PROJEKTET)

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

Laboration 2: Designmönster

Tentamen Programmering fortsättningskurs DIT950

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg

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

HT1 2013, FÖRELÄSNING 6

Förra föreläsningen. Alternativ kurslitteratur. Dagens agenda Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Design Patterns. Objekt-orienterad programmering och design Alex Gerdes, 2016

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

Tentamen. DD2385 Programutvecklingsteknik vt Tisdag 7 juni 2016 kl

Sammanfattning och Tentamensinfo Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Projekt 2 XL Schema designmöten

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Nej! Nej Nej Nej Nej Nej Nej Nej!

Tentamen. DD2385 Programutvecklingsteknik vt 2011 Tisdagen den 24 maj 2011 kl Hjälpmedel: penna, suddgummi, linjal

HT1 2013, FÖRELÄSNING 5

Föreläsning 15: Repetition DVGA02

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

JUnit. Ska kompletteras med kodexempel på JUnit. DD2385 Programutvecklingsteknik Några bilder till föreläsning 12 21/5 2012

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

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

12. Relationer och funktioner

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

DAT043 - Föreläsning 7

Objektorienterad modellering och diskreta strukturer (EDAF10/EDA061)

Lösningsförslag till tentamen

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

Föreläsning 2. Länkad lista och iterator

Projekt 2 XL Klassen Gui

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

Observer Pattern och MVC. Objekt-orienterad programmering och design Alex Gerdes, 2016

Föreläsning 2. Länkad lista och iterator

TENTAMEN I DATAVETENSKAP

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Designmönster. Kapitel Kommandomönstret

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Observer Pattern och MVC. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Objektorienterad programmering, analys och design med Java, 5p 2D4135, vt Kursprogram

Designmönster/Design patterns

LÖSNINGSFÖRSLAG

Tentamen i Objektorienterad modellering och design (OMD) Helsingborg

Tentamen LÖSNINGSFÖRSLAG. c) Tilldelningen C x = new D() ger kompileringsfel eftersom klassen D är abstrakt.

Properties. Användbara metoder som kan anropas i propertychanged:

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

Objektsamlingar i Java

Dagens program. Objektorienterad modellering och diskreta strukturer / design. Model/View/Control-implementering. Model/View/Control-arkitektur

Objekt, klasser. Tillstånd Signatur Kommunikation Typ. Fält, parametrar och lokala variabler. Konstruktorer Metoder DAVA15

Seminarierna Instruktioner. Övningarna Viktiga relationer

Tentamen. DD2385 Programutvecklingsteknik vt Fredagen den 5 juni 2009 kl Inga hjälpmedel utom penna, sudd och linjal

Övning 5. TDA550 - Objektorienterad programvaruutveckling, fk

HT1 2015, FÖRELÄSNING

Transkript:

Computer projekttid Objektorienterad modellering och diskreta strukturer / design Inför tentamen Lennart Andersson Reviderad 2012 10 18 2012 2011 2012 timmar antal timmar 2 1 4 4 6 8 8 4 10 10 12 6 14 4 16 6 18 1 20 0 21-3 snitt 11 tim antal 2 0 4 0 6 4 8 13 10 9 12 11 14 2 16 12 18 2 20 10 21-4 snitt 13,5 tim OMD 2012 F14-1 EDAF10 i HT2 OMD 2012 F14-2 Rapporter från verkligheten Föreläsning måndag 29/10 kl 15.15-16.00 i MH:A. Jag har nyligen fått veta hur två olika företag tillämpar agila principer. Anmälan till XL-projektet via SAM. Det ena rör ett företag i Silicon Valley. En av studenterna som följer den här kursen jobbade där under sommaren. Uppsamlingslaboration för EDAF10 måndagen den 29 oktober kl 8-10 i Alfa. Det andra är Google, som har ett stort kontor i London. En av doktoranderna på institutionen gjorde ett internship där under sommaren. OMD 2012 F14-3 OMD 2012 F14-4

Silicon Valley Google Designprinciper tillämpas inte. Koden luktar illa. Huvuddelen av arbetet innebär modifiering av programkod och tillägg av kod för att möta nya kundkrav. Studenten tänker ta med sig kunskaperna från OMD-kursen till Silicon Valley nästa sommar. Jag tror inte att alla företag i området är lika oprofessionella. Jag tycker att studenten borde söka en bättre arbetsgivare. Alla Googles program finns i molnet. Det omfattar 100 miljoner rader kod. Ingen kod får läggas in i molnet förrän kollegor till programmeraren har granskat den och dålig design och illaluktande kod eliminerats. Jag tror att kontrollen är lika tuff som i OMD-projekten. Google försvarar sin plats som den mest attraktiva arbetsgivaren för data-civilingenjörer. Företaget erbjuder inte bara mycket goda arbetsförhållanden men har också en mycket professionell inställning till programvaruproduktion. OMD 2012 F14-5 Designprinciper OMD 2012 F14-6 Designmönster Lokalitetsprincipen Single Responsibilty Principle Open/Closed Principle Dependency Inversion Principle (Abtraktionsprincipen) Integritetsprincipen Liskov Substitution Principle Interface Segregation Principle Command [Computer] Composite [XL, lab 2] Template Method [Computer, lab 2] Strategy [nästan överallt,computer, XL] Decorator [Övning 2] Global Object (aka, also known as Singleton) Null Object [XL?] Observer [XL] Factory Method [XL, lab 4] Interpretor [Computer] OMD 2012 F14-9 OMD 2012 F14-10

Litteratur Tentamenslokal På tentamen får medföras Martin, PPP Andersson, Föreläsningsbilder F01-06.pdf Andersson, UML Java snabbreferens Andersson, Diskreta strukturer [EDAF10] Tentamen är torsdagen den 25 oktober kl 8.00 i Vic: 1A-D. Sedvanliga anteckningar är OK. Information kopierad från andra dokument får inte förekomma. OMD 2012 F14-11 Om du vill lära dig mer OMD 2012 F14-12 Uppgift 1 EDA270 Programvaruutveckling i grupp projekt, fokus på utvecklingsprocessen XP med rika tillfällen att göra design. EDA180 Kompilatorteknik, mycket modellering, aspektorienterad programmering, programmets mest avancerade programmeringsprojekt. EDAN40 Funktionsprogrammering, en annan paradigm. EDAN01 Constraint programming, ytterligare en paradigm. Följande två klasser är väldigt lika. Använd Template method mönstret för att eliminera duplicerad kod och det gemensamma attributet. Lösningen redovisas med ett klassdiagram som visar arv och associationer och med programkod. OMD 2012 F14-13 OMD 2012 F14-14

Uppgift 1 Uppgift 1 public class StartButton extends Button implements ActionListener { private Train train; public StartButton(Train train) { super("start"); this.train = train; addactionlistener(this); public void actionperformed(actionevent event) { train.start(); public class StoppButton extends Button implements ActionListener { private Train train; public StoppButton(Train train) { super("stopp"); this.train = train; addactionlistener(this); public void actionperformed(actionevent event) { train.stopp(); OMD 2012 F14-15 Uppgift 2 I en modell av en liten dator representeras hoppinstruktionen med (se nästa bild) där address är den absoluta adressen till den instruktion man skall hoppa till. Man vill nu modifiera modellen så att man kan använda både absoluta och relativa adresser. En relativ adress innebär att man skall hoppa bakåt eller framåt ett givet antal instruktioner. I en textmässig representation skriver man absoluta adresser utan tecken och relativa med tecken: JMP 38 JMP +3 JMP -3 OMD 2012 F14-16 Uppgift 2 public class Jump implements Instruction { private int address; public Jump(int address) { this.address = address; public void execute(memory memory, ProgramCounter programcounter) { programcounter.setcounter(address); public String tostring() { return "JMP" + + address; OMD 2012 F14-17 OMD 2012 F14-18

Uppgift 2 Uppgift 3 Gör en design som respekterar open/closed-principen så att man lätt kan lägga till denna och andra adresseringsformer utan att ändra i gammal kod eller definiera nya hoppinstruktioner. Lösningen visas med Java-kod för den nya Jump-klassen och det som behövs för att kunna representera absoluta och relativa adresser. Följande klasser ingår i ett röstningsprogram med ett grafiskt användargränssnitt. Modifiera programmet så att Observer-mönstret används för att uppdatera vyn så att modellen inte känner till den konkreta vyn. Lösningen redovisas med Java-kod. OMD 2012 F14-19 Uppgift 3 public class Counters { private int yescounter, nocounter; private View view; public Counters(View view) { this.view = view; public void incrementyes() { yescounter++; updateview(); public void incrementno() { nocounter++; updateview(); private void updateview() { view.update(yescounter, nocounter); OMD 2012 F14-21 OMD 2012 F14-20 Uppgift 3 public class View extends JPanel { public void update(int yescounter, int nocounter) { // omissions OMD 2012 F14-22

Uppgift 3 I java.util finns public interface Observer { public void update(observable observable, Object object); public class Observable { public void addobserver(observer observer)... protected void setchanged()... public void notifyobservers(object object)... Uppgift 4 I klassen ArrayList returnerar metoden tostring en sträng som innehåller strängrepresentationen av alla elementen separerade av ", ". Strängen inleds med "[" och avslutas med "]". Utvidga klassen så att man kan utnyttja Strategy-mönstret för att välja vilken inledande, separerande och avslutande sträng som skall användas. Lösningen redovisas som Java-kod för den utvidgade klassen, strategi-gränssnittet och en strategi-klass som ger samma sträng som tostring i ArrayList. Man kan traversera listan t ex genom att använda den Iterator som metoden iterator i ArrayList returnerar. En iterator har metoderna hasnext() och next(). OMD 2012 F14-23 Diskreta strukturer OMD 2012 F14-24 Diskreta strukturer Förstå, konstruera och manipulera satslogiska uttryck predikatlogiska uttryck mängduttryck språk reguljära uttryck grammatiker relationer funktioner Kunna utföra naturlig härledning substitution härledning med grammatik syntaxanalys OMD 2012 F14-25 OMD 2012 F14-26

Tentamen 12-08-24: 4a Tentamen 12-08-24: 4b Det reguljära uttrycket 0 (10 + ) (1 ɛ) beskriver ett språk på alfabetet {0, 1. Vilka av följande strängar tillhör språket? Ange alla strängar med längden 4 som tillhör det språk som generaras av grammatiken 01100 01010 ɛ 1001100 S ::= SS S ::= asa bsb ɛ OMD 2012 F14-27 Tentamen 12-08-24: 5a OMD 2012 F14-28 Tentamen 12-08-24: 5b Visa att {p q, q p genom att komplettera följande härledning. p q q Vi definierar två predikat på mängden av naturliga tal p(x, y) = q(x, y) = x = y 2 x är delbart med y Konstruera med hjälp av dessa ett predikatlogiskt uttryck som säger att ett godtyckligt tal är delbart med 4 om det är jämt och kvadraten på ett tal. OMD 2012 F14-29 OMD 2012 F14-30

Tentamen 11-10-21: 5b Tentamen 09-10-22: 5a ρ = {(0, 1), (1, 1), (1, 2) är en relation på {0, 1, 2. Beräkna ρ 0, ρ 2 och ρ. Låt F (x, y) betyda att x är far till y, M(x, y) att x är mor till y och E(x, y) att x och y är samma person. Konstruera ett predikat som är sant precis då x och y är syskon. Två personer är syskon om de har samma föräldrar men är olika personer. OMD 2012 F14-31 OMD 2012 F14-32 Tentamen 08-10-23: 5b Ge ett exempel på när e[x\e 1 ][y\e 2 ], där e, e 1 och e 2 är aritmetiska uttryck, inte är lika med e[y\e 2 ][x\e 1 ]. OMD 2012 F14-33