Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An...
-
Upload
myrtle-johnson -
Category
Documents
-
view
227 -
download
0
description
Transcript of Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An...
![Page 1: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/1.jpg)
Chapter 7Classes and Methods III:
Static Methods and Variables
Lecture Slides to Accompany
An Introduction to Computer Science Using Java (2nd Edition)
byS.N. Kamin, D. Mickunas, E. Reingold
![Page 2: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/2.jpg)
Chapter PreviewIn this chapter we will:• describe user-defined classes
– instance variables– constructors – instance methods
• present several examples of classes• discuss the concepts of mutability and
visibility• describe method overloading
![Page 3: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/3.jpg)
Object-Oriented Programming
• OOP supports the view that programs are composed of interacting objects
• Objects are composed of– values known as attributes or instance variables– operations (actions) that can be performed on these values
know as instance methods• Messages requesting an action or value are sent to
objects• Objects respond to messages that are in their
protocols or interfaces
![Page 4: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/4.jpg)
Objects
• Encapsulate data values within a single entity• Their behavior is often general enough to
allow reuse in a variety of situations• Often form a basis from which other objects
can be derived using a mechanism known as inheritance
• Are a type container that is stored on the system heap
• A client is program that uses an object
![Page 5: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/5.jpg)
![Page 6: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/6.jpg)
Client Rights
• To declare variables of the class type• To create instances of the class using constructors• To send messages to instances of the class by
invoking class instance methods• To know the class public interface
– instance method names– parameter number and types– return types
• To know the instance methods that alter (mutate) the instance
![Page 7: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/7.jpg)
Class Rights
• To define the class public interface• To hide all the implementation details from
the client• To protect internal data from client access• To change implementation details at any
time, provided the public interface remains intact
• To change the public interface with client concurrence
![Page 8: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/8.jpg)
Revised Class Definition
public class name { declarations of instance variables
constructor definitions
method definitions}• Every class needs one or more constructor
definitions
![Page 9: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/9.jpg)
Revised Class Definition
• Instance variables– local data contained in class
• Method definitions– describe the class interface and how it responds to
each client message• Constructors definitions
– describe how to initialize instance variables in a new object
![Page 10: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/10.jpg)
Constructors
• Look like regular instance methods• Never have a return type• Always have the same name as the class
name• May have parameters• Default constructors have no parameters• Constructors can be overloaded (more than
one definition in the same class)
![Page 11: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/11.jpg)
Constructors
public class Clock {
int hour, minute; // constructor public Clock( ) { hour = 12; minute = 0; } // other methods follow …}
![Page 12: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/12.jpg)
Using Constructors
// c1 set to 12:00Clock c1 = new Clock(); // c1 set to 8:30 c1.setHour(8);c1.setMinute(30);// c2 set to 12:00 c1 still 8:30Clock c2 = new Clock();
![Page 13: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/13.jpg)
Overloading Constructors
• Classes can have more than one constructor
• All constructors have the same name (the class name)
• Each constructor differs from the others in either the number or types of its arguments
• new is used when using a constructor to create a new object
![Page 14: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/14.jpg)
Overloading Constructors
• We could add the following to Clock public Clock(int h, int m) { hour = h; minute = m; }
• A client program could contain Clock c1 = new Clock(8, 20);
• Which is the same as writing Clock c1 = new Clock( ); c1.setHour(8); c1.setMinute(20);
![Page 15: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/15.jpg)
Overloaded Clock Constructorspublic class Clock { int hour, minute; public Clock () { hour = 12; minute = 0; } public Clock (int h, int m){ hour = h; minute = m; } …}
![Page 16: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/16.jpg)
Using Constructors
Clock c1 = new Clock( ); // c1 set to 12:00
Clock c2 = new Clock(8, 20); // c2 set to 8:20
Clock c3 = new Clock(); // c3 set to 8:20c3.setHour(8);C3/setMinute(20);
![Page 17: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/17.jpg)
Overloading Methods
• Methods can also be overloaded• This allows different versions of the method in
the same class• Each method variant must differ from the
others by the number or types of its parameters
• Overloading allows methods with the same name to have different return types
![Page 18: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/18.jpg)
Methods Calling Other Methods
• Methods are allowed to call other methods in the same class without specifying an explicit receiver
• This allows overloaded methods to call one another without repeating redundant code
• Example:public void display (DrawingBox d, int r) { display(d, d.getDrawableWidth()/2, d.getDrawableHeight()/2, r);}
![Page 19: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/19.jpg)
Dot Notation
• We can also use dot notation to view instance variables of the same class that are different from the receiver
• Example:public boolean priorTo (Clock c) { return (hour < c.hour || hour == c.hour && minute < c.minute);}
![Page 20: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/20.jpg)
this – Avoiding Variable Name Collisions
• “this” can be used to distinguish between references to instance variables and local identifiers or arguments
public void set (int hour, int minute) { int totalMinutes = (hour * 60 + minutes); this.minute = totalMinutes % 60;}
• this.minute refers to the instance variable minute not the method argument
![Page 21: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/21.jpg)
this – Passing the Receiver as an Argument
• “this” can be used to send a message to the current receiver of the message without explicitly naming the receiver
public boolean after (Clock c) { return c.priorTo(this);}
• this is used as if it were a variable referring to the receiver of the message
![Page 22: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/22.jpg)
this – Chaining Constructors
• “this” can be used to simplify constructor code by allowing one constructor to call another
• We can rewrite the clock constructors as:
public Clock ( ) { this(12,0);}
public Clock (int hour, int minute) { set(hour, minute);}
![Page 23: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/23.jpg)
Visibility Qualifiers
public int x; // client creating instance o of this // class can access x by writing o.x
private int y; // no can access y directly, access // provided though class methods
• To enforce complete information hiding all instance variables should be declared using private
• The default visibility of instance variables lies between private and public (explained later in the text)
![Page 24: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/24.jpg)
Visibility Qualifiers and Methods
• By default class methods are also accessible to some classes but not others
• Visibility qualifiers should also be used in method declarations
• Examples:
public void f( ) { // Any client using object o // can send it a message // by writing o.f( )private void g( ) { // No client can send g to // the object except another // method from this class
![Page 25: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/25.jpg)
Visibility and UML Diagrams
• In UML diagrams – private variables and methods are
indicated using a leading minus sign as a prefix
– public variables and methods are indicates using a leading plus sign as a prefix
– a blank prefix means that the variables and methods are not annotated and will have their default visibility
![Page 26: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/26.jpg)
Mutation
• An object can be changed by assigning a new value to one or more of its instance variables
• Example:d = new DrawingBox();c = new Clock();c.set(10, 20);c.display(d, 50, 50, 50);c.set(5, 40);
![Page 27: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/27.jpg)
![Page 28: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/28.jpg)
Mutability
• Transforming an object from one state to another
• Only objects can be mutated, primitive values are not (e.g. x+4 does not change x)
• Objects are only mutable if its interface includes mutating methods
![Page 29: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/29.jpg)
Nonmutation
• Creating a new object similar to original, but including the desired change
• Note the return type is Clock, not void• Example:
public Clock set_nonmut (int hour, int Minute) { return new Clock(hour, minute);}
![Page 30: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/30.jpg)
What would happen?
• Consider the effects on the heap if the following sequence of statements was executedClock c1 = new Clock();Clock c2 = c1;c1.set(4, 30);c2.set(5, 40);
![Page 31: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/31.jpg)
Heap After Assigning c1 to c2
![Page 32: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/32.jpg)
Class Association• Used to achieve certain desired
behavior• Association (or acquaintance)
– classes and objects are linked in a manner that allows the object to remain visible to clients
– classes can be linked when a client passes an object as a message argument to another object
![Page 33: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/33.jpg)
Object Containing Reference to Another Object
![Page 34: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/34.jpg)
UML Class Diagram for Clock-DrawingBox Association
![Page 35: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/35.jpg)
UML Class Diagram for Clock-DrawingBox Association
![Page 36: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/36.jpg)
Class Containment• Composition (or aggregation)
– an object of one class is constructed from objects of other classes so that only the composite object is visible to clients
– the component objects are internal to the containing object
• Aggregation is a weaker form of containment and will not be used in this text
![Page 37: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/37.jpg)
UML Class Diagram for Clock-DrawingBox Composition
![Page 38: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/38.jpg)
Representation Independence
• In OOP the representation of data is encapsulated, this means that the data representation may be changed without affecting the previous class behavior
• Clients should not be able to detect that a change has occurred
• Sometimes this is know as implementation independence
![Page 39: Chapter 7 Classes and Methods III: Static Methods and Variables Lecture Slides to Accompany An Introduction to Computer Science Using Java (2nd Edition)](https://reader034.fdocuments.in/reader034/viewer/2022050902/5a4d1b887f8b9ab0599bdad7/html5/thumbnails/39.jpg)
main
• Every Java program needs a class containing a static method called main
• Static methods (or class methods) are special methods that do not require receivers
• Static methods cannot refer to class instance variables, but can be invoked when no class instances exist
• Static methods will be discussed in more detail in Chapter 10