481 lines
7.4 KiB
Plaintext
481 lines
7.4 KiB
Plaintext
|
Application
|
|||
|
Programming
|
|||
|
Hend Alkittawi
|
|||
|
|
|||
|
More on Java Classes
|
|||
|
Best practices for Creating Java
|
|||
|
Classes
|
|||
|
|
|||
|
BEST PRACTICES FOR CREATING JAVA CLASSES
|
|||
|
STYLE
|
|||
|
- identifier naming
|
|||
|
- indentation
|
|||
|
|
|||
|
CONSTRUCTORS
|
|||
|
- Ways to instantiate
|
|||
|
objects
|
|||
|
|
|||
|
METHODS
|
|||
|
- getters and setters
|
|||
|
- equals()
|
|||
|
- toString()
|
|||
|
|
|||
|
JAVADOC
|
|||
|
- “special” Java
|
|||
|
documentation
|
|||
|
|
|||
|
STYLE
|
|||
|
visibility
|
|||
|
|
|||
|
type
|
|||
|
|
|||
|
class name
|
|||
|
|
|||
|
public class MyClass {
|
|||
|
// attributes
|
|||
|
private int intVar;
|
|||
|
visibility
|
|||
|
|
|||
|
type
|
|||
|
|
|||
|
variable name
|
|||
|
|
|||
|
// methods
|
|||
|
public void myMethod(String myString){
|
|||
|
visibility
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
return
|
|||
|
type
|
|||
|
|
|||
|
method
|
|||
|
name
|
|||
|
|
|||
|
parameter parameter
|
|||
|
type
|
|||
|
name
|
|||
|
|
|||
|
METHODS
|
|||
|
-
|
|||
|
|
|||
|
The syntax (rules) for declaring a method
|
|||
|
visibility returnType methodName(parameterList)
|
|||
|
-
|
|||
|
|
|||
|
visibility determines access
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
returnType is the type of data this method returns
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
public (all can access) or private (just this class can access)
|
|||
|
if nothing is returned, use the keyword void
|
|||
|
|
|||
|
methodName starts with a lowercase word
|
|||
|
-
|
|||
|
|
|||
|
it uses uppercase for the first letter of each additional word
|
|||
|
(this is called “camel case”)
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
parameterList is any data we need to pass to the method
|
|||
|
-
|
|||
|
|
|||
|
The ordering must be followed exactly
|
|||
|
|
|||
|
METHODS
|
|||
|
-
|
|||
|
|
|||
|
Getter and setter methods are used to get and set the
|
|||
|
value of the attributes.
|
|||
|
-
|
|||
|
|
|||
|
Getters retrieve the value only
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Setters update the value only
|
|||
|
|
|||
|
public class Account {
|
|||
|
private double balance;
|
|||
|
private String name;
|
|||
|
public void setBalance( double balance ){
|
|||
|
this.balance = balance;
|
|||
|
}
|
|||
|
public double getBalance(){
|
|||
|
return this.balance;
|
|||
|
}
|
|||
|
// add a getter and a setter for name
|
|||
|
}
|
|||
|
|
|||
|
● to use the class and its methods
|
|||
|
public static void main(String[] args){
|
|||
|
Account myAccount = new Account();
|
|||
|
myAccount.setBalance(1000.0);
|
|||
|
double balance = myAccount.getBalance();
|
|||
|
}
|
|||
|
|
|||
|
METHODS
|
|||
|
-
|
|||
|
|
|||
|
toString() method returns a String representation of objects.
|
|||
|
An example of a toString() method for the Account class:
|
|||
|
|
|||
|
public class Account {
|
|||
|
private double balance;
|
|||
|
private String name;
|
|||
|
public void setBalance( double balance ){
|
|||
|
this.balance = balance;
|
|||
|
}
|
|||
|
public double getBalance() {
|
|||
|
return this.balance;
|
|||
|
}
|
|||
|
// … getter and a setter for name
|
|||
|
public String toString() {
|
|||
|
return "Account info: name: " + name
|
|||
|
+ " with balance: " + balance;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
● to use the class and its methods
|
|||
|
public static void main(String[] args){
|
|||
|
Account myAccount = new Account();
|
|||
|
myAccount.setName("Sam Adams");
|
|||
|
myAccount.setBalance(1000.0);
|
|||
|
System.out.println( myAccount );
|
|||
|
}
|
|||
|
|
|||
|
METHODS
|
|||
|
-
|
|||
|
|
|||
|
equals() method provides a way for users to compare instances
|
|||
|
of your object to other instances. This also gives you control
|
|||
|
over what is relevant to differentiate your objects.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
● to use the class and its methods
|
|||
|
|
|||
|
private double balance;
|
|||
|
private String name;
|
|||
|
|
|||
|
public static void main(String[] args){
|
|||
|
Account myAccount = new Account();
|
|||
|
Account yourAccount = new Account();
|
|||
|
myAccount.setName(“Mia”);
|
|||
|
myAccount.setBalace(10);
|
|||
|
yourAccount.setName(“Ken”);
|
|||
|
yourAccount.setBalance(100);
|
|||
|
boolean check =
|
|||
|
myAccount.equals(yourAccount);
|
|||
|
}
|
|||
|
|
|||
|
public class Account {
|
|||
|
|
|||
|
public void setBalance( double balance ) {
|
|||
|
this.balance = balance; }
|
|||
|
public double getBalance() {
|
|||
|
return this.balance; }
|
|||
|
public String toString() {
|
|||
|
return "Account info: name: " + name
|
|||
|
+ " with balance: " + balance; }
|
|||
|
public boolean equals( Account account2 ) {
|
|||
|
return this.getName().equals( account2.getName());}
|
|||
|
}
|
|||
|
|
|||
|
IMPORTANT
|
|||
|
|
|||
|
●
|
|||
|
|
|||
|
== is used for primitive types only
|
|||
|
○
|
|||
|
|
|||
|
●
|
|||
|
|
|||
|
Objects define an object-method called equals()
|
|||
|
○
|
|||
|
|
|||
|
●
|
|||
|
|
|||
|
2 == 5
|
|||
|
|
|||
|
objA.equals(objB);
|
|||
|
|
|||
|
Core: Drawing Memory Models with Objects - Memory Models, Scope,
|
|||
|
and Starting the Project | Coursera
|
|||
|
|
|||
|
public class Account {
|
|||
|
private double balance;
|
|||
|
private String name;
|
|||
|
public void setBalance( double balance ) {
|
|||
|
this.balance = balance; }
|
|||
|
public void setName( String name ) {
|
|||
|
this.name = name; }
|
|||
|
|
|||
|
yourAccount
|
|||
|
|
|||
|
myAccount
|
|||
|
|
|||
|
name
|
|||
|
|
|||
|
name
|
|||
|
|
|||
|
balance
|
|||
|
|
|||
|
balance
|
|||
|
|
|||
|
public double getBalance() {
|
|||
|
return this.balance; }
|
|||
|
public String getName() {
|
|||
|
return this.name; }
|
|||
|
public boolean equals( Account account2 ) {
|
|||
|
return this.getName().equals( account2.getName());
|
|||
|
}
|
|||
|
public String toString() {
|
|||
|
return "Account info: name: " + name
|
|||
|
+ " with balance: " + balance; }
|
|||
|
}
|
|||
|
|
|||
|
public static void main(String[] args){
|
|||
|
Account myAccount = new Account();
|
|||
|
Account yourAccount = new Account();
|
|||
|
myAccount.setName("Mia");
|
|||
|
myAccount.setBalace(10);
|
|||
|
yourAccount.setName("Ken");
|
|||
|
yourAccount.setBalance(100);
|
|||
|
boolean check =
|
|||
|
myAccount.equals(yourAccount);
|
|||
|
}
|
|||
|
|
|||
|
CONSTRUCTORS
|
|||
|
-
|
|||
|
|
|||
|
Java requires a constructor call for every object that is created.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
The keyword new creates a new object of a specified class by
|
|||
|
calling a constructor.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
A constructor is similar to a method but is called implicitly by
|
|||
|
the new operator to initialize an object’s instance variables when
|
|||
|
the object is created.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
In any class that does not explicitly declare a constructor, the
|
|||
|
compiler provides a default constructor (which always has no
|
|||
|
parameters).
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
When a class has only the default constructor, the class’s
|
|||
|
instance variables are initialized to their default value.
|
|||
|
|
|||
|
METHODS
|
|||
|
-
|
|||
|
|
|||
|
You can provide your own constructor to specify custom
|
|||
|
initialization for objects of your class.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
A constructor must have the same name as the class.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
If you declare a constructor for a class, the compiler will
|
|||
|
not create a default constructor that class.
|
|||
|
|
|||
|
public
|
|||
|
class Account {
|
|||
|
private double balance;
|
|||
|
private String name;
|
|||
|
public Account( String name, double balance ){
|
|||
|
this.name = name;
|
|||
|
this.balance = balance;
|
|||
|
}
|
|||
|
/* … rest of class … */
|
|||
|
}
|
|||
|
|
|||
|
● to use the class and its methods
|
|||
|
public static void main(String[] args){
|
|||
|
Account myAccount = new Account("Sam", 1000);
|
|||
|
Account yourAccount = new Account("Jane", 2000);
|
|||
|
}
|
|||
|
|
|||
|
JAVA GARBAGE COLLECTION
|
|||
|
-
|
|||
|
|
|||
|
More than one variable may refer to the same data.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Java will clear out old data that no variables are referencing
|
|||
|
-
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
This is known as garbage collection
|
|||
|
|
|||
|
Garbage collection is the process through which Java will
|
|||
|
eventually clear out old data that no variables are
|
|||
|
referencing.
|
|||
|
|
|||
|
JAVADOC
|
|||
|
-
|
|||
|
|
|||
|
Javadoc comments are delimited between /** and */.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Javadoc comments enable you to embed program documentation
|
|||
|
directly in your programs.
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Javadoc utility program reads Javadoc comments and uses them
|
|||
|
to prepare program documentation in HTML web-page format.
|
|||
|
/**
|
|||
|
* This is a Javadoc comment!
|
|||
|
*/
|
|||
|
|
|||
|
JAVADOC
|
|||
|
-
|
|||
|
|
|||
|
Javadoc comments annotations:
|
|||
|
-
|
|||
|
|
|||
|
@author: designates the author of the code, belongs in the
|
|||
|
class comment
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
@param: designates the parameter to a method, belongs in all
|
|||
|
method comments which require parameters
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
@return: designates the returned value of a method, belongs in
|
|||
|
method comments which return values
|
|||
|
|
|||
|
JAVADOC
|
|||
|
Jav
|
|||
|
|
|||
|
ine
|
|||
|
til t
|
|||
|
l
|
|||
|
u
|
|||
|
M
|
|||
|
men
|
|||
|
Com
|
|||
|
|
|||
|
/**
|
|||
|
* The Account class represents a bank account.
|
|||
|
* @author CS3443
|
|||
|
*/
|
|||
|
public class Account {
|
|||
|
/* attributes here .. a multi-line comment starts with /* .. be careful! */
|
|||
|
/**
|
|||
|
* sets the account balance
|
|||
|
* @param balance, the account balance (double)
|
|||
|
*/
|
|||
|
public void setBalance(double balance){
|
|||
|
this.balance = balance;
|
|||
|
}
|
|||
|
|
|||
|
doc
|
|||
|
|
|||
|
a
|
|||
|
|
|||
|
Jav
|
|||
|
|
|||
|
c
|
|||
|
ado
|
|||
|
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* returns the balance for the account
|
|||
|
* @return double, the account balance
|
|||
|
*/
|
|||
|
public double getBalance(){
|
|||
|
return balance;
|
|||
|
}
|
|||
|
|
|||
|
JAVADOC
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
To generate Javadoc in Eclipse
|
|||
|
1.
|
|||
|
|
|||
|
Project > Generate Javadoc
|
|||
|
|
|||
|
2.
|
|||
|
|
|||
|
Destination: workspace/your_project/doc
|
|||
|
|
|||
|
3.
|
|||
|
|
|||
|
Next
|
|||
|
|
|||
|
4.
|
|||
|
|
|||
|
Select all “referenced archives and projects”
|
|||
|
|
|||
|
5.
|
|||
|
|
|||
|
Finish > Yes To All
|
|||
|
|
|||
|
6.
|
|||
|
|
|||
|
Open index.html
|
|||
|
|
|||
|
Project > Generate Javadoc
|
|||
|
|
|||
|
Destination:workspace/your_project/doc
|
|||
|
> Next
|
|||
|
|
|||
|
Select all
|
|||
|
> Finish
|
|||
|
|
|||
|
Yes To All
|
|||
|
|
|||
|
Open index.html
|
|||
|
|
|||
|
CODE DEMO
|
|||
|
-
|
|||
|
|
|||
|
Create a Java class
|
|||
|
following the best
|
|||
|
practices
|
|||
|
|
|||
|
-
|
|||
|
|
|||
|
Generate Javadocs
|
|||
|
|
|||
|
DO YOU HAVE ANY
|
|||
|
QUESTIONS?
|
|||
|
|
|||
|
THANK
|
|||
|
YOU!
|
|||
|
|
|||
|
@
|
|||
|
|
|||
|
hend.alkittawi@utsa.edu
|
|||
|
|
|||
|
By Appointment
|
|||
|
Online
|
|||
|
|
|||
|
|