Professional Documents
Culture Documents
Object
State
Behavior
Identity
Object state
200
obj : Circle
50
200
(100,100)
x: 100
y: 100
radius: 50
obj : Transcript
rollno: 001
name: Ali
grades: { {English Language, B},
{Physics-I, A},
{Introduction to Computing, A-},
Object behavior
getter methods
Farooq Ahmed, FAST-NU, Lahore
init state
200
obj : Circle
50
200
x: 100
y: 100
radius: 50
(100,100)
200
(150,100)
x: 150
y: 100
radius: 50
init state
obj : Transcript
rollno: 001
name: Ali
grades: { {English Language, B},
{Physics-I, A},
{Introduction to Computing, A-},
Object Identity
shallow vs deep
Object aliases
Pointers / References
Farooq Ahmed, FAST-NU, Lahore
init state
200
obj1 : Circle
50
200
(100,100)
obj2 : Circle
50
(150,100)
x: 100
y: 100
radius: 50
x: 150
y: 100
radius: 50
50
200
(150,100)
obj1 : Circle
x: 150
y: 100
radius: 50
Farooq Ahmed, FAST-NU, Lahore
obj2 : Circle
x: 150
y: 100
radius: 50
: Circle
x: 100
y: 100
radius: 50
: Circle
x: 0
y: 100
radius: 20
: Circle
class Circle {
x: 150
y: 100
radius: 50
: Circle
private:
int x;
int y;
int radius;
classified as
x: 150
y: 100
radius: 25
public:
Circle(...)
void move(int x,int y);
};
Class
Class
class Circle {
private:
int x;
int y;
int radius;
public:
Circle(...)
void move(int x,int y);
};
C++
class Circle:
private int x;
private int y;
private int radius;
x=0
y=0
radius = 0
public Circle(...) { }
public void move(int x,int y){
def __init__(self):
}
Java / C#
def move(self,x,y):
Python
UML Notation
Class name
Private member
Attributes
Public member
Methods
Notational Possibilities
private:
int x;
int y;
int radius;
Circle c1;
Circle c2;
public:
Circle(...)
void move(int x,int y);
};
}
Option 2
Object lifeline
Heap
{
: Circle
c1
x: 100
y: 100
radius: 50
Aliases
Heap
Objects
: Circle
c2
x: 100
y: 100
radius: 100
Farooq Ahmed, FAST-NU, Lahore
Memory Leak
{
c2 = c1;
: Circle
c1
x: 100
y: 100
radius: 50
Aliases
Heap
Objects
: Circle
c2
x: 100
y: 100
radius: 100
Farooq Ahmed, FAST-NU, Lahore
Objects as Parameters
class Circle {
};
class Canvas {
public:
void drawCircle(Circle);
};
Circle circle(100,100,50);
Canvas canvas;
canvas.drawCircle(circle);
circle.move(150,150);
}
class Canvas {
public:
void drawCircle(Circle*);
};
circle->move(150,150);
}
Farooq Ahmed, FAST-NU, Lahore
Dangling Pointers
class Circle {
};
class Canvas {
public:
void drawCircle(Circle*);
};
void Canvas::drawCircle(Circle* c){
delete c;
}
circle->move(150,150);
}
class Circle {
private int x;
private int y;
private int radius;
public Circle(...) { }
public void move(int x,int y){
}
Circle c = new Circle(...);
No pointers in Java
Variable always acts
as an alias/reference
No memory leak or
dangling pointer
issues
Alias
Farooq Ahmed, FAST-NU, Lahore
Class Variables
Class variable (also called static variables) are shared by all instances
bound to class not the objects
can be visualized as global variables bounded in a class
May be useful for constants, defaults, etc.
class Circle {
private:
int x;
int y;
int radius;
static float PI = 3.14...
public:
Circle(...)
void move(int x,int y);
};
Farooq Ahmed, FAST-NU, Lahore
Method Binding
};
float Circle::area(){
return radius * radius * PI;
}
Static methods