1 / 29

Object Based Programming

Object Based Programming. Chapter 8. In This Chapter. We will learn about classes Garbage Collection Data Abstraction and encapsulation. Contrast. Procedural Languages Action oriented Concentrate on writing functions Data supports the actions Object Oriented Languages

licon
Télécharger la présentation

Object Based Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Object Based Programming Chapter 8

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

  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. Find the Objects … the Verbs What are verbs that represent things that the objects do? In this game, what are nouns that are potential classes?

  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 • Time class – keeps track of time in 24 hour format

  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. 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. Using Classes • View Figure 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. 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. 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; } }

  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.4

  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.6

  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. 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.7 • Employee Class Figure 8.8 • Employee Test program Figure 8.9

  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. 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.9 • See example, Figure 8.10 • Note test program, Figure 8.11

  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. 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. Enumeration as a Class • Consider the following example of an enumeration of card suits • View definition of class Suit • Note constructor, getColor • View demonstration program

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

  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.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. 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.13

  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. 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.13

  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.14import static java.lang.Math.*

  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.15

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

  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. 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

More Related