Presentation is loading. Please wait.

Presentation is loading. Please wait.

Object Based Programming Chapter 8. 2 In This Chapter We will learn about classes Garbage Collection Data Abstraction and encapsulation.

Similar presentations


Presentation on theme: "Object Based Programming Chapter 8. 2 In This Chapter We will learn about classes Garbage Collection Data Abstraction and encapsulation."— Presentation transcript:

1 Object Based Programming Chapter 8

2 2 In This Chapter We will learn about classes Garbage Collection Data Abstraction and encapsulation

3 3 Contrast Procedural Languages  Action oriented  Concentrate on writing functions  Data supports the actions Object Oriented Languages  Concentrate on creating reference types  Look for nouns which indicate classes Fields are data members Methods support manipulation of the objects

4 4 Find the Objects … the Verbs In this game, what are nouns that are potential classes? What are verbs that represent things that the objects do?

5 5 Abstract Data Types (ADTs) Classes in Java make creation of ADTs easier  Implementation details hidden from users of the class  Client code not dependent on implementation Example of a class  Figure 8.1 Figure 8.1  Time class – keeps track of time in 24 hour format

6 6 Declaring Classes Usually data fields are specified as private Methods are declared as public Any class member (data or method) which does not need to be accessed outside the class should be private It does not matter which comes first, data fields or methods  The author prefers data fields first

7 7 Constructors Methods which have the same name as the class Included in a class to ensure that instance variables contain valid values when objects are created The constructor is called when a class object is created with the new Note:  Do not have the constructor return a value

8 8 Using Classes View Figure 8.2Figure 8.2 Note  Creation of a time object with new  Call of the constructor  Use of public methods to get and set the private data values  Use of toString functions Advantages of classes  Simplifies client perception of classes  Reduces number of parameters

9 9 Class Scope Variables and methods belong to the class's scope Inside the class's scope  All class members are available, accessible Outside the class's scope  Client code that uses the class  Only public members are available, accessible Access modifiers public and private control this availability

10 10 Controlling Access to Members The following would not be allowed – why? The data members are private. public class TimeTest2 { public static void main( String args[] ) { Time1 t = new Time1(); t.hour = 7; } public class TimeTest2 { public static void main( String args[] ) { Time1 t = new Time1(); t.hour = 7; }

11 11 Using the this Reference Every object can access a reference to itself  Use the keyword this If a method has a local variable with same name as class variable, use the this to access the class variable Explicit use of this can increase program clarity for human readers Note example, Figure 8.4Figure 8.4

12 12 Using Overloaded Constructors Multiple constructors for the same class are allowed The signature of the constructors must be different  Different numbers and/or types of parameters See example in Figure 8.5 and 8.6Figure 8.5 8.6

13 13 Using Set and Get Methods Private data fields manipulated only by provided public methods  Some methods used to set the data values  Others used to get the values Return the value directly Print the value Note: this is not the same as making the data values public  The set methods are written to ensure valid data values

14 14 Composition A class can have references to objects of other classes as members Example:  An alarm clock class contains a Time object as one of its members  Employee class has Date object as one of its members  See Date Class, Figure 8.7Figure 8.7 Employee Class Figure 8.8Figure 8.8 Employee Test program Figure 8.9Figure 8.9

15 15 Enumerations – enum types Declared with an enum declaration A comma-separated list of enum constants Declares an enum class with the following restrictions:  enum types are implicitly final  enum constants are implicitly static  Attempting to create an object of an enum type with new is a compilation error

16 16 Enumerations – enum types enum constants can be used anywhere constants can enum constructor  Like class constructors, can specify parameters and be overloaded Note use from chapter 6, Figure 6.9Figure 6.9 See example, Figure 8.10Figure 8.10 Note test program, Figure 8.11Figure 8.11

17 17 Enumerations – enum types static method values  Generated by the compiler for every enum  Returns an array of the enum ’s constants in the order in which they were declared static method range of class EnumSet  Takes two parameters, the first and last enum constants in the desired range  Returns an EnumSet containing the constants in that range, inclusive  An enhanced for statement can iterate over an EnumSet as it can over an array

18 18 Enumeration as a Class When an enumeration is defined  A class is created  Default methods include toString equals ordinal valueOf Also possible to provide additional methods

19 19 Enumeration as a Class Consider the following example of an enumeration of card suits View definition of class Suit View definition  Note constructor, getColor View demonstration programdemonstration program

20 20 View class LetterGradeclass LetterGrade  An enumeration class  Note class elements Consider the following code LetterGrade myGrade = LetterGrade.B_PLUS; Discuss the results of calls to various LetterGrade methods Enumeration as a Class

21 21 Garbage Collection Garbage collection  JVM marks an object for garbage collection when there are no more references to that object  JVM’s garbage collector will retrieve those objects memory so it can be used for other objects  See lines 27 – 32 of Figure 8.1327 – 32 of Figure 8.13 finalize method  All classes in Java have the finalize method Inherited from the Object class  finalize is called by the garbage collector when it performs termination housekeeping  finalize takes no parameters and has return type void

22 22 static Class Members Normally each class object has its own copy of the instance variables Possible to specify a variable that is shared by all existing objects of the class  Called a static variable  Also called a class variable – class wide information Also possible to have a static method  Can be called even if no object of the class has been instantiated  Use class name, then dot, then static method name Note examples in Fig. 8.12, test pgm Fig. 8.13Fig. 8.12Fig. 8.13

23 23 static Class Members String objects are immutable  String concatenation operations actually result in the creation of a new String object static methods cannot access non- static class members  Also cannot use the this reference

24 24 static Class Members static method gc of class System  Indicates that the garbage collector should make a best-effort attempt to reclaim objects eligible for garbage collection  It is possible that no objects or only a subset of eligible objects will be collected Note example call in Fig. 8.13Fig. 8.13

25 25 static Import Recall static fields and methods of class Math J2SE 5.0 enables importing static members as if declared in class where used Note Figure 8.14 import static java.lang.Math.* Note Figure 8.14

26 26 Final Instance Variables Principle of least privilege  Code should have only the privilege and access it needs to accomplish its task, but no more final instance variables  Keyword final Specifies that a variable is not modifiable (is a constant)  final instance variables can be initialized at their declaration If they are not initialized in their declarations, they must be initialized in all constructors – Fig. 8.15Fig. 8.15

27 27 Packages Packages enable grouping together multiple related classes Specify a class to be part of a package with first line package myStuff; Place all classes in same directory which is named with the name of the package In your program which uses the package import myStuff.*;

28 28 Software Reusability Many classes exist in the Java API Avoid "reinventing the wheel"  Study capabilities of Java API  If it has a class that fits your needs, use it rather than creating your own

29 29 Data Abstraction & Encapsulation Information hiding  Classes hide details of implementation from client Example:  Stack can be implemented with array or with linked list  Client program which depends on one implementation will have problems if new version with different implementation comes out Only use the methods provided


Download ppt "Object Based Programming Chapter 8. 2 In This Chapter We will learn about classes Garbage Collection Data Abstraction and encapsulation."

Similar presentations


Ads by Google