UNIT 1 -
PROGRAMMING
LECTURE 7 – OBJECT ORIENTED PROGRAMMING
PLAN
Introduction to OOP
Class & objects
Constructor
Destructor
UML Class diagram (basic)
Unit 1 - Programming / Lecture 7 : OOP part 1 2
WHAT IS OBJECT-ORIENTED PROGRAMMING?
A programming paradigm that focuses on objects
What is an object?
o Entity with unique identity that encapsulate state
Light
Turn on
Is light on?
Turn off
Unit 1 - Programming / Lecture 7 : OOP part 1 3
OBJECT-ORIENTED VS PROCEDURAL
Procedural programming starts with features (functions) and
how these features can be linked together
OOP starts with objects and how they communicate
Unit 1 - Programming / Lecture 7 : OOP part 1 4
OBJECT-ORIENTED VS PROCEDURAL
Procedural programming is top-
down
OOP is bottom-up
Unit 1 - Programming / Lecture 7 : OOP part 1 5
CLASS
A class is an abstraction of similar objects
A class can be seen as an abstract data type
o but it’s much more than that Light
Turn on
A class consists of
o Class name
Is light on?
Turn off
o Attributes
o Methods LightBulb
Unit 1 - Programming / Lecture 7 : OOP part 1 6
CLASS DECLARATION IN C#
Name of class Attribute
protection
Methods
Unit 1 - Programming / Lecture 7 : OOP part 1 7
DATA MEMBER DECLARATION
<modifiers> <data type> <name> ;
Modifiers
Modifiers Data
DataType
Type Name
Name
private String ownerName ;
Chapt
Unit 1 - Programming / Lecture 7 : OOP part 1 er 4 -
8
METHOD DECLARATION
<modifier> <return type> <method name> ( <parameters> )
{
<statements>
} Modifier
Modifier Return
ReturnType
Type Method
MethodName
Name Parameter
Parameter
public void setOwnerName ( String name )
{
ownerName = name; Statements
Statements
}
Unit 1 - Programming / Lecture 7 : OOP part 1 9
SCOPE OF CLASS
Scope of class are variables and functions declared in a class
Scope of class defines scope of objects
A public member (attribute or method) can be accessed from outside
the class
A private member restrict accesses from outside the class
A protected member restrict accesses from outside the class
Unit 1 - Programming / Lecture 7 : OOP part 1 10
CONSTRUCTOR
Constructor is a special member
function of a class that is executed
whenever we create new objects of
that class.
Constructor has exact same name as
the class, no return type and must be
public
Why do we need constructor?
• Constructors can be very useful
for setting initial values for
certain member variables.
• Constructors can be used for
allocate
Unit 1 - Programming / Lecture 7 : OOP part 1 memory for objects 11
CONSTRUCTOR LightBulb::LightBulb()
{
Default constructor light = false;
o It’s constructor without parameters }
o If there is no constructor, compiler will
generate a default constructor LightBulb::LightBulb(bool l = false)
o Must have default constructor in some {
cases light = l;
Parameterized constructor }
o Initiate member variables
o Can have default values
• May be ambiguous with default constructor LightBulb b = new LightBulb();
Unit 1 - Programming / Lecture 7 : OOP part 1 12
DESTRUCTOR
Destructor is called when object is
removed from memory
Destructor has no parameter, must be
public, no return
If not defined, compiler will generate a
default constructor
Why do we need destructor?
• Deallocate memory
• Close files
• Close connections (socket,
database server, etc.)
Unit 1 - Programming / Lecture 7 : OOP part 1 13
INFORMATION HIDING AND VISIBILITY MODIFIERS
• The modifiers public and private designate the accessibility of data
members and methods.
• If a class component (data member or method) is declared private,
client classes cannot access it.
• If a class component is declared public, client classes can access it.
• Internal details of a class are declared private and hidden from the
clients. This is information hiding.
Unit 1 - Programming / Lecture 7 : OOP part 1 14
ACCESSIBILITY EXAMPLE
… class Service {
public int memberOne;
Service obj = new Service();
private int memberTwo;
public void doOne() {
obj.memberOne = 10;
…
obj.memberTwo = 20; }
private void doTwo() {
obj.doOne(); …
}
obj.doTwo(); }
…
Client Service
Unit 1 - Programming / Lecture 7 : OOP part 1 15
GUIDELINE FOR VISIBILITY MODIFIERS
• Guidelines in determining the visibility of data members and methods:
• Declare the class and instance variables private.
• Declare the class and instance methods private if they are used only by the
other methods in the same class.
• Declare the class constants public if you want to make their values directly
readable by the client programs. If the class constants are used for internal
purposes only, then declare them private.
Unit 1 - Programming / Lecture 7 : OOP part 1 16
CLASS NOTATION IN CLASS DIAGRAM
Class name
private
Attributes
protected
public Methods
Unit 1 - Programming / Lecture 7 : OOP part 1 17
EXAMPLE: USING THE BICYCLE CLASS
class BicycleRegistration {
static void Main(String[] args)
{
Bicycle bike1, bike2;
String owner1, owner2;
bike1 = new Bicycle( ); //Create and assign values to bike1
bike1.setOwnerName("Adam Smith");
bike2 = new Bicycle( ); //Create and assign values to bike2
bike2.setOwnerName("Ben Jones");
owner1 = bike1.getOwnerName( ); //Output the information
owner2 = bike2.getOwnerName( );
Console.WriteLine(owner1 + " owns a bicycle.");
Console.WriteLine(owner2 + " also owns a bicycle.");
} 18
}
THE DEFINITION OF THE BICYCLE CLASS
class Bicycle
{
// Data Member
private String ownerName;
//Constructor: Initialzes the data member
public void Bicycle( ) {
ownerName = "Unknown";
}
//Returns the name of this bicycle's owner
public String getOwnerName( ) {
return ownerName;
}
//Assigns the name of this bicycle's owner
public void setOwnerName(String name) {
ownerName = name;
}
}
Unit 1 - Programming / Lecture 7 : OOP part 1 19
MULTIPLE INSTANCES
bike1 bike2
Bicycle bike1, bike2;
: Bicycle : Bicycle
bike1 = new Bicycle( );
bike1.setOwnerName("Adam Smith"); ownerName ownerName
“Adam Smith” “Ben Jones”
bike2 = new Bicycle( );
bike2.setOwnerName("Ben Jones");
Sample Code
Unit 1 - Programming / Lecture 7 : OOP part 1 20
ACTIVITY: DIAGRAM FOR BICYCLE CLASS
Correct class diagram for Bicycle class (attribute, modifier)
Bicycle
Bicycle( )
getOwnerName( )
setOwnerName(String)
Unit 1 - Programming / Lecture 7 : OOP part 1 21
ACTIVITY
Student has following information:
o Name
o Age
o Address
o GPA
Draw class diagram for Student class
Implement Student class in C#, test it in Main
Unit 1 - Programming / Lecture 7 : OOP part 1 22