Class & Object - Intro

Post on 20-May-2015

279 views 1 download

Tags:

description

Chapter 6-1

transcript

Introduction toObject-Oriented Programming

Introduction toObject-Oriented Programming

Problem Solving

The key to designing a solution is breaking it down into manageable pieces

When writing software, we design separate pieces that are responsible for certain parts of the solution

Two popular programming design methods:Structured Programming (SP)Object-Oriented Programming (OOP)

Problem Solving

SP

Procedural based approach Main problem will be divided into sub-

problems Analyze and refine each sub-problem All sub-problem solutions are implemented

as procedures and combined to solves the main problem

Object-Oriented Programming

Object based approach objects as foundation for problem solving

Identify objects from the main problem An OOP program is a collection of objects

that interacts each other

Object-Oriented Programming More natural way to solve problem

Objects can be used to represent real-world entities

For instance, an object might represent a particular employee in a company

Each employee object handles the processing and data management related to that employee

Objects

Object-oriented programs use objects, which

represent real world objects. A real world object is a thing, both tangible and

intangible. An object has:

state (it has various properties, which might change) behaviour (it can do things and can have things done

to it)

7

Objects

OOProgramming software objects Software objects have state

Instance Variable/Data/Field

Software objects have behaviour Method

8

Object’smembers

Objects interactions OOP also involves interactions between

objects through calling (invoking) of methods.

9

Method CallsThe OilSensor object calls the warning() method of the Controller, which then invokes the OilLight TurnOn() method.

Method can Return Values

Return value: A result that the method has computed and returns it to the caller

Can returns 0 or 1 value

Scanner s = new Scanner(System.in);

int num = s.nextInt();

10

Continued…

Classes and Objects

To create an object , we MUST provide a definition/description for it

A class is a description/blue print of a kind of object

It does not by itself create any objects How to create an object ?

An object is called an instance of a class

Object instantiation – process of creating an object

11

Example of Java class:The String Class

12

Creating Objects A variable holds either a primitive type or a reference to

an object

A class name can be used as a type to declare an object reference variable

String name;

No object is created with this declaration

An object reference variable holds the address of an object

The object itself must be created separately

13

Creating Objects Generally, we use the new operator to create an object

14

name = new String (“Ali bin Ahmad");

This calls the String constructor, which isa special method that sets up the object

• Creating an object is called instantiation

• An object is an instance of a particular class

Constructing String objects

Strings stringRef = new String(stringLiteral);

 eg.

String name = new String(“Muhammad Haziq”);

Since strings are used frequently, Java provides a shorthand notation for creating a string:

String name = "Muhammad Haziq”;

15

Constructing String objects New String objects are created whenever the

String constructors are used:

16

String name4 = new String(); // Creates an objectString name5 = new String("Socrates");String name6 = name4;

Invoking Methods We've seen that once an object has been instantiated, we

can use the dot operator to invoke its methods

name.length()

A method may return a value, which can be used in an assignment or expression

count = name.length();

S.o.p(“Num. of char in “ + name+ “=“ + count);

A method invocation can be thought of as asking an object to perform a service

17

Object without object reference cannot be accessed

18

String n1 = new String(“Ali“);new String(“Abu“);

sv1: String : String

value = “Ali” value = “Abu”

n1n1- object reference variable

Object References

Primitive type variables ≠ object variables

19

References Note that a primitive variable contains the value itself,

but an object variable contains the address of the object

An object reference can be thought of as a pointer to the location of the object

Rather than dealing with arbitrary addresses, we often depict a reference graphically

20

"Steve Jobs"name1

num1 38

Assignment Revisited The act of assignment takes a copy of a value and stores it in a

variable

For primitive types:

21

num1 38

num2 96Before:

num2 = num1;

num1 38

num2 38After:

Object Reference Assignment For object references, assignment copies the

address:

22

name2 = name1;

name1

name2Before:

"Steve Jobs"

"Steve Austin"

name1

name2After:

"Steve Jobs"

Questions

23

String stud1 = new String(“Ani”);int studID = 65000;

What does variable stud1 contains?What does variable studID contains?Is this allowed? stud1 = studID;

String stud1; stud1 = new String(“Ani”);stud1 = new String(“Obi”);

How many objects were created by the program? How many reference variables does the program contain?

Writing Classes The programs we’ve written in previous

examples have used classes defined in the Java standard class library

Now we will begin to design programs that rely on classes that we write ourselves

True object-oriented programming is based on defining classes that represent objects with well-defined characteristics and functionality

24

Graphical Representation of a Class

25

The notation we used here is based on the industry standard notation called UML, which stands for Unified Modeling Language.

A UML Class Diagram

Class Name

Variables

Method

Type of data

Access

Type of return value

A class can contain data declarations and method declarations

Object Instantiation

26

class

object

Object Design Questions

What role will the object perform? What data or information will it need?

Look for nouns. Which actions will it take?

Look for verbs. What interface will it present to other objects?

These are public methods. What information will it hide from other objects?

These are private.

27

Design Specification for a Rectangle Class Name: Rectangle Role: To represent a geometric rectangle States (Information or instance variables)

- Length: A variable to store rectangle’s length (private)- Width: A variable to store rectangle's width (private)

Behaviors (public methods)- Rectangle(): A constructor method to set a rectangle’s

length and width- calculateArea(): A method to calculate a rectangle’s

area

28

UML Design Specification

29

UML Class Diagram

Class Name

What data does it need?

What behaviors will it perform?

Publicmethods

Hiddeninformation

Instance variables -- memory locations used for storing the information needed.

Methods -- blocks of code used to perform a specific task.

Method can has input (parameter) & output (return value) Parameter : value given to method so that it can

do its task Can has 0 or more parameter Return value: A result that the method has

computed and returns it to the caller Can returns 0 or 1 value Eg. - pow(2,3)

- calculateArea()

- getBalance( ) - move( )

30

Continued…

Method Declarations A method declaration specifies the code that will

be executed when the method is invoked (called)

When a method is invoked, the flow of control jumps to the method and executes its code

When complete, the flow returns to the place where the method was called and continues

The invocation may or may not return a value, depending on how the method is defined

31

Method Control Flow If the called method is in the same class, only the

method name is needed

32

myMethod();

myMethodcompute

Method Control Flow The called method is often part of another class or object

33

doIt

helpMe

helpMe();

obj.doIt();

main

Method Design

What specific task will the method perform? What input data will it need to perform its

task? What result will the method produce? How input data are processed into result? What algorithm will the method use?

34

Method calculateArea() Algorithm Method Name: calculateArea() Task: To calculate the area of a rectangle Data Needed (variables)

length: A variable to store the rectangle's length width: A variable to store the rectangle's width area: A variable to store result of calculation

Processing: area = length x width Result to be returned: area

35

Coding into Java

36

public class Rectangle // Class header{ private double length; // Instance variables private double width; public Rectangle(double l, double w) // Constructor method { length = l; width = w; }

public double calculateArea() // calculate area method { double area;

area = length * width;

return area; } // calculateArea()

} // Rectangle class

Method calculatePerimeter() Algorithm Write an algorithm to calculate the perimeter

of a rectangle. Write the method in Java.

37

calculatePerimeter() Algorithm Method Name: calculatePerimeter() Task: To calculate the perimeter of a

rectangle Data Needed (variables)

lengthwidthperimeter

Processing: perimeter = 2 x(length + width) Result to be returned: perimeter

38

calculatePerimeter() in Java code

39

public double calculatePerimeter()

{

double perimeter;

perimeter = 2 * (length + width);

return perimeter;

} // calculatePerimeter()

Creating Rectangle Instances Create, or instantiate, two instances of the Rectangle class:

40

The objects (instances) store actual values.

Rectangle rectangle1 = new Rectangle(30,10);

Rectangle rectangle2 = new Rectangle(25, 20);

Using Rectangle Instances We use a method call to ask each object to tell us

its area:

41

rectangle1 area 300rectangle2 area 500Printed output:

System.out.println("rectangle1 area " + rectangle1.calculateArea());

System.out.println("rectangle2 area " + rectangle2.calculateArea());

References to objects

Method calls

Syntax : Object Construction new ClassName(parameters);

Example: new Rectangle(30, 20); new Car("BMW 540ti", 2004);

Purpose: To construct a new object, initialize it with the

construction parameters, and return a reference to the constructed object.

42

The RectangleUser Class Definition

public class RectangleUser{ public static void main(String argv[]) { Rectangle rectangle1 = new Rectangle(30,10); Rectangle rectangle2 = new Rectangle(25,20); System.out.println("rectangle1 area " + rectangle1.calculateArea()); System.out.println("rectangle2 area " + rectangle2.calculateArea()); } // main()} // RectangleUser

43

An application must have a main() method

Object Use

ObjectCreation

ClassDefinition