bild
Skolan för
elektroteknik
och datavetenskap

Programutvecklingsteknik

Övning 5    9/5

Uppgift 2 är hämtad från en gammal tenta på kursen 2D1385 (gamla kurskoden för DD2385). Uppgifterna 3-6 är hämtade från en 2D1385-tenta år 2005. Kursen gavs på engelska då. Uppgifterna 2 och 4 är modifierad lite. Att skriva DTD kommer inte att ingå i årets tenta men väl att skriva XML som stämmer med en given DTD. Vi ger DTD:n på övningen och skriver XML från den.

  1. Skissa/skriv en lösning av uppgift 2 från övning 4 där mönstret Strategy används.

    Lösningar:
    Huvudprogrammet: FileWordsSorter.java
    Strategy-interface: WordReader.java
    Läs godtyckligt antal ord per rad med avskiljare: DelimitedReader.java
    Läs ett ord per rad: OneWordPerLineReader.java

  2. Rita ett UML-klassdiagram för en kö. Köklassen implementerar följande gränssnitt:
    interface AbstractQueue {
        public boolean isEmpty();
        public void put(Object x);
        public Object get();
    }	
    
    Ett köobjekt har referenser till köns första och sista elementet. Varje nod i kön har en next-referens och en referens till den lagrade informationen som här ska vara personer med förnamn och efternamn som separata String-objekt. Uppgiften är hämtad från en gammal tenta i program­utvecklings­teknik.

    Här finns en lösning. Pilen från Kö till AbstractQueue ska ha en sluten ofylld pilspets och egentligen en streckad linje. Pilspetsen är viktigare än strecket. Vissa UML-verktyg skiljer inte på arv och implementation. I sådana fall bör man med någon markering skilja på arv av abstrakt och konkret klass. Tentalösnngen är inte gjord med UML-verktyg.

    Här finns även Javakod för en abstrakt köklass med typparameter, en konkret köklass och en klass för noderna:
    AbstractQueue.java   LinkedQueue.java   Node.java

    English: Draw a UML class diagram for a queue. The queue implements the interface above. A queue object has references to the first and the last element of the queue. Each queue node has a next-reference and a reference to its stored information. In this queue the information is objects of class Person with first name and family name stored in separate String objects.

  3. Your are asked by your boyfriend/girlfriend to design and build a simple internet shoppingsite for books, clothes and DVDs. He/she brainstorms and identifies the following nouns: book, clothing, dvd, size, clothing_style, author, title, artist, colour, mens_clothing, womens_clothing, childs_clothing, price, quantity, discount_on_price, item. Arrange these into a UML class diagram for the things to sell.

  4. Extend the class diagram with a Shopping_Cart which includes a list of purchases, the toal price of all purchases, total number of purchases, total discount given. A shopper should be able to delete specific items or delete all items. Discount on price is given to club members. A shopper can be a member of the book club, the dvd club or the clothing club separately. UML class diagram for 3 and 4

  5. A shopper needs to be a member of the book club to get discounts on books, dvd club to get discounts on dvds etc. Using the information given in your class diagrams for 1. and 2., write Java code for the method add(Item purchase) that adds an Item to an itemList and applies the correct discount to the price if appropriate. Javakod för klasserna: Item.java  Book.java  Clothing.java  DVD.java  ShoppingCart.java 

  6. You decide to store and send information from the website using the XML format. Write a DTD that is suitable for defining an XML file that represents the contents of a possible shopping cart. Write an XML file including at least two Items, one book and one dvd. The shopper is member of both book club and dvd club. The XML must be valid according to the DTD. DTD och XML.

Copyright © Sidansvarig: Ann Bengtsson <ann@nada.kth.se>
Uppdaterad 2012-03-14