1 cos 260 day 10 tony gauvin. 2 agenda questions? 4 th mini quiz today –chapter 4 assignment 2 due...

37
1 COS 260 DAY 10 Tony Gauvin

Upload: dustin-barton

Post on 21-Jan-2016

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

1

COS 260 DAY 10

Tony Gauvin

Page 2: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

2

Agenda• Questions? • 4th Mini quiz Today

– Chapter 4

• Assignment 2 Due • Capstone Discussion Proposals Due Oct 15 • No class on Oct 15 • Next Mini Quiz on Chapter 5 Oct 19• Assignment 3 Posted

– Due Oct 19

• Finish Discussion on More Sophisticated Behaviors

Page 3: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

3

Assignment 3 Beginning with this assignment make sure all of your code is properly documented as shown in section 5.10 of the textbook (page 181 & 182). Proper documentation will be 10% of the grade for this and future assignments.   

Problem 1  (30 points)Complete exercises 4.72, 4.73, and 4.74 on page 149. Use the weblog-analyzer project file included with this assignment  Zip the webblog-analyzer project directory, name the zip file "problem1" and upload. Make sure you update the documentation to reflect the changes to the weblog-analyzer project.

Problem 2 (40 points)Complete exercises 5.57, 5.58, 5.59, 5.60 and 5.61 on page 188 & 189  of the textbook.  For exercise 5.61 draw a Jack O lantern (carved pumpkin) with the words "Happy Halloween" somewhere on the canvas.  Save the results of these five exercises to a new project called scribble-ver1, Zip the project directory, name the zip file "problem2" and upload. Make sure you update the documentation to reflect the changes to the scribble-ver1  project. 

Problem 3 (30 points) Complete exercises  5.62, 5.63 and 5.64 on page 190.   Save the results of these three exercises to a new project called bouncing-balls-ver1, Zip the project directory, name the zip file "problem3" and upload. Make sure you update the documentation to reflect the changes to the bouncing-balls-ver1 project. 

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 4: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

More sophisticated behavior

Using library classes to implement some more advanced

functionality

5.0

Page 5: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

5

Using Random (need for game development)

• The library class Random can be used to generate random numbers (look up in documentation)

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

import java.util.Random;...Random rand = new Random();...int num = rand.nextInt();int value = 1 + rand.nextInt(100);int index = rand.nextInt(list.size());

random-check.zip

Page 6: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

6

Selecting random responses for TechSupport

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

public Responder(){ randomGenerator = new Random(); responses = new ArrayList<String>(); fillResponses();}

public void fillResponses(){ fill responses with a selection of response strings}

public String generateResponse(){ int index = randomGenerator.nextInt(responses.size()); return responses.get(index);}

Tech-support2

Page 7: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

7

Parameterized classes

• The documentation includes provision for a type parameter:– ArrayList<E>

• These type names reappear in the parameters and return types:– E get(int index)– boolean add(E e)

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 8: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

8

Parameterized classes

• The types in the documentation are placeholders for the types we use in practice:– An ArrayList<TicketMachine>

actually has methods:– TicketMachine get(int index)– boolean add(TicketMachine e)

•Replace “E” with the type you will use

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 9: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

9

Review

• Java has an extensive class library.• A good programmer must be familiar

with the library.• The documentation tells us what we

need to know to use a class (its interface).

• Some classes are parameterized with additional types.• Parameterized classes are also known as

generic classes or generic types.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 10: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

More sophisticated behavior

Using library classes to implement some more advanced functionality

Page 11: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

11

Main concepts to be covered

• Further library classes• Set • Map

• Writing documentation• javadoc

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 12: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

12

Updating TechSupport

• Produce responses based on keywords• Example

– Problem: slow– Answer: Install more memory

• Produce responses based on keywords in context – Problem: My computer is slow– Answer: Install more memory–

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 13: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

13

Using sets

import java.util.HashSet;

...HashSet<String> mySet = new HashSet<String>();

mySet.add("one");mySet.add("two");mySet.add("three");

for(String element : mySet) { do something with element}

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Compare with code

for an ArrayList!

https://docs.oracle.com/javase/8/docs/api/java/util/HashSet.html

Page 14: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

14

HashSet methods

• boolean add(E e)• void clear()• boolean contains(Object 0)• boolean isEmpty()• int size()• boolean(Object o)

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 15: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

15

Tokenising Stringspublic HashSet<String> getInput() { System.out.print("> "); String inputLine = reader.nextLine().trim().toLowerCase();

String[] wordArray = inputLine.split(" "); HashSet<String> words = new HashSet<String>();

for(String word : wordArray) { words.add(word); } return words;}

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 16: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

16

Maps

• Maps are collections that contain pairs of values.

• Pairs consist of a key and a value.

• Lookup works by supplying a key, and retrieving a value.

• Example: a telephone book.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 17: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

17

Using maps

• A map with strings as keys and values

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

"Charles Nguyen"

:HashMap

"(531) 9392 4587"

"Lisa Jones" "(402) 4536 4674"

"William H. Smith" "(998) 5488 0123"

Page 18: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

18

Using maps

HashMap <String, String> phoneBook = new HashMap<String, String>();

phoneBook.put("Charles Nguyen", "(531) 9392 4587");phoneBook.put("Lisa Jones", "(402) 4536 4674");phoneBook.put("William H. Smith", "(998) 5488 0123");

String phoneNumber = phoneBook.get("Lisa Jones");System.out.println(phoneNumber);

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 19: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

19

List, Map and Set

• Alternative ways to group objects.• Varying implementations available:

– ArrayList, LinkedList– HashSet, TreeSet

• But HashMap is unrelated to HashSet, despite similar names.

• The second word reveals organizational relatedness.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 20: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

20

Abstract Data Types• Set

– Collection of values in no certain order with no duplicates

• List – Ordered sequence of “like types” with duplicates

possible

• Map – A collection of (key, value) pairs such that each

possible key appears only once on the collection.

• Tech-support-complete

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 21: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

21

Writing class documentation

• Your own classes should be documented the same way library classes are.

• Other people should be able to use your class without reading the implementation.

• Make your class a potential 'library class'!

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 22: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

22

Elements of documentation

Documentation for a class should include:• the class name• a comment describing the overall

purpose and characteristics of the class• a version number• the authors’ names• documentation for each constructor and

each method

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 23: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

23

Elements of documentation

The documentation for each constructor and method should include:

• the name of the method• the return type• the parameter names and types• a description of the purpose and

function of the method• a description of each parameter• a description of the value returned

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 24: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

24

javadoc

Class comment:

/**

* The Responder class represents a response

* generator object. It is used to generate an

* automatic response.

*

* @author Michael Kölling and David J. Barnes

* @version 1.0 (2011.07.31)

*/

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

http://docs.oracle.com/javase/1.5.0/docs/guide/javadoc/index.html http://www.tutorialspoint.com/java/java_documentation.htm

Page 25: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

25

javadoc

Method comment:

/** * Read a line of text from standard input (the text * terminal), and return it as a set of words. * * @param prompt A prompt to print to screen. * @return A set of Strings, where each String is * one of the words typed by the user */public HashSet<String> getInput(String prompt) { ...}

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 26: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

26

Public vs private

• Public elements are accessible to objects of other classes:• Fields, constructors and methods

• Fields should not be public.• Private elements are accessible

only to objects of the same class.• Only methods that are intended

for other classes should be public.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 27: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

27

Information hiding

• Data belonging to one object is hidden from other objects.

• Know what an object can do, not how it does it.

• Information hiding increases the level of independence.

• Independence of modules is important for large systems and maintenance.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 28: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

28 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Time to Play

Page 29: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

29

Code completion

• The BlueJ editor supports lookup of methods.

• Use Ctrl-space after a method-call dot to bring up a list of available methods.

• Use Return to select a highlighted method.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 30: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

30

Code completion in BlueJ

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 31: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

31

Review

• Java has an extensive class library.• A good programmer must be familiar

with the library.• The documentation tells us what we

need to know to use a class (interface).• The implementation is hidden

(information hiding).• We document our classes so that the

interface can be read on its own (class comment, method comments).

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 32: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

Class and constant variables

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 33: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

33 Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 34: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

34

Class variables

• A class variable is shared between all instances of the class.

• In fact, it belongs to the class and exists independent of any instances.

• Designated by the static keyword.• Public static variables are accessed

via the class (not object) name; e.g.:– Thermometer.boilingPoint

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 35: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

35

Class variables

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 36: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

36

Constants

• A variable, once set, can have its value fixed.

• Designated by the final keyword.– final int max = list.size();

• Final fields must be set in their declaration or the constructor.

• Combing static and final is common.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling

Page 37: 1 COS 260 DAY 10 Tony Gauvin. 2 Agenda Questions? 4 th Mini quiz Today –Chapter 4 Assignment 2 Due Capstone Discussion Proposals Due Oct 15 No class on

37

Class constants

• static: class variable• final: constantprivate static final int gravity = 3;

• Public visibility is less of an issue with final fields.

• Upper-case names often used for class constants:

public static final int BOILING_POINT = 100;

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling