Data Structures Lecture Notes
Jul-2022
Why Object-Oriented Programming?
Most programs organized around data
Making data the focus is the good fit
Objects leverage analogy to real world
Time, Stack, Event, Message, etc…
Abstraction clears away details
Can focus on other tasks
Encapsulation provides robustness
Object intervals can be kept private and secure
Modularity in development
Design, Develop, Test classes independently
Potential for reuse
Class is tidy package that can be re-used in other programs
Source: Programming Abstractions, Julie Zelenski
Abstract Data Types
Client uses class as abstraction
- Invokes public operations only
- Internal implementation not relevant
Client can’t and shouldn’t muck with internals
- Class data should private
Imagine a wall between client and implementator
- Wall prevents either from getting involved in other’s business
- Interface is the “chink” in the wall
- Conduit allows controlled access between the two
Consider Lexicon
- Abstraction is a word list, operations to verift word/prefix
- How does it store list? using array? vector? set? does it matter or client?
Why ADTs?
Abstraction
Client insulated from details, works at higher-level
Encapsulation
Internals private to ADT, not accessible by client
Independance
Seperate tasks for each side (once agreed on interface)
Flexibility
ADT implementation can be changed without affecting client
Source: Lecture 18: Programming Abstractions, Julie Zelenski
The three pillars of OOP
- Encapsulation
- Inheritance
- Polymorphism
Classes and Objects
A class is a user defined abstract data type that further expands upon the concept of a structure but instead of containing just data, it also includes functions.
A class consists of three elements:
- Identity
- Name for the class
- Attributes
- Data members
- Methods
- Function members
Syntax:
class identity {
public:
members ;
private:
members ;
protected:
members ;
} objects;
— 2023-07-09
Encapsulation
The concept of combining attributes and methods (data and functions), collectively referred to as members, into a single named object / entity.
…
Access to an object’s attributes should only be controlled by the object itself, and no other object should directly change an attribute of another object.This concept is known as data hiding.
Interface Vs Implementation
This concept focuses upon separating what an object does from how it does it.