Defining Classes and Methods - PowerPoint PPT Presentation

1 / 70
About This Presentation
Title:

Defining Classes and Methods

Description:

The data items and the methods are referred to as members of the class. ... A local variable exists only as long as the method is active. Chapter 4. 32 ... – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 71
Provided by: rober854
Category:
Tags: classes | defining | methods | run | up

less

Transcript and Presenter's Notes

Title: Defining Classes and Methods


1
Defining Classes and Methods
  • Chapter 4

2
Objectives
  • become familiar with the concept of a class and
    an object that instantiates the class
  • learn how to define classes in Java
  • learn how to define and use methods in Java
  • learn how to create objects in Java
  • learn how parameters work in Java

3
Objectives, cont.
  • learn about information hiding and encapsulation
  • become familiar with the notion of a reference
    (to understand class variables and class
    parameters)
  • (optional) learn more about applets

4
Outline
  • Class and Method Definitions
  • Information Hiding and Encapsulation
  • Objects and Reference
  • (optional) Graphics Supplement

5
Class and Method Definitions Outline
  • Class Files and Separate Compilation
  • Instance Variables
  • Using Methods
  • void Method Definitions
  • Methods that Return a Value
  • Accessing Instance Variables
  • Local Variables

6
Class and Method Definitions Outline, cont.
  • Blocks
  • Parameters of a Primitive Type
  • Class and Method Definition Syntax

7
Basic Terminology
  • Objects can represent almost anything.
  • A class defines a kind of object.
  • It specifies the kinds of data an object of the
    class can have.
  • It provides methods specifying the actions an
    object of the class can take.
  • An object satisfying the class definition
    instantiates the class and is an instance of the
    class.

8
Basic Terminology, cont.
  • The data items and the methods are referred to as
    members of the class.
  • We will call the data items associated with an
    object the instance variables of that object
    (i.e. that instance of the class).

9
A Class as an Outline
10
A UML Class Diagram
11
Class Files and Separate Compilation
  • Each Java class definition should be in a file by
    itself.
  • The name of the file should be the same as the
    name of the class.
  • The file name should end in .java
  • A Java class can be compiled before it is used in
    a program
  • The compiled byte code is stored in a file with
    the same name, but ending in .class

12
Class Files and Separate Compilation, cont.
  • If all the classes used in a program are in the
    same directory as the program file, you do not
    need to import them.

13
Example
  • class SpeciesFirstTry

14
Example, contd.
  • The modifier public associated with the instance
    variables should be replaced with the modifier
    private, as we will do later in the chapter.

15
Example, contd.
  • class SpeciesFirstTryDemo
  • Each object of type SpeciesFirstTry has its own
    three instance variables

16
Using Methods
  • two kinds of methods
  • methods that return a single value (e.g. nextInt)
  • methods that perform some action other than
    returning a single value (e.g println), called
    void methods

17
Methods That Return a Value
  • example
  • int next keyboard.nextInt()
  • keyboard is the calling object.
  • You can use the method invocation any place that
    it is valid to use of value of the type returned
    by the method.

18
Methods That Do Not Return a Value
  • example
  • System.out.println(Enter data)
  • System.out is the calling object.
  • The method invocation is a Java statement that
    produces the action(s) specified in the method
    definition.
  • It is as if the method invocation were replaced
    by the statements and declarations in the method
    definition.

19
void Method Definitions
  • example
  • public void writeOuput()
  • System.out.println(Name name)
  • System.out.println(Age age)
  • Such methods are called void methods.

20
Method Definitions
  • All method definitions belong to some class.
  • All method definitions are given inside the
    definition of the class to which they belong.
  • If the definition of the method begins with
    public void, it does not return a value.
  • public indicates that use is unrestricted.
  • void indicates that the method does not return a
    value.

21
Method Definitions, cont.
  • The parentheses following the method name contain
    any information the method needs.
  • The first part of the method definition is called
    the heading.
  • The remainder of the method is called the body,
    and is enclosed in braces .
  • Statements or declarations are placed in the body.

22
The Method main
  • A program is a class that has a method named
    main.
  • The programs we have seen so far have no instance
    variables and no methods other than method main.
  • Programs can have instance variables and other
    methods.

23
Defining Methods That Return a Value
  • example
  • public int fiveFactorial()
  • int factorial 54321
  • return factorial
  • As before, the method definition consists of the
    method heading and the method body.
  • The return type replaces void.

24
Defining Methods That Return a Value, cont.
  • The body of the method definition must contain
  • return Expression
  • This is called a return statement.
  • The Expression must produce a value of the type
    specified in the heading.
  • The body can contain multiple return statements,
    but a single return statement makes for better
    code.

25
Naming Methods
  • Use a verb to name a void method.
  • void methods typically perform some action(s).
    (e.g. getAge)
  • Use a noun to name a method that returns a value.
  • Methods that return a value are used like a
    value. (e.g. fiveFactorial)
  • Observe the convention of starting the method
    name with a lowercase letter.

26
Using return in a void Method
  • form
  • return
  • use
  • to end the invocation of the method, usually
    prematurely, to deal with some problem
  • caution
  • Almost always, there are better ways to deal with
    a potential problem.

27
public Method Definitions
  • syntax for a void method
  • public void Method_Name(Parameters)
  • ltstatement(s)gt

28
public Method Definitions
  • syntax for methods that return a value
  • public Return_Type Method_Name(Parameters)
  • ltstatement(s), including a
  • return statementgt

29
Accessing Instance Variables
  • Outside the class definition, a public instance
    variable is accessed with
  • the name of an object of the class
  • a dot (.)
  • the name of the instance variable.
  • Example myBestFriend.name Lara
  • Inside the definition of the same class only the
    name of the instance variable is used.
  • Example name keyboard.nextLine()

30
Accessing Instance Variables, cont.
  • equivalent assignment statements
  • name keyboard.nextLine()
  • and
  • this.name keyboard.nextLine()
  • The keyword this stands for the calling object -
    the object that invokes the method.

31
Local Variables
  • A variable declared within a method is called a
    local variable.
  • Its meaning is local to (confined to) the
    method definition.
  • Variables with the same name declared within
    different methods are different variables.
  • A local variable exists only as long as the
    method is active.

32
Local Variables, cont.
  • class BankAccount
  • class LocalVariablesDemoProgram

33
Blocks
  • The terms block and compound statement both refer
    to a set of Java statements enclosed in braces
    .
  • A variable declared within a block is local to
    the block.
  • When the block ends, the variable disappears.
  • If you intend to use the variable both inside and
    outside the block, declare it outside the block.

34
Variables in for Statements
  • The loop control variable can be declared outside
    the for statement
  • int n
  • for (n 1 n lt10, n)
  • in which case the variable n still exists when
    the for statement ends
  • or

35
Variables in for Statements, cont.
  • The loop control variable can be declared inside
    the for statement
  • for (int n 1 n lt10, n)
  • in which case the variable n ceases to exist when
    the for statement ends

36
Parameters of a Primitive Type
  • Often it is convenient to pass one or more values
    into a method and to have the method perform its
    actions using those values.
  • The values are passed in as arguments (or actual
    parameters) associated with the method invocation.

37
Parameters of a Primitive Type, cont.
  • The method receives the values and stores them in
    its formal parameters (or simply parameters).
  • A method invocation assigns the values of the
    arguments (actual parameters) to the
    corresponding formal parameters (parameters).
  • This is known as the call-by-value mechanism.

38
Parameters of a Primitive Type, cont.
  • The formal parameters exist as long as the method
    is active.

39
Parameters of a Primitive Type, cont.
  • Generally, the type of each argument must be the
    same as the type of the corresponding formal
    parameter.
  • Java will perform automatic type conversion for
    an argument that appears to the left of a formal
    parameter it needs to match
  • byte --gt short --gt int --gt long --gt float --gt
    double

40
Parameters of a Primitive Type, cont.
  • An argument in a method invocation can be
  • a literal such as 2 or A
  • a variable
  • any expression that yields a value of the
    appropriate type.
  • A method invocation can include any number of
    arguments the method definition contains a
    corresponding number of formal parameters, each
    preceded by its type.

41
Parameters of a Primitive Type, cont.
  • anObject.doStuff(42, 100, 9.99, Z)
  • public void doStuff(int n1, int n2, double d1,
    char c1)
  • arguments and formal parameters are matched by
    position
  • Everything said about arguments and formal
    parameters applies to methods that return a value
    as well as to void methods.

42
Method with a Parameter
  • class SpeciesSecondTry

43
Using a Method with a Parameter
  • class SpeciesSecondTryDemo

44
Class and Method Definition Syntax
  • public class Class_Name
  • Instance_Variable_Declaration_1
  • Instance_Variable_Declaration_2
  • Method_Definition_1
  • Method_Definition_2
  • ...

45
Class and Method Definition Syntax, cont.
  • public Type_Name_Or_void Method_Name(Parameter_Lis
    t)
  • where Parameter_List consists of
  • a list of one or more formal parameter names,
    each preceded by a type and separated by commas
    or
  • no formal parameters at all

46
Information Hiding and Encapsulation Outline
  • Information Hiding
  • Precondition and Postcondition Comments
  • The public and private Modifiers
  • Encapsulation
  • Automatic Documentation with javadoc
  • UML Class Diagrams

47
Information Hiding
  • Information overload is avoided by suppressing
    or hiding certain kinds of information, making
    the programmers job simpler and the code easier
    to understand.
  • A programmer can use a method defined by someone
    else without knowing the details of how it works
    (e.g. the println method)
  • She or he needs to know what the method does, but
    not how it does it.

48
Information Hiding, cont.
  • What the method contains is not secret, and maybe
    not even interesting.
  • Viewing the code does not help you use the method
    and may distract you from the task at hand.
  • Designing a method so that it can be used without
    knowing how it performs its task is called
    information hiding or abstraction.

49
Precondition and Postcondition Comments
  • The precondition for a method states the
    condition(s) that must be true before the method
    is invoked.
  • If the precondition is not met, the method should
    not be used and cannot be expected to perform
    correctly.
  • The postcondition describes the result(s) of the
    method invocation.

50
Precondition and Postcondition Comments, cont.
  • If the precondition is satisfied and the method
    is executed, the postcondition will be true.
  • Example
  • /
  • Precondition The instance variables of the
    calling object have values.
  • Postcondition The values of the instance
    variables are displayed.
  • /

51
Precondition and Postcondition Comments, cont.
  • If a returned value is the only postcondition,
    the postcondition often is not stated.
  • The statement of the precondition and the
    postcondition typically precede the associated
    method in the form of a javadoc comment (//)

52
Assertions
  • An assertation is a statement about the state of
    the program.
  • Precondition and postcondition comments are
    examples of assertions.
  • Assertions can occur elsewhere in programs, such
    as after a block.

53
Assertions, cont.
  • A check can be inserted to determine if an
    assertion is true and, if not, to stop the
    program and output an error message.
  • An assertion check has the form
  • assert Boolean_Expression
  • e.g. assert n gt limit
  • if Boolean_Expression evaluates to false, the
    program ends and outputs an error message.

54
Assertions, cont.
  • Assertion checking can be turned on or off.
  • Normally, programs run with assertion checking
    turned off.
  • See your IDE documentation to learn how to set
    options for assertion checking.

55
The public and private Modifiers
  • The instance variables of a class should not be
    declared public.
  • Typically, instance variables are declared
    private.
  • An instance variable declared public can be
    accessed and changed directly, with potentially
    serious integrity consequences.
  • Declaring an instance variable private protects
    its integrity.

56
The public and private Modifiers, cont.
  • Analogy An ATM permits deposits and withdrawals,
    both of which affect the account balance, but it
    does not permit an account balance to be accessed
    and changed directly. If an account balance
    could be accessed and changed directly, a bank
    would be at the mercy of ignorant and
    unscrupulous users.

57
The private Modifier
  • The private modifier makes an instance variable
    inaccessible outside the class definition.
  • But within the class definition, the instance
    variable remains accessible and changeable.
  • This means that the instance variable can be
    accessed and changed only via the methods
    accompanying the class.

58
The private Modifier, cont.
  • class SpeciesThirdTry

59
The private Modifier, cont.
  • Statements such as
  • System.out.println
  • (secretSpecies.population)
  • are no longer valid.

60
The private Modifier, cont.
  • Methods in a class also can be private.
  • Methods declared private cannot be invoked
    outside the class definition, but can be invoked
    within the definition of any other method in the
    class.
  • A method invoked only within the definition of
    other methods in the class should be declared
    private.

61
Accessor and Mutator Methods
  • Appropriate access to an instance variable
    declared private is provided by an accessor
    method which is declared public.
  • Typically, accessor methods begin with the word
    get, as in getName.
  • Mutator methods should be written to guard
    against inappropriate changes.

62
Accessor and Mutator Methods
  • class SpeciesFourthTry


63
Accessor and Mutator Methods, cont.
  • Appropriate changes to an instance variable
    declared private are provided by an mutator
    method which is declared public.
  • Typically, mutator methods begin with the word
    set, as in setName.

64
Accessor and Mutator Methods, cont.
  • class SpeciesFourthTryDemo

65
Programming Example
  • class Purchase

66
Programming Example, contd.
  • class Purchase, contd.

67
Programming Example
  • class PurchaseDemo

68
Encapsulation
  • Encapsulation is the process of hiding details of
    a class definition that are not needed to use
    objects of the class.
  • Encapsulation is a form of information hiding.

69
Encapsulation, cont.
  • When done correctly, encapsulation neatly divides
    a class definition into two parts
  • the user interface which communicates everything
    needed to use the class
  • the implementation consisting of all the members
    of the class.
  • A class defined this way is said to be
    well-encapsulated.

70
The User Interface
  • The user interface consists of
  • the headings for the public methods
  • the defined public constants
  • comments telling the programmer how to use the
    public methods and the defined public constants.
  • The user interface contains everything needed to
    use the class.

71
The Implementation
  • The implementation consists of
  • the private instance variables
  • the private defined constants
  • the definitions of public and private methods.
  • The Java code contains both the user interface
    and the implementation.
  • Imagine a wall between the user interface and the
    implementation.

72
Encapsulation
73
Encapsulation Guidelines
  • Precede the class definition with a comment that
    shapes the programmers view of the class.
  • Declare all the instance variables in the class
    private.
  • Provide appropriate public accessor and mutator
    methods.

74
Encapsulation Guidelines, cont.
  • Provide public methods to permit the programmer
    to use the class appropriately.
  • Precede each public method with a comment
    specifying how to use the method.
  • Declare methods invoked only by other methods in
    the class private.
  • Use /.../ or /.../ for user interface
    comments and // for implementation comments.

75
Encapsulation Characteristics
  • Encapsulation should permit implementation
    changes (improvements, modifications,
    simplifications, etc.) without requiring changes
    in any program or class that uses the class.
  • Encapsulation combines the data and the methods
    into a single entity, hiding the details of the
    implementation.

76
ADT
  • An abstract data type (ADT) is basically the same
    as a well-encapsulated class definition.

77
Automatic Documentation with javadoc
  • A program named javadoc automatically generates
    user interface documentation.
  • The documentation contains everything needed to
    use the class(es).
  • Properly commented class definitions (using
    //) can be used to produce and display the
    user interface.

78
Automatic Documentation with javadoc
  • The course text can be understood without
    learning or using javadoc.
  • Java programs can be written, compiled, and
    executed without using javadoc.
  • Documents produced by javadoc must be read using
    a Web browser or other HTML viewer.
  • Nevertheless, javadoc is both useful and easy to
    use.

79
UML Class Diagrams
  • UML diagrams are mostly self-explanatory.
  • A plus sign () indicates a public instance
    variable or method.
  • A minus sign (-) indicates a private instance
    variable or method.
  • Typically, the class diagram is created before
    the class is defined.
  • A class diagram outlines both the interface and
    the implementation.

80
UML Class Diagrams, cont.
81
Objects and Reference Outline
  • Variables of a Class Type and Objects
  • Boolean-Valued Methods
  • Class Parameters
  • Comparing Class Parameters and Primitive-Type
    Parameters

82
Variables
  • Variables of a class type name objects, which is
    different from how primitive variables store
    values.
  • All variables are implemented as memory
    locations.
  • The value of a variable of a primitive type is
    stored in the assigned location.
  • The value of a variable of a class type is the
    address where a named object of that class is
    stored.

83
Variables, cont.
  • A value of any particular primitive type always
    requires the same amount of storage.
  • example a variable of type int always requires 4
    bytes.
  • An object of a class type might be arbitrarily
    large.
  • An object of type String might be empty, or might
    contain 1, 120, 5280, or more characters.

84
Variables, cont.
  • However, there is always a limit on the size of
    an address.
  • The memory address where an object is stored is
    called a reference to the object.
  • Variables of a class type behave differently from
    variables of a primitive type.

85
Variables of a Primitive Type
  • Only one variable of a primitive type is
    associated with the memory location where the
    value of the variable is stored.

86
Variables of a Class Type
  • However, multiple variables of a class type can
    contain the memory location where an object is
    stored.
  • The object can be accessed and potentially
    changed using any of these variables.
  • All these variables contain the same reference
    and name the same object.
  • Variables of a class type referencing the same
    memory location are called aliases.

87
Variables of a Class Type, cont.
  • When one variable of a class type is assigned to
    another variable of a compatible class type, the
    memory address is copied from one variable to
    another and the two variables become aliases of
    one another.
  • The numeric values of these memory addresses
    generally are not available to the programmer nor
    are they needed by the programmer.

88
Variables of a Class Type, cont.
89
Allocating Memory for a Reference and an Object
  • A declaration such as
  • SpeciesFourthTry s
  • creates a variable s that can hold a memory
    address.
  • A statement such as
  • s new SpeciesFourthTry()
  • allocates memory for an object of type
    SpeciesFourthTry.

90
with Variables of a Class Type
91
with Variables of a Class Type, cont.
  • When used with variables of a class type,
    tests if the variables are aliases of each other,
    not if they reference objects with identical
    data.
  • To test for equality of objects in the intuitive
    sense, define and use an appropriate equals
    method.

92
with Variables of a Class Type, cont.
  • class Species

93
with Variables of a Class Type, cont.
  • class SpeciesEqualsDemo

94
Method equals
  • The definition of method equals depends on the
    circumstances.
  • In some cases, two objects may be equal when
    the values of only one particular instance
    variable match.
  • In other cases, two objects may be equal only
    when the values of all instance variables match.
  • Always name the method equals.

95
Programming Example
  • class Species

96
Programming Example, contd.
  • class Species, contd.

97
Programming Example, cont.
98
Boolean-Valued Methods
  • A method that returns a value of type boolean is
    called a boolean-valued method.
  • Method equals produces and returns a value of
    type boolean.
  • The invocation of a boolean-valued method can be
    used as the condition of an if-else statement, a
    while statement, etc.

99
Boolean-Valued Methods, cont.
  • The value returned by a boolean-valued method can
    be stored in a variable
  • boolean areEqual s1.equals(s2)
  • Any method that returns a boolean value can be
    used in the same way.

100
Class Parameters
  • Recall
  • When the assignment operator is used with objects
    of a class type, a memory address is copied,
    creating an alias.
  • When the assignment operator is used with a
    primitive type, a copy of the primitive type is
    created.

101
Class Parameters, cont.
  • When a parameter in a method invocation is a
    primitive type, the corresponding formal
    parameter is a copy of the primitive type.

102
Class Parameters, cont.
  • When a parameter in a method invocation is a
    reference to a class type (i.e. a named object),
    the corresponding formal parameter is a copy of
    that reference (i.e. an identically valued
    reference to the same memory location).

103
Class Parameters, cont.
  • Example
  • if (s1.equals(s2))
  • public boolean equals (Species otherObject)
  • causes otherObject to become an alias of s2,
    referring to the same memory location, which is
    equivalent to
  • otherObject s2

104
Class Parameters, cont.
  • Any changes made to the object named otherObject
    will be done to the object named s2, and vice
    versa, because they are the same object.
  • If otherObject is a formal parameter of a method,
    the otherObject name exists only as long as the
    method is active.

105
Comparing Class Parameters and Primitive-Type
Parameters
  • A method cannot change the value of a variable of
    a primitive type passed into the method.
  • A method can change the value(s) of the instance
    variable(s) of a class type passed into the
    method.

106
Comparing Class Parameters and Primitive-Type
Parameters, cont.
  • class DemoSpecies

107
Comparing Class Parameters and Primitive-Type
Parameters, cont.
  • class ParametersDemo

108
(optional) Graphics Supplement Outline
  • The Graphics Class
  • The init Method
  • Adding Labels to an Applet

109
The Graphics Class
  • An object of the class Graphics represents an
    area of the screen.
  • The class Graphics also has methods that allow it
    do draw figures and text in the area of the
    screen it represents.

110
The Graphics Class, cont.
111
The Graphics Class, cont.
  • A Graphics object has instance variables that
    specify an area of the screen
  • In examples seen previously, the Graphics object
    represented the area corresponding to the inside
    of an applet.

112
The Graphics Class, cont.
  • When an applet is run, a suitable Graphics object
    is created automatically and is used as an
    argument to the applets paint method when the
    paint method is (automatically) invoked.
  • The applet library code does all this for us.
  • To add this library code to an applet definition,
    use
  • extends JApplet

113
Programming Example
  • class MultipleFaces

114
Programming Example, contd.
  • class MultipleFaces, contd.

115
Programming Example, cont.
  • The code for drawing most of the face is placed
    in private method drawFaceSansMouth to save
    multiple repetitions of this code.

116
Programming Example, cont.
117
The init Method
  • An init method can be defined when an applet is
    written.
  • The method init (like the method paint) is called
    automatically when the applet is run.
  • The paint method is used only for things like
    drawing.
  • All other actions in an applet (adding labels,
    buttons, etc.) either occur or start in the init
    method.

118
Adding Labels to an Applet
  • A label is another way to add text to an applet.

119
Adding Labels to an Applet, cont.
  • class LabelDemo

120
Adding Labels to an Applet, cont.
121
The Content Pane
  • Think of the content pane as inside of the
    applet.
  • Container contentPane getContentPane()
  • When components are added to an applet, they are
    added to its content pane.
  • The content pane is an object of type Container.

122
The Content Pane, cont.
  • A named content pane can do things such as
    setting color
  • contentPane.setBackground(Color.WHITE)
  • or specifying how the components are arranged
  • contentPane.setLayout
  • (new FlowLayout())

123
The Content Pane, cont.
  • or adding labels
  • JLabel label1 new JLabel(Hello)
  • contentPane.add(label1)

124
Summary
  • You have become familiar with the concept of a
    class and an object that instantiates the class.
  • You have learned how to define classes in Java.
  • You have learned how to define and use methods in
    Java.
  • You have learned how to create objects in Java

125
Summary, cont.
  • You have learned how parameters work in Java.
  • You have learned about information hiding and
    encapsulation.
  • You have become familiar with the notion of a
    reference (to understand class variables and
    class parameters).
  • (optional) You have learned more about applets.
Write a Comment
User Comments (0)
About PowerShow.com