2. 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
3. Two popular programming design
methods:
Structured Programming (SP)
Object-Oriented Programming (OOP)
Problem Solving
4. 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
5. 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
6. 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
7. 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
8. Objects
OOProgramming software objects
Software objects have state
Instance Variable/Data/Field
Software objects have behaviour
Method
8
Object’s
members
9. 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.
10. 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…
11. 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
13. 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
14. 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 is
a special method that sets up the object
• Creating an object is called instantiation
• An object is an instance of a particular class
15. 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
16. Constructing String objects
New String objects are created whenever the
String constructors are used:
16
String name4 = new String(); // Creates an object
String name5 = new String("Socrates");
String name6 = name4;
17. 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
18. Object without object reference
cannot be accessed
18
String n1 = new String(“Ali“);
new String(“Abu“);
sv1: String
: String
value = “Ali”
value = “Abu”
n1
n1- object reference variable
20. 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
21. 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 96
Before:
num2 = num1;
num1 38
num2 38
After:
23. 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?
24. 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
25. 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
27. 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
28. 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
29. UML Design Specification
29
UML Class Diagram
Class Name
What data does it need?
What behaviors
will it perform?
Public
methods
Hidden
information
Instance variables -- memory locations
used for storing the information needed.
Methods -- blocks of code used to
perform a specific task.
30. 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…
31. 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
32. Method Control Flow
If the called method is in the same class, only
the method name is needed
32
myMethod();
myMethodcompute
33. Method Control Flow
The called method is often part of another
class or object
33
doIt helpMe
helpMe();obj.doIt();
main
34. 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
35. 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
36. 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
40. 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);
41. Using Rectangle Instances
We use a method call to ask each object to tell
us its area:
41
rectangle1 area 300
rectangle2 area 500Printed output:
System.out.println("rectangle1 area " + rectangle1.calculateArea());
System.out.println("rectangle2 area " + rectangle2.calculateArea());
References to
objects
Method calls
42. 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
43. 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
Object
Creation
Class
Definition