Download Practice Test 1 - University of Arizona

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
C Sc 335 Practice Test 1 Section Leader ________ Name ___________________________ 150pts
1. Write the correct term, either "RESPONSIBILITIES" or "METHODS and DATA" in the blank space (2pts)
At the conceptual level, an object is a set of ________________
At the implementation level, an object is a set of ________________
2. Describe the essence of polymorphism. (3pts)
3. List two Java structures that allow for polymorphic messages ____________
___________ (2pts)
4. If you change ArrayList to LinkedList, will the following code still compile? true or false _____ (2pts)
List<String> list = new ArrayList<String>();
list.add("b");
list.add("a");
list.add("c");
Collections.shuffle(list);
5. Place an X by the name of any interfaces in the Java collection framework in the java.util package? (6pts)
___Collection
___ArrayList
___Queue
___Set
___Map
__SortedArrayList
6. Which goes into the top compartment (rectangle) of a class diagram of a single class? (2pts)
___Attributes(instance variables)
___Class Name
___Operations (methods)
7. Can one Java class implement more than one interface? yes or no ________ (2pts)
8. What is better, high cohesion or low cohesion? low or high ________ (2pts)
9. Will all assertions in the following test method pass? yes or no ______ (2pts)
@Test
public void testNext() {
List<String> list = new ArrayList<String>();
list.add("b");
list.add("a");
Iterator<String> itr = list.iterator();
assertTrue(itr.hasNext());
assertEquals("b", itr.next());
assertEquals("a", itr.next());
assertTrue(itr.hasNext());
}
10. Write the output generated by the same code when aNumberMaybe is first "123" and then "NOgOOD" (6pts)
String aNumberMaybe = "123";
try {
System.out.println("--");
double num= Double.parseDouble(aNumberMaybe);
System.out.println("oo");
}
catch (NumberFormatException nfe) {
System.out.println("++");
}
String aNumberMaybe = "NOgOOD";
try {
System.out.println("--");
double num = Double.parseDouble(aNumberMaybe);
System.out.println("oo");
}
catch (NumberFormatException nfe) {
System.out.println("++");
}
1
11. Finish this program with a graphical user interface that will allows use to enter text into a field and be told
whether or not that text represents a valid number. If the input is not a number, put !!ERROR in the middle.
Hint use Double.parseDouble(String) that throws an exception if the argumnet isn't a valid number. (15pts)
// Assume all imports exist
public class NumberFrame extends JFrame {
public static void main(String[] args) {
new NumberFrame().setVisible(true);
}
private JLabel heading = new JLabel("Enter a number below");
private JLabel myLabel;
private JTextField inputField;
// initialize the JFrame
public NumberFrame() {
setTitle("Numbers");
setSize(170, 125);
setDefaultCloseOperation(EXIT_ON_CLOSE);
Container cp = this.getContentPane();
cp.setLayout(null);
heading.setLocation(0, 0);
heading.setSize(140, 20);
myLabel = new JLabel("Nothing yet ...");
myLabel.setLocation(30, 30);
myLabel.setSize(140, 20);
inputField = new JTextField();
inputField.setSize(170, 20);
inputField.setLocation(0, 72);
cp.add(heading);
cp.add(myLabel);
cp.add(inputField);
2
12. In the box, write class MyInteger so its objects can be sorted into their natural ordering with a call to
java.util.Collections.sort. Each compareTo message must return the difference in value with a
negative value indicating the object is less than the argument. Complete a test method to completely test the
compareTo method (12pts)
public interface Comparable<T> {
public int compareTo(T other);
}
//////////////////////////////////
import static org.junit.Assert.*;
import org.junit.Test;
public class MyIntegerTest {
@Test
public void testMyInteger() {
}
}
13. The UofA Bookstore has decided that there is just too much traffic in the bookstore at the beginning of each
semester. In an effort to reduce in-house traffic, the bookstore has decided to implement an online storefront
where students can purchase all of their books online and just pick them up sometime after they’ve been
purchased. You are to do some analysis and come up with a model for the bookstore’s new online front. Details:
o
o
o
o
o
o
o
A student may remove 1 to many items from the shelf and place them into a shopping basket
A student should be able to remove items from a shopping basket and place them back on the shelf
A student should be able to purchase the items in their shopping basket
To check out, a student must give their shopping basket to the cashier (there is only one cashier)
The cashier creates an order that consists of a item, quantity, and a price based on the item’s ISBN
If the CatCard has enough money then the total amount will be deducted and the items will be removed from
inventory, a claim check confirmation for the order will be sent to the student’s email address
If the CatCard funds are insufficient, place all back on the shelf
Create a list of the five most important objects to model this system along with the major responsibility: (10pts)
Candidate Object
Major Responsibility
3
14. Draw a UML class diagram showing all of your candidate objects and any relationships between them. Show
inheritance relationships, interface implementation, or general association such as dependency by drawing a line.
Write any multiplicity adornment you can think of. You will likely have 1, and or * in a few places at least. Each
classes needs the class name and at least one appropriate method (no attributes needed for a perfect score).
(12pts)
15. Given class Point and a test driver for class Circle and class Rectangle, implement a properly designed
inheritance hierarchy in Java (on the next page). Let Shape be the abstract class. Implement all three classes to
the right of the non-inheritance version on the next page. Completely implement all constructors and all methods.
Include all instance variables. The Circle and Rectangle classes must behave exactly the same with the
inheritance hierarchy as without. The assertions must pass. (20pts)
import static org.junit.Assert.*;
import org.junit.Test;
public class ShapeTest {
@Test
public void test getArea() {
// 10 pixels over, 10 pixels down, radius 2.0
Shape c = new Circle(10, 10, 2.0);
asssertEquals(3.14159, c.getArea(), 0.001);
// width = 3.25, height = 5.75
Shape r = new Rectangle(40, 10, 3.25, 5.75);
sssertEquals(18.6875, r.getArea(), 0.001);
// width = 3.25, height = 5.75
Shape r2 = new Rectangle(40, 60, 2, 3);
asssertEquals(6.0, r.getArea(), 0.1);
}
}
4
public class Point {
private int xPos;
private int yPos;
// Use this type
Using good Object-Oriented Design, completely implement the hierarchy here
public Point(int x, int y) {
xPos = x;
yPos = y;
}
public int getX() {
return xPos;
}
public int getY() {
return yPos;
}
}
public class Rectangle {
private Point upperLeft;
private double width;
private double height;
public Rectangle(int x, int y,
double height, double width) {
upperLeft = new Point(x, y);
width = width;
height = height;
}
public int getX() {
return upperLeft.getX();
}
public int getY() {
return upperLeft.getY();
}
public double getArea() {
return width * height;
}
}
public class Circle {
private Point upperLeft;
private double radius;
public Circle(int x, int y,
double diameter) {
upperLeft = new Point(x,y);
radius = diameter / 2;
}
public int getX() {
return upperLeft.getX();
}
public int getY() {
return upperLeft.getY();
}
public double getArea() {
return Math.PI*Math.pow(radius, 2);
}
}
5
16. The Command design pattern encapsulates the concept of a command into an object. You can save it for
later execution. In the following code, six commands of two different types are constructed and saved in a
Vector. Later on, the execute message is sent to all six Command objects. The three things that you will be
asked to write are highlighted in boldface: Command, BorrowCommand, and ReturnCommand.
// Have two borrowers and three books to store in the two Command objects
Borrower joe = new Borrower(“Joe”);
Borrower kim = new Borrower(“Kim”);
Book b0 = new Book(“Pascal”);
Book b1 = new Book(“Java”);
Book b2 = new Book(“c++”);
Command
Command
Command
Command
Command
Command
c1 = new BorrowCommand(joe, b0);
// Construct a Commmand so Joe borrows Pascal
c2 = new BorrowCommand(joe, b1);
// Construct a Commmand Joe borrows Java
c3 = new BorrowCommand(kim, b2);
//
...
c4ThatFails = new BorrowCommand(kim, b0); // Nothing will happen later with execute()
c5 = new ReturnCommand(joe, b0);
c6Fails = new ReturnCommand(joe, b2);
Output
Joe has [] attempts to BORROW Pascal
[Joe has [Pascal], Kim has []]
List commandList = new Vector();
commandList.add(c1);
commandList.add(c2);
commandList.add(c3);
commandList.add(c4ThatFails); // already out
commandList.add(c5);
commandList.add(c6Fails); // Doesn't have
Joe has [Pascal] attempts to BORROW Java
[Joe has [Pascal, Java], Kim has []]
Kim has [] attempts to BORROW c++
[Joe has [Pascal, Java], Kim has [c++]]
Kim has [c++] attempts to BORROW Pascal
[Joe has [Pascal, Java], Kim has [c++]]
for(int j = 0; j < commandList.size(); j++) {
Command ref = (Command)commandList.get(j);
ref.execute();
System.out.println(borrowerList);
System.out.println();
}
Joe has [Pascal, Java] attempts to RETURN Pascal
[Joe has [Java], Kim has [c++]]
Joe has [Java] attempts to RETURN c++
[Joe has [Java], Kim has [c++]]
6
16a) Write interface Command as if it were in its own file
16b) Complete class BorrowCommand as if it were in its own file. The execute method adjusts the Borrower
and the Book if everything is all right. However, if the Book is already borrowed, execute returns false.
// BorrowCommand attaches a specific book copy to a specific subscriber, both, the book
// copy’s and the subscriber’s objects are supplied by the programmer.
public class BorrowCommand implements Command {
protected Borrower theBorrower;
protected Book theBook;
public BorrowCommand(Borrower aBorrower, Book aBook) {
theBorrower = aBorrower;
theBook = aBook;
}
// When the Borrow button is clicked, execute this
public boolean execute() {
System.out.println(theBorrower + " attempts to BORROW " + theBook);
}
public boolean undo() { // a borrow by returning
System.out.println(theBorrower + " undo a Borrow" + theBook);
7