Transcript Java

Java
▮ Java/PC programming environment
▮ Java syntax rules
▮ Java documentation
▮ Java/RAD coding example
Non-graded assg
This presentation is stored in 4thed.Ch02.ppt
Chapter 2
© copyright Janson Industries 2014
1
Setting up the environment
▮ Files are identified by a name, myfile.doc,
and location (aka path), C:\Program Files\
▮ When a file is identified by the path and
file name, C:\Program Files\myfile.doc, it is
considered a fully-qualified reference
▮ If a file is referred to with only name,
myfile.doc, it is a non-qualified reference
Chapter 2
© copyright Janson Industries 2014
2
Setting up the environment
▮ Having to type the fully-qualified name of
every file is time consuming and error
prone
▮ The PATH system variable tells Windows
where to search for non-qualified file
references
▮ The CLASSPATH indictates where to
search for non-qualified .class file
references
Chapter 2
© copyright Janson Industries 2014
3
Setting up the environment
▮ Defining Path and CLASSPATH every time
is time consuming
▮ Could create a .bat program called init
▮ Init.bat would contain the commands to
define Path and CLASSPATH
▮ Simply run init each time
▮ Or, define the system variables
permanently
Chapter 2
© copyright Janson Industries 2014
4
Setting the Path
Right click:
“ My Computer”
Choose:
Properties
Click:
Advanced system settings
Click:
Environment Variables button
Chapter 2
© copyright Janson Industries 2014
5
Setting the Path
In the System Variables pane:
Click the variable Path
Then the Edit button
Chapter 2
© copyright Janson Industries 2014
6
Setting the Path (Windows 7)
In the Edit System Variable
window, add to the end of the
Path value:
;c:\jdk\bin
Then Click the OK button
Change CLASSPATH by
adding the path of your
java application (i.e. .class
files) to the variable
;c:\
Chapter 2
© copyright Janson Industries 2014
7
Setting the Classpath
▮ If there is no
classpath environment
variable, create one
▮ Click New and specify
the variable name
(classpath) and value
Chapter 2
© copyright Janson Industries 2014
8
General steps to run on PC
▮ Save the source code (E.g. Customer.java)
▮ Bring up the command prompt
▮ Set path (path=f:\jdk\bin) to identify the
loaction of the javac and java commands
▮ Set classpath (Set classpath=.;f:\) to identify
location of java class files (i.e. .class files)
▮ Or, change the environment values
▮ Convert to byte code (javac Customer.java)
▮ Run the program (java Customer)
Chapter 2
© copyright Janson Industries 2014
9
Java Concepts
▮ Java “program” is called a class
▮ Java classes grouped into projects and packages
▮ Java classes comprised of global/class variable
definitions and methods
▮ Methods contain executable statements and
local/method variable definitions
▮ Are you familiar with what variables do?
Chapter 2
© copyright Janson Industries 2014
10
Java Language Organization
Project
Package
Package
Class
Class
Package
Class
Variable Method Method Method
Variable
Chapter 2
Statement
© copyright Janson Industries 2014
Variable
Statement
11
Java Language Concepts
▮ Let’s concentrate on the source code
▮ Java classes comprised of class (global)
variable definitions and methods
▮ Methods contain executable statements and
method (local) variable definitions
Chapter 2
© copyright Janson Industries 2014
12
Classes
Class
Variable
Variable
Variable
Method
Method
Statement
Method
Statement
 Class comprised of class variable definitions and
methods
 Methods contain method variable definitions and
executable statements
Chapter 2
© copyright Janson Industries 2014
13
Java Class Example
// Customer.java
public class Customer {
String custName,
Class variables
custStreet, custCSZ;
methods
public Customer() { custName = "No Name";
custStreet = "No Street";
statements
custCSZ = "No CityStateZip"; }
public void printCustInfo(){
System.out.println("CUSTOMER NAME IS:
" + custName);
System.out.println("CUSTOMER STREET IS: " + custStreet);
System.out.println("CUSTOMER CSZ IS:
" + custCSZ); }
public static void main( String[] args ) {
Customer aCust = new Customer();
Method variable
aCust.custName = "Joe Customer";
aCust.printCustInfo();
}
}
Chapter 2
© copyright Janson Industries 2014
14
Classes
▮ Divided into the header and the body
▮ Header defines:
▮ The source code as a class (e.g. “class”)
▮ Access allowed (e.g. “private”, “public”)
▮ The name of class
▮ Must begin with an upper case letter
▮ Must match .java file name
▮ Body is enclosed in braces and contains
class variables and methods
▮ Simple class header example:
▮ public class Customer {
Chapter 2
BODY
© copyright Janson Industries 2014
}
15
Java Class
“A class contains a template for creating objects”
Class access
Class name
Class Definition:
Header
Body
Class names
 Are case sensitive!
 Begin with a capital letter
 No spaces
public class Customer {
class variables
method{}
method{}
}
Body of class begins and ends with braces
Chapter 2
© copyright Janson Industries 2014
16
Java Method
▮ Comprised of a header/definition and body
▮ Header/definition comprised of:
▮ Modifiers (e.g. private, public, static)
▮ Return value type (e.g. void, String)
▮ Method name begins with a lower case letter
(e.g. “getMailingLabel”, “main”)
▮ Parameter(s)/received value(s) in parenthesis (e.g.
(String name), (int age), () means no params)
Chapter 2
© copyright Janson Industries 2014
17
Java Method
▮ When a parameter is define must specify
the data type and the variable name to
hold the data
▮ So with (String name) String is the data
type and the variable that will hold the
passed value is name
▮ (int age), data type is integer (int) and
the variable name is age
18
Java Method
▮ Method header/definition examples:
▮ public void setCustomerName(String custName)
▮ public String getMailingLabel()
▮ public static void main(String[ ] args)
▮ public void setTaxRate(double taxRate)
Chapter 2
© copyright Janson Industries 2014
19
Java Method
▮ Method "access" modifiers (cont’d):
▮ Private methods:
▮ only accessed by other methods within the class
▮ Public methods:
▮ can be accessed by objects external to the class
▮ comprise the class “interface”
▮ Variables can also be public or private
▮ public can be accessed by objects external to the
class
Chapter 2
© copyright Janson Industries 2014
20
Java Concepts
▮ Java classes can be invoked many ways
▮ 2 primary ways
▮ Run with the java command
▮ Instantiated
▮ An object (aka an instance) of the class type is created
▮ An object is an "instance of a class" and is
usually associated with a variable
Chapter 2
© copyright Janson Industries 2014
21
Java Concepts
▮ If java class is invoked with the java command:
▮ main method bytecode converted to machine language
▮ main method machine language loaded into main
memory
▮ main method is executed
▮ If Java class is instantiated:
▮ Entire class' bytecode converted to machine language
and loaded into main memory
▮ i.e. An object of that class type is created
▮ Class (global) variables created
▮ constructor method is executed
Chapter 2
© copyright Janson Industries 2014
22
Specialized Methods
▮ Constructors are methods that:
▮ Can not return any values
▮ Have the same name as the class
▮ Are run when the object is instantiated
▮ Are used to initialize variables and perform setup
operations (e.g. open files, assign user supplied
values, establish communication links, etc.)
▮ Static method “main”:
▮ Java command invokes main method in applications
(main is not run when object instantiated)
▮ Main method header must be defined precisely as
follows:
Chapter 2
© copyright Janson Industries 2014
23
main Method
When main is invoked,
object not created
The method expects an array of
String variables (called args)
public static void main(String[ ] args)
Any class can use
Method name
No values returned
Chapter 2
© copyright Janson Industries 2014
24
Customer has a class header, constructor, and main method that
follow the previously defined rules
Notice how much the class and constructor method headers look alike
What's the difference?
Chapter 2
© copyright Janson Industries 2014
25
Method body
▮ Comprised of:
▮ variable definitions
▮ executable statements
▮ Enclosed in braces { }
public Customer(String name, String street, String cityStateZip)
{
private String custName = null;
private String custStreet = null;
private String custCityStateZip = null;
custName = name;
custStreet = street;
custCityStateZip = cityStateZip;
}
Chapter 2
© copyright Janson Industries 2014
26
Java Language
▮ Variables usually defined at the beginning
of a class or method
▮ Variable definitions:
Access modifier (e.g. “private”, “public”) (optional)
Data type (e.g. “int”, “String”)
Name (e.g. “custID”, “custName”)
Initial value (optional)
End with a semicolon (;)
▮ Examples:
private int custID = 0;
public String custName = null;
Chapter 2
© copyright Janson Industries 2014
27
Java Language
▮ Comment examples:
/* This is
an example */
Multiple line comment
/** This is
an example */
Multiple line comment
public int custID = 0; // This is an example
Single line
comment
▮ In RAD, comment out and uncomment any
line(s) by selecting and pressing CTRL + /
Chapter 2
© copyright Janson Industries 2014
28
Programming Conventions
▮ Class header and start of body defined
public class Customer {
▮ Class variables defined
private String custCityStateZip = null;
private static int lastCustID = 100000;
▮ Methods defined
public Customer(String cityStateZip) {
custCityStateZip = cityStateZip;
int custID = lastCustID + 1;
}
▮ Class body ended
}
Chapter 2
© copyright Janson Industries 2014
29
Source Code Rules
▮ Statements end with a semicolon (;)
private String custCityStateZip = null;
private static int lastCustID = 100000;
▮ Very forgiving re: extra spaces and lines
private String custCityStateZip = null
public Customer(String cityStateZip) {
custCityStateZip = cityStateZip;
int custID = lastCustID + 1;
;
}
▮ To invoke a class method from another
class method (and pass many parms):
this.methodName(parm, parm, etc);
returnValue = this.methodName(parm, parm, etc.);
Chapter 2
© copyright Janson Industries 2014
30
Source Code Rules
▮ To invoke a method from outside the
class, instantiate an object of the class
type, create a variable of the class type
and assign the object to the variable :
▮
Syntax:
Example:
ClassName variableName = new ClassName();
Customer myCust = new Customer();
▮ Then invoke the object’s method:
Syntax:
Example:
Chapter 2
variableName.methodName();
myCust.printCustInfo();
© copyright Janson Industries 2014
31
Source Code Rules
▮ Weird? Not really. To use Word Processing
commands, don’t you need to create a
document?
▮ To use queue commands, doesn’t a queue
have to be created (and referenced in each
command)?
▮ So why shouldn’t you have to create a
Customer object to use a customer function?
Customer myCust = new Customer();
myCust.printCustInfo();
Chapter 2
© copyright Janson Industries 2014
32
Class header
Class variables
Method header
Statements
Method header
Statements
Method header
Statements
What
will be the result of© running
Customerc2sl31 as an application?
Chapter 2
copyright Janson Industries 2014
33
Execution Results
▮ main method bytecode converted to machine
language and loaded into main memory
▮ First statement in main executed: a Customer
object is created. This means:
▮ The entire Customer class’ bytecode is converted to
machine language and loaded into main memory
▮ 3 String objects are created, 3 String class level variables
(custName, custStreet and CustCSZ) are created, and
the String objects are assigned to the variables
▮ The Customer object’s constructor is executed. This
means:
Chapter 2
© copyright Janson Industries 2014
34
Execution Results
▮ 3 String objects are created with the text “No Name”, “No
Street”, “No CityStateZip”
▮ 3 new String variables (custName, custStreet and CustCSZ)
are created and the 3 new String objects are assigned to the
variables
▮ Execution returns to the first statement in the
main method and
▮ The Customer variable aCust is created
▮ The Customer object is assigned to aCust
▮ Second statement in main executed:
▮ A String object is created with the text “Joe Customer”
▮ The new String object with the value “Joe Customer” is
assigned to the Customer object’s class level String variable
Chapter 2
© copyright Janson Industries 2014
35
custName
Execution Results
▮ Third statement in main executed: the Customer
object’s printCustInfo method invoked. This
means:
▮ First println statement is executed, what is shown?
▮ Second println statement is executed, what is shown?
▮ Third println statement is executed, what is shown?
Chapter 2
© copyright Janson Industries 2014
36
Proving main vs. constructor
What will be the result of running this?
Let’s create a new class and run…
Chapter 2
© copyright Janson Industries 2014
37
Click on the src folder name and then File, New, Class
Chapter 2
© copyright Janson Industries 2014
38
Specify the name of the new class (Cust1), click Finish
Chapter 2
© copyright Janson Industries 2014
39
Starts you with a framework
Move the cursor and start typing
Chapter 2
© copyright Janson Industries 2014
40
Enter the source code and run
What are the results and why?
Chapter 2
© copyright Janson Industries 2014
41
Exporting: Moving an app from RAD to the production environment
Click FILE then EXPORT
Chapter 2
© copyright Janson Industries 2014
42
Click File system then Next
Chapter 2
© copyright Janson Industries 2014
43
In real world, usually export to JAR (Java ARchive) files.
They are compressed files.
Chapter 2
© copyright Janson Industries 2014
44
1. Select the java
files to export
2. Enter export
destination or...
...click browse and
specify the location
3. Click OK
4. Click Finish
Chapter 2
© copyright Janson Industries 2014
45
Notice options to create directories and overwriting files
Click Finish
Chapter 2
© copyright Janson Industries 2014
46
Go out and verify Cust1.java is there.
Chapter 2
© copyright Janson Industries 2014
47
Open with notepad to display
Chapter 2
© copyright Janson Industries 2014
48
Make sure classpath and path variables are set
javac and java
Chapter 2
© copyright Janson Industries 2014
49
Exporting
▮ Moving between/setting up
environments is one the most difficult
thing (conceptually) for new
programmers
▮ Programmers develop apps within an
IDE (like RAD) and export to the
production environment
Chapter 2
© copyright Janson Industries 2014
50
Exporting
▮ This is where packages can mess you up!
▮ Ex. For a Customer class stored in project
Proj1 and package C1:
▮ Customer must have a package statement at
beginning of class
package C1;
▮ Class name is now considered C1.Customer
Chapter 2
© copyright Janson Industries 2014
51
Exporting and Running
▮ When file exported to Windows, Customer
file must be in a directory/folder called C1
▮ Project and packages (except default pkg)
implemented in Windows as directories
▮ So, if "create directory structure" specified
▮Both Proj1 and C1 directories are created
▮Also a src folder is created
▮ javac Customer will fail because Customer not class name
▮ javac C1/Customer will fail because Proj1 not in classpath
Chapter 2
© copyright Janson Industries 2014
52
Exporting and Running
▮ Need to add Proj1 to the classpath and
refer to the class with package name
included in the class name
▮ Set classpath = f:\Proj1\src
▮ javac C1/Customer
▮ Be careful of directory structure when
exporting!
▮ I suggest just exporting the package as a directory
Chapter 2
© copyright Janson Industries 2014
53
Exporting and Running
▮ In other words, on the export window
choose the third option "create only
selected directories"
▮ Then click the java file and the package's
checkboxes
▮ I.e. select the package/directory
▮ This will result in a folder with the
package name and the java file inside it
Chapter 2
© copyright Janson Industries 2014
54
Exporting and Running
▮ No project folder or src folder will be
created
▮ You wont have to add them to the path
▮ Still need to set the path to the location of
the package/folder though
▮ Then issue javac command with the
package/folder name and the java file
name
Chapter 2
© copyright Janson Industries 2014
55
Graded Assgs
(class room based class)
▮ Export out of RAD workspace onto
thumb drive
▮ Source and .class files
▮ Create batch file so it executes the new thumb drive
files
▮ Assgs will be graded in class
▮ Display source files (including bat file) in notepad
▮ Run the app
▮ I will run test data
Chapter 2
© copyright Janson Industries 2014
56
Non - Graded Assgs
▮ Export file(s) or package (recommended) out
of RAD workspace as a jar file
▮ Source and .class files
▮ Send the jar file as an email attachment to
[email protected]
▮ I will acknowledge receiving them within one
business day
▮ If you do not hear from me, I did not receive them
Chapter 2
© copyright Janson Industries 2014
57
Non - Graded Assgs
▮ How to check you exported a jar file
correctly
▮ Create a new project
▮ Import the jar into the project by
▮ Choosing Import archive file
▮ Specify the jar file
▮ Expand the project and confirm that all the
packages and source code files are there
Chapter 2
© copyright Janson Industries 2014
58
Graded Assgs
(online class)
▮ Export package(s) or entire project(s) out of
RAD workspace as a jar file
▮ Source and .class files
▮ Send the file(s) as an email attachment to
[email protected]
▮ I will acknowledge receiving them within one
business day
▮ If you do not hear from me, I did not receive them
Chapter 2
© copyright Janson Industries 2014
59
Graded Assgs
(online class)
▮ How to check you exported the jar
correctly
▮ Create a new project
▮ Import the jar into the project by
▮ Choosing Import archive file
▮ Specify the jar file
▮ Expand the project and confirm that all the
packages and source code files are there
Chapter 2
© copyright Janson Industries 2014
60
Documentation
▮ Online documentation available. Ex:
http://download.oracle.com/javase/8/docs/api/
▮ Gives an overview of the JDK supplied
classes and a short description of the
methods
▮ The JDK classes grouped into packages!
Chapter 2
© copyright Janson Industries 2014
61
Shows a brief description of all packages in V8
Click the package name to see all classes in the package
Or click a class in the index on the left
Chapter 2
© copyright Janson Industries 2014
62
Shows a hierarchy for the class
Brief description and examples
Chapter 2
© copyright Janson Industries 2014
63
A list and brief summary of the methods in the class
Chapter 2
© copyright Janson Industries 2014
64
Documentation
▮ You can generate the same
documentation for your classes
▮ First, you may have to tell RAD where
the javadoc command is (in the JDK)
▮ In our case:
F:\jdk\bin\javadoc.exe
Chapter 2
© copyright Janson Industries 2014
65
Right click the class and select Export
Chapter 2
© copyright Janson Industries 2014
66
Select Javadoc and click Next
Chapter 2
© copyright Janson Industries 2014
67
RAD should know that javadoc is in the JDK in RAD
Specify where the documentation should go, click Finish
Chapter 2
© copyright Janson Industries 2014
68
Chapter 2
© copyright Janson Industries 2014
69
Console shows Javadoc messages
Chapter 2
© copyright Janson Industries 2014
70
.html file with same name as class is there
Double click to display in browser
Chapter 2
© copyright Janson Industries 2014
71
The “signature” of each method is shown
Signature = method name + parameters
The signature uniquely defines each method, not the name
Chapter 2
© copyright Janson Industries 2014
72
Non-graded Assg
▮ Create Cust1
▮ Export Cust1 and Run
▮ Export Cust1 documentation
▮ Send Cust1.java, Cust1.class, and
Cust1.html files as email attachments
to [email protected]
Chapter 2
© copyright Janson Industries 2014
73