This site is from a past semester! The current version will be here when the new semester starts.
CS2103/T 2020 Jan-Apr
  • Full Timeline
  • Week 1 [Jan 13]
  • Week 2 [Jan 20]
  • Week 3 [Jan 27]
  • Week 4 [Feb 3]
  • Week 5 [Feb 10]
  • Week 6 [Feb 17]
  • Week 7 [Mar 2]
  • Week 8 [Mar 9]
  • Week 9 [Mar 16]
  • Week 10 [Mar 23]
  • Week 11 [Mar 30]
  • Week 12 [Apr 6]
  • Week 13 [Apr 13]
  • Textbook
  • Admin Info
  • Report Bugs
  • Forum
  • Instructors
  • Announcements
  • File Submissions
  • Tutorial Schedule
  • Java Coding Standard
  • Participation Marks List

  •  Individual Project (iP):
  • Individual Project Info
  • Duke Upstream Repo
  • iP Code Dashboard
  • iP Showcase

  •  Team Project (tP):
  • Team Project Info
  • Team IDs
  • Addressbook-level3
  • Addressbook-level 1,2,4
  • tP Code Dashboard
  • tP Showcase
  • Week 8 [Mar 9] - Tutorial

    1 Exercise: draw a class diagram and an object diagram

    • Divide into two sub-teams as you did in the previous week.
    • 10 minutes Each sub-team do the part (a) of the following exercise, by drawing the answer on the whiteboard. Use the following layout:

    Consider the code below:

    public interface Billable {
    void bill();
    }
    public abstract class Item
    implements Billable {
    public abstract void print();
    }
    public class StockItem extends Item {
    private Review review;
    private String name;

    public StockItem(
    String name, Rating rating){

    this.name = name;
    this.review = new Review(rating);
    }

    @Override
    public void print() {
    //...
    }

    @Override
    public void bill() {
    //...
    }
    }
    public enum Rating {
    GOOD, OK, POOR
    }
    public class Review {
    private final Rating rating;

    public Review(Rating rating) {
    this.rating = rating;
    }
    }
    import java.util.List;

    public class Inventory {
    private List<Item> items;

    public int getItemCount(){
    return items.size();
    }

    public void generateBill(Billable b){
    // ...
    }

    public void add(Item s) {
    items.add(s);
    }
    }

    (a) Draw a class diagram to represent the code. Show all attributes, methods, associations, navigabilities, visibilities, known multiplicities, and association roles. Show associations as lines.
    (b) Draw an object diagram to represent the situation where the inventory has one item with a name spanner and a review of POOR rating.

    • 5 minutes Compare answers with those from other sub-teams. With the tutor's guidance, self-evaluate the answers.
    • 5+5=10 minutes Do part (b) in the same manner.

    2 Exercise: draw a sequence diagram

    • Re-form sub-teams with different members. You may mix with members of the other team (if any).
    • 10+5=15 minutes Do the following exercise similar to the previous one.

    Consider the code below:

    class Person{
    Tag tag;
    String name;

    Person(String personName, String tagName){
    name = personName;
    tag = new Tag(tagName);
    }
    }
    class Tag{
    Tag(String value){
    //...
    }
    }

    class PersonList{
    void addPerson(Person p){
    //...
    }
    }

    Draw a sequence diagram to illustrate the object interactions that happen in the code snippet below:

    PersonList personList = new PersonList();
    while (hasRoom){
    Person p = new Person("Adam", "friend");
    personList.addPerson(p);
    }

    • How would you update the diagram if the PersonList class was updated as follows?
      class PersonList{
      void addPerson(Person p){
      add(p);
      }

      void add(Person p){
      //...
      }
      }