Title: Object-Oriented Programming Basics
1Object-Oriented Programming Basics
- Reading for this week
- BG 1-4.10
- UNIX 1,2,4,9
- JAVA 0,1
- BG Beginners Guide
- UNIX Harley Hahns Student guide to Unix,
Harley Hahn - JAVA An Introduction to Object Oriented
Programming with Java, Thomas Wu
2How can one design a program?
- Top-down structured design uses algorithmic
decomposition where each module denotes a major
step in some overall process - Object-oriented design divides the problem into
a set of objects that interacts to solve the
problem. Your programs properties and behaviors
are modelled based upon real objects like cars,
books, houses, etc.
3Why OOD?
- Software is complex (too many people is doing too
many things the mess is inevitable ? ) - One of the main goals in programming is to avoid
the redundancy and objects can help to do this
(inheritance) - Objects can help increase modularity through data
hiding (encapsulation)
4OK, but what is object ?
- An object is a thing, either tangible or
intangible. - An object-oriented program consists of many
objects. - An object is composed of identity, state
(attributes, data, and their current values) and
behavior (operations) . - Identity? State? Behavior? Too many new
expressions Ill get a headache!!!
5Identity, State, Behavior
- Identity is the property of an object that
distinguishes it from all other objects. - The failure to recognize the difference between
the name of the object and the object itself is
the source of many errors in object-oriented (OO)
programming.
6Identity, State, Behavior
- The state of an object encompasses all of the
(static) properties of the object plus the
current (dynamic) values of each of these
properties - A property is an inherent or distinctive
characteristic, trait, quality, or feature that
contribute to making an object uniquely that
object - We will use the word attribute, or data member,
to refer to the state of an object
7Examples of State
- Properties
- Elevators travel up or down
- Vending machines accept coins
- Clocks indicate the current time
- Values
- Current floor
- Number of coins deposited
- The number of minutes since the last hour
8Identity, State, Behavior
- Behavior is how an object acts and reacts, in
terms of state changes and interactions with
other objects. - An operation is some action that one object
performs upon another in order to elicit a
reaction. - We will use the word method to describe object
behavior in java. - Invoking a method causes the behavior to take
place.
9Objects and Classes graphical representation
- A graphical representation of an object
- lt Object name gt
- A graphical representation of a class
- lt Class name gt
10Object example
Audi 6
BMW Z3
Corvette
- Notice that all objects are of the same type.
All objects are cars!
11Classes
- Classes are the definitions (or blueprints) used
to create objects. Id say descriptions of
objects. - To make a car the manufacturer must first have a
design from which to build the first car. Then,
once all the problems are worked out, the design
is used to build all the cars of that model.
12Objects
- An object is an instance of a class.
- If we have a class definition called Car, then we
can think of Audi, BMW, and Corvette as each
being an instance (object) of the class Car,
i.e., they are each a type of car.
13Object example
Audi 6
BMW Z3
Corvette
Car
Car
Car
- Notice that all objects are of the same type.
All objects are cars!
14Classes and Objects
- An object is an instance of exactly one class!!!
- Corvette can not be an instance of a car class
and an instance of a plane class at the same
time. - An instance of a class, an object, belongs to
that particular class. - A Corvette is a car ? Corvette belongs to the
class Car.
15Classes
- Once a class is defined you can create as many
instances of the class (objects from the class)
as you would like. - Once a blue print is completed for the 2003
Porsche 911, Porsche will use an assembly line to
build as many instances of the 2003 Porsche 911
as they wish.
16Class car and objects- graphically
Car
This line shows an instance-of relationship.
Audi 6
BMW Z3
Corvette
Car
Car
Car
17Defining a class
- Properties are variables which describe the
essential characteristics of an object. - Properties of a car color, model, make, how many
doors, transmission type, direction of movement,
etc. - Behaviors are methods that describe how the
object behaves and how the properties may be
modified. - Behavior of a car braking, changing gears,
opening doors, moving forwards or backwards, etc.
18Defining a class
Behavior or Method 1 Behavior
Behavior or
or
Method 4
Method 2 Behavior or Method 3
Properties or Instance Variables
19Instance variables
- The class definition will include parameter
definitions (properties) that represent data
about a particular object, instance variables. - Example, Jessica's car may have 4 gallons of gas
in it while Clint's car has 10 gallons. - The amount of gas in each car may change without
affecting the amount of gas in the any other
cars. - All instances (objects) of a class will have a
set of instance variables that are specific to
that individual object. - The combination of the values of these instance
variables is known as the objects state.
20Instance variables
Car
MaxSpeed
Audi 6
BMW Z3
Corvette
Car
Car
Car
MaxSpeed 155
MaxSpeed 165
MaxSpeed 145
21Class variables
- The class definitions may also include parameter
definitions that represent data that is shared by
all class instances (objects), called class
variables. - In the case of the car class, we will define a
maximum allowed speed, by the law (variable
LMaxSpeed). This will be the same for each
individual car (thats why your car have those
annoying speed limiters ?).
22Class variables
Car
MaxSpeed LMaxSpeed155
Audi 6
BMW Z3
Corvette
Car
Car
Car
MaxSpeed 155
MaxSpeed 165
MaxSpeed 145
23Class variables
- Class variables may also be used to keep track of
things such as how many instances of a class
exist. - Example lets create a counter the records how
many cars are in the garage.
24Class variables
Car
MaxSpeed LMaxSpeed155 NumCars 3
Audi 6
BMW Z3
Corvette
Car
Car
Car
MaxSpeed 155
MaxSpeed 165
MaxSpeed 145
25Constant parameters
- If it was variables instead of parameters, that
would be oxymoron. - If there is a parameter whose value should not
change while your program is running, that
parameter type is called a constant. - The LMaxSpeed parameter that we defined for the
Car class is a constant. The maximal speed is
limited by the low, and it cannot be changed once
the car has been built. - What about Z3 and 165 mph? Well, the owner has
just made an illegal modification !!!
26Messages
Audi 6 turnOnHazard()
- For Objects
- The object to whom the message is being sent.
- The name of the method (behavior) that object is
to execute. - Any parameters (variables) needed by that method.
- For Humans
- Who the message is for.
- What we want the person to do.
- What information is needed to do it.
27Messages and Methods
- In order to process a message, an object needs to
have a method defined for the requested task. - A method is a small, well-defined piece of code
that completes a specific task. - For our previous example, we need to define a
method to turn on the car's hazard lights.
28Messages and Methods
Car
MaxSpeed LMaxSpeed155 NumCars 3 turnOnHazard()
Audi 6
BMW Z3
Corvette
Car
Car
Car
MaxSpeed 155 turnOnHazard()
MaxSpeed 165 turnOnHazard()
MaxSpeed 145 turnOnHazard()
29Instance methods
- Each class can have methods that are specific to
each object, called instance methods. - These can only affect that object's parameters,
i.e., its instance variables. - Example If BMW has 4 gallons of gas and someone
puts 6 more gallons of gas in his/her car, the
car now has 10 gallons. The amount of gas in Audi
and Corvette is unchanged.
30Messages and Methods
Car
MaxSpeed LMaxSpeed155 NumCars
3 turnOnHazard() addGass(amount)
Audi 6
BMW Z3
Corvette
Car
Car
Car
MaxSpeed 155 turnOnHazard() addGass(amount)
MaxSpeed 165 turnOnHazard() addGass(amount)
MaxSpeed 145 turnOnHazard() addGass(amount)
31Methods
- It is also possible that you want information
from an object in this case, you would define a
method that sends (returns) a message back to the
requester containing that information. - We need to know how much gas is in our cars, so
we will create a new method that returns the
value of GasLevel variable for our car.
32Messages and Methods
Car
MaxSpeed GasLevel LMaxSpeed155 NumCars 3
Audi 6
Corvette
BMW Z3
Car
Car
Car
MaxSpeed 155 GasLevel 4 turnOnHazard() addGass
(amount) getGasLevel()GasLevel
MaxSpeed 145 GasLevel 6 turnOnHazard() addGass
(amount) getGasLevel()GasLevel
MaxSpeed 165 GasLevel 10
33Class methods
- Class methods are used to get or manipulate
information about all objects created from the
class. - Typically, class methods are changing class
variables. For example - Each time we move the car in or out of the
garage, we need to add/subtract one to the number
of cars carIn( ) carOut( ) - Also, we may want to know how many cars are
actually in the garage getNumCars( )
34Messages and Methods
Car
carIn()
carOut()
turnOnHazard()
getNumCars()NumCars
addGass(amount)
getGasLevel()GasLevel
Audi 6
BMW Z3
Corvette
Car
Car
Car
MaxSpeed 155 GasLevel 4 turnOnHazard() addGass
(amount) getGasLevel()GasLevel
MaxSpeed 165 GasLevel 10 turnOnHazard() addGas
s(amount) getGasLevel()GasLevel
MaxSpeed 145 GasLevel 6 turnOnHazard() addGass
(amount) getGasLevel()GasLevel
35Types of methods
- There are 4 basic types of methods
- Modifier (sometimes called a mutator)
- Changes the value associated with an attribute of
the object (or class) - Accessor
- Returns the value associated with an attribute of
the object (or class) - Constructor
- Called once when the object is created (before
any other method will be invoked) - Destructor
- Called when the object is destroyed
36OOP
- When writing object-oriented programs, first one
must define the classes (like Car). - Then, while the program is running, the instances
of the classes (objects) (such as Audi, BMW,
Corvette in our example) are created.
37OOP
- Object-oriented programming allows the programmer
to hide the implementation details from the other
objects and the users. - In other words the implementation is transparent
to the other objects or the user. - Example Although our computers all are different
under the hood, we dont need to know whats
there to be able to use them.
38OOP - benefits
- An object can be written and maintained
separately from the rest of the program,
modularity. - An object has a public face that it uses to
communicate with other objects, but other objects
can not directly access its instance variables,
information hiding.
39Inheritance
- All classes in Java are organized into a class
hierarchy. - The highest level classes are very general and
the lower level classes are more specific. - The lower level classes are based upon the higher
level classes and inherit instance variables and
methods from those higher level class. They also
may contain their own (new) instance variables
and methods beyond the higher level class
definition.
40Inheritance
- A higher level class is called a superclass a
lower level class is called a subclass. - A subclass may also be a superclass
- Inheritance allows you to define certain
behaviors once and then to reuse those behaviors
over and over again in the subclasses. This is
called reusability.
41Inheritance
- Our Car class is very general.
- Let's define a new class called BMW that contains
the parameters model, color, engine size.
42Inheritance
Car
BMW
43Inheritance
- Now let's define two new classes. One for the Z3
and another for the 3 Series Sedan. - What might be some of the differences between the
two classes? - Number of doors (3, 5)
- Roof (soft or hardtop)
- Therefore, we add variables NumDoors and Roof
44Inheritance
Car
45Views of the class
- A class can be viewed as a sort of contract that
specifies what instances of the class can, and
cannot do - It is possible to distinguish between the outside
and inside view of a class - The interface of a class provides its outside
view and emphasizes the abstraction - The implementation of a class is its inside view
46Access
- Most classes provide three levels of access to
their members (state and behavior) - Public
- The part of the class that is visible to all
clients of the class - Protected
- The part of the class that is only visible to
subclasses of the class - Private
- A part of the class that is not visible to any
other classes
47Primitive data types
- What ?!!! Primitive? What is it?
- Certain basic data types are built into Java
- Alphabetical char
- Integral int, byte, short, long
- Real float, double
- Logical boolean
- Java supports 8 primitive types (i.e. 4 basic
types)
48Primitive data types
Type Description Bits Range of values
boolean Boolean 1 False, true
byte integers, very small 8 -128 to 127
short integers, small ones 16 -32768 to 32767
int integer 32 -2,147,483,648 to 2,147,483,647
long integer, very big ones 64 /- 9.2 1018
float floating point number 32 /-3.402923471038
double floating point number, very accurate 64 /-1.7976931348623157010308
char character 16 Unicode character (eg \u12d1)
49Primitive data types
- When typing integer into a program, the number
must have an L at the end 3932354162L - Real numbers are represented in scientific
notation - mantissa -1,1
- exponent (powers of two)
50Real data type
- Characterized by precision and range
- Precision represents number of significant
digits that is represented in the number. Depends
upon the number of bits in the mantissa. - Range represents the difference between the
largest and smallest numbers that can be
represented. Depends upon the number of bits in
the exponent. - float
- 24b mantissa 8b exponent
- 6-7 decimal digits of precision
- double
- 53b mantissa 11b exponent
- 15-16 decimal digits of precision
51Round-off error
- When a double is stored to a float, part of the
number is lost. In this situation, the seven most
significant digits are preserved and the rest of
the information is lost.
52Char
- Character values may represent both printable and
non-printable characters - Printable a, ,
- Non-printable \n new line, \t tab,
- Unicode 16b support for every character in the
world \u0000 to \uFFFF