- Compare and contrast object-oriented programming with procedural programming. [4]
Procedural programming is action-oriented: the code is a sequence of
procedures, and the data structures are passed as parameters to the procedures.
The focus is on the 'verbs'. In contrast, object-oriented programming is
data-oriented: code is organized into classes, centred around objects, and the
procedures are treated as methods within each class. The focus is on the
'nouns'.
- Explain what the JDK and JRE are and contrast them. [3]
- Java Runtime Environment
- what you need to run (other people's) Java programs: the Java
virtual machine (command line: java).
- Java Development Environment
- what you need to compile (make your own) Java programs: javac compiler.
- Describe and contrast the eight Java primitive types. [6]
- bool
- boolean type, just true and false
- char
- a Unicode character
- byte
- an integer represented with 1 byte
- short
- an integer represented with 2 bytes
- int
- an integer represented with 4 bytes
- long
- an integer represented with 8 bytes
- float
- a real value represented with 4 bytes
- double
- a real value represented with 8 bytes
- Describe the MVC design pattern [4]
- Model:
- Data structures and methods to interact with the data.
e.g., 2D array of letters for word-search
- View:
- Display/output, summary of the data, statistics, etc.
e.g., Swing labels, text output
- Controller:
- Input/control from the user or other programs.
e.g., Swing buttons, keyboard input
- Explain and contrast method overloading with method
overriding. [4]
- overloading
- multiple versions of the same method (same name) but with
different number/types of parameters.
- overriding
- a method defined in a subclass overrides a method of the same name
in the superclass.
- What is an abstract superclass? What would you use one for?
Give an example of such a situation (no code required, just describe the
situation). How do you declare a class to be abstract? [4]
An abstract class is not meant to be instantiated directly.
An abstract superclass can be used as a way of organizing its subclasses
under one category. For example, Dog, Cat, and Cow all are within the
Mammal category. It makes sense to have specific instances of Dog, Cat,
and Cow, but not of Mammal. Mammal is the abstract superclass.
In Java, an abstract class is declared with the 'abstract' keyword.
Concrete subclasses must override all abstract functions and provide
bodies to them.
- What is a Java class interface? Think of an example and
describe it (need not be one standard to Java).
When might a designer choose to define an interface rather than
an abstract superclass? [5]
An interface is a named set of methods, for instance the
ActionListener interface specifies the actionPerformed() method
and advertises that a class knows how to respond to action events.
Interfaces specify functionality, i.e., what a class knows how to do.
Abstract superclasses specify identity, i.e., what a class is.
Multiple classes that inherit from different superclasses may
implement the same interface, but in Java multiple inheritance is not
permitted.
- Describe and contrast the four options we have in Java for
access modifiers on attributes/methods. [4]
- private
- only methods in this class can access
- (no modifier)
- methods in this class and this package can access
- protected
- also subclasses can access
- public
- anyone can access
- Name and briefly describe at least five Swing widget classes.
[4]
JLabel, JTextField, JPasswordField, JButton, JCheckBox, JRadioButton,
JComboButton, JTextArea, JScrollPane, ...
- What basic shapes can Java's Graphics class draw?
Name at least four.
Also, name and describe the basic functions used to draw them. [4]
drawLine(), drawRect(), drawOval(), drawArc(), drawPolyline(), drawPolygon(),
draw3DRect(), drawRoundRect(), ...
- In computer graphics (e.g., Java2D), what is clipping? [4]
Clipping is removing primitives -- or portions of primitives -- that lie
outside the current 2D viewport. This may involve changing the shape of
primitives to ensure they do not draw outside the viewport.
- Consider a student enrolment database like what we have at TWU: it holds
students' personal information, transcripts, current enrolment, advising
notes, etc. Design a use-case chart for such a system. (You have a
fair amount of freedom in how to design the system.) [6]
- Declare simple Java classes and sketch a UML class diagram
that formalizes the following set of statements. Declare and diagram
every (non-primitive) class used. Implementations of methods are not required.[8]
- Every Shape has a lineColour and fillColour.
- Every Shape knows how to draw itself.
- Everything that knows how to draw itself is called a Drawable;
Shapes are Drawables.
- There are various kinds of Shapes: Rectangles, Ovals,
and Dots. It doesn't make sense to have an instance of a Shape, only
instances of the subclasses.
- Every Rectangle has a width and height;
every Oval has a radius and an eccentricity (non-circularity).
- There are also Squares, which are Rectangles where the
height is enforced to be equal to the width, and Circles, which are
Ovals with eccentricity=1.
interface Drawable {
void draw();
}
abstract class Shape implements Drawable {
private Colour lineColour;
private Colour fillColour;
public void draw() {};
}
class Rectangle extends Shape {
private float width;
private float height;
}
class Oval extends Shape {
private float radius;
private float eccentricity;
}
class Dot extends Shape {}
class Square extends Rectangle {}
class Circle extends Oval {}
- Write a Java class that takes a list of integers and outputs
two columns of numbers: the first column shows the distinct numbers
in the list; the second column shows the frequency with which that
integer shows up in the list. (This is a frequency table.)
For example, if the input list was
(-12, 2, 0, 5, 2, 2, -12),
then the output could be:
N Count
-12 2
2 3
0 1
5 1
(Formatting/spacing of the output is not too important,
and the output does not need to be in sorted order.)
You do not need to write a complete program that tests this
(and you do not need keyboard-interactive user input), just a
class that provides a function to do this.
Docstrings and comments are not necessary but may garner partial
credit. [10]
See FreqTable.java.