SlideShare a Scribd company logo
1 of 18
OBJECT-ORIENTED
PROGRAMMING
INTRODUCTION
Languages that support OOP are firmly entrenched in the mainstream.
From COBOL to LISP c++, Ada 95, and CLOS, an OOP version of LISP.
C++ and Ada 95 support procedural- and data-oriented programming,
CLOS also supports funcitonal programming. Some of the newer languages
that were designed to support object-oriented programming do not support
other programming paradigms, but still employ some of the basic structures
and have the appearance of the older imperative languages. Among these
are Eiffel and Java. Smalltalk was the first language to offer complete
support for object-oriented programming. This is inheritance, which is at
the center of object-oriented programming and the languages that support
it.
Object-Oriented
ProgrammingINTRODUCTIONINTRODUCTION
The concept ofThe concept of object-oriented programmingobject-oriented programming has its roots in SIMULAhas its roots in SIMULA
67 but was not fully developed until the evolution of Smalltalk67 but was not fully developed until the evolution of Smalltalk
resulted in producing Smalltalk 80 (in1980, of course).resulted in producing Smalltalk 80 (in1980, of course).
Three key languages:Three key languages:
-abstract data types-abstract data types
-inheritance-inheritance
-a particular kind of dynamic binding-a particular kind of dynamic binding
Procedure-oriented programming focuses on subprograms andProcedure-oriented programming focuses on subprograms and
subprogram libraries. Data-oriented programming focuses onsubprogram libraries. Data-oriented programming focuses on
abstract data types. The Sorting process is enacted by calling thatabstract data types. The Sorting process is enacted by calling that
operation on the specific array object. The data-orientedoperation on the specific array object. The data-oriented
programming paradigm was popular in the 1980s, and it servedprogramming paradigm was popular in the 1980s, and it served
by the data abstraction facilities of Modula-2, Ada, and severalby the data abstraction facilities of Modula-2, Ada, and several
more recent languages.more recent languages. Object-basedObject-based languages are the languageslanguages are the languages
that support data-oriented programming.that support data-oriented programming.
INHERITANCEINHERITANCE
 By the middle to late 1980s, it became apparent to many softwareBy the middle to late 1980s, it became apparent to many software
developers that one of the best opportunities for increaseddevelopers that one of the best opportunities for increased
productivity in their profession was in software reuse.productivity in their profession was in software reuse. AbstractAbstract
data types, with theirdata types, with their encapsulation and access controls,encapsulation and access controls,
were obviously the units to be reused. The problem with the reusewere obviously the units to be reused. The problem with the reuse
of abstract data types is that, nearly all cases, the features andof abstract data types is that, nearly all cases, the features and
capabilities of the existing type are not quite right for the new use.capabilities of the existing type are not quite right for the new use.
Second problem is with data-oriented programming is that allSecond problem is with data-oriented programming is that all
abstract data type definitions are independent and are at the sameabstract data type definitions are independent and are at the same
level. This often makes it impossible to structure a program to fitlevel. This often makes it impossible to structure a program to fit
the problem space being addressed by the program.the problem space being addressed by the program.
Inheritance offers a solution to both modification problem posed
by abstract data type and the program organization problem.
If a new abstract data type can inherit the data and functionality
of some existing type, and is also allowed to modify some of those
Entities and add new entities, reuse is greatly facilitated without
changes
to the reused data type.
The abstract data types in OOP, following the lead of SIMULA 67,
are usually called classes. As with instances of abstract data types,
Class instances are called objects. A class that is defined through
Inheritance from another class is a derived class or subclass.
A class from which the new class is derived is its parent class or
superclass.
The sub-programs that define the operations on objects of a class are
Called methods. The calls to methods are often called messages.
The entire collection of methods of an objects is called the
message protocol, or message interface, of the object.
A modified method has the same name. and often the same protocol,
As the one of which it is a modification. The new method
is said to override the inherited version, which is then called
an overriden method. The most common purpose of an overriding
method
Is to provide an operation that is specific for objects of the derived class
but is not appropriate for objects of the parent class.
classes can have two kinds of methods and variables.
The most commonly used methods and variables are called instance
methods
And variables. Every object of a class has its own set of instance
variables,
which store the objects state. The only difference between two objects
of
the same class is the state of their instance variables. Instance methods
operate only on the objects of the class. Class variables belong
to the class, rather than its object, so there only one copy for the class.
Class methods can perform operations on the class, and possibly also
on the objects of the class.
If a new class is a subclass of a single parent class, then the
Derivation process is called single inheritance. If a class has more
than one parent class, the process is called multiple inheritance.
When a number of classes are related through single inheritance,
their relationships to each other can be shown in a derivation tree.
The class relationship in a multiple inheritance can be
shown in a derivation graph.
One disadvantage of inheritance as a means
Of increasing the possibility of reuse is that it creates a dependency
Among the classes in an inheritance hierarchy.
Polymorphism and Dynamic Binding
3rd
characteristics of OOP language is a kind of polymorphism
provided by the dynamic binding of messages to method
definitions.
This is supported by allowing one to define polymorphic
variables of the type of the parent class that are also
able to reference objects of any of the subclass of that class.
The parent class can define a method that is overridden by its
subclass.
Virtual method, any class that includes at least one virtual
method is called a virtual class. Such as class cannot be
instantiated because not all of its methods have bodies.
Computing with an OOPComputing with an OOP
languagelanguage
 All computing in pure OOP language is done by the same uniformAll computing in pure OOP language is done by the same uniform
technique: sending a message to an object to invoke one of itstechnique: sending a message to an object to invoke one of its
methods. A reply to a message is an object that returns the valuemethods. A reply to a message is an object that returns the value
of the computation of the method.of the computation of the method.
 An executing program in an object-oriented language can beAn executing program in an object-oriented language can be
described as a simulation of a collection of computers (objects)described as a simulation of a collection of computers (objects)
that communicate with each other through messages.that communicate with each other through messages.
 In addition, objects can send and receive messages. In essence,In addition, objects can send and receive messages. In essence,
those are the fundamental capabilities of computers: to store andthose are the fundamental capabilities of computers: to store and
manipulate data and to communicate.manipulate data and to communicate.
 The essence of object-oriented programming is solving problemsThe essence of object-oriented programming is solving problems
by identifying the real-world objects of the problem and theby identifying the real-world objects of the problem and the
processing required of those objects, and then creatingprocessing required of those objects, and then creating
simulations of those objects, their processes, and the requiredsimulations of those objects, their processes, and the required
communications between the objects.communications between the objects.
Design Issues for Object-Design Issues for Object-
Oriented LanguagesOriented Languages
The Exclusivity of ObjectsThe Exclusivity of Objects
A language designer who is totally committed to the object model ofA language designer who is totally committed to the object model of
computation designs an object system that absorbs all other concepts ofcomputation designs an object system that absorbs all other concepts of
type. The advantage of this choice is the elegant and pure uniformity of thetype. The advantage of this choice is the elegant and pure uniformity of the
language and its use. The primary disadvantage is that simple operationslanguage and its use. The primary disadvantage is that simple operations
must be done through the message-passing process which often makesmust be done through the message-passing process which often makes
them slower than similar operations in an imperative model, wherethem slower than similar operations in an imperative model, where
machine instructions implement such simple operations. One alternative tomachine instructions implement such simple operations. One alternative to
the exclusive use of objects that is common in imperative languages tothe exclusive use of objects that is common in imperative languages to
which support for object-oriented programming has been added is to retainwhich support for object-oriented programming has been added is to retain
a complete imperative typing model and simply add the object model. Thisa complete imperative typing model and simply add the object model. This
result in a larger languages whose type structure is confusing to all butresult in a larger languages whose type structure is confusing to all but
expert users.expert users.
Another alternative to the exclusive use of objects is to have anAnother alternative to the exclusive use of objects is to have an
imperative-style type structure for the primitive scalar types. This providesimperative-style type structure for the primitive scalar types. This provides
the speed of operations on primitive values that is comparable to thosethe speed of operations on primitive values that is comparable to those
expected in the imperative model. Thisexpected in the imperative model. This alternative subclasses access to thealternative subclasses access to the
“hidden” part of the parent class makes the subclass dependent on those“hidden” part of the parent class makes the subclass dependent on those
details.details.
On the other hand, keeping the implementation part of the parent class
hidden from the subclasses can cause inefficiencies in the execution of the
instances of those subclasses. This can be caused by the difference in
efficiency of having direct access to data structures versus requiring access
through the operations defined in the parent class. However, if the language
designer has chosen interface inheritance, this code would look something
like
int second ( ) {
int temp = top ( ) ;
pop ( ) ;
int temp_result = top ( ) ;
push (temp) ;
return temp_result;
}
This is clearly a slower process than the direct access to the second element
from the top of the stack. The best solution for the language designer is to
provide both implementation and interface inheritance options to the
software designer and let him or her decide, on a case-by-case basis, which
version is better.
Type Checking and PolymorphismType Checking and Polymorphism
 Polymorphism in the object-oriented realm is defined to be the use of aPolymorphism in the object-oriented realm is defined to be the use of a
polymorphic pointer or reference to access a method whose name ispolymorphic pointer or reference to access a method whose name is
overridden in the class hierarchy that defines the object to which the pointeroverridden in the class hierarchy that defines the object to which the pointer
or reference is defined to point.or reference is defined to point.
 The Polymorphic Variable is the type of class, and the parent class defines atThe Polymorphic Variable is the type of class, and the parent class defines at
least the protocol of a method that is overridden by the derived classes. It canleast the protocol of a method that is overridden by the derived classes. It can
reference objects of the parent class and the derived classes, so the class of thereference objects of the parent class and the derived classes, so the class of the
object to which it points cannot always be statically determined. The issue hereobject to which it points cannot always be statically determined. The issue here
is when the type checking of this binding takes place.is when the type checking of this binding takes place.
 This issue is an important one, for it aligns with the fundamental nature of theThis issue is an important one, for it aligns with the fundamental nature of the
programming language.programming language.
 The use of Multiple Inheritance can easily lead to complex programThe use of Multiple Inheritance can easily lead to complex program
organizations. Maintenance of system that use multiple inheritance can be aorganizations. Maintenance of system that use multiple inheritance can be a
more serious problem, for multiple inheritance leads to more complexmore serious problem, for multiple inheritance leads to more complex
dependencies among classes. It is not clear to some that the benefits of multipledependencies among classes. It is not clear to some that the benefits of multiple
inheritance are worth the added effort to design and maintain a system usinginheritance are worth the added effort to design and maintain a system using
it.it.
Allocation and Deallocation ofAllocation and Deallocation of
ObjectsObjects
 There are two design questions concerning the allocation andThere are two design questions concerning the allocation and
deallocation of objects.deallocation of objects.
 The first of these is the place from which objects are allocated. IfThe first of these is the place from which objects are allocated. If
they behave like the abstract data types, then perhaps they can bethey behave like the abstract data types, then perhaps they can be
allocated from anywhere. This means they could be staticallyallocated from anywhere. This means they could be statically
allocated by the compiler, allocated as stack-dynamic objects fromallocated by the compiler, allocated as stack-dynamic objects from
the run-time stack, or explicitly created on the heap with anthe run-time stack, or explicitly created on the heap with an
operator or function such as new.operator or function such as new.
 The second question here is concerned with those cases whereThe second question here is concerned with those cases where
objects are alloctated from the heap. The question is whetherobjects are alloctated from the heap. The question is whether
deallocation is implicit or explicit or both. If deallocation isdeallocation is implicit or explicit or both. If deallocation is
implicit, some implicit method of storage reclamation is required,implicit, some implicit method of storage reclamation is required,
such as reference counters or the garbage collection. If allocationsuch as reference counters or the garbage collection. If allocation
can be explicit, that raises the issue of whether dangling pointerscan be explicit, that raises the issue of whether dangling pointers
or reference can be created.or reference can be created.
Dynamic and Static BindingDynamic and Static Binding
 The question here is whether all binding ofThe question here is whether all binding of
messages to methods is dynamic. Themessages to methods is dynamic. The
alternative is to allow the user to specifyalternative is to allow the user to specify
whether a specific binding is to bewhether a specific binding is to be
dynamic or static. The advantage of this isdynamic or static. The advantage of this is
that static bindings are faster. So ifthat static bindings are faster. So if
binding need not be dynamic, why paybinding need not be dynamic, why pay
price?price?
Support for OOP in javaSupport for OOP in java
 As with c++, java does not use objects exclusively. However, in java onlyAs with c++, java does not use objects exclusively. However, in java only
values of the primitive scalar types ( Boolean, character and the numeric)values of the primitive scalar types ( Boolean, character and the numeric)
are not objects. Java has no enumeration or record types, and its arraysare not objects. Java has no enumeration or record types, and its arrays
are objects. The reason to have nonobjects is efficiency. However, having aare objects. The reason to have nonobjects is efficiency. However, having a
two type systems leads to some cumbersome situations. One of these intwo type systems leads to some cumbersome situations. One of these in
java is that the predefined data structure Vector can only contain objects.java is that the predefined data structure Vector can only contain objects.
So if you want to put a primitive type value into a Vector object, the valueSo if you want to put a primitive type value into a Vector object, the value
must first be placed in an object. This can be done by creating a new objectmust first be placed in an object. This can be done by creating a new object
of the wrapper class for the primitive type. Such class has an instanceof the wrapper class for the primitive type. Such class has an instance
variable of that primitive type and a constructor that takes a value of thevariable of that primitive type and a constructor that takes a value of the
primitive type as a parameter and assigns it to its instance variable.primitive type as a parameter and assigns it to its instance variable.
 Whereas c++ classes can be defined to have no parent, that is not possibleWhereas c++ classes can be defined to have no parent, that is not possible
in java. All java classes must be subclass of the root class, object, or somein java. All java classes must be subclass of the root class, object, or some
class is that there are some operations that are universally needed. All javaclass is that there are some operations that are universally needed. All java
objects are explicit heap dynamic. Most are allocated with the NEWobjects are explicit heap dynamic. Most are allocated with the NEW
operator.operator.
InheritanceInheritance
 Java supports only single inheritance. However, it includes a kind of virtualJava supports only single inheritance. However, it includes a kind of virtual
class, called in interface, which provides aversion of multiple inheritance.class, called in interface, which provides aversion of multiple inheritance.
An interface definition is similar to a class definition, except that it canAn interface definition is similar to a class definition, except that it can
contain named constants and method declaration. It defines only thecontain named constants and method declaration. It defines only the
specification of a class. The typical use of an interface is to define a classspecification of a class. The typical use of an interface is to define a class
that inherits both some of the methods and variables from its parent class,that inherits both some of the methods and variables from its parent class,
and also implements a parent interface.and also implements a parent interface.
 Applets are programs that are interpreted by a World Wide Web browserApplets are programs that are interpreted by a World Wide Web browser
after being downloaded from a Web server. These applets all need certainafter being downloaded from a Web server. These applets all need certain
capabilities, which they can inherit from the predefined class, applet. Thiscapabilities, which they can inherit from the predefined class, applet. This
concurrency is supported by a predefined class named thread. But javaconcurrency is supported by a predefined class named thread. But java
includes a predefined interface named runnable that supplies the interfaceincludes a predefined interface named runnable that supplies the interface
(but not the implementation) to one of the methods of Thread. The syntax(but not the implementation) to one of the methods of Thread. The syntax
of the header of such an applet is exemplified by :of the header of such an applet is exemplified by :
public class Clock extends Applet implements Runnable.public class Clock extends Applet implements Runnable.
 In java, a method can be defined to be final, which means that it can not beIn java, a method can be defined to be final, which means that it can not be
overriden in any descendant class. When the final reserved word isoverriden in any descendant class. When the final reserved word is
specified on a class definition, it means the class cannot be the parent ofspecified on a class definition, it means the class cannot be the parent of
any subclass.any subclass.
EncapsulationEncapsulation
2 Kinds of encapsulation :2 Kinds of encapsulation :
 Package- is a logical, rather than a physical, encapsulation: Any classPackage- is a logical, rather than a physical, encapsulation: Any class
definition can specify that it belongs in a particular package.definition can specify that it belongs in a particular package.
 Classes- a class that does not specify a package name is placed in anClasses- a class that does not specify a package name is placed in an
unnamed package.unnamed package.
 A Package creates a new name space. Any method or variable thatA Package creates a new name space. Any method or variable that
does not include an access modifier (private, protected, or public) hasdoes not include an access modifier (private, protected, or public) has
what is called Package Scope. This is an expansion of the definition ofwhat is called Package Scope. This is an expansion of the definition of
protected as used in C++, in which protected members are visible onlyprotected as used in C++, in which protected members are visible only
in the class where they are defined and in subclasses of that class. It isin the class where they are defined and in subclasses of that class. It is
an alternative to the friends of C++, which are meant to provide accessan alternative to the friends of C++, which are meant to provide access
to private methods and instance variables in class to other specifiedto private methods and instance variables in class to other specified
methods or classes. In effect, all non-private variables and methods ofmethods or classes. In effect, all non-private variables and methods of
all the classes in a package areall the classes in a package are friends.friends.
EvaluationEvaluation
 Java’s design for supporting object-orientedJava’s design for supporting object-oriented
programming is similar to that of C++, but differsprogramming is similar to that of C++, but differs
from it in several significant ways. In keeping withfrom it in several significant ways. In keeping with
its consistent adherence to object-orientedits consistent adherence to object-oriented
principles, as in its lack of functions, Java does notprinciples, as in its lack of functions, Java does not
allow parentless classes. It also uses dynamicallow parentless classes. It also uses dynamic
binding as the “normal” approach to bind methodbinding as the “normal” approach to bind method
calls to method definitions.calls to method definitions.

More Related Content

What's hot

1 unit (oops)
1 unit (oops)1 unit (oops)
1 unit (oops)Jay Patel
 
Introduction to oops concepts
Introduction to oops conceptsIntroduction to oops concepts
Introduction to oops conceptsNilesh Dalvi
 
Principal of objected oriented programming
Principal of objected oriented programming Principal of objected oriented programming
Principal of objected oriented programming Rokonuzzaman Rony
 
Introduction to oop
Introduction to oop Introduction to oop
Introduction to oop Kumar
 
Introduction to oop
Introduction to oopIntroduction to oop
Introduction to oopcolleges
 
Object-oriented Programming in Python
Object-oriented Programming in PythonObject-oriented Programming in Python
Object-oriented Programming in PythonJuan-Manuel Gimeno
 
Object oriented programming in python
Object oriented programming in pythonObject oriented programming in python
Object oriented programming in pythonnitamhaske
 
Need of object oriented programming
Need of object oriented programmingNeed of object oriented programming
Need of object oriented programmingAmar Jukuntla
 
Lecture01 object oriented-programming
Lecture01 object oriented-programmingLecture01 object oriented-programming
Lecture01 object oriented-programmingHariz Mustafa
 
Oops concept in c++ unit 3 -topic 4
Oops concept in c++ unit 3 -topic 4Oops concept in c++ unit 3 -topic 4
Oops concept in c++ unit 3 -topic 4MOHIT TOMAR
 
principle of oop’s in cpp
principle of oop’s in cppprinciple of oop’s in cpp
principle of oop’s in cppgourav kottawar
 

What's hot (20)

Research paper
Research paperResearch paper
Research paper
 
1 unit (oops)
1 unit (oops)1 unit (oops)
1 unit (oops)
 
Introduction to oops concepts
Introduction to oops conceptsIntroduction to oops concepts
Introduction to oops concepts
 
Principal of objected oriented programming
Principal of objected oriented programming Principal of objected oriented programming
Principal of objected oriented programming
 
Introduction to oop
Introduction to oop Introduction to oop
Introduction to oop
 
Oops
OopsOops
Oops
 
Oop basic overview
Oop basic overviewOop basic overview
Oop basic overview
 
Introduction to oop
Introduction to oopIntroduction to oop
Introduction to oop
 
Java chapter 3
Java   chapter 3Java   chapter 3
Java chapter 3
 
Object-oriented Programming in Python
Object-oriented Programming in PythonObject-oriented Programming in Python
Object-oriented Programming in Python
 
Object oriented programming in python
Object oriented programming in pythonObject oriented programming in python
Object oriented programming in python
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
2 Object Oriented Programming
2 Object Oriented Programming2 Object Oriented Programming
2 Object Oriented Programming
 
OOPS_Unit_1
OOPS_Unit_1OOPS_Unit_1
OOPS_Unit_1
 
Need of object oriented programming
Need of object oriented programmingNeed of object oriented programming
Need of object oriented programming
 
Lecture01 object oriented-programming
Lecture01 object oriented-programmingLecture01 object oriented-programming
Lecture01 object oriented-programming
 
Oops concept in c++ unit 3 -topic 4
Oops concept in c++ unit 3 -topic 4Oops concept in c++ unit 3 -topic 4
Oops concept in c++ unit 3 -topic 4
 
principle of oop’s in cpp
principle of oop’s in cppprinciple of oop’s in cpp
principle of oop’s in cpp
 
OOP
OOPOOP
OOP
 
concept of oops
concept of oopsconcept of oops
concept of oops
 

Viewers also liked

Introduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingIntroduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingKulari Lokuge
 
Class & Object - Intro
Class & Object - IntroClass & Object - Intro
Class & Object - IntroPRN USM
 
An Introduction to Object Oriented Programming
An Introduction to Object Oriented ProgrammingAn Introduction to Object Oriented Programming
An Introduction to Object Oriented Programmingadil raja
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programmingMH Abid
 
Introduction to Object-Oriented Programming & Design Principles (TCF 2014)
Introduction to Object-Oriented Programming & Design Principles (TCF 2014)Introduction to Object-Oriented Programming & Design Principles (TCF 2014)
Introduction to Object-Oriented Programming & Design Principles (TCF 2014)Michael Redlich
 
the Concept of Object-Oriented Programming
the Concept of Object-Oriented Programmingthe Concept of Object-Oriented Programming
the Concept of Object-Oriented ProgrammingAida Ramlan II
 
OOP->A Bird's-eye view
OOP->A Bird's-eye viewOOP->A Bird's-eye view
OOP->A Bird's-eye viewSaugata Bose
 
itft-Fundamentals of object–oriented programming in java
itft-Fundamentals of object–oriented programming in javaitft-Fundamentals of object–oriented programming in java
itft-Fundamentals of object–oriented programming in javaAtul Sehdev
 
PHP - Introduction to Object Oriented Programming with PHP
PHP -  Introduction to  Object Oriented Programming with PHPPHP -  Introduction to  Object Oriented Programming with PHP
PHP - Introduction to Object Oriented Programming with PHPVibrant Technologies & Computers
 
An Introduction to Object-Oriented Programming (DrupalCamp North 2015)
An Introduction to Object-Oriented Programming (DrupalCamp North 2015)An Introduction to Object-Oriented Programming (DrupalCamp North 2015)
An Introduction to Object-Oriented Programming (DrupalCamp North 2015)Bart Feenstra
 
Chapter1 - Introduction to Object-Oriented Programming and Software Development
Chapter1 - Introduction to Object-Oriented Programming and Software DevelopmentChapter1 - Introduction to Object-Oriented Programming and Software Development
Chapter1 - Introduction to Object-Oriented Programming and Software DevelopmentEduardo Bergavera
 
Object Oriented Programming in Java _lecture 1
Object Oriented Programming in Java _lecture 1Object Oriented Programming in Java _lecture 1
Object Oriented Programming in Java _lecture 1Mahmoud Alfarra
 
#OOP_D_ITS - 1st - Introduction To Object Oriented Programming
#OOP_D_ITS - 1st - Introduction To Object Oriented Programming#OOP_D_ITS - 1st - Introduction To Object Oriented Programming
#OOP_D_ITS - 1st - Introduction To Object Oriented ProgrammingHadziq Fabroyir
 
Introduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingIntroduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingMoutaz Haddara
 

Viewers also liked (17)

Introduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingIntroduction to Object Oriented Programming
Introduction to Object Oriented Programming
 
Oop 2
Oop 2Oop 2
Oop 2
 
D2 Object Oriented Programming
D2 Object Oriented ProgrammingD2 Object Oriented Programming
D2 Object Oriented Programming
 
Class & Object - Intro
Class & Object - IntroClass & Object - Intro
Class & Object - Intro
 
An Introduction to Object Oriented Programming
An Introduction to Object Oriented ProgrammingAn Introduction to Object Oriented Programming
An Introduction to Object Oriented Programming
 
Object oriented programming
Object oriented programmingObject oriented programming
Object oriented programming
 
Introduction to Object-Oriented Programming & Design Principles (TCF 2014)
Introduction to Object-Oriented Programming & Design Principles (TCF 2014)Introduction to Object-Oriented Programming & Design Principles (TCF 2014)
Introduction to Object-Oriented Programming & Design Principles (TCF 2014)
 
the Concept of Object-Oriented Programming
the Concept of Object-Oriented Programmingthe Concept of Object-Oriented Programming
the Concept of Object-Oriented Programming
 
OOP->A Bird's-eye view
OOP->A Bird's-eye viewOOP->A Bird's-eye view
OOP->A Bird's-eye view
 
itft-Fundamentals of object–oriented programming in java
itft-Fundamentals of object–oriented programming in javaitft-Fundamentals of object–oriented programming in java
itft-Fundamentals of object–oriented programming in java
 
PHP - Introduction to Object Oriented Programming with PHP
PHP -  Introduction to  Object Oriented Programming with PHPPHP -  Introduction to  Object Oriented Programming with PHP
PHP - Introduction to Object Oriented Programming with PHP
 
An Introduction to Object-Oriented Programming (DrupalCamp North 2015)
An Introduction to Object-Oriented Programming (DrupalCamp North 2015)An Introduction to Object-Oriented Programming (DrupalCamp North 2015)
An Introduction to Object-Oriented Programming (DrupalCamp North 2015)
 
Chapter1 - Introduction to Object-Oriented Programming and Software Development
Chapter1 - Introduction to Object-Oriented Programming and Software DevelopmentChapter1 - Introduction to Object-Oriented Programming and Software Development
Chapter1 - Introduction to Object-Oriented Programming and Software Development
 
Object Oriented Programming in Java _lecture 1
Object Oriented Programming in Java _lecture 1Object Oriented Programming in Java _lecture 1
Object Oriented Programming in Java _lecture 1
 
#OOP_D_ITS - 1st - Introduction To Object Oriented Programming
#OOP_D_ITS - 1st - Introduction To Object Oriented Programming#OOP_D_ITS - 1st - Introduction To Object Oriented Programming
#OOP_D_ITS - 1st - Introduction To Object Oriented Programming
 
Introduction to Object Oriented Programming
Introduction to Object Oriented ProgrammingIntroduction to Object Oriented Programming
Introduction to Object Oriented Programming
 
Oops ppt
Oops pptOops ppt
Oops ppt
 

Similar to Oop by edgar lagman jr

Oops concepts || Object Oriented Programming Concepts in Java
Oops concepts || Object Oriented Programming Concepts in JavaOops concepts || Object Oriented Programming Concepts in Java
Oops concepts || Object Oriented Programming Concepts in JavaMadishetty Prathibha
 
A Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docxA Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docxdaniahendric
 
oopsinvb-191021101327.pdf
oopsinvb-191021101327.pdfoopsinvb-191021101327.pdf
oopsinvb-191021101327.pdfJP Chicano
 
Evolution Of Object Oriented Technology
Evolution Of Object Oriented TechnologyEvolution Of Object Oriented Technology
Evolution Of Object Oriented TechnologySharon Roberts
 
A Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And RlbpA Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And RlbpRikki Wright
 
OBJECT ORIENTED PROGRAMMING.docx
OBJECT ORIENTED PROGRAMMING.docxOBJECT ORIENTED PROGRAMMING.docx
OBJECT ORIENTED PROGRAMMING.docxAleKi2
 
Object oriented software engineering concepts
Object oriented software engineering conceptsObject oriented software engineering concepts
Object oriented software engineering conceptsKomal Singh
 
M.c.a. (sem iv)- java programming
M.c.a. (sem   iv)- java programmingM.c.a. (sem   iv)- java programming
M.c.a. (sem iv)- java programmingPraveen Chowdary
 
1 intro
1 intro1 intro
1 introabha48
 
Basic OOPS concept for Core JAVA
Basic OOPS concept for Core JAVABasic OOPS concept for Core JAVA
Basic OOPS concept for Core JAVAAnkita Totala
 
NLP_A Chat-Bot_answering_queries_of_UT-Dallas_Students
NLP_A Chat-Bot_answering_queries_of_UT-Dallas_StudentsNLP_A Chat-Bot_answering_queries_of_UT-Dallas_Students
NLP_A Chat-Bot_answering_queries_of_UT-Dallas_StudentsHimanshu kandwal
 

Similar to Oop by edgar lagman jr (20)

Oop
OopOop
Oop
 
Oop basic concepts
Oop basic conceptsOop basic concepts
Oop basic concepts
 
Chapter1 introduction
Chapter1 introductionChapter1 introduction
Chapter1 introduction
 
Oops concepts || Object Oriented Programming Concepts in Java
Oops concepts || Object Oriented Programming Concepts in JavaOops concepts || Object Oriented Programming Concepts in Java
Oops concepts || Object Oriented Programming Concepts in Java
 
A Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docxA Survey of Object Oriented Programming LanguagesMaya Hris.docx
A Survey of Object Oriented Programming LanguagesMaya Hris.docx
 
oopsinvb-191021101327.pdf
oopsinvb-191021101327.pdfoopsinvb-191021101327.pdf
oopsinvb-191021101327.pdf
 
Oops in vb
Oops in vbOops in vb
Oops in vb
 
Evolution Of Object Oriented Technology
Evolution Of Object Oriented TechnologyEvolution Of Object Oriented Technology
Evolution Of Object Oriented Technology
 
A Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And RlbpA Strong Object Recognition Using Lbp, Ltp And Rlbp
A Strong Object Recognition Using Lbp, Ltp And Rlbp
 
OBJECT ORIENTED PROGRAMMING.docx
OBJECT ORIENTED PROGRAMMING.docxOBJECT ORIENTED PROGRAMMING.docx
OBJECT ORIENTED PROGRAMMING.docx
 
Object oriented software engineering concepts
Object oriented software engineering conceptsObject oriented software engineering concepts
Object oriented software engineering concepts
 
Object oriented concepts
Object oriented conceptsObject oriented concepts
Object oriented concepts
 
M.c.a. (sem iv)- java programming
M.c.a. (sem   iv)- java programmingM.c.a. (sem   iv)- java programming
M.c.a. (sem iv)- java programming
 
1 intro
1 intro1 intro
1 intro
 
Basic OOPS concept for Core JAVA
Basic OOPS concept for Core JAVABasic OOPS concept for Core JAVA
Basic OOPS concept for Core JAVA
 
OOP Java
OOP JavaOOP Java
OOP Java
 
chapter - 1.ppt
chapter - 1.pptchapter - 1.ppt
chapter - 1.ppt
 
M.c.a (sem iii) paper - i - object oriented programming
M.c.a (sem   iii) paper - i - object oriented programmingM.c.a (sem   iii) paper - i - object oriented programming
M.c.a (sem iii) paper - i - object oriented programming
 
NLP_A Chat-Bot_answering_queries_of_UT-Dallas_Students
NLP_A Chat-Bot_answering_queries_of_UT-Dallas_StudentsNLP_A Chat-Bot_answering_queries_of_UT-Dallas_Students
NLP_A Chat-Bot_answering_queries_of_UT-Dallas_Students
 
Unit 1
Unit 1Unit 1
Unit 1
 

Oop by edgar lagman jr

  • 2. INTRODUCTION Languages that support OOP are firmly entrenched in the mainstream. From COBOL to LISP c++, Ada 95, and CLOS, an OOP version of LISP. C++ and Ada 95 support procedural- and data-oriented programming, CLOS also supports funcitonal programming. Some of the newer languages that were designed to support object-oriented programming do not support other programming paradigms, but still employ some of the basic structures and have the appearance of the older imperative languages. Among these are Eiffel and Java. Smalltalk was the first language to offer complete support for object-oriented programming. This is inheritance, which is at the center of object-oriented programming and the languages that support it.
  • 3. Object-Oriented ProgrammingINTRODUCTIONINTRODUCTION The concept ofThe concept of object-oriented programmingobject-oriented programming has its roots in SIMULAhas its roots in SIMULA 67 but was not fully developed until the evolution of Smalltalk67 but was not fully developed until the evolution of Smalltalk resulted in producing Smalltalk 80 (in1980, of course).resulted in producing Smalltalk 80 (in1980, of course). Three key languages:Three key languages: -abstract data types-abstract data types -inheritance-inheritance -a particular kind of dynamic binding-a particular kind of dynamic binding Procedure-oriented programming focuses on subprograms andProcedure-oriented programming focuses on subprograms and subprogram libraries. Data-oriented programming focuses onsubprogram libraries. Data-oriented programming focuses on abstract data types. The Sorting process is enacted by calling thatabstract data types. The Sorting process is enacted by calling that operation on the specific array object. The data-orientedoperation on the specific array object. The data-oriented programming paradigm was popular in the 1980s, and it servedprogramming paradigm was popular in the 1980s, and it served by the data abstraction facilities of Modula-2, Ada, and severalby the data abstraction facilities of Modula-2, Ada, and several more recent languages.more recent languages. Object-basedObject-based languages are the languageslanguages are the languages that support data-oriented programming.that support data-oriented programming.
  • 4. INHERITANCEINHERITANCE  By the middle to late 1980s, it became apparent to many softwareBy the middle to late 1980s, it became apparent to many software developers that one of the best opportunities for increaseddevelopers that one of the best opportunities for increased productivity in their profession was in software reuse.productivity in their profession was in software reuse. AbstractAbstract data types, with theirdata types, with their encapsulation and access controls,encapsulation and access controls, were obviously the units to be reused. The problem with the reusewere obviously the units to be reused. The problem with the reuse of abstract data types is that, nearly all cases, the features andof abstract data types is that, nearly all cases, the features and capabilities of the existing type are not quite right for the new use.capabilities of the existing type are not quite right for the new use. Second problem is with data-oriented programming is that allSecond problem is with data-oriented programming is that all abstract data type definitions are independent and are at the sameabstract data type definitions are independent and are at the same level. This often makes it impossible to structure a program to fitlevel. This often makes it impossible to structure a program to fit the problem space being addressed by the program.the problem space being addressed by the program.
  • 5. Inheritance offers a solution to both modification problem posed by abstract data type and the program organization problem. If a new abstract data type can inherit the data and functionality of some existing type, and is also allowed to modify some of those Entities and add new entities, reuse is greatly facilitated without changes to the reused data type. The abstract data types in OOP, following the lead of SIMULA 67, are usually called classes. As with instances of abstract data types, Class instances are called objects. A class that is defined through Inheritance from another class is a derived class or subclass. A class from which the new class is derived is its parent class or superclass. The sub-programs that define the operations on objects of a class are Called methods. The calls to methods are often called messages. The entire collection of methods of an objects is called the message protocol, or message interface, of the object.
  • 6. A modified method has the same name. and often the same protocol, As the one of which it is a modification. The new method is said to override the inherited version, which is then called an overriden method. The most common purpose of an overriding method Is to provide an operation that is specific for objects of the derived class but is not appropriate for objects of the parent class. classes can have two kinds of methods and variables. The most commonly used methods and variables are called instance methods And variables. Every object of a class has its own set of instance variables, which store the objects state. The only difference between two objects of the same class is the state of their instance variables. Instance methods operate only on the objects of the class. Class variables belong to the class, rather than its object, so there only one copy for the class. Class methods can perform operations on the class, and possibly also on the objects of the class.
  • 7. If a new class is a subclass of a single parent class, then the Derivation process is called single inheritance. If a class has more than one parent class, the process is called multiple inheritance. When a number of classes are related through single inheritance, their relationships to each other can be shown in a derivation tree. The class relationship in a multiple inheritance can be shown in a derivation graph. One disadvantage of inheritance as a means Of increasing the possibility of reuse is that it creates a dependency Among the classes in an inheritance hierarchy.
  • 8. Polymorphism and Dynamic Binding 3rd characteristics of OOP language is a kind of polymorphism provided by the dynamic binding of messages to method definitions. This is supported by allowing one to define polymorphic variables of the type of the parent class that are also able to reference objects of any of the subclass of that class. The parent class can define a method that is overridden by its subclass. Virtual method, any class that includes at least one virtual method is called a virtual class. Such as class cannot be instantiated because not all of its methods have bodies.
  • 9. Computing with an OOPComputing with an OOP languagelanguage  All computing in pure OOP language is done by the same uniformAll computing in pure OOP language is done by the same uniform technique: sending a message to an object to invoke one of itstechnique: sending a message to an object to invoke one of its methods. A reply to a message is an object that returns the valuemethods. A reply to a message is an object that returns the value of the computation of the method.of the computation of the method.  An executing program in an object-oriented language can beAn executing program in an object-oriented language can be described as a simulation of a collection of computers (objects)described as a simulation of a collection of computers (objects) that communicate with each other through messages.that communicate with each other through messages.  In addition, objects can send and receive messages. In essence,In addition, objects can send and receive messages. In essence, those are the fundamental capabilities of computers: to store andthose are the fundamental capabilities of computers: to store and manipulate data and to communicate.manipulate data and to communicate.  The essence of object-oriented programming is solving problemsThe essence of object-oriented programming is solving problems by identifying the real-world objects of the problem and theby identifying the real-world objects of the problem and the processing required of those objects, and then creatingprocessing required of those objects, and then creating simulations of those objects, their processes, and the requiredsimulations of those objects, their processes, and the required communications between the objects.communications between the objects.
  • 10. Design Issues for Object-Design Issues for Object- Oriented LanguagesOriented Languages The Exclusivity of ObjectsThe Exclusivity of Objects A language designer who is totally committed to the object model ofA language designer who is totally committed to the object model of computation designs an object system that absorbs all other concepts ofcomputation designs an object system that absorbs all other concepts of type. The advantage of this choice is the elegant and pure uniformity of thetype. The advantage of this choice is the elegant and pure uniformity of the language and its use. The primary disadvantage is that simple operationslanguage and its use. The primary disadvantage is that simple operations must be done through the message-passing process which often makesmust be done through the message-passing process which often makes them slower than similar operations in an imperative model, wherethem slower than similar operations in an imperative model, where machine instructions implement such simple operations. One alternative tomachine instructions implement such simple operations. One alternative to the exclusive use of objects that is common in imperative languages tothe exclusive use of objects that is common in imperative languages to which support for object-oriented programming has been added is to retainwhich support for object-oriented programming has been added is to retain a complete imperative typing model and simply add the object model. Thisa complete imperative typing model and simply add the object model. This result in a larger languages whose type structure is confusing to all butresult in a larger languages whose type structure is confusing to all but expert users.expert users. Another alternative to the exclusive use of objects is to have anAnother alternative to the exclusive use of objects is to have an imperative-style type structure for the primitive scalar types. This providesimperative-style type structure for the primitive scalar types. This provides the speed of operations on primitive values that is comparable to thosethe speed of operations on primitive values that is comparable to those expected in the imperative model. Thisexpected in the imperative model. This alternative subclasses access to thealternative subclasses access to the “hidden” part of the parent class makes the subclass dependent on those“hidden” part of the parent class makes the subclass dependent on those details.details.
  • 11. On the other hand, keeping the implementation part of the parent class hidden from the subclasses can cause inefficiencies in the execution of the instances of those subclasses. This can be caused by the difference in efficiency of having direct access to data structures versus requiring access through the operations defined in the parent class. However, if the language designer has chosen interface inheritance, this code would look something like int second ( ) { int temp = top ( ) ; pop ( ) ; int temp_result = top ( ) ; push (temp) ; return temp_result; } This is clearly a slower process than the direct access to the second element from the top of the stack. The best solution for the language designer is to provide both implementation and interface inheritance options to the software designer and let him or her decide, on a case-by-case basis, which version is better.
  • 12. Type Checking and PolymorphismType Checking and Polymorphism  Polymorphism in the object-oriented realm is defined to be the use of aPolymorphism in the object-oriented realm is defined to be the use of a polymorphic pointer or reference to access a method whose name ispolymorphic pointer or reference to access a method whose name is overridden in the class hierarchy that defines the object to which the pointeroverridden in the class hierarchy that defines the object to which the pointer or reference is defined to point.or reference is defined to point.  The Polymorphic Variable is the type of class, and the parent class defines atThe Polymorphic Variable is the type of class, and the parent class defines at least the protocol of a method that is overridden by the derived classes. It canleast the protocol of a method that is overridden by the derived classes. It can reference objects of the parent class and the derived classes, so the class of thereference objects of the parent class and the derived classes, so the class of the object to which it points cannot always be statically determined. The issue hereobject to which it points cannot always be statically determined. The issue here is when the type checking of this binding takes place.is when the type checking of this binding takes place.  This issue is an important one, for it aligns with the fundamental nature of theThis issue is an important one, for it aligns with the fundamental nature of the programming language.programming language.  The use of Multiple Inheritance can easily lead to complex programThe use of Multiple Inheritance can easily lead to complex program organizations. Maintenance of system that use multiple inheritance can be aorganizations. Maintenance of system that use multiple inheritance can be a more serious problem, for multiple inheritance leads to more complexmore serious problem, for multiple inheritance leads to more complex dependencies among classes. It is not clear to some that the benefits of multipledependencies among classes. It is not clear to some that the benefits of multiple inheritance are worth the added effort to design and maintain a system usinginheritance are worth the added effort to design and maintain a system using it.it.
  • 13. Allocation and Deallocation ofAllocation and Deallocation of ObjectsObjects  There are two design questions concerning the allocation andThere are two design questions concerning the allocation and deallocation of objects.deallocation of objects.  The first of these is the place from which objects are allocated. IfThe first of these is the place from which objects are allocated. If they behave like the abstract data types, then perhaps they can bethey behave like the abstract data types, then perhaps they can be allocated from anywhere. This means they could be staticallyallocated from anywhere. This means they could be statically allocated by the compiler, allocated as stack-dynamic objects fromallocated by the compiler, allocated as stack-dynamic objects from the run-time stack, or explicitly created on the heap with anthe run-time stack, or explicitly created on the heap with an operator or function such as new.operator or function such as new.  The second question here is concerned with those cases whereThe second question here is concerned with those cases where objects are alloctated from the heap. The question is whetherobjects are alloctated from the heap. The question is whether deallocation is implicit or explicit or both. If deallocation isdeallocation is implicit or explicit or both. If deallocation is implicit, some implicit method of storage reclamation is required,implicit, some implicit method of storage reclamation is required, such as reference counters or the garbage collection. If allocationsuch as reference counters or the garbage collection. If allocation can be explicit, that raises the issue of whether dangling pointerscan be explicit, that raises the issue of whether dangling pointers or reference can be created.or reference can be created.
  • 14. Dynamic and Static BindingDynamic and Static Binding  The question here is whether all binding ofThe question here is whether all binding of messages to methods is dynamic. Themessages to methods is dynamic. The alternative is to allow the user to specifyalternative is to allow the user to specify whether a specific binding is to bewhether a specific binding is to be dynamic or static. The advantage of this isdynamic or static. The advantage of this is that static bindings are faster. So ifthat static bindings are faster. So if binding need not be dynamic, why paybinding need not be dynamic, why pay price?price?
  • 15. Support for OOP in javaSupport for OOP in java  As with c++, java does not use objects exclusively. However, in java onlyAs with c++, java does not use objects exclusively. However, in java only values of the primitive scalar types ( Boolean, character and the numeric)values of the primitive scalar types ( Boolean, character and the numeric) are not objects. Java has no enumeration or record types, and its arraysare not objects. Java has no enumeration or record types, and its arrays are objects. The reason to have nonobjects is efficiency. However, having aare objects. The reason to have nonobjects is efficiency. However, having a two type systems leads to some cumbersome situations. One of these intwo type systems leads to some cumbersome situations. One of these in java is that the predefined data structure Vector can only contain objects.java is that the predefined data structure Vector can only contain objects. So if you want to put a primitive type value into a Vector object, the valueSo if you want to put a primitive type value into a Vector object, the value must first be placed in an object. This can be done by creating a new objectmust first be placed in an object. This can be done by creating a new object of the wrapper class for the primitive type. Such class has an instanceof the wrapper class for the primitive type. Such class has an instance variable of that primitive type and a constructor that takes a value of thevariable of that primitive type and a constructor that takes a value of the primitive type as a parameter and assigns it to its instance variable.primitive type as a parameter and assigns it to its instance variable.  Whereas c++ classes can be defined to have no parent, that is not possibleWhereas c++ classes can be defined to have no parent, that is not possible in java. All java classes must be subclass of the root class, object, or somein java. All java classes must be subclass of the root class, object, or some class is that there are some operations that are universally needed. All javaclass is that there are some operations that are universally needed. All java objects are explicit heap dynamic. Most are allocated with the NEWobjects are explicit heap dynamic. Most are allocated with the NEW operator.operator.
  • 16. InheritanceInheritance  Java supports only single inheritance. However, it includes a kind of virtualJava supports only single inheritance. However, it includes a kind of virtual class, called in interface, which provides aversion of multiple inheritance.class, called in interface, which provides aversion of multiple inheritance. An interface definition is similar to a class definition, except that it canAn interface definition is similar to a class definition, except that it can contain named constants and method declaration. It defines only thecontain named constants and method declaration. It defines only the specification of a class. The typical use of an interface is to define a classspecification of a class. The typical use of an interface is to define a class that inherits both some of the methods and variables from its parent class,that inherits both some of the methods and variables from its parent class, and also implements a parent interface.and also implements a parent interface.  Applets are programs that are interpreted by a World Wide Web browserApplets are programs that are interpreted by a World Wide Web browser after being downloaded from a Web server. These applets all need certainafter being downloaded from a Web server. These applets all need certain capabilities, which they can inherit from the predefined class, applet. Thiscapabilities, which they can inherit from the predefined class, applet. This concurrency is supported by a predefined class named thread. But javaconcurrency is supported by a predefined class named thread. But java includes a predefined interface named runnable that supplies the interfaceincludes a predefined interface named runnable that supplies the interface (but not the implementation) to one of the methods of Thread. The syntax(but not the implementation) to one of the methods of Thread. The syntax of the header of such an applet is exemplified by :of the header of such an applet is exemplified by : public class Clock extends Applet implements Runnable.public class Clock extends Applet implements Runnable.  In java, a method can be defined to be final, which means that it can not beIn java, a method can be defined to be final, which means that it can not be overriden in any descendant class. When the final reserved word isoverriden in any descendant class. When the final reserved word is specified on a class definition, it means the class cannot be the parent ofspecified on a class definition, it means the class cannot be the parent of any subclass.any subclass.
  • 17. EncapsulationEncapsulation 2 Kinds of encapsulation :2 Kinds of encapsulation :  Package- is a logical, rather than a physical, encapsulation: Any classPackage- is a logical, rather than a physical, encapsulation: Any class definition can specify that it belongs in a particular package.definition can specify that it belongs in a particular package.  Classes- a class that does not specify a package name is placed in anClasses- a class that does not specify a package name is placed in an unnamed package.unnamed package.  A Package creates a new name space. Any method or variable thatA Package creates a new name space. Any method or variable that does not include an access modifier (private, protected, or public) hasdoes not include an access modifier (private, protected, or public) has what is called Package Scope. This is an expansion of the definition ofwhat is called Package Scope. This is an expansion of the definition of protected as used in C++, in which protected members are visible onlyprotected as used in C++, in which protected members are visible only in the class where they are defined and in subclasses of that class. It isin the class where they are defined and in subclasses of that class. It is an alternative to the friends of C++, which are meant to provide accessan alternative to the friends of C++, which are meant to provide access to private methods and instance variables in class to other specifiedto private methods and instance variables in class to other specified methods or classes. In effect, all non-private variables and methods ofmethods or classes. In effect, all non-private variables and methods of all the classes in a package areall the classes in a package are friends.friends.
  • 18. EvaluationEvaluation  Java’s design for supporting object-orientedJava’s design for supporting object-oriented programming is similar to that of C++, but differsprogramming is similar to that of C++, but differs from it in several significant ways. In keeping withfrom it in several significant ways. In keeping with its consistent adherence to object-orientedits consistent adherence to object-oriented principles, as in its lack of functions, Java does notprinciples, as in its lack of functions, Java does not allow parentless classes. It also uses dynamicallow parentless classes. It also uses dynamic binding as the “normal” approach to bind methodbinding as the “normal” approach to bind method calls to method definitions.calls to method definitions.