1 of 23

​

Introduction to Object-Oriented Programming

​

​

Kaustubh Kulkarni

​

2 of 23

Object-Oriented Programming

  • Object-oriented programming (OOP) is a way to organize and conceptualize a program as a set of interacting objects.
  • The programmer defines the types of objects that will exist.
  • The programmer creates object instances as they are needed.
  • The programmer specifies how these various object will communicate and interact with each other.

1 - 1

3 of 23

What is an Object?

Real-world objects have states / attributes and behaviors.

Examples:

  • Table Lamp
    • States / Attributes : on, off, color, temperature
    • Behaviors : turn on, turn off
  • Bicycles
    • States / Attributes : gear, pedal cadence, speed
    • Behaviors : changing gear, changing pedal cadence, changing speed
  • Dog
    • Attributes: breed, color, hungry, tired, etc.
    • Behaviors: eating, sleeping, etc.
  • Bank Account
    • Attributes: account number, owner, balance
    • Behaviors: withdraw, deposit

​

1 - 2

4 of 23

Software Objects

Writing software often involves creating a computational model

of real-world objects and processes.

​

  • Object-oriented programming is a methodology that gives programmers tools to make this modeling process easier.
  • Software objects, like real-world objects, have attributes and behaviors.
  • Your best bet is to think in terms as close as possible to the real world; trying to be tricky or cool with your system is almost always the wrong thing to do (remember, you can’t beat mother nature!)

1 - 3

5 of 23

Software Objects - Cont’d

  • In object-oriented languages, they are defined together.
    • An object is a collection of attributes and the behaviors that operate on them.
  • Variables in an object are called attributes.
  • Procedures associated with an object are called methods.

In traditional programming languages (Fortran, Cobol, C, etc)

data structures and procedures are defined separately.

Account

Account

Account

balance:

number:

Bank

deposit()

withdraw()

1 - 4

6 of 23

Classes

The definitions of the attributes and methods of an object are

organized into a class. Thus, a class is the generic definition

for a set of similar objects (i.e. Person as a generic definition

for Jane, Mitch and Sue)

​

  • A class can be thought of as a template used to create a set of objects.
  • A class is a static definition; a piece of code written in a programming language.
  • One or more objects described by the class are instantiated at runtime.
  • The objects are called instances of the class.

1 - 5

7 of 23

Classes - Cont’d

  • Each instance will have its own distinct set of attributes.
  • Every instance of the same class will have the same set of attributes;
    • every object has the same attributes but,
    • each instance will have its own distinct values for those attributes.

1 - 6

8 of 23

Bank Example

  • The "account" class describes the attributes and behaviors of bank accounts.
  • The “account” class defines two state variables (account number and balance) and two methods (deposit and withdraw).

class: Account

deposit()

withdraw()

balance:

number:

1 - 7

9 of 23

Bank Example - Cont’d

  • When the program runs there will be many instances of the account class.
  • Each instance will have its own account number and balance (object state)
  • Methods can only be invoked .

balance: $240

number: 712

balance: $941

number: 036

balance: $19

number: 054

Instance #1

Instance #2

Instance #3

1 - 8

10 of 23

Encapsulation

When classes are defined, programmers can specify that

certain methods or state variables remain hidden inside the

class.

  • These variables and methods are accessible from within the class, but not accessible outside it.
  • The combination of collecting all the attributes of an object into a single class definition, combined with the ability to hide some definitions and type information within the class, is known as encapsulation.

​

Hidden State Variables and Methods

Visible Methods

Visible Variables

Class Definition

1 - 9

11 of 23

Graphical Model of an Object

State variables make up the nucleus of the object. Methods surround and hide (encapsulate) the state variables from the rest of the program.

theBalance

acctNumber

accountNumber()

balance()

Instance variables

Methods

deposit()

withdraw()

1 - 10

12 of 23

Instance Methods and Instance Variables

The methods and variables described in this module so far are

know as instance methods and instance variables.

​

  • These state variables are associated with the one instance of a class; the values of the state variables may vary from instance to instance.
  • Instance variables and instance methods can be public or private.
  • It is necessary to instantiate (create an instance of) a class to use it’s instance variables and instance methods.

1 - 11

13 of 23

Class Methods and Class Variables

In addition to instance methods and instance variables, classes

can also define class methods and class variables.

​

  • These are attributes and behaviors associated with the class as a whole, not any one instance.
  • Class variables and class methods can be public or private.
  • It is not necessary to instantiate a class to use it’s class variables and class methods.

1 - 12

14 of 23

Class Variables

  • A class variable defines an attribute of an entire class.
  • In contrast, an instance variable defines an attribute of a single instance of a class.

count: 3

printCount()

num: 054 bal: $19

num: 712 bal: $240

num: 036 bal: $941

Account

Class method

class variable

instance variables

1 - 13

15 of 23

Inheritance

The advantage of making a new class a subclass is that it will

inherit attributes and methods of its parent class (also called

the superclass).

​

  • Subclasses extend existing classes in three ways:
    • By defining new (additional) attributes and methods.
    • By overriding (changing the behavior) existing attributes and methods.
    • By hiding existing attributes and methods.

1 - 14

16 of 23

Subclasses

When a new class is developed a programmer can define it to

be a subclass of an existing class.

  • Subclasses are used to define special cases, extensions, or other variations from the originally defined class.

Examples:

  • Terrier can be defined as a subclass of Dog.
  • SavingsAccount and CheckingAccount can be derived from the Account class (see following slides).

​

Generic Class for Dog

With general attributes and behaviors for all dogs.

Specific Class for Terrier

With new attributes and behaviors specific to the Terrier breed.

Terrier is derived

from Dog

1 - 15

17 of 23

New Account Types - Cont’d

Suppose we define SavingsAccount and CheckingAccount

as two new subclasses of the Account class.

class Account {� method acctNum() {…} � method balance() {…}� method deposit() {…}� method withdraw() {…}�}

class SavingsAccount � extends Account {� method rate() {…} �}

class CheckingAccount � extends Account {� method withdraw() {…} �}

1 - 16

18 of 23

New Account Types - Cont’d

deposit()

acctNum()

balance()

withdraw()

deposit()

acctNum()

balance()

withdraw()

deposit()

acctNum()

balance()

withdraw()

rate()

withdraw()

Account

CheckingAccount

SavingsAccount

No new code has to be written for deposit() and other methods, they are inherited from the superclass.

1 - 17

19 of 23

Messages

  • Messages are information/requests that objects send to other objects (or to themselves).
  • Message components include:
    • The name of the object to receive the message.
    • The name of the method to perform.
    • Any parameters needed for the method.

Manager

Employee

Message�To: Employee�Method: getHired�Parameters: salary = $45,000, start_date = 10/21/99

1 - 18

20 of 23

Benefits of Messages

Message passing supports all possible interactions between

two objects.

​

  • Message passing is the mechanism that is used to invoke a method of the object.
  • Objects do not need to be part of the same process or on the same machine to interact with one another.
  • Message passing is a run-time behavior, thus it is not the same as a procedure call in other languages (compile-time).
    • The address of the method is determined dynamically at run-time, as the true type of the object may not be known to the compiler.

1 - 19

21 of 23

Polymorphism

Polymorphism is one of the essential features of an object-

oriented language; this is the mechanism of decoupling the

behavior from the message.

​

  • The same message sent to different types of objects results in:
    • execution of behavior that is specific to the object and,
    • possibly different behavior than that of other objects receiving the same message.
  • Example: the message draw() sent to an object of type Square and an object of type Circle will result in different behaviors for each object.

​

1 - 20

22 of 23

Polymorphism – Cont’d

There are many forms of Polymorphism in object-oriented

languages, such as:

​

  • True Polymorphism: Same method signature defined for different classes with different behaviors (i.e. draw() for the Classes Circle and Square)
  • Parametric Polymorphism: This is the use of the same method name within a class, but with a different signature (different parameters).
  • Overloading: This usually refers to operators (such as +,-,/,*, etc) when they can be applied to several types such as int, floats, strings, etc.
  • Overriding: This refers to the feature of subclasses that replace the behavior of a parent class with new or modified behavior.

1 - 21

23 of 23

OO Concepts Summary

  • Object-oriented programming is a way of conceptualizing a program as groups of objects that interact with one another.
  • A class is a general template used to create objects.
  • The combination of collecting all the attributes of an object into a single class definition, combined with the ability to hide some definitions within the class, is known as encapsulation.
  • Classes can also define class variables and class methods which are attributes and methods associated with the class as a whole.
  • Inheritance allows classes to “inherit” attributes and methods from their base (parent) class. This provides a clean mechanism for code re-use and extension.

1 - 22