JMU
logoFullScreen.gif
Programming Assignment 4


1 Background: The (fictitious) company Lexicality designs and develops software for people that work with words.

They have hired you to design and implement some of the classes needed for an application named FullScreen that can be used to write screenplays.

2 Textual Descriptions: Since they know that you don't know much about screenwriting, they have provided textual descriptions of the various parts of a screenplay and how they must be formatted. The formatting requirements are "industry standard" and must be followed exactly.
3 Some Requirements: The system must use an array (or arrays); it must not use an ArrayList or other collection.
4 Testing: Lexicality has one programmer on staff. Since she was concerned that the textual descriptions above might not be completely clear, she wrote a driver (named MyWonderfulProfessor) that you can use to test your implementation. (Any similarity to persons living or dead, or actual events is purely coincidental.) Your classes must work with this driver.

Note that this driver makes some assumptions that will constrain your design options somewhat. Specifically, it assumes:

A writer at Lexicality typed the screenplay for "My Wonderful Professor" using a word processor so that you would have an idea of what it should look like. Note that this example is not guaranteed to be correct since it was typed by hand. Your output must conform to the requirements in the various textual descriptions.

Screenplay
----------
FADE IN:

INT. JMU OFFICE     DAY

                                      FRED
                    I wonder if you can help me. My program
                    is practically working. All I have to do
                    is
                                     (MORE)

                                 PROF. HARBERN
                    Of course I can help, that's what I'm
                    here for.

                                 PROF. HARBERN
                                 (to offscreen)
                    Bob, please hold all of my calls. I need
                    to focus my attention on Fred.

                                   BOB (O.S.)
                    Of course, Prof. Harbern.

                                 FRED (CONT'D)
                    All I have to do is fix 4 or 5 methods
                    in one class and write 7 other classes
                    and the driver. Of course...
                                     (MORE)

Prof. Harbern walks around the desk to look at Fred's laptop. The look on Prof.
Harbern's face can only be described as nurturing.

                                 PROF. HARBERN
                    You're right, you are practically done.
                    Why don't you compile and execute what
                    you have so I can see what's going on.

                                 FRED (CONT'D)
                    Nothing compiles yet, but that's because
                    Java is all messed up. It keeps telling
                    me that there is a problem with my
                    cymbal or bass drum or something. And,
                    I'm not even using any cymbals or drums.

                                 PROF. HARBERN
                    Java often makes mistakes about
                    percussion instruments. Let's see...
                                     (MORE)

Prof. Harbern compiles Fred's code.

                             PROF. HARBERN (CONT'D)
                    Well, it's good that you've only written
                    9 lines of code so far. If you had
                    written more it would make it much more
                    difficult to find the problems. In this
                    case, Java's telling you that you have
                    an unidentified symbol.

                                      FRED
                              (sounding stressed)
                    That's what I tried to tell the lab
                    assistant, but she wouldn't listen.

                                 PROF. HARBERN
                    You sound a little stressed Fred. Let's
                    take a walk.

CUT TO:

EXT. THE CS/ISAT BUILDING     EVENING

                                      FRED
                               (sounding relaxed)
                    Dude, it's good to get out of that
                    building. I've been in the lab for
                    almost 20 minutes.

                                 PROF. HARBERN
                    Since you're so close and this is such a
                    small problem, I don't see any reason
                    for you to bother with 'SUBMIT'. I'll
                    just give you a 100. Nice job!

                                NARRATOR (V.O.)
                    Fred, happy that he had been treated
                    fairly, went home to watch TV.

DISSOLVE TO:

INT. JMU OFFICE     EVENING

                                 PROF. HARBERN
                    I have a great job. It's so rewarding to
                    work with students who really want to
                    learn. And what could be better than
                    knowing that they'll earn more than I do
                    within a few years. Life is good!

FADE OUT:



Set Summary
-----------
2 sets need to be constructed.
5 Some Advice:
  1. Don't limit yourself to the interfaces/classes/methods/etc... that are required by the driver. A good design will probably require additional interfaces/classes/methods/etc... Use the design process discussed in lecture and lab.
  2. You may use classes you developed for other assignments in this course.
  3. Start by creating a UML class diagram. Have it "approved" before you start writing any code.
  4. After your design is "approved", think about the order in which you are going to implement the classes/interfaces. You may need to stub-out some classes in order to implement others.
  5. As always, test each method in each class individually before moving on.
Going Further


Copyright 2011