OOP AllSlides
OOP AllSlides
Pramit Mazumdar
* 1
Challenges in Software Engineering
■ Why is it important to study object orientation?
* 2
Challenges in Software Engineering
■ Complex Software:
❑ Analysis
❑ Design
❑ Implementation
❑ Maintenance
* 3
Challenges in Software Engineering
■ However, mere use of a OOPL does not guarantee
the above
* 4
Challenges in Software Engineering
■ Most of the problems start at the specification
level
* 5
Challenges in Software Engineering
■ Similarly there are software which are generic in
nature
* 6
Challenges in Software Engineering
■ Typically a software engineering is responsible for
engineering a software that can be used and liked
by the end users
* 7
Challenges in Software Engineering
■ According to Standish Group’s Annual CHAOS report, 66%
of technology projects (based on the analysis of 50,000
projects globally) end in partial or total failure*
* * https://www.atlascode.com/blog/why-software-projects-fail/ 8
Why Software Fails !!
■ COMPLEXITY …. Complexity in various domain
* 9
Why Software Fails !!
■ Changes from People
❑ Usually the process of constructing something can be automated
■ Developer changes
■ One may not follow the approach followed by an ex-developer of the same project
■ Etc.
* 10
Software Engineering
■ Is Software engineering
❑ A manufacturing process, or
* 11
Target
■ Software Development -> Software Construction
■ In future can we
❑ Construct a software
* 12
Target
■ Current SOA says that to achieve the above we
need
❑ Structured analysis
❑ Modelling
❑ Design
❑ Implementation
* 13
Why this course
■ Object Oriented Analysis and Design
* 14
Types of Software
■ Personal or limited use Software
■ Industrial-strength Software
* 15
Types of Software
■ Industrial-strength Software
■ Long life-span
* 16
Software Complexities
■ The complexity of the problem domain
* 17
Problem domain
■ Domains are difficult to understand
❑ Usability
❑ Performance
❑ Cost
❑ Survivability
❑ Reliability
❑ Users do not understand the non-functional requirements
❑ Implicit in nature !!
* 18
Problem domain
■ Communication gap between Users and
Developers
* 19
Managing the Development Process
■ Illusion of Simplicity
* 20
Flexibility possible through a Software
■ Components required to build a Software is not
readily available
* 21
Behavior of Discrete system
■ Discrete system changes its state abruptly at
discrete points, consists of multiple states
* 22
Behavior of Discrete system
* 23
Behavior of Discrete system
* 24
Complex systems are Hierarchic
PC
Registers
Gates
* 25
Complex systems are Hierarchic
■ Each level of hierarchy represents a Layer of
abstraction
* 27
Complex systems are Hierarchic
■ All systems are composed of interrelated
sub-systems
* 28
Five attributes of a Complex system
■ Hierarchic structure
■ Relative primitives
❑ Primitives – section of code which can be used to develop
more sophisticated modules
* 29
Relative properties
■ Primitives are chosen by the developer
■ It is a Subjective choice
* 30
Separation of Concerns
■ Hierarchic systems are
❑ Decomposable = consists of independent elements, so can be
decomposed
* 31
Common Patterns
■ Processor is found in computers, cars, mobiles,
etc.
* 32
Stable Intermediate Forms
■ It is extremely difficult to design a complex system
correctly in one go
* 33
Types of Complexities
■ Organized (Canonical Form)
❑ Decomposition hierarchy
❑ Abstraction hierarchy
❑ Class and object structure
❑ Canonical form
■ Disorganized
* 34
Organized Complexity
■ We are able to find a structure
* 35
Limitation of Human Capacity for Dealing Complexity
* 36
Types of Hierarchy
■ We know that complex systems are hierarchical in
nature
❑ Abstraction = is-a
* 37
Decomposition Hierarchy
PC
Registers
Gates
* 38
Decomposition Hierarchy
■ PC can be broken down to components such as
CPU, HDD, Mouse, Keyboard, etc.
* 39
Abstraction Hierarchy
CPU
Celeron …. ….
* 40
Abstraction Hierarchy
■ Specialization of CPU is not mentioned in previous
example
■ CPU can be
❑ Pentium
❑ Pentium + MMX
❑ Celeron
* 41
Abstraction Hierarchy
■ Pentium is-a CPU
* 43
Decomposition Hierarchy
PC
Registers
Gates
* 44
Abstraction Hierarchy
CPU
Celeron …. ….
* 45
Abstraction Hierarchy
■ Specialization of CPU is not mentioned in previous
example
■ CPU can be
❑ Pentium
❑ Pentium + MMX
❑ Celeron
* 46
Abstraction Hierarchy
■ Pentium is-a CPU
* 47
Class and Object Structures
* 48
Class – Abstraction – IS-A relationship
■ Class structure shows IS-A relationship
■ Example:
❑ C1 = CPU
❑ C2 = Pentium
❑ C3 = Mac
❑ C7 = Celeron
■ Celeron Pentium
* 49
Class – Abstraction – IS-A relationship
■ Celeron IS-A Pentium
* 50
Decomposition Hierarchy
PC
Registers
Gates
* 51
Decomposition Hierarchy
■ PC can be broken down to components such as
CPU, HDD, Mouse, Keyboard, etc.
* 52
Object – Decomposition – HAS-A relationship
* 53
Object – Decomposition – HAS-A relationship
* 54
Canonical Form of a Complex System
* 55
Canonical Form of a Complex System
* 56
The Role of Decomposition
■ Algorithmic approach
❑ Divide-and-conquer
* 57
Algorithmic Decomposition
* 58
Object-oriented Decomposition
■ We look for the key abstractions that are required in the task
* 59
Object-oriented Decomposition
* 60
Object-oriented Decomposition
■ Master File can get formatted update from the File Updates
abstraction
* 61
Object-oriented Decomposition
■ Master File can get formatted update from the File Updates
object
* 62
Object-oriented Decomposition
* 63
Object-oriented Decomposition
Objects
Objects
Objects
* 64
Objects provides services
f21 f22
O1 O2
f11
f23
f12
f31 f32
O3
f33
f34
* 65
Objects communicate among themselves
f21 f22
O1 O2
f11 <O2:f23> f23
<O
3:
f12
f 34
>
:O
34
f
3:
1:
<O
f 12
>
f32
de O3
pe f31
n de
f33
nc
y Service should
f34 preserve concurrency
* 66
Object-Oriented Decomposition
■ Therefore;
❑ Objects can perform multiple tasks or services or operations
* 67
Evolution of Design Methods
■ Data-driven design
■ Object-oriented design
* 68
Top-down structured design
* 69
Data-driven design
* 70
Object-oriented design
* 71
Algorithmic vs Object oriented Decomposition
Algorithmic Object-oriented
Highlights the ordering of events Emphasizes on Agents (clients /
servers)
Typically develops Larger Systems Yields smaller systems by reusing
methodologies
Lower re-usability characteristics Large re-usability characteristics
Less resilient and more risky to build More resilient to change and reduces
complex systems risk of building complex systems
Unable to reduce complexity By following the approach of
“separation of concerns” is reduces
the complexity of a system
significantly
Low concurrency High concurrency and Distributed in
nature.
* 72
Abstraction
* 73
Abstraction
* 74
Recap: Object and Class structure
■ These three are the main tool to use when we try to design a
complex system
* 75
What we mean by “Design”?
* 76
Evolution of Programming Languages
■ First-generation (1954-1958)
❑ One global data and subprograms
❑ Error in one part effects rest of the system
■ Second-generation (1959-1961)
❑ One global data and subprograms. Subprograms have individual modules
❑ Fails in programming-in-large scenario and design
■ Third-generation (1962-1970)
❑ Structured, Modular, Abstraction
❑ Modules were separately compiled and hence no track of errors
■ Fourth-generation (1970-1980)
❑ Large data handling with Database management
* 77
Evolution of Programming Languages
■ Object-orientation (1980-1990)
❑ Object-based models
❑ Exception handling
❑ Task-specific
* 78
Foundations of Object Models
* 79
OOA – OOD - OOP
* 80
Object Oriented Analysis (OOA)
* 81
Object Oriented Analysis (OOA)
❑ Identifying Objects
❑ Identifying Structure
❑ Identifying Attributes
❑ Identifying Associations
❑ Defining services
* 82
Object Oriented Design (OOD)
* 83
Object Oriented Design (OOD)
* 84
Object Oriented Design (OOD)
❑ Classification of operations
■ Who is going to use which object
■ What are the restrictions?
❑ Algorithm design
■ At what point during the design phase we should think about the algorithm
which would be running in the system?
* 85
Object Oriented Programming (OOP)
■ OOD gives us the opportunity to put the concepts learnt from OOA
into the system
■ OOD deals with the system architecture and ways in which the
observations from OOA can be induced into the system
■ OOD also deals with handling the limitations of the system while
inducing the observations from OOA.
* 86
Object Oriented Programming (OOP)
■ Now using the inputs from OOA and OOD subsequently we need to
build the real-life system
* 87
Object Oriented Programming (OOP)
■ It depends upon
❑ What we need to do
❑ What are the constraints in the system we are developing
❑ What are the features of the chosen OOP language.
* 88
Object Oriented Programming (OOP)
■ On the other hand, Python is extremely slow in processing
■ It depends upon
❑ What we need to do
❑ What are the constraints in the system we are developing
❑ What are the features of the chosen OOP language
* 89
Object Oriented Programming (OOP)
■ Re-usability
❑ Reusing some facilities rather than building them again and
again
■ Data redundancy
* 90
Object Oriented Programming (OOP)
■ Code maintenance
■ Security
* 91
Object Oriented Programming (OOP)
■ Design benefits
■ Better productivity
* 92
Object Oriented Programming (OOP)
■ Three important parts of OOP
❑ Object
❑ Class [Type]
❑ Inheritance
Data
* 93
Class
■ Objects have an associated Type which is known as the
Class
* 94
Class – Objects – Methods
■ Object oriented programs deal with Objects
* 95
Class – Objects – Methods
■ Here we write codes in separate blocks
* 96
Class – Objects – Methods
Method -1 Method -1 Method -1
Method - 2 Method – 2
Method - 3
Class 1 Class 2
Class 3
* 97
Class
■ Class is a structure that defines the data and
methods to work on
* 98
Methods
■ Class consists of collection of methods
* 99
Objects
■ Objects are instances of a class or an executable
copy of a class
* 100
First program
class test
{
public static void main (String args[ ])
{
System.out.println (“Hello World!!”);
}
}
■class test
❑ Declares a class named as test
❑ Contains a single method “main( )”
❑ “class” is a keyword
❑ “test” is the identifier which provides name to the new class.
* 101
First program
■ public static void main(String args[ ])
❑ public
■ It is an Access specifier
■ It is used to declare the method main( ) as unprotected
■ Makes it accessible to all other classes
❑ static
■ Every method is accessed using the object of a particular class
■ Static method can be accessed directly without using objects
■ main( ) should be declared static as it is the first method from which
execution starts
■ Object creation for the main( ) method container class is not possible
prior to execution
❑ void
■ main( ) do not return any value
❑ String args[ ]
■ Handling command line arguments.
* 102
First program
class sample
{
void display( )
{
System.out.println(“Pramit”);
}
}
class test
{
public static void main(String args[])
{
sample SS = new sample( );
SS.display( );
}
}
* 103
Object creation
sample SS;
SS = new sample( );
■sample SS
❑ Reference created
❑ Storage space taken
❑ Storage space not yet instantiated
* 104
Inheritance
■ Types [classes] may inherit attributes from supertypes
[superclasses]
* 105
How are OOA, OOD, and OOP related?
■ OOA is concerned with developing an object model that capture the
requirements
■ OOD is concerned with translating OOA model into a specific model that
can be implemented by a software
■ OOP is concerned with realizing the OOD model using OOP language such
as Java, C++, etc.
* 106
CS 201:
Object Oriented Analysis
and Design
Pramit Mazumdar
* 107
Contents of Project Document
■ Number of End Users
■ Age group of the End Users
■ Lifespan of the System
■ Cost
❑ License
❑ Devices
■ Stakeholders
❑ Responsibilities of each stakeholder
■ Centralized/ Decentralized
108
Contents of Project Document
■ Use case diagram
■ Class diagram
109
Identifying Objects and how they are
related?
110
UML History
Unified Modeling Language (UML)
Unified Modeling Language
122
UML first pass: Use case diagrams
Classifier
Use Case
Actor.
System
boundary
Actor
ReadTime
SetTime
WatchUser WatchRepairPerson
ChangeBattery
125
Benefits of Use Cases
126
UML Use Case Diagrams
127
System
128
System (cont.)
129
Actor
■ Example:
❑ Policeman – Enters data
❑ Supervisor – Allowed to modify/erase data
❑ Manager – Allowed to view statistics
130
Actor (cont.)
131
Actor Icons
Actor.
System
boundary
Actor
ReadTime
SetTime
WatchUser WatchRepairPerson
ChangeBattery
■ Identify Classes
❑ – Name
❑ – Class Attributes
❑ – Class Methods
■ Identify Relationships
142
Class Diagrams
■ A Class defines the attributes and the methods.
145
What do you notice?
■ Regular 2D shapes can be polygons or circles
147
What do you notice? Objects!
148
What do you notice? Properties!
149
What do you notice? Behavior
150
And What else?
151
And What else?
152
Classes?
153
Classes
154
Classes
155
Attributes
156
Attributes
157
Attributes
158
Methods
159
Methods
160
Methods
161
Methods
162
Methods
163
Final Thoughts
164
Super class vs. Sub class
# protected attributes
- private attributes
+ public operations
# protected operations
- private operations
anAssociation aLink
169
Association
170
Multiplicity
Multiplicity specifies “the number of instances of one
class that may relate to a single instance of an
associated class”.
• “One” or “Many”
• Infinite (subset of the nonnegative integers)
171
Association
Visual representation
One-to-one association
172
Association
Many-to-one association
Person Company
OwnStock
name name
* *
Many-to-many association
173
Association
Interpretation?
Person and Company participate in association “WorkFor”
174
Association Class
UML offers the ability to describe links of association
with attributes like any class.
175
Association Class
176
Association Class vs Ordinary Class
Association Class
Ordinary Class
177
Thank You
* 178
012345672841ÿ24ÿ
ÿÿÿÿÿÿÿ
ÿÿÿ
./0 12 3 4 56 6 789:;<958
=;8>7;>? ;=@A;B?<C >D;6 6 ;D
!"ÿ#ÿÿÿÿ$%ÿ&'ÿ$(ÿ(ÿ)ÿ
$*+ÿÿ#ÿÿÿ$,ÿ-ÿÿ#ÿ$%ÿ
ÿ#ÿ))ÿÿ$,, $
!ÿÿÿ)#$ÿ
012345672841ÿ24ÿ
ÿÿÿÿ
ÿÿÿÿÿÿÿ!"#ÿ$ÿ%&ÿ
"ÿ"#ÿ'ÿ(
ÿ"ÿÿ%ÿÿ%)(ÿ%ÿ"ÿ
ÿ(
011234563789ÿ7ÿ
ÿÿÿÿÿ!"#ÿ$ÿ
"#"#ÿÿ"ÿ$ÿÿ%&ÿ'%ÿ
%ÿ!("ÿ"ÿ)"ÿÿ(ÿ!ÿÿ
% ÿ$
ÿ!!'ÿ%*(ÿ"ÿ(ÿ"ÿ"(ÿÿ
%ÿ!ÿ'ÿ%*(ÿ"ÿ"!$ÿ"ÿ#"ÿ
+,,-./0ÿÿ$
0123435364ÿ62ÿ89
1ÿ89 ÿ3ÿÿ41ÿ26ÿ
!"#$
%&'("'
)&"*!'
ÿÿ'+!ÿ('#"'ÿ&#ÿÿ&#',(!-'!.!ÿ$'!*
0123435364ÿ62ÿ89 ÿÿ3334
3334ÿ
ÿÿÿÿÿÿ!"##ÿ"$%#"#%ÿ!&ÿÿ&%'ÿ
!ÿ((
)*1+32,34
ÿ-$#ÿÿ.ÿ&ÿ(&"#/ÿ$%-#'$$ÿ%ÿ"(0ÿ
1%ÿ(&#"$&ÿÿ&ÿ.ÿ("#!#"#%ÿ!ÿÿ.ÿ#(&%ÿ
%#/ÿ#'%ÿ%ÿ#(%#%ÿ"##%ÿ.ÿ$ÿ-ÿÿ
#%ÿ2(#%'ÿ%ÿ(#%'ÿÿ!3&ÿ
0123435364ÿ62ÿ89 ÿÿ645534
645534
ÿÿÿ!ÿ"#$%ÿ&&ÿ$ÿ
' ÿ!($ÿ#"$ÿ&#)#")ÿ)*)ÿ*+ÿÿ,--.ÿ
/0ÿ#ÿ1"*ÿ2"ÿ
3!ÿ"ÿ#$"ÿ$!ÿ
4#"$$ÿ$#ÿ5ÿÿ!($6#"$ÿ$!
3+"ÿ&#"$ÿ5#7#ÿ)"#")8ÿ$+ÿ)#$"ÿ
5ÿÿÿÿ5#ÿÿÿÿ"$ÿÿ&#)#")ÿ
)*)
0123435364ÿ62ÿ89 ÿÿ645534
ÿÿÿÿ!!"ÿ# ÿ$ÿ$%$ÿÿ
&ÿ'ÿÿÿ($)ÿÿ*ÿ+,-
./ÿ!!ÿ0%ÿÿ%ÿ1*ÿ*%ÿ
/%&ÿ!!"ÿ$(!ÿ*ÿ1ÿ*ÿ'ÿ'1&ÿ
$&ÿ!ÿ&ÿÿ!!
.,!ÿ*ÿ(2ÿÿ1)ÿÿ*ÿÿ!*$ÿÿ$*$ÿ1
.+,-ÿ)ÿ1ÿ1ÿ$
0123435364ÿ62ÿ89 ÿÿ06 14534
06 14534
ÿÿÿÿÿ!ÿÿ"ÿ
#$!%&ÿ'(%&ÿ)*ÿ)%%%(&ÿ'%(&ÿ%(&ÿ
))%(&ÿ!%%%&ÿÿ+
,-ÿÿ%ÿ%ÿ-ÿ'./ÿÿÿ)*&ÿ-ÿ
ÿ%ÿ%%(&ÿ!$%(ÿ%'ÿ!!$%%(ÿÿ/$ÿÿ
!ÿ'$%(ÿÿ'.)!%ÿ%'ÿÿÿ')!%
01234546ÿ890
ÿÿ ÿÿÿ ÿÿ
ÿ!"#ÿ$ÿ%&!'ÿ(ÿ ÿ#!#)
* ÿ!ÿ+ÿ ÿ!"#ÿ$ÿÿ ÿ,!ÿ#
- . ÿÿ ÿÿÿ ÿ,,"ÿ!#!ÿ ÿ
01234ÿ0637839ÿ0742ÿ39ÿ
ÿÿÿ !ÿ"#$%%%ÿÿ&'"(%ÿÿ
'('")ÿ&%
* +'")%
+'")%ÿÿ%'"%ÿ'"ÿÿ#(
* ,'"%'$%
,'"%'$%ÿ'ÿÿ'")%ÿ)
* -')#%
-')#%ÿ)$ÿ."ÿ'"ÿÿ'")%
01234ÿ0637839ÿ0742ÿ392
ÿÿÿÿÿÿÿÿ!"#
$% &'(ÿ
)% *+(ÿÿ
,% -.ÿÿ
/% 0(ÿ
0123413256ÿ89 ÿ ÿ
ÿÿÿÿÿ!"ÿÿ!#
$%&!'ÿ(ÿ)*(ÿ+
,""ÿÿÿ"ÿÿÿ-./ÿ& 0
1ÿÿÿ""ÿÿÿ-./
2+ 3
4+ 5ÿ
6+ 3 &!ÿ
7+ 89
:+ -ÿ
;+ 3 )
<+ = 0
0123413256ÿ89 ÿ65
65 ÿ
ÿÿÿÿÿÿÿÿÿ!"ÿ#ÿÿÿ
!ÿÿ!"$
%&'ÿÿÿÿÿÿÿ()ÿ
*(ÿÿ+)ÿ!*)ÿÿ
ÿÿÿÿÿ , -. /
0 1123451/6
7 8/2-139:6
0123413256ÿ89 ÿ41ÿ65
41ÿ65 ÿ
ÿÿÿÿ!ÿ"ÿÿÿ
#$ÿ%ÿÿ&'ÿ($(ÿ
)ÿ *%&ÿ '%&(ÿ ÿ
&!((ÿ*%ÿ&%(ÿ) 1 2345ÿ7 8493:
ÿ&'ÿ&+ÿÿÿÿ&*ÿ&ÿ ; 55:<=>53?
&(ÿ)&(ÿ$(&ÿ&(ÿ%(,ÿ,ÿ :3?>@ 3AB
%(+&(ÿÿ&(&ÿ- ?58:5AB
?>?C34DAB
E<FFAB
.($%-/ÿÿÿÿÿ GF>?HAB
,&,ÿ!ÿ"ÿÿ/ÿ'!ÿÿ*%ÿÿ
%-ÿ/ÿ!!-ÿ!,0ÿÿ
)/ÿ('!/ÿ,ÿ&$(&
0123413256ÿ89 ÿ1
1ÿ
ÿÿÿ !ÿ"ÿÿ
#$ÿ%"&ÿ&ÿ$'"("ÿÿÿÿ
ÿ"$#
; <= >?@>ABCDE;
)*'+ÿ ,ÿ '-ÿ #.ÿ
#-ÿ/0ÿ1ÿ$ÿ,23ÿ"'4ÿ
5ÿ#-ÿÿ#ÿ"ÿ!"#''!ÿ
$$ÿÿ&!"#'ÿ#67ÿÿ
&$%"ÿ'7"#'ÿ'ÿ8#&ÿÿ
#' -ÿ"$#ÿ9ÿ#''1$"
:$&"#''!ÿÿ#ÿ99ÿÿ
ÿ$#7'ÿ%"&ÿ1-ÿ88''!ÿ
"#'89"7ÿ'!ÿ"ÿ
0123413256ÿ89 ÿ1254
1254
ÿÿÿÿÿÿ
!ÿ"ÿ!#ÿÿ$ÿÿÿ
ÿÿÿ%! ;B 79DD ;<=9>?
@A@>
&ÿ'()*ÿ&ÿÿ+,ÿÿ
%,ÿ"ÿ%ÿ-#.ÿÿÿ#%
/!"#*ÿÿÿ,,ÿÿ ;B C858
C6 > 4 56 75898: ;4 5@8:
ÿÿ0"ÿ1"ÿÿ%
23ÿÿÿ#ÿ,ÿ*ÿ
"ÿÿÿ",ÿÿÿÿÿ
%!
;E 8F85
G8
0123413256ÿ89 ÿ ÿ45
ÿ45
ÿÿÿÿ
ÿ!ÿÿÿ
!" ( )*ÿ, -.)-
#$%ÿÿÿÿÿ
"ÿ&%ÿÿÿ
"'ÿ%ÿÿ! / -01)22ÿ, -.)-
0123413256ÿ89 ÿ665251
665251
ÿÿ !ÿÿ!"ÿ#ÿ
!!!$ÿ#!$ÿ%ÿ&ÿ'!ÿ
&ÿ()ÿ*&ÿÿ'+%ÿ'+ÿ
&+ÿ&ÿ!ÿ**ÿ&ÿ&ÿ!,ÿ#ÿ!ÿ
%+%,ÿ'!
ÿÿÿÿÿÿÿÿÿ-.'/ 4 5678ÿ:6;8<ÿ= <>?<6
ÿ*ÿ,%*ÿ0(%ÿ%ÿ1ÿ!ÿÿ
ÿ #ÿ ! ÿ !,,ÿ
!,$ÿ ÿ(*ÿ!"!$ÿ
'&ÿ +"$ÿ ÿ
+"$ÿ(ÿ!,''"ÿ!"!$ÿ2
3'&"ÿÿÿ!ÿ%%ÿ!ÿ
ÿ'!ÿ(&ÿ%!&%ÿ
0123413256ÿ89 ÿ
ÿÿÿÿ!"#ÿ"ÿ
$$"#ÿ ÿ !%##"ÿ
$%$&ÿ'"$ÿ("'ÿ!ÿ
!!$ÿ "ÿ $"'ÿ
!#)# + ,-.,-
*$&ÿÿ"ÿÿ"#ÿ)ÿ
ÿ%)&ÿ%%ÿ"%ÿ#ÿ"!
0123456738ÿ25 ÿ5ÿ
ÿÿ!ÿ"#$ÿÿÿ$ÿ%ÿ
&'(ÿ%ÿ$)ÿ*+ÿ($&,ÿ-ÿÿÿÿ
($'ÿÿ%ÿ$)ÿÿ($&ÿ&ÿÿÿ$ÿ$)ÿÿ*+ÿ
($&
.ÿÿ$'!ÿ"#$ÿÿÿÿ#"ÿ$)ÿ*+ÿ
($&
/ÿÿ0$ÿ%('ÿ&ÿ$)ÿ"#$ÿÿÿÿ*+
1,.$ÿ
2,-ÿ(
0123456738ÿ25 ÿ17356
17356
ÿÿÿÿ!ÿÿ"#ÿÿÿ$ÿ
"%ÿ&%'ÿ"%ÿÿ$ÿ(ÿ)ÿÿ
&ÿÿ"#*ÿÿ#+#
,**-ÿÿ+'ÿÿ*.ÿ)ÿÿ$ÿ
*ÿ/(01ÿ'ÿ+%ÿ) ÿÿ(ÿÿ
ÿ'ÿÿ"%ÿÿÿÿ(
0123456738ÿ25 ÿ17356
ÿÿ!ÿ"ÿ"#ÿ"ÿÿ##ÿÿ
$"$ÿ$#%ÿÿ& ÿ!'ÿ"ÿ!!
DEEF H ,*I+ÿK,* F
( )*+,- )@ AG,C)) )@ AG,C)* ? ,@ AB-C
.
.
/00123456789:;<=>
.
B++MN-OP)+PM-NQ
)ÿ.ÿ( )*+,- Lÿ.ÿ? ,@ AB-C
0123456738ÿ25 ÿ31ÿ3251
31ÿ3251
ÿÿ!ÿ!ÿÿ"!#$ÿ%ÿ&%'!ÿ!(ÿ
ÿ!)ÿ!(ÿ!&*ÿ%ÿ+!,ÿ!%
-ÿ%ÿ!%ÿ%#.ÿ/ÿÿÿÿ"%ÿ!ÿÿ
"!#$ÿ%ÿ&%'!ÿ!(ÿÿ#'#/$ÿ!&*
0ÿÿ"%ÿÿÿ&%'!ÿ%ÿ1(ÿ%ÿ
2/ÿ!(ÿÿ!(ÿÿ!&*ÿ!ÿ%!/%ÿ#/ÿ
ÿ$(ÿ"ÿÿ1!ÿ!ÿÿ"
0123456738ÿ25 ÿ31ÿ3251
ÿÿÿÿ!"#!ÿ$ÿÿ#%"!!ÿ"&'ÿ
"%!"&ÿÿ"( ÿ"!ÿÿ'ÿ)ÿ"
:8 ;<75ÿ>:2 8
C484;<@>
2 345 6788489
?@AÿB6@;;
D ÿ ÿ( " ÿ)#ÿ"ÿ#$0
E 755:8
* +61ÿ,ÿ-#ÿ$.#ÿ"&ÿÿ%%ÿ#""!ÿ
#%&ÿ.#%ÿ%%ÿ( "ÿ/ÿ'ÿ#$##"'ÿ
#$0ÿÿ1
01234567ÿ9 567ÿ56ÿ
ÿÿ!"!ÿ#ÿ#$!ÿ"ÿ
!$ÿÿ%%ÿ$!ÿ!!ÿ"ÿ$$&"ÿÿ
ÿ!"ÿ$!ÿ#ÿ#"$ÿ#ÿ!'"ÿ
$!
(!ÿÿ!'""ÿ"ÿ!ÿ"ÿ!'ÿ!'ÿÿ!ÿ""ÿ
')
(ÿ*+,ÿ"ÿ!'ÿ'%ÿ&ÿ#ÿ"ÿ!'ÿ"
(ÿÿ!'"ÿÿÿ"$"ÿ)#ÿÿ"ÿ!'ÿ$ÿ
)
01234567ÿ9 567 ÿ7
7
ÿÿÿÿÿ!"ÿ#$#ÿ%"ÿ"&ÿ
#'ÿ'"ÿ"!
($)*ÿÿÿ++ÿÿÿ',,+ÿ%"+*ÿ!!)ÿ
!+ÿ")ÿ'$ÿ#*ÿ"#'#ÿ%ÿ'"ÿ'ÿ
"''
- ./01234
011234352146ÿ8951 ÿ51ÿ
ÿÿÿÿÿÿÿ!"ÿ
#$
%ÿ&ÿÿÿ$'()ÿ*#)ÿ$ÿ
#+ÿ(*ÿ,ÿ#ÿÿÿ#$
-ÿÿÿ#,ÿ+$ÿÿÿÿ
'$ÿ
ÿÿÿ#,ÿÿ,#(ÿÿ$ÿÿ'##.ÿ/ÿ
ÿÿ#'ÿ#')ÿ..ÿÿ'ÿÿÿ'ÿ
ÿ#$.
011234352146ÿ8951 ÿ23
ÿÿÿÿÿÿÿÿ!ÿÿ"ÿ
ÿ#ÿ$ÿÿ!ÿÿ%&ÿÿÿ''
( )* +,-ÿ/-01
2( 3 ÿ2/45657ÿ895 : ; <ÿ=ÿ/-01
> ?* * -@1A
B )1Cÿ)* DE-A
012345678958ÿ57ÿ
ÿÿÿÿÿÿ
ÿÿ!"ÿÿÿÿ#$%
&'ÿÿÿ()*
+'ÿÿÿ
,'ÿÿÿ-.
/'ÿÿÿ0.
012345678958ÿ11717
11717
ÿÿÿÿÿ!"ÿ#$ÿ$"ÿ%&ÿÿ
$%%ÿÿ%&ÿ"ÿ"ÿ%&ÿ'%ÿÿ%&(ÿÿ
))ÿ"%ÿ%&ÿ%ÿ*ÿÿ+ÿ#*ÿ"ÿ!ÿ%ÿ
, @ 020A/0A75
- ./01 9 3.2
23456789 3.2: CA/020A/0A<ÿ734;;
;<4=<6:
;<126:
=0;.>06:
=0;0<6:?
8 D +ÿ)ÿ% ÿÿÿ%&ÿÿ%
!ÿE !+ÿ%ÿ" "ÿ!'(ÿ
@ 020A/0A<ÿ734;; %ÿ!ÿF "ÿ$ !!ÿ#ÿ))
012345678958ÿ886534567
886534567
ÿÿÿÿÿÿÿ!ÿÿ
ÿ"ÿ#$ÿÿ#ÿ!%ÿÿÿ&%ÿ!'
%%%ÿÿÿÿ#ÿ"ÿ$ÿ%ÿÿ
ÿÿ!(ÿÿ(ÿÿÿ
012345678958ÿ886534567
ÿ !ÿÿ"!!"ÿ#ÿ
""$"%!"!"ÿ!ÿ#ÿ&!ÿ"ÿ$'!ÿÿ
&ÿ!"ÿ(ÿ!
4556 8 -+9,ÿ;-+ 6 / -0 12.3
) *+,-. *0 17-3** *0 17-3*+
886534567
4 A 2, 6 @ *12+?0 *.?
< .=>*+,=?3
BBC1B34567
012345678958ÿ17132534567
17132534567ÿ
ÿÿÿÿ!"ÿ#!ÿÿ
$#"#ÿ%&"ÿ'ÿ#ÿ!"ÿ(ÿ)#ÿ"#*+ÿÿ
,%ÿ'ÿ%&"ÿ'ÿ#ÿÿ(ÿ)#ÿ!*
- ./012
3 4567
012345678958ÿ0132534567
ÿÿÿÿÿÿ
ÿÿ!"#ÿ$%ÿ%ÿ&
ÿ'(ÿ)ÿÿ
*
+, , , ÿ. /0 1/2 3 456/74
8 8
19:6;4;<= 19:6;4;<=
8 8
01234256ÿ18ÿ9
ÿÿÿÿÿÿÿ18442!ÿ
"#$%&#%$'(ÿ*+,- . ,/'*+0$'(ÿ*+,-
6 7,$87ÿ*+,-
%.ÿ)#'ÿ$ÿÿÿ#"ÿ/(ÿÿ)*+ÿ"!ÿÿ0#ÿÿ"ÿ
ÿÿÿ!!""ÿÿÿÿ$,ÿÿÿÿÿ"!ÿ
ÿ!ÿ
01231456ÿ89ÿ65ÿ165ÿ8141
15
ÿ !
"#
- &"!ÿ ))*
012345ÿ73892 4
ÿÿÿÿÿÿ!ÿÿ"ÿÿ
#ÿ!"ÿÿÿ$ÿÿÿÿ#ÿÿ
%#&ÿ'(ÿÿÿÿÿÿÿ
ÿ%$)ÿ
*+ÿ!"
*,"ÿÿÿ(ÿÿÿ
*-"ÿÿ%$ÿ#(ÿ!ÿÿ!ÿÿÿ
01234567ÿ0196 ÿ65294
ÿ
!"#$$
'#$$
% &ÿ
()ÿ"ÿ0 2ÿÿ3/ÿ 3
ÿÿÿ/ )ÿ0
0
01213456748692ÿ1548692 6
ÿÿÿÿÿÿÿ!ÿ
ÿÿÿ!
"!ÿÿÿ#$ÿÿ $ÿ%&ÿ
!ÿ'ÿ#ÿ!ÿÿ!
( )*ÿ,--.
# $%&'($ # $%&'($
)($'*(+$,-(
.$%&'($ /0 10 2 '.'*+34
012ÿ4512ÿ657859 9
ÿÿÿÿÿÿÿÿ!
"ÿ#ÿ#ÿÿ!ÿ$ÿÿÿÿ$ÿÿ%#&ÿÿ
ÿ'#ÿÿÿÿ#%ÿ$ÿÿÿÿÿÿ'ÿ'#ÿ
%$%
01234567ÿ9 6ÿ26ÿ22
ÿÿ ÿÿ
ÿÿ
ÿÿ ÿÿ
ÿÿ
ÿÿ ÿÿ
ÿÿ
0123ÿ56ÿ2ÿ78266ÿ952 2
ÿÿÿÿÿÿÿÿ!ÿ"ÿ#ÿ$%ÿÿ
"&ÿ"ÿÿ"ÿ%ÿÿ'(ÿÿ%ÿ"&ÿ
ÿÿ"&ÿÿÿÿÿÿÿÿÿÿÿÿ"ÿ
%ÿ&ÿ%
$%ÿ"ÿÿÿÿÿÿÿ"&ÿÿ
) *&&&
) +,*-,
.ÿ"&ÿÿ%(ÿ%ÿÿ"ÿÿÿÿ#ÿÿÿ
ÿ"ÿ%ÿ'&ÿ/"ÿÿÿ0ÿ"ÿ%ÿÿ
%ÿÿÿ%ÿ(ÿ!ÿÿ"
012345ÿ75388ÿ04393
ÿÿÿÿÿÿÿÿÿ!
* +, -
9 #
#: $ÿ&
.//0123/-4
. //0123/-4 ; $ÿ&
; !!: $&
< =$ÿ>
" $?
< @ $ÿ>
56-0+/1784
5 6-0+/1784 A =$ÿ?=> B
AB$
'A => $?(C$B
9 #AB
'9 #AB
"#$ÿ%ÿÿ!ÿ&'(ÿÿÿÿ)ÿ)
0121314156
7 89ÿ ÿ9ÿÿ9ÿÿÿ ÿ ÿÿ9ÿ
ÿÿÿÿ9ÿÿÿÿÿÿ9ÿÿÿÿÿ
ÿ ÿ ÿ 9 ÿ
ÿ ÿ ÿ9 ÿ
ÿÿÿÿ9ÿÿÿÿÿÿÿÿÿÿÿ
ÿ! ÿ ÿ9 ÿ " ÿ
ÿÿÿ9ÿ$ÿÿÿ%&ÿÿ ÿ #
ÿ
01234567ÿ9 6534567
ÿ ÿÿ
ÿ
ÿ ÿ
ÿÿ
"ÿÿ
ÿ ÿÿ
#ÿ$ÿ ÿ
ÿ ÿÿ!ÿÿ!ÿÿ
&
ÿ
ÿÿ
ÿ ÿÿ!ÿ"%ÿ
ÿ!
%ÿ#ÿ'ÿÿ
ÿÿÿ
ÿ#ÿ %ÿÿÿ&ÿÿÿ
ÿ& ÿ%ÿ"(ÿ
ÿ"ÿ
ÿÿ"ÿÿÿÿ "#ÿÿ)
ÿÿÿ&ÿÿÿ&#ÿÿ*ÿ
- ../01231/4ÿ426 7
+ ÿ 8 /97ÿ- 8 /97ÿ:
+ ÿ,
01123145678ÿ48 ÿ7 765678
ÿ
ÿ ÿ
! "#ÿ
ÿ ÿ
01123456427ÿ9511
ÿ
ÿ ÿ
!
*+$2.)
/,.0)ÿ2'
,--&.)
&'.,33&(ÿ2'
8
8 $%%&'() 9::8 %&$*+&) 8 ;::9 4 5 6
"#! 8 8 8 9::8
0123456ÿ89 5
01234567ÿ9 6 6
ÿ
ÿÿÿÿÿÿÿ!"
#ÿÿÿ$ÿ%&
'(ÿÿÿ$ÿ()&(ÿÿÿ$*+,ÿ-.
ÿ/ÿÿ,&.
ÿ#!-ÿ,&.
ÿ0+(ÿ,&.
122
34ÿ,ÿ(ÿÿ,&.ÿÿ(ÿ-.ÿ
01234567ÿ9 6 6
% !ÿ * /012. + &'
*
,-.
+
( )
ÿÿÿÿÿÿÿÿÿ!ÿÿÿÿ"ÿ
"#ÿÿ$ÿÿÿÿ
ÿ ÿÿÿÿÿÿÿÿ
0123456738ÿ31346 621ÿÿ376 621
ÿ
ÿ ÿ
0123456ÿ895 ÿ2ÿ1356153ÿÿ96
66 7 -5
%&'
$
,- . /01 ,- !"
/ . * ! 2
0 " *#,
'%ÿ&$ÿ%!ÿ!ÿ("ÿ)&ÿ!ÿ*!ÿ!ÿ*(%!ÿ$ÿ%+ÿ
!,ÿÿ*+ÿ&!-!
0123ÿ567893ÿ 3ÿ7278
ÿÿ!ÿ"ÿ#"$"ÿ""ÿ"ÿ
!#%ÿ&! - # !
"%ÿ&!
'"#%ÿ(#)*
!+%ÿ(#)* & ! - !! P
),"%ÿ-!! ;<=> ?ÿABC=D ;BIJB=?ÿKLJMIJB=?ÿINO MIJB=D
.,"%ÿ-!!
""%ÿ-!! ( # )*
;EFB> ?ÿ=<GHID
ÿÿÿÿÿÿÿÿÿÿ/ !0ÿÿ12314ÿ!5ÿ$!ÿ67382314ÿÿ29:82314
0123ÿ567893ÿ 3ÿ7278
ÿ !"
6/738(*)9:*+;/:ÿ)8-/+ÿ*33*(;/:ÿ30ÿ012/ (3+
0123456ÿ89 ÿ 3ÿ3
ÿÿÿÿÿÿ!"ÿÿÿÿÿ#$"ÿ%$ÿ
&ÿÿ'ÿÿ%'ÿ&ÿ%'$(ÿ
)&*+ÿ!ÿ,ÿÿÿ$ÿ$'ÿÿ%'ÿ!ÿÿÿ'ÿÿ
$ÿÿÿÿ+ÿÿÿÿ'#$ÿÿ&ÿÿÿ
ÿ#ÿÿÿ$,ÿ&ÿÿ&ÿ$ÿ
ÿ*#ÿ$$ÿ#ÿÿÿ-'ÿ$,ÿÿ##$ÿÿÿ.ÿ#!ÿ
,(ÿÿ#!ÿ,ÿ$ÿÿ%ÿ!ÿÿÿÿ"ÿ'#ÿ
ÿ!ÿ,
/ÿ#ÿÿ'$ÿÿÿ#!ÿ,ÿÿ$ÿÿ*ÿ",#ÿ$ÿ
,#ÿÿÿÿÿ*ÿÿ#ÿÿÿ#ÿ%
01234567ÿ9 6 ÿ6ÿ36
ÿ
()*+ ,-ÿ/-01-/ÿ02
0,-343-5ÿ6+1+
02ÿ()*+ ,-ÿ099+01/
6+1+
()*+,-ÿ7323/6+/ÿ02
0,-343-5ÿ6+1+
:37+ÿ-3; +
!"ÿ# $%& '
()*+,-ÿ+8931+/ÿ6+1+
01231ÿ256ÿ756ÿ89ÿ 9ÿ 5
ÿÿÿÿÿÿÿÿ!ÿÿ"ÿÿ
ÿ#ÿ$ÿ%ÿ!ÿÿ&ÿ!ÿÿÿÿÿÿ"ÿ
&ÿ"ÿÿÿ$ÿ%ÿ!ÿÿ&ÿ!ÿÿÿ!ÿ!ÿ
ÿ!ÿÿÿ!'ÿÿÿ'ÿ(ÿ'ÿ!ÿ"ÿ!ÿ!ÿÿÿ
!ÿ)ÿ!ÿÿ!ÿ$ÿ*!ÿ'ÿÿ!'ÿÿ)ÿ
ÿÿÿ
ÿ
01223412ÿ67ÿ819 171ÿ63432
ÿÿÿÿÿÿ!"ÿ!ÿ#ÿ$ÿ
"ÿÿ#"
%#ÿ"ÿÿÿÿÿ!!ÿÿ#ÿ&'&ÿ'ÿ
ÿ
#ÿ!!ÿ'ÿ"ÿÿ(!)ÿ"$!ÿÿ#ÿÿ
!"*ÿ#)ÿ#&ÿ$$!ÿÿ#!&&ÿ!!ÿ'!"ÿ$ÿ
ÿ#ÿ"*ÿ#ÿ+ÿ!ÿ#ÿ!"ÿ'!"ÿ#ÿ$ÿ'ÿ#ÿ
"ÿ&ÿ#ÿ#ÿÿÿ##ÿ#ÿ"ÿ!
ÿ%#ÿ"ÿÿ&&ÿ#ÿ#ÿ"ÿ"
01234567ÿ96 26ÿ ÿ2ÿ666ÿ223
ÿ !"ÿ# $%& '
B ()*+),-. /(01123 C
,)=(4A23
40/56(7 . /(01123
D 8A())ÿ7 ),,=>),ÿ=()ÿ6/
4A(0/01>64=1ÿ,)*+)/4)
&'()'*+, -&.//01
*'4&5<01
23454-+6ÿ5.-89&: , -&.//01
='+@ .)&*'01
Aÿ='+@ .)&*'01
*'-;ÿ+<9*ÿ: '**4='ÿ98ÿ+<9*
5.-;9+9.-ÿ9*ÿ+&)' *'-;ÿ: '**4='*ÿ+.ÿ4//ÿ5.)&*'
.>?' 5+*
01 2 3 4 5 6 7 ÿ3 7 9 ÿ 5 57 ÿ 6 7 4 2 3 57
ÿÿÿÿÿ!"ÿÿÿ#$"ÿ"%ÿ&"'ÿÿ"ÿ
4
#(#"ÿÿ(ÿÿÿ!"ÿÿ'#"ÿ!"ÿ "ÿÿ#)ÿ
ÿ#ÿ*"ÿÿ)+"ÿ+"ÿ(#'ÿÿ'"ÿ+ÿ(#"ÿÿ
'"#ÿÿ"ÿÿÿÿ,ÿÿ(##ÿ'"%ÿÿ"ÿÿ
#"ÿ'"#"ÿ#ÿÿÿÿÿ!ÿ+ÿ!"ÿÿÿ("ÿ
"
012ÿ456ÿ789 8
ÿ ÿ ÿ ÿ! ÿ" !
K6L1( #$%&'()*+,
<6<<1*(
-./$01&2 3 4 #$%&5
676#8+,
#96#:; $%&+,
-<8$8=<>1<?8*06(5 <8$8=<
%68$1(+,
-<8$8=<>#0*<62 ##*=(85
676#8+,
-./$01&@'A ÿC C ÿ8%DÿEÿF5
%6G=6<8@'A +,
%6$&@'A +,
/$0=6@'A
/6%1)D@'A +,
-./$01&@'A676#8+,
5
&1<H0$DI 600*+, J J
J J
J
012ÿ4512ÿ627819598 ÿ ÿ
ÿÿÿÿ
!"#$%&'ÿ)*ÿ+,-.'/"%ÿ&-ÿ$ÿ-.$00ÿ/"/1"%ÿ
ÿÿÿÿÿÿ234356ÿ57869:3;ÿ6<=3ÿ>8ÿ86>??@
ÿÿÿÿÿÿA36ÿB>6>ÿ?9;ÿ>ÿ57869:3;ÿ>8ÿ86>??@
ÿÿÿÿÿÿCD35Eÿ6D3ÿF>4GBG6<ÿ9?ÿ6D3ÿ86>??ÿ57869:3;@
ÿÿÿÿÿÿHI."%#$.&J"ÿ)K)*ÿL&-M,$I&0Nÿ.O"ÿJ$I&P&.Nÿ'0ÿ$ÿ-.$00
ÿÿÿÿÿÿÿÿÿÿÿQ388>R3ÿST3RG86;>6G9Uÿ?>G4V@
ÿÿÿÿÿÿHI."%#$.&J"ÿ)KW*ÿX,$I&0Nÿ.O"ÿJ$I&P&.Nÿ'0ÿ$ÿ-.$00
ÿÿÿÿÿÿÿÿÿÿÿÿCD35Eÿ?9;ÿ>4;3>B<ÿ;3RG863;3Bÿ57869:3;@
ÿÿÿÿÿÿÿÿÿÿÿÿÿHI."%#$.&J"ÿ)KWK)*ÿY"Z&-.%$.&'#ÿ"[&-.
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQ388>R3ÿST3RG86;>6G9Uÿ?>G4V@
ÿÿÿÿÿÿÿÿÿÿÿÿÿHI."%#$.&J"ÿ)KWK)*ÿY"Z&-.%$.&'#ÿP'"-ÿ#'.ÿ"[&-.
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQ388>R3ÿST3RG86;>6G9Uÿ8755388?74V@
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿC;3>63ÿ>ÿU3\ÿ57869:3;ÿ!@
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ]=B>63ÿ;359;Bÿ\G6Dÿ!@
!"#$%&'ÿW*ÿ+,-.'/"%ÿ&-ÿ'.O"%ÿ.O$#ÿ-.$00
ÿÿÿÿÿÿ234356ÿ57869:3;ÿ6<=3ÿ>8ÿ96D3;@
ÿÿÿÿÿÿA36ÿB>6>ÿ?9;ÿ>ÿ57869:3;ÿ>8ÿ96D3;@
ÿÿÿÿÿÿCD35Eÿ?9;ÿ>4;3>B<ÿ;3RG863;3Bÿ57869:3;@
ÿÿÿÿÿÿHI."%#$.&J"ÿWK)*ÿY"Z&-.%$.&'#ÿ"[&-.
ÿÿÿÿÿÿÿÿÿÿÿÿÿQ388>R3ÿST3RG86;>6G9Uÿ?>G4V@
ÿÿÿÿÿÿHI."%#$.&J"ÿWKW*ÿY"Z&-.%$.&'#ÿP'"-ÿ#'.ÿ"[&-.
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿQ388>R3ÿST3RG86;>6G9Uÿ8755388?74V@
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿC;3>63ÿ>ÿU3\ÿ57869:3;ÿ!@
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ^_P$."ÿ%"!'%Pÿ̀&.Oÿ5Kÿÿÿÿÿÿÿÿ
01231451ÿ789 9 ÿÿ18984
ÿ ÿ !" # !ÿ$ #" # %ÿ&' " #
#(ÿ( #$ )*+
# , '-*+
(-, '-*+
, '-ÿ.ÿ%/ *+
0 , '-ÿ.ÿ 1
(-& / *+ #& / *+
!%ÿ.ÿ / *+ 2ÿ.ÿ!3!4& *!%+
02ÿ.ÿ(56(%1
%(-6'" #*$ #7ÿ (6+ 02ÿ.ÿ56(%1
08ÿ.ÿ:(1 8ÿ.ÿ!3!49 :(*!%+
%(-6'" #*$ #7ÿ (6+ 08ÿ.ÿ9 :(1
%(-6'" #*$ #7ÿ!!+ !2ÿ.ÿ! *!%+
-%$ !%*!2+
0 , '-ÿ.ÿ31
(-; 3/ *+ #; 3/ *+
!%ÿ.ÿ3 / *+ 8ÿ.ÿ!3!49 :(*!%+
08ÿ.ÿ:(1 08ÿ.ÿ9 :(1
%(-6'" #*$ #7ÿ (6+ !8ÿ.ÿ! *!%+
%(-6'" #*$ #7ÿ!!+ -%$ !%*!8+
012ÿ4512ÿ67582ÿ9 2ÿ ÿ96
012ÿ8512ÿÿ9 2ÿ21
ÿÿÿ!ÿ"
ÿÿÿÿ$%&'()ÿ*&%ÿ+,-./0)%1)/&23
ÿÿÿÿ4155ÿ+,-./0)%1)/&23ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿ6/0(517ÿ%-./0)%1)/&2ÿ0)1)80
ÿÿÿÿ9:/)
;<=>?@ABÿDEFGHAB>ÿAIÿJBKA>
ÿÿÿÿÿ4155ÿ+4M-NOÿP23ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿQRSTUVWSXYTÿ[\]^ÿ_`aXVÿXbÿYWRXc
$%&'()ÿ*&%ÿ+P)-'ÿ6-)1/503
ÿÿÿÿÿÿÿÿÿÿÿÿÿ 4155ÿ+4%-1)-ÿd%e-%3ÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿ 6/0(517ÿ&%e-%ÿ0)1)80
ÿÿÿÿÿÿÿÿÿÿÿÿÿ9:/)
ÿÿÿÿÿÿQRSTUVWSXYTÿ[\[^ÿ_`aXVÿXbÿXVYWRXc
ÿÿÿÿÿ 6/0(517ÿ5&./2ÿ*1/5
9:/)
ÿ
0123455ÿ71841ÿ9ÿ7 0ÿ 54
ÿÿÿÿ!ÿÿ"#ÿ$%ÿÿÿ#ÿÿÿ
#ÿ&'#ÿ(ÿ)ÿÿÿ(*'ÿ+$
ÿ&'#ÿ()ÿÿ#ÿÿ,,ÿÿ-ÿÿ!ÿ.-ÿ/ÿ
#0
1+2ÿÿ3
4ÿ.5#ÿÿÿÿÿ!$ÿÿ#$
(2ÿ(ÿ
4#-ÿÿÿ!$ÿÿ#$ÿ/-ÿ1+ÿ.5#0
62ÿ7$*ÿ
4ÿ.5#ÿÿÿÿ!ÿ$ÿÿÿ.ÿ,#
01231451ÿ789 9 ÿ84ÿÿ01
ÿ!"##$ÿ
%&'ÿ(&)ÿ*ÿ+$ÿ,ÿ-(()!ÿ,ÿ.-ÿ*ÿ
!ÿ/
0 1*ÿ
%#$ÿ+ÿ1ÿ*2#ÿÿ#ÿ.--
*2"#$ÿ"#$
%2#$ÿ&'ÿ*ÿ1$ÿ*2#ÿ2#$
3+ÿ.-ÿ1#$#2ÿ*ÿ4ÿ01ÿ-ÿ#ÿ#ÿ&ÿ1#5ÿ#ÿ*))5/
01231451ÿ789 9 ÿÿ 51ÿ 1ÿ31ÿ591ÿ
84ÿÿ01
ÿ !"# $% ÿ% 9ÿ:# ;<" "AB<"ÿ:CD $$E ÿ% :P
&'()*(+, =ÿ>(*? '@('+,
>*)*6>ÿ2ÿ.F-(F*G'8H 3(&4+,
I>*)*6>ÿ2ÿJK L5 M N
(FO6(6(? '@('+,
)-)./)0/(ÿ2
&3(&45 677/8+,
'(7/8M >*.T )*(+, I)-)./)0/(ÿ2ÿQR S M N @(V 6(6(+,
'(7/8M >*.T )*(+, (>*.T )*(? '@('+,
)&&(7*+,
AP<# % D ""$E
)&&(7*+,
&GFU.'T +,
&GFU.'T +,
012ÿ45ÿ6278292ÿ
ÿÿÿ!"!ÿ#ÿ$%ÿ&'ÿÿ!(ÿÿÿ)ÿ!ÿ
ÿ!"!ÿÿ!*ÿÿ!ÿ!ÿ!ÿ!ÿ!++!,-ÿ.ÿÿÿ
"!ÿ!)!!"ÿ#ÿÿÿ!"!
/0)(ÿÿÿ!(ÿÿ!*ÿ1ÿ!ÿ,ÿ#ÿ!,,ÿÿÿ
##ÿ,!(ÿ!ÿ!ÿÿÿ!ÿ1ÿÿ)*ÿ2*ÿÿ#"ÿÿÿ)!,,ÿ
ÿ#ÿ1!)-ÿÿ#!(ÿÿ!*ÿ!,ÿ!ÿ1ÿ,)ÿ"ÿ
"ÿ,*
.ÿ),+ÿ#ÿÿ!"!ÿ0,ÿ,+ÿ!ÿ"ÿÿ
"ÿÿ+1,ÿ#ÿÿ##ÿ,!-ÿ--ÿ0!ÿÿ
,ÿ1ÿ++ÿ1*ÿ!ÿ,!(ÿÿ#ÿ!"ÿ+!"ÿ-
CS 201:
Object Oriented Analysis
and Design
Pramit Mazumdar
10/12/2022 1
Elements of Object Models
❑ Abstraction
❑ Encapsulation
❑ Modularity
❑ Hierarchy
10/12/2022 2
Elements of Object Models
❑ Typing
❑ Concurrency
❑ Persistence
10/12/2022 3
Abstraction
◼ Example:
10/12/2022 4
Abstraction
10/12/2022 5
Abstraction
10/12/2022 6
Abstraction
10/12/2022 7
Abstraction
◼ Hierarchy of models
❑ A model in a layer is abstraction of the lower layer of
models
❑ Higher layer models implement the model in the layer.
10/12/2022 8
Abstraction Hierarchy: Living Organisms
10/12/2022 9
Abstraction Hierarchy: LMS
10/12/2022 10
Abstraction
◼ Employee, Lead, and Manager are a type of Employee
10/12/2022 11
Abstraction
◼ All lower level abstraction in the hierarchical structure are
known as the Specialization
10/12/2022 12
Abstraction
◼ Example:
❑ Generalized “Employee” have 4 responsibilities which are
common for Executive, Lead, and Manager
10/12/2022 13
Abstraction Hierarchy: LMS
10/12/2022 14
Abstraction
◼ More commonalities can be observed
Approve Approve
Executive Regret Lead Regret Manager
Revoke Revoke
10/12/2022 15
Abstraction
LMS
Lead Manager
10/12/2022 16
Multi Level Hierarchy
10/12/2022 17
Elements of Object Models
◼ Four major elements of the Object Model
❑ Abstraction
❑ Encapsulation
❑ Modularity
❑ Hierarchy
❑ Typing
❑ Concurrency
❑ Persistence
10/12/2022 18
Encapsulation
◼ Primary task is to encapsulate
10/12/2022 19
Encapsulation: Example
10/12/2022 20
Encapsulation: Example
10/12/2022 21
Encapsulation: Example
◼ Structure is encapsulated in the implementation
❑ Store for the elements
◼ static or dynamic array
◼ Single linked list
◼ Deque
❑ Marker for the top element
◼ Array index
◼ List pointer
◼ Encapsulated in Deque
❑ Hidden from the external world
10/12/2022 22
Encapsulation
◼ For an Abstraction, the Encapsulation concept separates
10/12/2022 23
Encapsulation
◼ Remember that Encapsulation or hiding of the complex
concepts are important
10/12/2022 24
Encapsulation
◼ So the concept is similar to Client-Server model where
Interface is what the Client gets to see and Server is the
implementation details which remains encapsulated
10/12/2022 26
Encapsulation: Example
10/12/2022 27
Abstraction vs Encapsulation
Abstraction Encapsulation
Solves the problem in the design level Solves the problem in the
implementation level
Hide the unwanted data and expose Hide the code and data into a single
useful data unit to protect the data from outside
world
Allows us to focus on what the object Hide the internal details or mechanics
does instead of how it does it of how an object does something
Provides outer layout, in terms of Provides inner layout used in terms of
design outer
Example: Look of a Mobile phone has Example: Implementation detail of a
a display screen and keypad buttons mobile phone deals with how keypad
to dial a number. button and display screen connect with
each other.
10/12/2022 28
Elements of Object Models
◼ Four major elements of the Object Model
❑ Abstraction
❑ Encapsulation
❑ Modularity
❑ Hierarchy
❑ Typing
❑ Concurrency
❑ Persistence
10/12/2022 29
Modularity
◼ Modularity depicts how the code and data are organized
◼ Module characteristics
10/12/2022 30
Modularity: Example
10/12/2022 31
Modularity: Example
10/12/2022 32
Modularity: Example
10/12/2022 33
Modularity: Example
10/12/2022 34
Modularity: Example
10/12/2022 35
Modularity: Example
10/12/2022 36
Modularity: Example
10/12/2022 37
Modularity: Example
◼ Modularity ensures
10/12/2022 38
Modularity
◼ It is always easier to look into the system when modularized
10/12/2022 39
Modularity: Objectives
◼ Modular Decomposition
❑ We only put together a set of code into one module which have
some sort of well-defined functionality
◼ Modular Composability
❑ Modularization should be done in such a way that we can
reconstruct it back
❑ Combine smaller modules into a bigger module if required
❑ Enables reuse of existing components.
10/12/2022 40
Modularity: Objectives
◼ Modular Understandability
10/12/2022 41
Modularity: Objectives
◼ Modular Continuity
10/12/2022 42
Modularity: Objectives
◼ Modular Protection
10/12/2022 43
Modularity: Challenges
◼ Decomposition into smaller module may be difficult
10/12/2022 44
Elements of Object Models
◼ Four major elements of the Object Model
❑ Abstraction
❑ Encapsulation
❑ Modularity
❑ Hierarchy
❑ Typing
❑ Concurrency
❑ Persistence
10/12/2022 47
Hierarchy
◼ Hierarchy is a ranking or ordering of abstractions
10/12/2022 48
Hierarchy
◼ Two most important hierarchies in a complex system are
❑ Class structure or is-a hierarchy (Abstraction or IS-A)
10/12/2022 49
Hierarchy
◼ Hierarchy provides an opaque barrier to hide the methods
and state
10/12/2022 50
Single Inheritance
◼ A single superclass is inherited by a single subclass
10/12/2022 51
Multi-level Inheritance
10/12/2022 52
Multiple Inheritance
◼ For certain abstractions, it is important to provide
inheritance from multiple superclasses
studies teaches
Student Teacher
studies +
teaches
Teaching Assistant
10/12/2022 53
Multiple Inheritance: Challenges
◼ A very critical and important concept related to Hierarchy
10/12/2022 54
Hierarchical Inheritance
◼ More than one sub classes are created from the same super
class
10/12/2022 55
Hybrid Inheritance
◼ It may be a combination of
10/12/2022 56
Single Inheritance - Example
class one public class Single_Inheritance
{ {
int x; public static void main(String[] args)
public void print_1( ) {
{ two g = new two( );
x = 10; g.print_1( );
System.out.println("CSE"); g.print_2( );
}
System.out.print(g.x);
}
}
class two extends one
{ }
public void print_2( )
{ OUTPUT:
System.out.println("IIIT Vadodara"); CSE
} IIIT Vadodara
} 10
10/12/2022 57
Single Inheritance – Class Diagram
One
- x: int
+ print_1( )
Single_Inheritance
+ main( ): void
Two
+ print_2( )
10/12/2022 58
Multilevel Inheritance
◼ A child class derives member variables
and methods from another derived
class.
A: Parent class
B: Child class
C: Child class
10/12/2022 59
Multilevel Inheritance - Example
class X class Z extends Y {
{ int k;
int i; Z( ) {
X( ) k=9; j++;
{ }
i=5; }
} public class Multilevel_Inheritance{
} public static void main(String args[]) {
class Y extends X X a=new X();
{ Y b=new Y();
int j; Z c=new Z();
Y( ) System.out.println(a.i);
{ System.out.println(b.i + b.j);
j=7; i++; System.out.println(c.i + c.k);
} System.out.println(c.i + c.j + c.k);
} } }
10/12/2022 60
Multilevel Inheritance – Class Diagram
X
- i: int
+ X( )
Multilevel_Inheritance
Y
<<create>>
- j: int
+ Y( ) + main( ): void
Z
- k: int
+ Z( )
10/12/2022 61
Hierarchical Inheritance
◼ One base class is derived by many child
classes.
A: Parent class
10/12/2022 62
Hierarchical Inheritance - Example
class Shape class rectangle extends Shape {
{ int k;
int i; rectangle( )
Shape( ) {
{ k=7;
i=5; }
} }
} class Hierarchical_Inheritance {
public static void main(String args[]) {
class square extends Shape Shape a=new Shape();
{ square b=new square();
int j; rectangle c=new rectangle();
square( ) System.out.println(a.i);
{ System.out.println(b.i * b.j);
j=6; System.out.println(c.i + c.k);
} } } }
10/12/2022 63
Hierarchical Inheritance – Class Diagram
Shape
- i: int
+ Shape( )
square rectangle
- j: int - k: int
+ square( ) + rectangle( )
Hierarchical_Inheritance
+ main( ): void
10/12/2022 64
Thank You
10/12/2022 65
Constructors
class Shape class rectangle extends Shape {
{ int k;
int i; rectangle( )
Shape( ) {
{ k=7;
i=5; }
} }
} class Hierarchical_Inheritance {
public static void main(String args[]) {
class square extends Shape Shape a=new Shape();
{ square b=new square();
int j; rectangle c=new rectangle();
square( ) System.out.println(a.i);
{ System.out.println(b.i * b.j);
j=6; System.out.println(c.i + c.k);
} } } }
11/14/2022 171
Constructors
It is a method which gets initialized at the time of object
creation
...
}
Tracing a constructor call
What happens when the following call is made?
p1 x y
This declares local variables with the same name as the fields,
rather than storing values into the existing variables. The existing
attributes remain 0.
...
}
Constructor example
public class PointMain3 {
public static void main(String[] args) {
// create two Point objects
Point p1 = new Point(5, 2);
Point p2 = new Point(4, 3);
public Point() {
x = 0;
y = 0;
}
public Point(int initialX, int initialY) {
x = initialX;
y = initialY;
}
p2.translate(2, 4);
System.out.println("p2: (" + p2.x + ", " + p2.y + ")");
}
}
Types of Constructors
Parameterized Constructor
Default constructors
Copy constructors
Constructor overloading
Copy Constructor
A copy constructor is a method/constructor that
initialize an object using another object within the
same class
when you have a complex object with many attributes it is much simpler
to use the copy constructor
if you add an attribute to your class, you just change the copy
constructor to take this new attribute into account instead of changing
every occurrence of the other constructor.
Shallow copy
Deep copy
Copy Constructor
Shallow copy
Abstraction
Encapsulation
Modularity
Hierarchy
Typing
Concurrency
Persistence
11/14/2022 187
Minor Elements
These are not essential elements
11/14/2022 188
Typing
This is NOT the Word/Code typing speed !!
It is important because
Usually in programming we have variables
Variable have a definite type or datatype
We know what type of data we need to store and accordingly define the types
However, for an object the scenario is different
It is not going to have a single value
It is going to represent a class
Inherent properties of the class which the object refers to needs to be understood
Inherent properties of the class which is being referred by an object is the Type of
the Object.
11/14/2022 189
Typing
Type derives from the theory of abstract data types (ADT)
ADT consists of
Domain
Range of values that can be stored
Operations
What operations can be performed with that value
Axioms
How the operations which can be performed, interplay among themselves
11/14/2022 190
Typing
Built-in (Primitive) Types
Int
Double
char
bool
11/14/2022 191
Type of Programming Languages
A programming language may be
11/14/2022 192
Type of Programming Languages
Dynamically typed – dynamic binding or late binding
11/14/2022 193
Type of Programming Languages
Strongly Typed
Weakly Typed
Untyped
11/14/2022 194
Polymorphism
Polymorphism exists when dynamic typing and inheritance
interact
dynamic typing:
X = 2;
X = 2.5;
11/14/2022 195
Signatures
Signatures
In any programming language, a signature is what
distinguishes one function or method from another
198
Polymorphism
This feature is known as Polymorphism
199
Polymorphism
Compile time polymorphism (Static/Early binding)
200
Overloading
class Test {
public static void main(String args[]) {
void myPrint(5);
void myPrint(5.0);
}
static void myPrint(int i) {
System.out.println("int i = " + i);
}
static void myPrint(double d) { // same name, different parameters
System.out.println("double d = " + d);
}
}
int i = 5
double d = 5.0
201
Why overload a method?
So you can use the same names for methods that do essentially the
same thing
Example: println(int), println(double), println(boolean),
println(String), etc.
202
DRY (Don’t Repeat Yourself)
When you overload a method with another, very similar
method, only one of them should do most of the work:
void dict_Example( ) {
System.out.println("first = " + first + ", last = " + last);
for (int i = first; i <= last; i++) {
System.out.print(dictionary[i] + " ");
}
System.out.println();
}
void dict_Example(String s) {
System.out.println("At checkpoint " + s + ":");
dict_Example();
}
203
Legal assignments
class Test {
public static void main(String args[]) {
double d;
int i;
d = 5; // legal
i = 3.5; // illegal
i = (int) 3.5; // legal
}
}
Widening is legal
Narrowing is illegal (unless you cast)
204
Legal method calls
class Test {
public static void main(String args[]) {
myPrint(5);
}
static void myPrint(double d) {
System.out.println(“Output: ” + d);
}
}
Output 5.0
205
Illegal method calls
class Test {
public static void main(String args[]) {
myPrint(5.0);
}
static void myPrint(int i) {
System.out.println(i);
}
}
206
Method Overloading
It is a technique in which a single class contains
Multiple methods
Of same name
But different parameter list
For distinguishing among themselves
Object of the class is used to call each method.
class test{
void display() { }
void display(int x) { }
void display(int x, int y) { }
}
Constructor Overloading
It is a technique in which a single class contains
Multiple constructors
Of same name
But different parameter list
For distinguishing among themselves
Object of the class is not used to call the constructors.
class test{
test( ) { }
test(int x) { }
test(int x, int y) { }
}
Java uses the most specific method
class Test {
public static void main(String args[]) {
myPrint(5);
myPrint(5.0);
}
static void myPrint(double d) {
System.out.println("double: " + d);
}
static void myPrint(int i) {
System.out.println("int: " + i);
}
}
int: 5
double: 5.0
209
Operator Overloading
Overloading is of two types;
Method overloading (includes constructors)
Operator overloading
11/14/2022 211
Operator Overloading - Example
11/14/2022 212
Operator Overloading
Almost all operators can be overloaded
sizeof
member selector - .
ternary operator - ?:
11/14/2022 213
Operator Overloading - Syntax
11/14/2022 214
Operator Overloading - Restrictions
Precedence and Associativity of an operator
cannot be changed.
11/14/2022 215
/ Operator Overloading - Example
class test void test::operator/(test t2)
{ {
int n; cout << n / t2.n;
public: }
test( )
{ int main( ) OUTPUT:
cin >> n; {
} test t1, t2;
10
t1 / t2;
void operator/(test); 5
return 0;
}; } 2
11/14/2022 216
<< Operator Overloading - Example
class test {
int n;
public:
test( ) {
cin>>n;
}
void operator/(test);
friend ostream& operator<< ( ostream&, test& );
};
int main( )
{
test t1,t2;
t1 / t2;
cout << t1;
return 0;
}
11/14/2022 218
== Operator Overloading - Example
class test {
int n;
public:
test( ) {
cin>>n;
}
void operator/(test);
friend bool operator== ( test, test );
};
int main( )
{
test t1,t2;
t1/t2;
cout << endl << ( t1 == t2 );
return 0;
}
11/14/2022 220
Multilevel Inheritance
A child class derives member variables
and methods from another derived
class.
A: Parent class
B: Child class
C: Child class
11/14/2022 221
Method Overriding
If subclass (child class) has the same method as
declared in the parent class, it is known as method
overriding
Advantage:
Provide specific implementation of a method that is already provided by
its super class
Rules:
Same name as method in parent class
Same parameter as in the parent class
Must be in a IS-A relationship (inheritance)
11/14/2022 222
Method Overriding - Example
class Bank{ class AXIS extends Bank{
int getRateOfInterest( ) int getRateOfInterest( )
{ return 0; } { return 9; }
} }
public class Method_Overriding{
class SBI extends Bank{ psvm(S a[]){
int getRateOfInterest( )
{ return 8; } SBI s=new SBI( );
} ICICI i=new ICICI( );
AXIS a=new AXIS( );
class ICICI extends Bank{ S.O.P(“SBI”+ s.getRateOfInterest( ));
int getRateOfInterest( ) S.O.P(“ICICI”+i.getRateOfInterest());
{ return 7; } S.O.P(“AXIS”+a.getRateOfInterest());
}
}
}
11/14/2022 223
Method Overloading vs Overriding
Method Overloading Method Overriding
11/14/2022 224
Access Specifiers
Types of Access Specifiers:
Public
Default (Friendly)
Protected
Private
11/14/2022 225
Access Specifiers or Visibility Modes
Provides a restriction over the scope of a
variable/entity of a program
Class
Sub-class
Package
It is a group of similar types of classes, interfaces, etc.
11/14/2022 226
Public Access Specifier
Public attributes/methods are accessible from
anywhere in the program
11/14/2022 227
Protected Access Specifier
WHO CAN ACCESS
1. All members within the same class
2. All members within sub-classes
3. Sub-classes present in the same package
4. Classes of same package which are not related
5. Sub-classes present in other packages.
11/14/2022 228
Default (Friendly) Access Specifier
WHO CAN ACCESS
1. All members within the same class
2. All members within sub-classes
3. Sub-classes present in the same package
4. Classes of same package which are not related.
11/14/2022 229
Private Protected Access Specifier
WHO CAN ACCESS
1. All members within the same class
2. All members within sub-classes
3. Sub-classes present in the same package
5. Sub-classes present in other packages
11/14/2022 230
Private Access Specifier
WHO CAN ACCESS
1. All members within the same class
11/14/2022 231
Hierarchical Inheritance – Class Diagram
Shape
- i: int
+ Shape( )
square rectangle
- j: int - k: int
+ square( ) + rectangle( )
Hierarchical_Inheritance
+ main( ): void
11/14/2022 232
Multiple Inheritance
A child class derives member variables
and functions from multiple parent
classes.
C: Child class
11/14/2022 233
Multiple Inheritance – Example C++
class One { void show( ) {
protected: cout << "Vadodara" << endl;
int x; }
public: };
One( ) { x = 5; } class Three : public One, public Two
void disp( ) {
{ public:
cout << “IIIT" << endl; void printValues( ) {
} cout << x + y << endl;
}; }
class Two { };
protected: int main( ) {
int y; Three t1;
public: t1.printValues( );
Two( ) { y = 50; } t1.disp( ); t1.show( );
}
11/14/2022 234
Hybrid Inheritance
Combination of two or more types of
inheritances.
A: Parent class
D: Child class
11/14/2022 235
Hybrid Inheritance – Problem
class A
public: int x
class D : public B, C
AMBIGUOUS int x
11/14/2022 236
Hybrid Inheritance – Solution in C++
Two ways to counter this problem:
11/14/2022 237
Hybrid Inheritance – Solution-1
class A
public: int x
class D : public B, C
B :: int x
11/14/2022 238
Virtual Base Class
class A
public: int x
class D : public B, C
int x
11/14/2022 239
Constructor calling - Inheritance
Base class constructor is called by default
11/14/2022 240
Constructor calling - Inheritance
class First public class
{ ConstructorCalling_Inheritance
First( ) {
{ public static void main(String args[])
System.out.println("IIIT"); {
} Second S = new Second( );
} }
class Second extends First }
{
Second( ) OUTPUT:
{
System.out.println("Vadodara"); IIIT
} Vadodara
}
11/14/2022 241
How to call members specific to the
Base classes?
11/14/2022 242
Super - keyword
Super keyword is used to refer parent class
entities
11/14/2022 243
Super – keyword - Rules
Syntax (from subclass, to access members of parent class)
Variables: super.VariableName
Methods: super.MethodName( )
Constructors: super(<parameter_list>)
11/14/2022 245
this keyword
this keyword is used to refer to the object which invokes the
method
this keyword helps to use same variable name for both local and
instance variables
Syntax
Variables: this.VariableName
Methods: this.MethodName( )
Constructors: this(<parameter_list>)
11/14/2022 246
this keyword
this keyword can be used to call constructor from within
another constructor
11/14/2022 247
this keyword
this.x = x;
11/14/2022 248
Memory Management - Objects
class ABC public class main
{ {
int x; psvm(String[] args)
void show( ) {
{ ABC a = new ABC( );
int x = 5; ABC b = new ABC( );
this.x = 10; System.out.println(a.x);
System.out.println(x); a.show( );
} System.out.println(b.x);
} }
}
OUTPUT: 0 5 0
11/14/2022 249
Re-defining variables in Java
Local variable
Instance variable
Class variable
Local variable:
Variables are accessible within the block where they are declared
Variables declared within a method/constructor are always accessible
from within the method/constructor.
Instance variable:
Variables that are declared within a class
Variables which are not within a method/constructor, but inside a class
Variables are associated with the object of the class
All instances or objects of the class gets separate copy or memory
location of the instance variables.
11/14/2022 250
Re-defining variables in Java
Instance methods:
Methods that are declared within a class
Methods are associated with the object of the class
All instances or objects of the class gets separate copy or memory
location of the instance methods.
Class variable:
Variables belongs truly within the class
All instances or objects of the class shares the same variable
Separate memory is not allocated for the class variables with respect to
the multiple objects of the class
All instances or objects of the class do not get separate copy or memory
location of the class variables
Class variables are called Static variables
Methods that require similar property are called Static methods.
11/14/2022 251
Static keyword
Static keyword helps to keep single copy of a variable or method
within a class
Static attributes belongs to the class and not to any object of the
class.
11/14/2022 252
Static usage within Java Virtual Machine
Class Loaded
11/14/2022 253
Static keyword - Limitations
Overriding is not possible on static methods
Syntax:
11/14/2022 254
final keyword
final keyword is used to perform the following
final variables
final int x = 10;
A variable once declared FINAL, can never change its value
throughout the program.
11/14/2022 255
final methods
class T1
{
final void display( )
{
System.out.println(“Pramit”);
}
}
class T2 extends T1
{ Error. Final methods
void display( ) cannot be overridden
{
System.out.println(“Mazumdar”);
}
}
11/14/2022 256
final keyword
final methods cannot be overridden
final Class
final class can contain both final and non-final attributes
11/14/2022 257
final vs static keyword
static final
Static methods can't be overridden. Final methods cannot be overridden.
Static classes can be inherited. Final classes can never be inherited.
Static keyword can never make a Final keyword makes a variable
variable constant. It is shared by all constant.
instances of objects and has a single
copy.
Static variable can change their value Final variable once declared can
during program execution. never be changed.
These are initialized when class Final variables are accessible after
loader loads the class. the object is created.
11/14/2022 258
Controlling Inheritance
Make a Class non-inheritable = Final
11/14/2022 259
Method Overriding - Example
class Bank{ class AXIS extends Bank{
int getRateOfInterest( ) int getRateOfInterest( )
{ return 0; } { return 9; }
} }
public class Method_Overriding{
class SBI extends Bank{ psvm(S a[]){
int getRateOfInterest( )
{ return 8; } SBI s=new SBI( );
} ICICI i=new ICICI( );
AXIS a=new AXIS( );
class ICICI extends Bank{ S.O.P(“SBI”+ s.getRateOfInterest( ));
int getRateOfInterest( ) S.O.P(“ICICI”+i.getRateOfInterest());
{ return 7; } S.O.P(“AXIS”+a.getRateOfInterest());
}
}
}
11/25/2022 260
Abstraction
An essential element of object-oriented programming is
abstraction
11/25/2022 261
Abstraction
Process of representing essential features without including the
background details or explanations
It does not contain any body or statement within it, i.e. they
are not defined within the class considered as abstract
11/25/2022 262
Abstract in Java
Classes considered as abstract cannot have Objects
11/25/2022 263
Abstract in Java
Syntax:
abstract class test
{
……
}
11/25/2022 264
Abstract in Java
abstract class test5 public class check
{ {
void show( ) { public static void main(String args[])
System.out.println("Mazumdar"); {
} check1 C = new check1( );
C.display( );
abstract void display( ); C.show( );
} }
}
class check1 extends test5
{
void display( ) { We try not to define a
System.out.println("Pramit"); normal methods
inside an abstract
}
class
}
11/25/2022 265
Abstract properties
Abstract methods cannot be static
11/25/2022 266
Abstract limitation
Abstract keyword may be used to perform abstraction in Java
11/25/2022 267
Interface
Multiple inheritance can be performed in Java using an
Interface
11/25/2022 268
Interface
Interface specifies what a class must do, but not how it does it
11/25/2022 269
Interface
Interface contains;
Variables which are static
Variables which are final
Methods which are Abstract
11/25/2022 270
Package
Packages are used to group a variety of classes and/or interfaces
together
11/25/2022 271
Package creation
Create a folder with same name as the desired Package name
Create a normal java file and write the class definition within it
Access specifiers provided for the class should agree with the
requirements
Place the java file in the same folder with the package name
11/25/2022 272
Package creation
Java files present in a package need not be compiled
Create a new java file. Outside the package folder. Within the same
path
Application program (java file) that uses a class (java file) present
within a package must IMPORT it.
11/25/2022 273
Package creation
Syntax;
import <package name> . <classname> ; //one class within the package folder
import <package name> . * ; //all classes within the package folder
Separate access specifiers for class and methods within the classes
11/25/2022 274
Elements of Object Models
Four major elements of the Object Model
Abstraction
Encapsulation
Modularity
Hierarchy
Typing
Concurrency
Persistence
11/25/2022 275
Concurrency
Concurrency is the property that distinguishes an active
object from one that is not active
Object 1 Object 2
Object 3
11/25/2022 276
Concurrency
Possible scenarios:
Object 1 is sending a message to Object 2 requesting for a service
11/25/2022 277
Concurrency
Allows multiple tasks to execute, interact, and collaborate at
the same time to achieve the global functionality
11/25/2022 278
Concurrency: Heavyweight and Lightweight
Heavyweight Concurrency:
Lightweight Concurrency:
11/25/2022 279
Process
class T1 Java code
{
public static void main(String args[])
{ Compile
int sum = 0;
11/25/2022 280
Process
Problem: Loop would run from 0 to 10000000 (10 million) times
The numbers after 5 million need to wait for execution until the
numbers before them are executed.
11/25/2022 281
Process
Java code Compile Interpret Executable
A program in
execution is Process
called Process
11/25/2022 282
Process
Only one processor is used
Time consuming
Solution:
Divide the task into parts
10 million can be divided into 4 parts (2.5 million each)
Each task can be assigned separate process
4 processes each with 2.5 million numbers
Each process assigned to separate processors
4 process executes on 4 processors
11/25/2022 283
Process
Java code Compile Interpret Executable
11/25/2022 284
Process
What we achieved:
Parallelization is achieved
Speed up the execution
Data
Heap
Stack, etc.
11/25/2022 285
Process
Interprocess communication (IPC) which communicates
among the processes in execution
11/25/2022 286
Process
Why creation of 4 separate process is a problem?
11/25/2022 287
Thread
Threads are extremely light weight when compared to
processes
Process
11/25/2022 289
Process
Java code Compile Interpret Executable
11/25/2022 290
Thread
Thread Process
Thread has no data segment or heap Process has code, heap, stack, and
to store/access data other segments as well
Thread cannot live on its own. It is A process can execute independently.
always associated with a process
There can be one of more threads Every process has at least one thread
associated with a process for execution
11/25/2022 291
Thread
A sequential program has only one single flow of
control
11/25/2022 292
Thread
A program is divided into a number of parts
11/25/2022 293
Thread
Process is an isolated execution entity which has its
own code, heap, stack, and other segments
Thread does not have its own data segment and heap
11/25/2022 294
Thread
A process cannot execute without a thread
11/25/2022 295
Thread
11/25/2022 296
Thread
class ABC
{
public static void main(String x[])
{
……
……
}
}
Single Thread
11/25/2022 297
Thread
Thread A
Switching
Switching
Thread C
Multithreading
11/25/2022 298
Life Cycle of a Thread
Ready for
New Born execution, but
CPU may waiting for
release a CPU
running start( )
allocation.
thread.
Ready
yield( ) run( )
Running
CPU is
stop( ) allocated and
is executing.
Dead
11/25/2022 299
Life Cycle of a Thread
1. NEW BORN
11/25/2022 300
Life Cycle of a Thread
2. READY or RUNNABLE
start( ) is the only method that can be used for starting a new
thread
11/25/2022 301
Life Cycle of a Thread
3. RUNNING
11/25/2022 302
Life Cycle of a Thread
4. DEAD
11/25/2022 303
Thread program in Java
Threads can be created in Java using;
11/25/2022 304
Thread program in Java
Runnable interface
Pass the object of the class along with the Thread object
11/25/2022 305
Thread programs
REFER PROGRAMS
thread_eg1.java
thread_eg2.java
11/25/2022 306
Life Cycle of a Thread
New Born
start( )
Ready
yield( ) run( )
Running
stop( )
Dead
11/25/2022 307
Life Cycle of a Thread
New Born
start( )
after t secs.
Ready
Wait
yield( ) run( )
Running
stop( )
Sleep
Dead
11/25/2022 308
Life Cycle of a Thread
sleep( ) [paused execution]
Java pauses the thread for a specified seconds (user defined)
Thread does not lose its ownership
Thread resumes execution after the specified time is over
CPU allocation is managed accordingly, so that after specified time it
can be brought back to running state
Failures of automatic transition from ready to running state may be
disrupted in a few extra-ordinary scenarios.
11/25/2022 309
Life Cycle of a Thread
New Born
start( )
Ready
Running
stop( )
Dead
11/25/2022 310
Life Cycle of a Thread
New Born
start( )
Ready
yield( ) run( )
Running
stop( )
Dead
11/25/2022 311
Life Cycle of a Thread
New Born
start( )
after t secs.
Ready
Wait
Blocked yield( ) run( )
Running
stop( )
Sleep
Dead
11/25/2022 312
Thread programs
REFER PROGRAMS
thread_eg3.java
thread_eg4.java
11/25/2022 313
Thread Priority
Priority to threads can be set
Syntax:
<ThreadName>.setPriority ( int Number )
11/25/2022 314
Thread programs
REFER PROGRAMS
thread_eg5.java
thread_eg6.java
11/25/2022 315
Synchronization
A thread may try to read a resource which is now been used by
another thread
This is due to the fact that both the threads are accessing the
same resource
Thus other methods are restricted from calling the same method.
11/25/2022 316
Synchronization
Therefore multiple threads cannot access a single method at the
same time
Syntax:
synchronized void display( )
{
……
……
}
11/25/2022 317
Exception Handling
Any error during program execution may produce incorrect output
Types of errors;
Compile time error
Run time error
11/25/2022 318
Exception Handling
Run time errors:
Programs may be compiled correctly and class file could be created
However, the program may fail to execute
Alternatively it may produce wrong results due to wrong logic in the
programs
For example;
Dividing an integer by zero
Accessing an element which is out of an array limit, etc.
Exception
Refers to an unwanted or unexpected event
That may occur during the execution of a program (runtime)
Disruption in program flow may occur
If such an exception is not handled then an error message is displayed
And the program is terminated
11/25/2022 319
Exception Handling
ERROR EXCEPTION
11/25/2022 320
Exception Class Hierarchy
11/25/2022 321
Exception Handling
If we want to continue execution of the remaining code
11/25/2022 322
Exception Handling
TRY Exception
Statement that causes object creator
exception
Throws exception object
CATCH
Exception handler
Statement that handles
the exception
11/25/2022 323
Exception Handling
Exception handling has two parts; TRY and CATCH
Searches for the correct catch block that handles the occurred
exception
11/25/2022 324
Exception Handling
Code written within the catch block is executed for handling the
exception
After execution, the control goes to the next line of the instruction
after the Catch block
11/25/2022 325
Exception Handling
try
{
……..
……..
}
catch(Exception_Type e)
{
…………
…………
System.out.println( e.getMessage );
}
11/25/2022 326
Exception Handling
try
{
……..
……..
}
catch(Exception e)
{
…………
…………
System.out.println( e.getMessage );
}
11/25/2022 327
Exception Handling
A try block can have multiple catch blocks
FINALLY BLOCK:
Instructions written within Finally block is bound to execute
11/25/2022 328
Exception Handling
Instructions which must be executed in a program might be kept
in the Finally block
Syntax:
try
{
……
}
catch(Exception e)
{
…..
}
finally
{
……
}
11/25/2022 329
Exception Handling
Refer Program: exception_eg5.java
11/25/2022 330
Exception Handling
TRY Exception
Statement that causes object creator
exception
Throws exception object
CATCH
Exception handler
Statement that handles
the exception
12/14/2022 331
Exception Handling
try
{
……..
……..
}
catch(Exception_Type e) {
…………
…………
System.out.println( e.getMessage );
}
catch(Exception e) {
…………
…………
System.out.println( e.getMessage );
}
12/14/2022 332
Throw Exception
public class exception_eg1 {
public static void main(String args[])
{
try
{
int x[] = new int[5];
x[20]=10;
System.out.println(“Pramit”);
}
catch(ArrayIndexOutOfBoundsException e)
{
e.printStackTrace();
}
} }
12/14/2022 333
Throw Exception
Usually exception is automatically identified and thrown by the
JVM
Syntax:
12/14/2022 334
Throw Exception
public class exception_eg2 {
public static void main(String args[ ]) {
try {
}
catch(ArrayIndexOutOfBoundsException e) {
e.printStackTrace( );
}
} }
12/14/2022 335
Throw User-defined Exception
User-defined exceptions can also be created
Syntax:
throw new ArrayIndexOutOfBoundsException ( “Here goes the Instruction” )
Therefore, as the first step we would create class for the user-defined
exception, that extends the Exception class
12/14/2022 336
Throw Exception
class my_exception extends throw new my_exception("\n Use
Exception value above 20 !! \n");
{
my_exception(String msg) }
{ catch(my_exception e) {
super(msg); System.out.println(e.getMessage( ));
} }
} } }
12/14/2022 337
Throws Exception
Throw keyword can only be used if we want to handle an exception
from the same method
Usual Scenario:
12/14/2022 338
Throws Exception
New Scenario:
12/14/2022 339
Throw Exception
class test_throws try
{ {
void disp() throws T.disp( );
ArithmeticException, Exception }
{
int x = 7/0; catch(ArithmeticException e) {
}
} e.printStackTrace( );
12/14/2022 340
Elements of Object Models
Four major elements of the Object Model
Abstraction
Encapsulation
Modularity
Hierarchy
Typing
Concurrency
Persistence
12/14/2022 341
Persistence
Persistence is the property of an object through which its
existence transcends time
Once the creator no longer exists then how long will the
object stay or exist is an independent decision taken by OS
12/14/2022 342
Continuum of Object Existence
An object in software takes up some amount of space and exists for
a particular amount of time
12/14/2022 343
Continuum of Object Existence
Spectrum of object persistence encompasses: EXAMPLES
12/14/2022 344
Why Persistence is Important?
If an object is very transitive, i.e. it occurs and then
disappears then we would like to use a lightweight process
for the task/object
12/14/2022 345
Garbage Collection
JVM maintains a heap to store all objects created by a running
java application
12/14/2022 346
Garbage Collection
Garbage collector is a part of the JVM which significantly helps in
memory management related to Java programs
12/14/2022 347
Finalize
Finalize is a method present in java.lang.Object class
12/14/2022 348
Finalize
finalize( ) method can be used for this purpose
12/14/2022 349
Finalize
class test_finalize {
protected void finalize( ) {
System.out.println("Object Deleted !!");
}
}
System.gc( );
}
}
12/14/2022 350
Thank You
12/14/2022 351
UML: Statechart diagrams
The behavior of the single object Watch, for example, has several
different interesting states, BlinkHours, BlinkMinutes, BlinkSeconds,,
etc.
state
initial State
event
transition
When to develop a state chart?
Model objects that have change state in interesting ways:
Devices (microwave oven, Ipod)
Etc.
UML: Statechart diagrams
Event Initial state
button1&2Pressed button2Pressed
Blink Increment
Hours Hours
Transition button1Pressed
button1&2Pressed button2Pressed
Blink Increment
Minutes Minutes
State
button1Pressed
button2Pressed
Stop Blink Increment
Blinking Seconds Seconds
Final state
• Initial and Final States ‐ The initial state is denoted by a filled black circle
and may be labeled with a name. The final state is denoted by a circle with
a dot inside and may also be labeled with a name.
State Machine Diagrams
• Transitions - Transitions from one state to the next are denoted
by lines with arrowheads. A transition may have a trigger, a guard
and an effect, as below.
• Self-Transitions - A state can have a transition that returns to
itself, as in the following diagram. This is most useful when an
effect is associated with the transition.
Alternative
way to show
the same
information
•The ∞ symbol indicates that details of the Check PIN
sub‐machine are shown in a separate diagram.
State Machine Diagrams
Entry Point - Sometimes you won’t want to enter a sub-machine at
the normal initial state. For example, in the following sub-machine it
would be normal to begin in the "Initializing" state, but if for some
reason it wasn’t necessary to perform the initialization, it would be
possible to begin in the "Ready" state by transitioning to the named
entry point.
98
Thank You
12/14/2022 99
0123ÿ56ÿ2ÿ7899282358ÿ522
ÿÿÿÿÿÿÿÿÿ
!!"ÿ
#ÿ!!"ÿÿ$ÿ"ÿÿ%%!ÿÿ
"&!ÿ'(ÿ)'!!*+
, ÿ%%!ÿ'ÿÿÿ!!"ÿÿÿÿ"-ÿÿ
ÿ!.ÿ)ÿ"$ÿ
, ÿ"&!ÿ'ÿÿ"ÿ"*ÿÿÿÿÿ)ÿ
ÿÿÿ!!"
/ÿÿ!!"ÿ(ÿÿ"-ÿÿ!ÿ!!ÿ
!!"
01234ÿ67ÿ869916136ÿ311
ÿÿÿÿ!"ÿ#$ÿ!%
& '("ÿ$ÿÿ""
& )*ÿ"$""ÿ!"ÿ("ÿ!$ÿÿ"ÿ!"ÿ*"ÿ("
& +" "ÿ!$ÿÿ",ÿÿÿ$ÿ!ÿ-ÿ#ÿÿ"ÿ("ÿÿ
ÿ"-"ÿ("
)"ÿ.ÿ"ÿÿ",-"ÿ#ÿÿÿÿÿ
/" ÿ'"ÿ."ÿ"ÿ#ÿ!"ÿ')/ÿ0"
01234567ÿ9 552 2ÿ223
)*ÿ,-./0.12
3*ÿ4ÿ567-ÿ/88ÿ90.: ÿ9;ÿ< -=.->
?.0< -=.-12
@*ÿ?0/0A?ÿBÿ9;C.;07-DE F.,G12
!" #$ H*ÿ/C/98/I8.ÿBÿ,F.,GJ AKK8D12
"&' (
5?0/0A?>
;.L 5/C/98/I8.>
;.L
%$ "%
01234ÿ6177891821ÿ 88
ÿÿÿ!ÿ"!#$!!ÿ!ÿ%ÿ
$!ÿ!ÿ!""!"
&!!ÿ'!ÿ(!ÿ$"!ÿ!ÿ")!ÿ$!ÿ"!!*ÿ+ !ÿ,-.ÿ
"ÿ'"ÿ!ÿ"!!ÿ/"ÿÿ0102ÿÿ$!ÿ!ÿ
!ÿ!""
01231451ÿ789 9 ÿÿ9984ÿ789 9
ÿÿÿ!"ÿ#$ÿ%ÿ!"ÿ&'$("ÿ
)!*+ÿ)!##ÿ#+ÿÿÿ,--!(ÿ)!*+
./0"ÿ-!#ÿ!+
1(ÿ'$("ÿ)!*+2ÿÿ!ÿÿ0"ÿ-!(ÿ3(ÿÿ4!("ÿ
#ÿÿ(ÿ0"ÿ5ÿÿ3!)ÿ#ÿ!+6ÿÿ!ÿ(ÿ0"ÿ-!#ÿ!+ÿ!(ÿ
"--!(ÿ)!*+
.7"$ÿ#ÿ"(-
1(ÿ'$("ÿ)!*+2ÿÿ!ÿÿ#"$ÿ#ÿ"(-ÿÿÿÿ
3!)ÿ#ÿ!+ÿ)$!(*ÿ!"ÿ0"ÿ!ÿ3#+!(*ÿ(ÿ"!(6ÿÿ
!ÿ(ÿ#"$ÿ#ÿ"(-ÿ!(ÿ"--!(ÿ)!*+
01231451ÿ789 9 ÿÿ9984ÿ789 9
ÿ!"ÿ#!$%&ÿÿ'(ÿ)$ÿ*$$+ÿ)ÿ&!$ÿÿÿ)"ÿ
,&ÿ$!!ÿ-ÿ'.)ÿ.##ÿ/)!ÿ'.)ÿ)0ÿ1&)$"!ÿ&*(ÿÿ
!ÿÿ!&)ÿ).&ÿ)(#ÿ$/ÿ!"0ÿ23ÿ).(ÿ!ÿ%!(ÿ
&/*ÿÿ).ÿ!*(ÿ*(&&ÿ#.&&ÿ&ÿ'**ÿ&ÿÿ$ÿ#.&
1$**,$!)$ÿ!"ÿ)ÿ)$ÿ#!$%ÿ).ÿ,ÿ#)!ÿ/$!ÿÿ
&!$ÿ&ÿ).ÿ$**,$!)$&ÿ!ÿ$!4ÿ!$ÿ).ÿ
$,5)ÿ*+&ÿ)$ÿ$ÿ$).!0ÿ6.&ÿ!"&ÿ&"ÿ)$ÿ,ÿ&ÿ
"$!ÿÿ).ÿ&ÿ#.&ÿ$/ÿ%*$#")
0123ÿ56ÿ27ÿ893553ÿ522
ÿÿ!ÿ"ÿ!ÿ#$"%&'ÿ(ÿ%)ÿÿ
ÿÿÿ&&ÿ*ÿ)%ÿ$*!ÿ#!%!'ÿ%ÿ
%&!ÿ!ÿ%&!ÿ"ÿ&%ÿ*ÿ$ÿÿ!&ÿ*+ÿ%ÿ*ÿ
!%
ÿÿÿ*ÿ%ÿ!ÿ"ÿ)&%(ÿ%ÿ*ÿÿ%ÿ%ÿ
!ÿ)&%(ÿ("!ÿÿ*&ÿ*ÿ
,-.ÿÿÿÿ"ÿ%$/ÿ%!ÿ0*&!ÿ%)ÿ)&%(ÿ"ÿ!ÿ
ÿ)&%(ÿÿ!ÿ)*!%!+%!ÿ!ÿ %"
ÿÿ%!!ÿ1ÿ!%!ÿ$(!ÿ1ÿ%!ÿ
%!1ÿ!"%!2%!ÿ$1ÿ(ÿ&!ÿ!ÿ!ÿ%3
0123451ÿ7589 451ÿ5ÿÿ07
!"#
00& 1233 $ %&"'('
) *+ÿ-.+/.
01223ÿ056789
ÿ ÿÿ
ÿ ÿÿÿÿ ÿ!
"ÿ #ÿ ÿ
$%!ÿÿÿ ÿ
&ÿ! ÿ ÿ
'ÿ ÿÿ ÿ!
"ÿ #ÿ ÿ!ÿÿÿÿÿ% % ÿÿ
&ÿ#("ÿ ÿ%ÿÿ%ÿ%
ÿ
)ÿ
ÿÿ"
)ÿ
* ÿ #ÿ!%
+ ÿÿ
+!ÿ ÿ
,ÿ
$!ÿÿ
$!ÿÿ
01234325ÿ73898 ÿ ÿ2ÿÿ8ÿ3ÿ
ÿ !"
+((,ÿ&''% +((,ÿ*0!$!%
$! $!
01234ÿ67897 2ÿ3ÿ1 ÿ433ÿ3118
331ÿ7ÿ
ÿÿ!ÿ"ÿ#ÿ"#$!#%&ÿ'(%#ÿ
(ÿ#ÿ$&!$)
*31ÿ7 7 898:;8<ÿ>?@A
ÿÿ!ÿ+#ÿ$ÿ,($!!ÿ"ÿ#ÿ
%%&ÿ'(%#-ÿ.%ÿ$#/#0ÿ$&!$)ÿ
$%ÿ$/ÿ1!(ÿ(!ÿ)(!ÿ$#/#0ÿ%$ÿ B CDA 8EFÿ>88G H ?GF8I
"#$#- CII?FA 8EF L 8<:9CIÿ9M89N
433
ÿ!(2%ÿ!ÿ!'!"%#"ÿ
$#/#"ÿ#$#ÿ( 2!-ÿ.%ÿ$#/#0ÿ"ÿ JGGK8ÿ:<8EF:FD JGGK8ÿI:O@C@D
%(#ÿ%""$!0ÿ$ÿ'!(&!$)3ÿ#ÿ)$0ÿ,ÿ 9C@< 9C@<
$ÿ)$%2$ÿ#%&ÿ$"(
*745ÿ
ÿ$!!(+"ÿ%ÿ#ÿ$&!$)-ÿ6(ÿ$,ÿ
"ÿ%""$!0
01234ÿ67897 2ÿ3ÿ1 ÿ433ÿ3118
7 6 7879:7;ÿ=>?@
ÿÿÿÿ!"#!$%&'(%"ÿ)ÿ
*"%ÿ!$(ÿ+!*ÿ,!"$,ÿ"$%!ÿ"%ÿ$-ÿ
.('(ÿ('"$,ÿ"%/ÿ0 ".ÿ-($!%(.ÿ%(ÿ A BC@ 7DEÿ=77F G >FE7H
BHH>E@ 7DE K 7;98BHÿ8L78M
(,"$$"$,ÿ!+ÿ1(ÿ%"'"%"(.
273
ÿ!ÿÿ*"%ÿÿ.('(ÿ+!*.ÿ IFFJ7ÿ9;7DE9EC IFFJ7ÿH9N?B?C
($%("$,ÿ"%ÿ$-ÿ!$(ÿ('"$,ÿ"%/ÿ%".ÿ 8B?; 8B?;
-($!%(.ÿ%(ÿ($-ÿ!+ÿ1(ÿ%"'"%"(.
3
ÿ-"4!$-ÿ*"%ÿ.('(ÿ+!*.ÿ
($%("$,ÿ$-ÿ!$(ÿ('"$,/ÿ0 (ÿ
"41"%"!$ÿ".ÿ%%ÿÿ"$!4"$,ÿ+!*ÿ
%!ÿ(ÿ%".ÿ1!"$%ÿ5$%"ÿ1!(.."$,ÿ
!$%"$5(.
01234ÿ67897 2ÿ3ÿ1 ÿ433ÿ3118
ÿÿÿ!"ÿ#$
% &ÿ'ÿ(ÿ"ÿ)ÿ!ÿ)$ÿÿ*!ÿ*ÿ'ÿ(+*,(ÿ ÿ
-(ÿ!"ÿ."/(ÿ!ÿ($-ÿ/-0ÿ1*ÿ/-ÿ)ÿ!ÿ'ÿ!ÿ
2/ÿ/-ÿ!--ÿ-(ÿ*!3ÿÿ3"
% &ÿ)$ÿ.!(((ÿ!+ÿ-ÿ-(ÿ(!$*ÿ*/$*ÿ0ÿ4ÿ ÿÿ) ÿ
-(ÿ!ÿ3"ÿ+ÿ!ÿ)$ÿ(+)-5ÿ*ÿ!ÿ."ÿÿ+ÿ(ÿ
/-ÿ(ÿ2/"ÿ ÿÿ) ÿ)(
01234ÿ67897 2ÿ3ÿ1 ÿ433ÿ3118
43237
ÿÿÿÿ!"ÿ
#$ÿÿ%&#"ÿ"&$'ÿ(ÿ
!"ÿ"&$ÿ)"*%ÿ)%ÿ
%ÿ+%,ÿÿ%
-.7/ÿ031.
(ÿ)#)"ÿÿ1ÿ*$ÿ'ÿ(%ÿ
)%ÿÿ2#)%%ÿ%3ÿÿ%ÿ
3
4/38ÿ.1
ÿ3#ÿÿ)&+ÿ$#ÿ
8 9:9;<9=ÿ?@AB
5ÿ#7"ÿ#ÿ&#)"
:DA= :DA=
01234516ÿ892442ÿ043 3ÿÿ
ÿ
.
/
(%%)ÿ#$$" (%%)ÿ'-!"
! !
01234516ÿ892442ÿ043 3ÿÿ
!"
#$%&'(()&*+ > ? 3ÿ ..0?
#, '(()&*+
- ./01ÿ.345 3 #9 '*ÿ;'<%=+
.!
7 1ÿ3 #;'<%=+
0//!03.
6/43ÿ.345 3
03
8 0!ÿÿ8345 3 #@ A*&B+
03 ÿ !5 C
. !3ÿ.3 #9 'ÿ@ A*&B+
> ? 3
?.303
01234516ÿ892442ÿ043 3ÿÿ
! "ÿ$ !
% &'"
("" ÿ$
ÿ$
)ÿ&
* &
! "
*ÿ$ +
*"ÿ&"
01234325ÿ73898 ÿ ÿÿ32ÿ3 ÿ8
F,CD+',
: "3ÿ5!" %B)C'D-
%&'()**+(,- 211#250
%= ),ÿB)C'D-
!"#$ ; "<"5ÿ "002<"
G+HIJ,*@*
%. )**+(,-
/ 0123ÿ0567"5
0#""
"25"ÿ"#7
8165ÿ0567"5 E
FKJ,+L
%? @,(A-
25 9"2#!ÿÿ9567"5
0""#5ÿ05 %= )ÿ? @,(A-
; "<"5
"<0525