Transcript Notes

COMP 121
Week 01
Agenda
• Introductions
• Review policies, procedures, and
expected outcomes
• Learning Activities
• Introduce homework problems
Introductions
Policies, Procedures
and Expected Outcomes
Administrivia
Course Outcomes
1. Apply the advanced object-oriented principles
of inheritance and polymorphism to analyze
real-world problems and design, implement,
and test solutions.
2. Detect and correct runtime program errors
using exceptions.
3. Read and write random access and sequential
files of text and binary data.
Administrivia
Course Outcomes (continued)
4. Analyze space and time complexity of algorithms.
5. Design, implement, test, debug, and document linear
data structures.
6. Use lists, stacks, and queues to solve problems.
7. Recognize and apply the design patterns of Strategy,
Template Method, Iterator, and Adapter in objectoriented designs.
8. Discuss relationships between the disparate topic
areas addressed in this course.
Administrivia
Texts
Big Java 3rd Edition, Cay Horstmann, ISBN: 9780-470-10554-2 (2nd Edition is acceptable)
Head First Design Patterns, Eric Freeman and
Elisabeth Freeman, ISBN: 0-596-00712-4
Objects, Abstraction, Data Structures, and Design
Using Java, Elliot Koffman and Paul Wolfgang,
ISBN: 0-471-46756-1
Administrivia
Points breakdown
Pct
Type
Count
Each
Total
10
15
150
35% Labs
5
70
350
45% Exams
3
150
450
5%
1
50
50
15% Homework
Reflection Paper
1000
Weekly Activities
1.
2.
3.
4.
5.
6.
7.
Check course announcements and bulletin board
postings
Read the associated sections from the text books
and key points
Complete the weekly learning activities in class
Read and consider the weekly homework problems
Complete the homework assignment
Work on any scheduled lab assignments
Note significant learning for reflection paper
Weekly Activities
Exam
Lab
Homework
Discussion
Learning activities
Readings
• Course is carefully
designed such that
each activity lays the
foundation for the
next
• Skipping activities is
considered harmful
• I will assume the
lower layers when
discussing the higher
layers
Major Themes
• Object-oriented design
• Design patterns
• Test-driven development
• Linear data structures
This Week’s Outcomes
• Review the fundamental object-oriented
principles of encapsulation, composition, and
abstraction.
• Review the algorithmic building blocks of
methods, selection, and repetition.
• Review the properties, operations, and use of
primitive data types, strings, and arrays.
• Use an integrated development environment to
edit, compile, run, submit, and correct a Java
program.
Guided Learning
Activity Solutions for Week 01
Learning Activities
Activity 1-1
• Outcome: Review the fundamental
object-oriented principles of
encapsulation, composition, and
abstraction.
Learning Activities
Q: Consider the following problem description, and decide
what classes you should use to implement it. For each
class, also list its methods and instance fields.
A user places coins in a vending machine and selects a
product by pushing a button. If the inserted coins are
sufficient to cover the purchase price of the product,
the product is dispensed and change is given.
Otherwise, the inserted coins are returned to the user.
The user also has an option to cancel the sale and
have his or her coins returned.
Learning Activities
CoinCollector
Product
-price : double
+getPrice() : double
+setPrice() : void
-numQuarters : int
-numDimes : int
-numNickels : int
+getTotal() : double
+dispenseCoins(in amount : double) : void
+insertCoin(in value : int) : void
Controller
+dispenseProduct() : void
+cancelSale() : void
Learning Activities
Q: Employees receive their paychecks biweekly.
Hourly workers are paid their hourly rates for
each hour worked; however, anyone who
works more than 40 hours per week is paid
overtime at 150% of the regular wage.
Salaried employees simply get the two-week
portion of their yearly salary regardless of how
many hours they work.
Learning Activities
HourlyEmployee
-hourlyWage : double
-hoursWorked : int
+getHourlyWage() : double
+getHoursWorked() : int
+calculatePay() : double
ExemptEmployee
-salary : int
+getSalary() : int
+calculatePay() : double
Learning Activities
Q: Customers order products from a store.
Invoices are generated to list the items,
payments received, and amount still due.
Products are shipped to the shipping
address of the customer, and invoices
are sent to the billing address.
Learning Activities
Address
-streetAddr : string
-city : string
-state : string
-zip : string
+getStreetAddr() : string
+getCity() : string
+getState() : string
+getZip() : string
Customer
-name : string
-mailingAddr : Address
-billingAddr : Address
+getName() : string
+getBillingAddr() : Address
+getBillingAddr()
Invoice
-customer : Customer
-lineItems : LineItem
-orderTotal : double
-paymentsReceived : double
-amountOwed : double
+getCustomer() : Customer
+getLineItem() : LineItem
+getOrderTotal() : double
+getPaymentsReceived() : double
+getAmountOwed() : double
LineItem
Product
-product : Product
-qty : int
+getProduct() : Product
+getQty() : int
-name : string
-unitPrice : double
+getName() : string
+getUnitPrice() : double
Learning Activities
Activity 1-2
Outcome: Review the algorithmic building
blocks of methods, selection, and
repetition.
Q: Describe the selection control structures
available within Java.
Learning Activities
A:
if (condition) {
…
} else {
…
}
switch (selector) {
case label: statements; break;
case label: statements; break;
default: statements;
}
Q: Describe the repetition control structures available within Java.
Learning Activities
A:
while (condition) {
…
}
do {
…
} while (condition);
for (initialization; condition; update) {
…
}
Q: In the following expression, what happens if num is 0?
(num != 0 && num / num)
Learning Activities
A: It looks like an ArithmeticException should be
thrown because of division by zero, but
because of short-circuiting, the second half of
the expression is never evaluated.
Q: What is the purpose of a break statement?
What is the purpose of a continue statement?
Learning Activities
A: The purpose of a break statement is to
end execution of a loop immediately.
The purpose of a continue statement is
to end execution of the current iteration,
and begin the next iteration immediately.
Learning Activities
Activity 1-3
Outcome: Review the properties,
operations, and use of primitive data
types, strings, and arrays.
Q: List and describe the primitive types in Java.
Learning Activities
A:
Data type
Range
Size
byte
-128 to 127
1 byte
short
-32768 to 32768
2 bytes
int
-2147483648 to 2147483647
4 bytes
long
-9223372036854775808 to 922337203685477807
8 bytes
float
-3.4E38 to 3.4E38 with 7 digits accuracy
4 bytes
double
-1.7E308 to 1.7E308 with 17 digits accuracy
8 bytes
char
0 to 65535
2 bytes
boolean
true/false
Q: In Java, how do declare a variable to be constant?
Learning Activities
A: With the keyword final.
Q: What does each of the following
operators do?
Learning Activities
Operator
Use/Meaning
[]
Indexes into arrays
()
Controls order of operations
.
Accesses members of objects
++
Increment
--
Decrement
!
Logical NOT
new
Creates new objects
*
Multiplication
/
Division
%
Modulo Division
<
Less Than
>=
Greater Than or Equal To
==
Compare For Equality
=
Assignment
!=
Not Equal To
&&
Logical AND
||
Logical OR
Learning Activities
Q: Given the following three statements:
String greeting = “hello”;
String welcome = greeting;
String salutations = “hello”;
What are the truth-values of
(greeting == welcome) and
(greeting == salutations)?
Learning Activities
A: As it turns out, they’re both true because of
the specific details of how the String class
works. However, you should not use == to
compare the value of objects.
Q: If you had a long String that contained an
entire paragraph of text, how would you go
about breaking it up into individual words?
Learning Activities
A:
String [] words = text.split(“ “);
Learning Activities
Q: Write tests for the flight control
system, and repair the parts that
have been sabotaged.
Homework Problems
BlueJ Debugger Demo
Homework 01
• No homework this week!
• Install and review the software
• Java Development Kit (JDK)
• JDK Documentation
• BlueJ IDE
• Activity Files
Question and Answer Session