1. Trang chủ
  2. » Công Nghệ Thông Tin

Lecture An introduction to computer science using java (2nd Edition): Chapter 7 - S.N. Kamin, D. Mickunas, E. Reingold

39 77 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 452,63 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Chapter 7 - Classes and methods III: Static methods and variables. In 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.

Trang 1

   

Chapter 7

Classes and Methods III:

Static Methods and Variables

Lecture Slides to Accompany

An Introduction to Computer Science

Using Java (2nd Edition)

by S.N Kamin, D Mickunas, E Reingold

Trang 2

   

Chapter Preview

In 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

Trang 3

   

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

Trang 4

   

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

Trang 5

   

Trang 6

   

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

Trang 7

   

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

Trang 8

   

Revised Class Definition

public class name {

declarations of instance variables

Trang 10

   

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)

Trang 13

• 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

Trang 14

   

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);

Trang 15

   

Overloaded Clock Constructors

public class Clock { int hour, minute;

public Clock () { hour = 12;

minute = 0;

} public Clock (int h, int m){

hour = h;

minute = m;

} … }

Trang 16

   

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:20 c3.setHour(8);

C3/setMinute(20);

Trang 17

   

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

Trang 18

   

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); }

Trang 19

   

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);

}

Trang 20

   

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

Trang 21

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

Trang 22

   

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:

Trang 23

• 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)

Trang 25

   

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

Trang 27

   

Trang 28

• Objects are only mutable if its interface

includes mutating methods

Trang 29

public Clock set_nonmut

(int hour, int Minute) {

return new Clock(hour, minute);

}

Trang 30

   

What would happen?

• Consider the effects on the heap if the following sequence of statements was executed

Clock c1 = new Clock();

Clock c2 = c1;

c1.set(4, 30);

c2.set(5, 40);

Trang 31

   

Heap After Assigning c1 to c2

Trang 32

   

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

Trang 33

   

Object Containing Reference to

Another Object

Trang 34

   

UML Class Diagram for Clock-DrawingBox Association

Trang 35

   

UML Class Diagram for Clock-DrawingBox Association

Trang 36

   

Class Containment

• Composition (or aggregation)

– an object of one class is constructed from objects

of other classes so that only the composite object

Trang 37

   

UML Class Diagram for Clock-DrawingBox Composition

Trang 38

   

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

Trang 39

   

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

Ngày đăng: 11/01/2020, 18:40

TỪ KHÓA LIÊN QUAN