first commit
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=InputReader()
|
||||
comment0.text=\n\ Create\ a\ new\ InputReader\ that\ reads\ text\ from\ the\ text\ terminal.\n
|
||||
comment1.params=
|
||||
comment1.target=java.util.HashSet\ getInput()
|
||||
comment1.text=\n\ Read\ a\ line\ of\ text\ from\ standard\ input\ (the\ text\ terminal),\n\ and\ return\ it\ as\ a\ set\ of\ words.\n\n\ @return\ \ A\ set\ of\ Strings,\ where\ each\ String\ is\ one\ of\ the\ \n\ \ \ \ \ \ \ \ \ \ words\ typed\ by\ the\ user\n
|
||||
numComments=2
|
@@ -0,0 +1,45 @@
|
||||
import java.util.HashSet;
|
||||
import java.util.Scanner;
|
||||
|
||||
/**
|
||||
* InputReader reads typed text input from the standard text terminal.
|
||||
* The text typed by a user is then chopped into words, and a set of words
|
||||
* is provided.
|
||||
*
|
||||
* @author Michael Kölling and David J. Barnes
|
||||
* @version 1.0 (2016.02.29)
|
||||
*/
|
||||
public class InputReader
|
||||
{
|
||||
private Scanner reader;
|
||||
|
||||
/**
|
||||
* Create a new InputReader that reads text from the text terminal.
|
||||
*/
|
||||
public InputReader()
|
||||
{
|
||||
reader = new Scanner(System.in);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read a line of text from standard input (the text terminal),
|
||||
* and return it as a set of words.
|
||||
*
|
||||
* @return A set of Strings, where each String is one of the
|
||||
* words typed by the user
|
||||
*/
|
||||
public HashSet<String> getInput()
|
||||
{
|
||||
System.out.print("> "); // print prompt
|
||||
String inputLine = reader.nextLine().trim().toLowerCase();
|
||||
|
||||
String[] wordArray = inputLine.split(" "); // split at spaces
|
||||
|
||||
// add words from array into hashset
|
||||
HashSet<String> words = new HashSet<>();
|
||||
for(String word : wordArray) {
|
||||
words.add(word);
|
||||
}
|
||||
return words;
|
||||
}
|
||||
}
|
@@ -0,0 +1,30 @@
|
||||
TechSupport - the DodgySoft Technical support system.
|
||||
|
||||
This project is part of the material for the book
|
||||
|
||||
Objects First with Java - A Practical Introduction using BlueJ
|
||||
Sixth edition
|
||||
David J. Barnes and Michael Kölling
|
||||
Pearson Education, 2016
|
||||
|
||||
This project is discussed in chapter 6.
|
||||
|
||||
|
||||
This project implements a technical support system for customers of the
|
||||
DodgySoft software company. Users can describe their software problems and
|
||||
get advice instantly!
|
||||
|
||||
The idea is based on Eliza - a famous program described by Joseph Weizenbaum
|
||||
in 1966. (Do a web search for "Eliza" and "Weizenbaum" if you want to know
|
||||
more about this.)
|
||||
|
||||
In fact, it is much more primitive than Eliza. But that's enough to match the
|
||||
quality of many software companies' technical support advice... ;-)
|
||||
|
||||
To start this program, create a SupportSystem object and execute the "start"
|
||||
method.
|
||||
|
||||
Then start describing your problem by typing in the terminal window.
|
||||
|
||||
The purpose of this project is to demonstrate and study library classes, such
|
||||
as ArrayList, HashMap, HashSet, and Random.
|
@@ -0,0 +1,17 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=Responder()
|
||||
comment0.text=\n\ Construct\ a\ Responder\n
|
||||
comment1.params=words
|
||||
comment1.target=java.lang.String\ generateResponse(java.util.HashSet)
|
||||
comment1.text=\n\ Generate\ a\ response\ from\ a\ given\ set\ of\ input\ words.\n\ \n\ @param\ words\ \ A\ set\ of\ words\ entered\ by\ the\ user\n\ @return\ \ \ \ \ \ \ A\ string\ that\ should\ be\ displayed\ as\ the\ response\n
|
||||
comment2.params=
|
||||
comment2.target=void\ fillResponseMap()
|
||||
comment2.text=\n\ Enter\ all\ the\ known\ keywords\ and\ their\ associated\ responses\n\ into\ our\ response\ map.\n
|
||||
comment3.params=
|
||||
comment3.target=void\ fillDefaultResponses()
|
||||
comment3.text=\n\ Build\ up\ a\ list\ of\ default\ responses\ from\ which\ we\ can\ pick\ one\n\ if\ we\ don't\ know\ what\ else\ to\ say.\n
|
||||
comment4.params=
|
||||
comment4.target=java.lang.String\ pickDefaultResponse()
|
||||
comment4.text=\n\ Randomly\ select\ and\ return\ one\ of\ the\ default\ responses.\n\ @return\ \ \ \ \ A\ random\ default\ response\n
|
||||
numComments=5
|
@@ -0,0 +1,146 @@
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.Random;
|
||||
|
||||
/**
|
||||
* The responder class represents a response generator object.
|
||||
* It is used to generate an automatic response, based on specified input.
|
||||
* Input is presented to the responder as a set of words, and based on those
|
||||
* words the responder will generate a String that represents the response.
|
||||
*
|
||||
* Internally, the reponder uses a HashMap to associate words with response
|
||||
* strings and a list of default responses. If any of the input words is found
|
||||
* in the HashMap, the corresponding response is returned. If none of the input
|
||||
* words is recognized, one of the default responses is randomly chosen.
|
||||
*
|
||||
* @author Michael Kölling and David J. Barnes
|
||||
* @version 1.0 (2016.02.29)
|
||||
*/
|
||||
public class Responder
|
||||
{
|
||||
// Used to map key words to responses.
|
||||
private HashMap<String, String> responseMap;
|
||||
// Default responses to use if we don't recognise a word.
|
||||
private ArrayList<String> defaultResponses;
|
||||
private Random randomGenerator;
|
||||
|
||||
/**
|
||||
* Construct a Responder
|
||||
*/
|
||||
public Responder()
|
||||
{
|
||||
responseMap = new HashMap<>();
|
||||
defaultResponses = new ArrayList<>();
|
||||
fillResponseMap();
|
||||
fillDefaultResponses();
|
||||
randomGenerator = new Random();
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate a response from a given set of input words.
|
||||
*
|
||||
* @param words A set of words entered by the user
|
||||
* @return A string that should be displayed as the response
|
||||
*/
|
||||
public String generateResponse(HashSet<String> words)
|
||||
{
|
||||
for (String word : words) {
|
||||
String response = responseMap.get(word);
|
||||
if(response != null) {
|
||||
return response;
|
||||
}
|
||||
}
|
||||
|
||||
// If we get here, none of the words from the input line was recognized.
|
||||
// In this case we pick one of our default responses (what we say when
|
||||
// we cannot think of anything else to say...)
|
||||
return pickDefaultResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* Enter all the known keywords and their associated responses
|
||||
* into our response map.
|
||||
*/
|
||||
private void fillResponseMap()
|
||||
{
|
||||
responseMap.put("crash",
|
||||
"Well, it never crashes on our system. It must have something\n" +
|
||||
"to do with your system. Tell me more about your configuration.");
|
||||
responseMap.put("crashes",
|
||||
"Well, it never crashes on our system. It must have something\n" +
|
||||
"to do with your system. Tell me more about your configuration.");
|
||||
responseMap.put("slow",
|
||||
"I think this has to do with your hardware. Upgrading your processor\n" +
|
||||
"should solve all performance problems. Have you got a problem with\n" +
|
||||
"our software?");
|
||||
responseMap.put("performance",
|
||||
"Performance was quite adequate in all our tests. Are you running\n" +
|
||||
"any other processes in the background?");
|
||||
responseMap.put("bug",
|
||||
"Well, you know, all software has some bugs. But our software engineers\n" +
|
||||
"are working very hard to fix them. Can you describe the problem a bit\n" +
|
||||
"further?");
|
||||
responseMap.put("buggy",
|
||||
"Well, you know, all software has some bugs. But our software engineers\n" +
|
||||
"are working very hard to fix them. Can you describe the problem a bit\n" +
|
||||
"further?");
|
||||
responseMap.put("windows",
|
||||
"This is a known bug to do with the Windows operating system. Please\n" +
|
||||
"report it to Microsoft. There is nothing we can do about this.");
|
||||
responseMap.put("mac",
|
||||
"This is a known bug to do with the Mac operating system. Please\n" +
|
||||
"report it to Apple. There is nothing we can do about this.");
|
||||
responseMap.put("expensive",
|
||||
"The cost of our product is quite competitive. Have you looked around\n" +
|
||||
"and really compared our features?");
|
||||
responseMap.put("installation",
|
||||
"The installation is really quite straight forward. We have tons of\n" +
|
||||
"wizards that do all the work for you. Have you read the installation\n" +
|
||||
"instructions?");
|
||||
responseMap.put("memory",
|
||||
"If you read the system requirements carefully, you will see that the\n" +
|
||||
"specified memory requirements are 1.5 giga byte. You really should\n" +
|
||||
"upgrade your memory. Anything else you want to know?");
|
||||
responseMap.put("linux",
|
||||
"We take Linux support very seriously. But there are some problems.\n" +
|
||||
"Most have to do with incompatible glibc versions. Can you be a bit\n" +
|
||||
"more precise?");
|
||||
responseMap.put("bluej",
|
||||
"Ahhh, BlueJ, yes. We tried to buy out those guys long ago, but\n" +
|
||||
"they simply won't sell... Stubborn people they are. Nothing we can\n" +
|
||||
"do about it, I'm afraid.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Build up a list of default responses from which we can pick one
|
||||
* if we don't know what else to say.
|
||||
*/
|
||||
private void fillDefaultResponses()
|
||||
{
|
||||
defaultResponses.add("That sounds odd. Could you describe that problem in more detail?");
|
||||
defaultResponses.add("No other customer has ever complained about this before. \n" +
|
||||
"What is your system configuration?");
|
||||
defaultResponses.add("That sounds interesting. Tell me more...");
|
||||
defaultResponses.add("I need a bit more information on that.");
|
||||
defaultResponses.add("Have you checked that you do not have a dll conflict?");
|
||||
defaultResponses.add("That is explained in the manual. Have you read the manual?");
|
||||
defaultResponses.add("Your description is a bit wishy-washy. Have you got an expert\n" +
|
||||
"there with you who could describe this more precisely?");
|
||||
defaultResponses.add("That's not a bug, it's a feature!");
|
||||
defaultResponses.add("Could you elaborate on that?");
|
||||
}
|
||||
|
||||
/**
|
||||
* Randomly select and return one of the default responses.
|
||||
* @return A random default response
|
||||
*/
|
||||
private String pickDefaultResponse()
|
||||
{
|
||||
// Pick a random number for the index in the default response list.
|
||||
// The number will be between 0 (inclusive) and the size of the list (exclusive).
|
||||
int index = randomGenerator.nextInt(defaultResponses.size());
|
||||
return defaultResponses.get(index);
|
||||
}
|
||||
}
|
@@ -0,0 +1,14 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=SupportSystem()
|
||||
comment0.text=\n\ Creates\ a\ technical\ support\ system.\n
|
||||
comment1.params=
|
||||
comment1.target=void\ start()
|
||||
comment1.text=\n\ Start\ the\ technical\ support\ system.\ This\ will\ print\ a\ welcome\ message\ and\ enter\n\ into\ a\ dialog\ with\ the\ user,\ until\ the\ user\ ends\ the\ dialog.\n
|
||||
comment2.params=
|
||||
comment2.target=void\ printWelcome()
|
||||
comment2.text=\n\ Print\ a\ welcome\ message\ to\ the\ screen.\n
|
||||
comment3.params=
|
||||
comment3.target=void\ printGoodbye()
|
||||
comment3.text=\n\ Print\ a\ good-bye\ message\ to\ the\ screen.\n
|
||||
numComments=4
|
@@ -0,0 +1,76 @@
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
* This class implements a technical support system. It is the top level class
|
||||
* in this project. The support system communicates via text input/output
|
||||
* in the text terminal.
|
||||
*
|
||||
* This class uses an object of class InputReader to read input from the user,
|
||||
* and an object of class Responder to generate responses. It contains a loop
|
||||
* that repeatedly reads input and generates output until the users wants to
|
||||
* leave.
|
||||
*
|
||||
* @author Michael Kölling and David J. Barnes
|
||||
* @version 1.0 (2016.02.29)
|
||||
*/
|
||||
public class SupportSystem
|
||||
{
|
||||
private InputReader reader;
|
||||
private Responder responder;
|
||||
private WordCounter counter;
|
||||
|
||||
/**
|
||||
* Creates a technical support system.
|
||||
*/
|
||||
public SupportSystem()
|
||||
{
|
||||
reader = new InputReader();
|
||||
responder = new Responder();
|
||||
counter = new WordCounter();
|
||||
}
|
||||
|
||||
/**
|
||||
* Start the technical support system. This will print a welcome message and enter
|
||||
* into a dialog with the user, until the user ends the dialog.
|
||||
*/
|
||||
public void start()
|
||||
{
|
||||
boolean finished = false;
|
||||
|
||||
printWelcome();
|
||||
|
||||
while(!finished) {
|
||||
HashSet<String> input = reader.getInput();
|
||||
|
||||
if(input.contains("bye")) {
|
||||
finished = true;
|
||||
}
|
||||
else {
|
||||
counter.addWords(input);
|
||||
String response = responder.generateResponse(input);
|
||||
System.out.println(response);
|
||||
}
|
||||
}
|
||||
printGoodbye();
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a welcome message to the screen.
|
||||
*/
|
||||
private void printWelcome()
|
||||
{
|
||||
System.out.println("Welcome to the DodgySoft Technical Support System.");
|
||||
System.out.println();
|
||||
System.out.println("Please tell us about your problem.");
|
||||
System.out.println("We will assist you with any problem you might have.");
|
||||
System.out.println("Please type 'bye' to exit our system.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a good-bye message to the screen.
|
||||
*/
|
||||
private void printGoodbye()
|
||||
{
|
||||
System.out.println("Nice talking to you. Bye...");
|
||||
}
|
||||
}
|
@@ -0,0 +1,8 @@
|
||||
#BlueJ class context
|
||||
comment0.params=
|
||||
comment0.target=WordCounter()
|
||||
comment0.text=\n\ Create\ a\ WordCounter\n
|
||||
comment1.params=input
|
||||
comment1.target=void\ addWords(java.util.HashSet)
|
||||
comment1.text=\n\ Update\ the\ usage\ count\ of\ all\ words\ in\ input.\n\ @param\ input\ A\ set\ of\ words\ entered\ by\ the\ user.\n
|
||||
numComments=2
|
@@ -0,0 +1,35 @@
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
||||
/**
|
||||
* Keep a record of how many times each word was
|
||||
* entered by users.
|
||||
*
|
||||
* @author Michael Kölling and David J. Barnes
|
||||
* @version 1.0 (2016.02.29)
|
||||
*/
|
||||
public class WordCounter
|
||||
{
|
||||
// Associate each word with a count.
|
||||
private HashMap<String, Integer> counts;
|
||||
|
||||
/**
|
||||
* Create a WordCounter
|
||||
*/
|
||||
public WordCounter()
|
||||
{
|
||||
counts = new HashMap<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the usage count of all words in input.
|
||||
* @param input A set of words entered by the user.
|
||||
*/
|
||||
public void addWords(HashSet<String> input)
|
||||
{
|
||||
for(String word : input) {
|
||||
int counter = counts.getOrDefault(word, 0);
|
||||
counts.put(word, counter + 1);
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,156 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.8.0_31) on Sun Oct 04 17:08:13 BST 2015 -->
|
||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<TITLE>
|
||||
InputReader
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2015-10-04">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="InputReader";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
<HR>
|
||||
<!-- ======== START OF CLASS DATA ======== -->
|
||||
<H2>
|
||||
Class InputReader</H2>
|
||||
<PRE>
|
||||
java.lang.Object
|
||||
<IMG SRC="./resources/inherit.gif" ALT="extended by "><B>InputReader</B>
|
||||
</PRE>
|
||||
<HR>
|
||||
<DL>
|
||||
<DT><PRE>public class <B>InputReader</B><DT>extends java.lang.Object</DL>
|
||||
</PRE>
|
||||
|
||||
<P>
|
||||
InputReader reads typed text input from the standard text terminal.
|
||||
The text typed by a user is then chopped into words, and a set of words
|
||||
is provided.
|
||||
<P>
|
||||
|
||||
<P>
|
||||
<DL>
|
||||
<DT><B>Version:</B></DT>
|
||||
<DD>1.0 (2016.02.29)</DD>
|
||||
<DT><B>Author:</B></DT>
|
||||
<DD>Michael Kölling and David J. Barnes</DD>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
|
||||
|
||||
<A NAME="constructor_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Constructor Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE><B><A HREF="InputReader.html#InputReader()">InputReader</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
Create a new InputReader that reads text from the text terminal.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<!-- ========== METHOD SUMMARY =========== -->
|
||||
|
||||
<A NAME="method_summary"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Method Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
|
||||
<CODE> java.util.HashSet<java.lang.String></CODE></FONT></TD>
|
||||
<TD><CODE><B><A HREF="InputReader.html#getInput()">getInput</A></B>()</CODE>
|
||||
|
||||
<BR>
|
||||
Read a line of text from standard input (the text terminal),
|
||||
and return it as a set of words.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
|
||||
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD><CODE>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<P>
|
||||
|
||||
<!-- ========= CONSTRUCTOR DETAIL ======== -->
|
||||
|
||||
<A NAME="constructor_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Constructor Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="InputReader()"><!-- --></A><H3>
|
||||
InputReader</H3>
|
||||
<PRE>
|
||||
public <B>InputReader</B>()</PRE>
|
||||
<DL>
|
||||
<DD>Create a new InputReader that reads text from the text terminal.
|
||||
<P>
|
||||
</DL>
|
||||
|
||||
<!-- ============ METHOD DETAIL ========== -->
|
||||
|
||||
<A NAME="method_detail"><!-- --></A>
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
|
||||
<B>Method Detail</B></FONT></TH>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<A NAME="getInput()"><!-- --></A><H3>
|
||||
getInput</H3>
|
||||
<PRE>
|
||||
public java.util.HashSet<java.lang.String> <B>getInput</B>()</PRE>
|
||||
<DL>
|
||||
<DD>Read a line of text from standard input (the text terminal),
|
||||
and return it as a set of words.
|
||||
<P>
|
||||
<DD><DL>
|
||||
|
||||
<DT><B>Returns:</B><DD>A set of Strings, where each String is one of the
|
||||
words typed by the user</DL>
|
||||
</DD>
|
||||
</DL>
|
||||
<!-- ========= END OF CLASS DATA ========= -->
|
||||
<HR>
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
@@ -0,0 +1,32 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.8.0_31) on Sun Oct 04 17:08:13 BST 2015 -->
|
||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<TITLE>
|
||||
All Classes
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2015-10-04">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
|
||||
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white">
|
||||
<FONT size="+1" CLASS="FrameHeadingFont">
|
||||
<B>All Classes</B></FONT>
|
||||
<BR>
|
||||
|
||||
<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
|
||||
<TR>
|
||||
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="InputReader.html" title="class in <Unnamed>" target="classFrame">InputReader</A>
|
||||
<BR>
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
@@ -0,0 +1,32 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.8.0_31) on Sun Oct 04 17:08:13 BST 2015 -->
|
||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<TITLE>
|
||||
All Classes
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2015-10-04">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
|
||||
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white">
|
||||
<FONT size="+1" CLASS="FrameHeadingFont">
|
||||
<B>All Classes</B></FONT>
|
||||
<BR>
|
||||
|
||||
<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
|
||||
<TR>
|
||||
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="InputReader.html" title="class in <Unnamed>">InputReader</A>
|
||||
<BR>
|
||||
</FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
@@ -0,0 +1,45 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.8.0_31) on Sun Oct 04 17:08:13 BST 2015 -->
|
||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<TITLE>
|
||||
Constant Field Values
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2015-10-04">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
|
||||
|
||||
<SCRIPT type="text/javascript">
|
||||
function windowTitle()
|
||||
{
|
||||
if (location.href.indexOf('is-external=true') == -1) {
|
||||
parent.document.title="Constant Field Values";
|
||||
}
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white" onload="windowTitle();">
|
||||
<HR>
|
||||
|
||||
<HR>
|
||||
<CENTER>
|
||||
<H1>
|
||||
Constant Field Values</H1>
|
||||
</CENTER>
|
||||
<HR SIZE="4" NOSHADE>
|
||||
<B>Contents</B><UL>
|
||||
</UL>
|
||||
|
||||
<HR>
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc on Sun Oct 04 17:08:13 BST 2015-->
|
||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<TITLE>
|
||||
Generated Documentation (Untitled)
|
||||
</TITLE>
|
||||
<SCRIPT type="text/javascript">
|
||||
targetPage = "" + window.location.search;
|
||||
if (targetPage != "" && targetPage != "undefined")
|
||||
targetPage = targetPage.substring(1);
|
||||
if (targetPage.indexOf(":") != -1)
|
||||
targetPage = "undefined";
|
||||
function loadFrames() {
|
||||
if (targetPage != "" && targetPage != "undefined")
|
||||
top.classFrame.location = top.targetPage;
|
||||
}
|
||||
</SCRIPT>
|
||||
<NOSCRIPT>
|
||||
</NOSCRIPT>
|
||||
</HEAD>
|
||||
<FRAMESET cols="20%,80%" title="" onLoad="top.loadFrames()">
|
||||
<FRAME src="allclasses-frame.html" name="packageFrame" title="All classes and interfaces (except non-static nested types)">
|
||||
<FRAME src="InputReader.html" name="classFrame" title="Package, class and interface descriptions" scrolling="yes">
|
||||
<NOFRAMES>
|
||||
<H2>
|
||||
Frame Alert</H2>
|
||||
|
||||
<P>
|
||||
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||
<BR>
|
||||
Link to<A HREF="InputReader.html">Non-frame version.</A>
|
||||
</NOFRAMES>
|
||||
</FRAMESET>
|
||||
</HTML>
|
@@ -0,0 +1,41 @@
|
||||
Class documentation
|
||||
<---- javadoc command: ---->
|
||||
/Applications/BlueJ/BlueJ 3.1.5/BlueJ.app/Contents/Frameworks/jdk.framework/Versions/A/Contents/Home/bin/javadoc
|
||||
-author
|
||||
-version
|
||||
-nodeprecated
|
||||
-package
|
||||
-noindex
|
||||
-notree
|
||||
-nohelp
|
||||
-nonavbar
|
||||
-source
|
||||
1.8
|
||||
-classpath
|
||||
/Applications/BlueJ/BlueJ 3.1.5/BlueJ.app/Contents/Resources/Java/bluejcore.jar:/Applications/BlueJ/BlueJ 3.1.5/BlueJ.app/Contents/Resources/Java/junit-4.8.2.jar:/Applications/BlueJ/BlueJ 3.1.5/BlueJ.app/Contents/Resources/Java/userlib/pi4j-core.jar:/Applications/BlueJ/BlueJ 3.1.5/BlueJ.app/Contents/Resources/Java/userlib/pi4j-device.jar:/Applications/BlueJ/BlueJ 3.1.5/BlueJ.app/Contents/Resources/Java/userlib/pi4j-gpio-extension.jar:/Applications/BlueJ/BlueJ 3.1.5/BlueJ.app/Contents/Resources/Java/userlib/pi4j-service.jar:/Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis
|
||||
-d
|
||||
/Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/doc
|
||||
-encoding
|
||||
UTF-8
|
||||
-charset
|
||||
UTF-8
|
||||
-docletpath
|
||||
/Applications/BlueJ/BlueJ 3.1.5/BlueJ.app/Contents/Resources/Java/bjdoclet.jar
|
||||
-doclet
|
||||
bluej.doclet.doclets.formats.html.HtmlDoclet
|
||||
/Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/InputReader.java
|
||||
<---- end of javadoc command ---->
|
||||
Loading source file /Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/InputReader.java...
|
||||
Constructing Javadoc information...
|
||||
Standard Doclet version 1.8.0_31
|
||||
Building tree for all the packages and classes...
|
||||
Generating /Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/doc/InputReader.html...
|
||||
Generating /Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/doc/package-frame.html...
|
||||
Generating /Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/doc/package-summary.html...
|
||||
Generating /Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/doc/constant-values.html...
|
||||
Building index for all the packages and classes...
|
||||
Building index for all classes...
|
||||
Generating /Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/doc/allclasses-frame.html...
|
||||
Generating /Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/doc/allclasses-noframe.html...
|
||||
Generating /Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/doc/index.html...
|
||||
Generating /Users/mik/Documents/Dropbox/ofwj/projects/chapter06/tech-support-analysis/doc/stylesheet.css...
|
@@ -0,0 +1,33 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.8.0_31) on Sun Oct 04 17:08:13 BST 2015 -->
|
||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<TITLE>
|
||||
<Unnamed>
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2015-10-04">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
|
||||
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white">
|
||||
<FONT size="+1" CLASS="FrameTitleFont">
|
||||
<A HREF="package-summary.html" target="classFrame"><Unnamed></A></FONT>
|
||||
<TABLE BORDER="0" WIDTH="100%" SUMMARY="">
|
||||
<TR>
|
||||
<TD NOWRAP><FONT size="+1" CLASS="FrameHeadingFont">
|
||||
Classes</FONT>
|
||||
<FONT CLASS="FrameItemFont">
|
||||
<BR>
|
||||
<A HREF="InputReader.html" title="class in <Unnamed>" target="classFrame">InputReader</A></FONT></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
@@ -0,0 +1 @@
|
||||
|
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<!--NewPage-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<!-- Generated by javadoc (build 1.8.0_31) on Sun Oct 04 17:08:13 BST 2015 -->
|
||||
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<TITLE>
|
||||
|
||||
</TITLE>
|
||||
|
||||
<META NAME="date" CONTENT="2015-10-04">
|
||||
|
||||
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
|
||||
|
||||
|
||||
</HEAD>
|
||||
|
||||
<BODY BGCOLOR="white">
|
||||
<HR>
|
||||
|
||||
<HR>
|
||||
<H2>
|
||||
Package <Unnamed>
|
||||
</H2>
|
||||
|
||||
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
|
||||
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
|
||||
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
|
||||
<B>Class Summary</B></FONT></TH>
|
||||
</TR>
|
||||
<TR BGCOLOR="white" CLASS="TableRowColor">
|
||||
<TD WIDTH="15%"><B><A HREF="InputReader.html" title="class in <Unnamed>">InputReader</A></B></TD>
|
||||
<TD>InputReader reads typed text input from the standard text terminal.</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
|
||||
<P>
|
||||
<DL>
|
||||
</DL>
|
||||
<HR>
|
||||
|
||||
<HR>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
Binary file not shown.
After Width: | Height: | Size: 57 B |
@@ -0,0 +1,29 @@
|
||||
/* Javadoc style sheet */
|
||||
|
||||
/* Define colors, fonts and other style attributes here to override the defaults */
|
||||
|
||||
/* Page background color */
|
||||
body { background-color: #FFFFFF; color:#000000 }
|
||||
|
||||
/* Headings */
|
||||
h1 { font-size: 145% }
|
||||
|
||||
/* Table colors */
|
||||
.TableHeadingColor { background: #CCCCFF; color:#000000 } /* Dark mauve */
|
||||
.TableSubHeadingColor { background: #EEEEFF; color:#000000 } /* Light mauve */
|
||||
.TableRowColor { background: #FFFFFF; color:#000000 } /* White */
|
||||
|
||||
/* Font used in left-hand frame lists */
|
||||
.FrameTitleFont { font-size: 100%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
|
||||
.FrameHeadingFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
|
||||
.FrameItemFont { font-size: 90%; font-family: Helvetica, Arial, sans-serif; color:#000000 }
|
||||
|
||||
/* Navigation bar fonts and colors */
|
||||
.NavBarCell1 { background-color:#EEEEFF; color:#000000} /* Light mauve */
|
||||
.NavBarCell1Rev { background-color:#00008B; color:#FFFFFF} /* Dark Blue */
|
||||
.NavBarFont1 { font-family: Arial, Helvetica, sans-serif; color:#000000;color:#000000;}
|
||||
.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;color:#FFFFFF;}
|
||||
|
||||
.NavBarCell2 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}
|
||||
.NavBarCell3 { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF; color:#000000}
|
||||
|
@@ -0,0 +1,77 @@
|
||||
#BlueJ package file
|
||||
dependency1.from=SupportSystem
|
||||
dependency1.to=InputReader
|
||||
dependency1.type=UsesDependency
|
||||
dependency2.from=SupportSystem
|
||||
dependency2.to=Responder
|
||||
dependency2.type=UsesDependency
|
||||
dependency3.from=SupportSystem
|
||||
dependency3.to=WordCounter
|
||||
dependency3.type=UsesDependency
|
||||
objectbench.height=76
|
||||
objectbench.width=756
|
||||
package.editor.height=407
|
||||
package.editor.width=648
|
||||
package.editor.x=70
|
||||
package.editor.y=80
|
||||
package.numDependencies=3
|
||||
package.numTargets=4
|
||||
package.showExtends=true
|
||||
package.showUses=true
|
||||
project.charset=UTF-8
|
||||
readme.editor.height=651
|
||||
readme.editor.width=882
|
||||
readme.editor.x=53
|
||||
readme.editor.y=23
|
||||
target1.editor.height=777
|
||||
target1.editor.width=945
|
||||
target1.editor.x=53
|
||||
target1.editor.y=23
|
||||
target1.height=60
|
||||
target1.name=InputReader
|
||||
target1.naviview.expanded=true
|
||||
target1.showInterface=false
|
||||
target1.type=ClassTarget
|
||||
target1.typeParameters=
|
||||
target1.width=110
|
||||
target1.x=120
|
||||
target1.y=210
|
||||
target2.editor.height=737
|
||||
target2.editor.width=890
|
||||
target2.editor.x=127
|
||||
target2.editor.y=23
|
||||
target2.height=60
|
||||
target2.name=WordCounter
|
||||
target2.naviview.expanded=false
|
||||
target2.showInterface=false
|
||||
target2.type=ClassTarget
|
||||
target2.typeParameters=
|
||||
target2.width=120
|
||||
target2.x=490
|
||||
target2.y=140
|
||||
target3.editor.height=737
|
||||
target3.editor.width=972
|
||||
target3.editor.x=53
|
||||
target3.editor.y=48
|
||||
target3.height=60
|
||||
target3.name=Responder
|
||||
target3.naviview.expanded=true
|
||||
target3.showInterface=false
|
||||
target3.type=ClassTarget
|
||||
target3.typeParameters=
|
||||
target3.width=100
|
||||
target3.x=370
|
||||
target3.y=210
|
||||
target4.editor.height=755
|
||||
target4.editor.width=860
|
||||
target4.editor.x=147
|
||||
target4.editor.y=27
|
||||
target4.height=60
|
||||
target4.name=SupportSystem
|
||||
target4.naviview.expanded=true
|
||||
target4.showInterface=false
|
||||
target4.type=ClassTarget
|
||||
target4.typeParameters=
|
||||
target4.width=140
|
||||
target4.x=230
|
||||
target4.y=90
|
Reference in New Issue
Block a user