210 likes | 224 Views
Applying OO Concepts Using Java. In this class, we will cover:. Overriding a method Overloading a method Constructors Mutator and accessor methods The import statement and using prewritten classes Packages and the protected access modifier The finalize() method. Overriding a Method.
E N D
In this class, we will cover: • Overriding a method • Overloading a method • Constructors • Mutator and accessor methods • The import statement and using prewritten classes • Packages and the protected access modifier • The finalize() method
Overriding a Method Overriding: • If you declare a variable within a class, and use the same variable name within a method of the class, then the variable used inside the method takes precedence, or overrides, the first variable
Overloading a Method Overloading: • Involves using one term to indicate diverse meanings • Writing multiple methods with the same name, but with different arguments • Overloading a Java method means you write multiple methods with a shared name • This is polymorphism in action.
Constructors • Constructors are a special type of method. • Used to create an instance of the class. • e.g. Employee e = new Employee( );This calls the Employee constructor. • Java automatically provides a constructor method when you create a class • Programmers can write their own constructor classes • Programmers can also write constructors that receive arguments • Such arguments are often used for initialization purposes when values of objects might vary
Overloading Constructors • If you create a class from which you instantiate objects, Java automatically provides a constructor • But, if you create your own constructor, the automatically created constructor no longer exists • As with other methods, you can overload constructors • Overloading constructors provides a way to create objects with or without initial arguments, as needed
Example ofOverloading a Constructor • public class Employee { public Employee (String n, double a) { name = n; salary = a; } public Employee ( ) { name = “ “; salary = 0; }}
Mutator and Accessor Methods • Often referred to as get/set methods. • Mutator methods modify fields in a class. • Example: public void setName (String n) { empName = n; } • Accessor methods retrieve fields in a class • Example: public String class getName () { return empName; } • Be careful not to return mutatable objects in your accessor methods. Why is this important?
Mutator and Accessor Methods • Returning mutatable objects in public accessor methods breaks encapsulation!!!! • Even if the data element is private, outside classes can now modify it. • You should return immutable objects (Strings, ints, etc). • If you must return a reference to a mutatable object, you should clone it first. • See pg. 112 in book for example of this rogue code.
The finalize() Method • Inherited from the Object class. • Called by the VM before an object is destroyed and it’s memory is released • Use it to release resources that might not otherwise be released (e.g. files) • Use it to record the fact that an object has been destroyed
The Import Statement and Using Pre-written Classes • The creators of Java wrote nearly 500 classes • For example: • System, Character, Boolean, Byte, Short, Integer, Long, Float, and Double are classes • These classes are stored in packages, or a library of classes, which is a folder that provides a convenient grouping for classes
The Import Statement and Using Pre-written Classes • java.lang – The package that is implicitly imported into every Java program and contains fundamental classes, or basic classes • Fundamental classes include: • System, Character, Boolean, Byte, Short, Integer, Long, Float, and Double • Optional classes – Must be explicitly named
The Import Statement and Using Pre-written Classes • To use any of the prewritten classes (other than java.lang): • Import the class OR • Import the package which contains the class you are using • To import an entire package of classes use the wildcard symbol - * • For example: • import java.util.*; //imports all java.util classes • import java.util.Vector; //imports the Vector class • Represents all the classes in a package
Packages • Creating packages encourages others to reuse software because it makes it convenient to import many related classes at once • Packages are used to: • maintain the uniqueness of class names • Using Packages in your programs prevent class name scope conflicts if multiple classes of the same name are used. • e.g. both java.util and java.sql have a Date class, so if you are using both packages you need to reference with java.util.Date or java.sql.Date. • group classes to make them more easily accessible to your classes • reference classes in a particular scope • What access modifier helps you limit access to packages?
Packages and theProtected Access Modifier • the protected access modifier: • Provides you with an intermediate level of security between public and private access • Is used to limit access to classes within the same package • If you create a protected data field or method, it can be used: • within its own class • in any classes extended from that class • or in classes in the same package • but it cannot be used by “outside” classes
Putting Your Class in a Package • To include your class into a package, use the package statement • The package statement must appear outside the class definition • The package statement looks like this: • package <name of package>; • example: package MC697; class Person { ... }
Packages and Directory Structure • Packages map to the directory structure. • Example:package com.MC697;public class Test { public static void main (String[] args) { System.out.println(“Testing packages”); }} • This package statement maps to the directory: <base directory>/com/MC697 where base directory is the directory you are going to compile and execute the class file from
Compiling and ExecutingUsing Packages • When using packages you must compile and run from the base directory. • So, let’s say c:\temp is the base directory we want to use. The file in the example should be saved to c:\temp\com\MC697\Test.java. • To compile: • cd to c:\tempjavac com/MC697/Test.java • To execute: • cd to c:\tempjava com.MC697.Test
Setting the Classpath • When using packages or classes outside the java. packages, you need to modify the classpath. • What is the classpath? • It is a environment variable that points the jvm to the needed class files. • How do you set the classpath? • You can set it using the -classpath option in the javac or java command. • This is temporary. You will need to do this every time you use those commands. • e.g. javac -classpath c:\user\classdir PackageTest.java java -classpath c:\user\classdir PackageTest • Another way is to modify the environment variable on your machine. • e.g. SET CLASSPATH=c:\com\MC697 • Different operating systems have different ways of setting this variable. • See pg. 137 in book for examples of how to set this on different platforms.
JAR Files • Jar files are Java’s version of the zip file. • They group packages and class files together in a unit to make it easier to deploy. • Can be viewed using Winzip or similar utility. • You can point your classpath variable to jar’s that contain needed classes. • e.g. SET CLASSPATH=c:\j2sdk1.4.1\jre\lib\rt.jar;%CLASSPATH%
Javadocs • Javadocs are documentation for class files. • Javadoc is a utility built into the sdk to automatically build documentation from the java files. • e.g. javadoc VectorDemo.java • Remember the /** …. */ documentation symbols? • These are used to denote documentation comments. • Put these before a method or field to include comments about these in the javadocs. • Special tags can be used: • @author • @version • @param for methods • See pg. 139 in book for more information