Transcript Object-Oriented Programming
Programming Languages and Paradigms
Object-Oriented Programming
Object-Oriented Programming
Objects, classes, fields, methods Encapsulation Inheritance Polymorphism and dynamic binding Program units: Classes OOP Slide 2
Object
Definition: a thing that has identity, state, and behavior identity: a distinguished instance of a class state: collection of values for its variables behavior: capability to execute methods * variables and methods are defined in a class OOP Slide 3
Examples of Objects
LightBulb
state/attributes
on (true or false)
behavior
switch on switch off check if on BankAccount
state/attributes
balance
behavior
deposit withdraw check balance Car
state/attributes
# of liters of gas in tank total # of km run so far efficiency (km/liter)
behavior
drive load gas change efficiency check gas check odometer reading
Note
each object is an “instance” of that “class” of object
each instance has its own values for its attributes
e.g., different accounts can have different balances OOP Slide 4
Class
Definition: a collection of data (fields/ variables) and methods that operate on that data data/methods define the contents/capabilities of the instances (objects) of the class a class can be viewed as a factory for objects a class defines a recipe for its objects OOP Slide 5
Instantiation
Object creation Memory is allocated for the object’s fields as defined in the class Initialization is specified through a
constructor
a special method invoked when objects are created OOP Slide 6
A Class with a Constructor
BankAccount.java
public class BankAccount { private double balance;
Constructor: special method that handles initialization Java Example: BankAccount A constructor is invoked during object construction: BankAccount b; b = new BankAccount(); b.deposit( 100.00 );
Constructor call Method call
public BankAccount() { balance = 0; }
public double getBalance() { return balance; } } public void deposit( double amount ) { balance = balance + amount; } … OOP Slide 7
Encapsulation
A key OO concept: “Information Hiding” Key points The user of an object should have access only to those methods (or data) that are essential Unnecessary implementation details should be hidden from the user In Java/C++, use classes and access modifiers (public, private, protected) OOP Slide 8
Inheritance
Inheritance: programming language feature that allows for the implicit definition of variables/methods for a class through an existing class Subclass relationship B is a subclass of A B inherits all definitions (variables/methods) in A Superclass variables, subclass objects Polymorphism and dynamic binding OOP Slide 9
Reuse
Inheritance encourages software reuse Existing code need not be rewritten Successful reuse occurs only through careful planning and design when defining classes, anticipate future modifications and extensions OOP Slide 10
Polymorphism
“Many forms” allow several definitions under a single method name Example: “move” means something for a person object but means something else for a car object Dynamic binding: capability of an implementation to distinguish between the different forms during run-time OOP Slide 11
OOP in Java and C++
Program Structure and Execution Encapsulation and Inheritance Objects and Variables Methods Pointers Constructors OOP Slide 12
Program Structure
Class definition similar in Java and C++ Java: two types of programs application (with main() function) applet (typically embedded in a web page) C++ a program is (still) a collection of functions that may use objects and classes main() function serves as driver OOP Slide 13
Program Execution
Java: Virtual Machine (VM) programs: both compiled and interpreted compiler produces .class from .java
VM loads .class file(s) as needed C++: compiled, linked, and loaded modules separately compiled linked to produce executable static vs dynamic libraries OOP Slide 14
Encapsulation
Enforced through access keywords public: for interface private: to make implementation inaccessible protected: access for subclasses only In Java each member is prefixed with a keyword In C++ public, private, and protected
sections
OOP Slide 15
Inheritance
Feature that allows a class to be defined based on another class methods and attributes are inherited Java and C++ difference Java: public class A extends B { … } C++: class A: public B { … } (different types of inheritance) Multiple inheritance possible in C++, not in Java But in Java, one may implement several interfaces OOP Slide 16
Objects and Identity
Questions: How/when are objects created?
What is the relationship between a variable and an object?
Difference between Java and C++ distinction between primitive (built-in) type variables and variables for objects reference relationship between variable and actual object OOP Slide 17
Variables for Built-in Types
Variables for built-in types (C++ and Java) X int x; … x = 5; X
5
OOP Slide 18
Reference Variables (in Java)
Reference type variables X BankAccount x; … X
BankAccount Object
100 x = new BankAccount(100.00); OOP Slide 19
Variables That “hold” Objects (in C++)
Declaration of an object variable allocates space for the object X BankAccount x(100.00); 100 OOP Slide 20
Methods
A method describes a specific behavior applicable to objects of a class A method defines a sequence of instructions (or statements) to be carried out when that method is called A method is called or invoked on an object of the class Carried out through the dot operator ( e.g., x.deposit( 1000.00 ); ) OOP Slide 21
Pointers (in C++)
Variables can be explicitly declared as pointers to objects X BankAccount *x; … X x = new BankAccount(100.00);
BankAccount Object
100 OOP Slide 22
Disposing of Allocated Memory
In Java, garbage collection is automatic Memory allocated objects are reclaimed when no variables refer to them Need to set reference variables to null when the object is no longer needed In C++, object destruction is the programmer’s responsibility using the delete keyword OOP Slide 23
delete in C++
There should be a delete for every new SomeClass *x = new SomeClass(…); // … use object pointed to by x delete x; // done using object Memory leak Occurs when you forget to delete Wasted memory Can this occur in Java?
OOP Slide 24
Object Construction
Constructor place where you include code that initializes the object Constructor without parameters “default” constructior no additional info required Constructor with parameters with parameters that specify initial values or sizes Example: public BankAccount( double initBal ) { balance = initBal; } OOP Slide 25
Constructors in Java and C++
In Java, a constructor is invoked only through the new keyword recall that all object variables are references In C++, a constructor is called upon variable declaration, or explicitly through new with pointers, or in other situations other types of constructors OOP Slide 26
Next…
More advanced OOP features in Java and C++ Arrays Destructors Operator overloading Static vs Dynamic Binding Many others OOP Slide 27