ITEC 320 Lecture 12 Higher level usage of pointers.
-
Upload
geraldine-norton -
Category
Documents
-
view
213 -
download
0
Transcript of ITEC 320 Lecture 12 Higher level usage of pointers.
ITEC 320
Lecture 12Higher level usage of pointers
Pointers
Review
• Linked list– Pointer usage– Package design
Pointers
Problems
• What are the major problems with pointers?
Pointers
Reference counting
• Each object has to be uniquely tracked in a system
• The number of pointers to that object is also counted
• Whenever a pointer is disposed, the reference count is decreased
• What happens when it reaches 0?• What problem does this resolve?
Pointers
Smart pointers
• Contain regular pointers• Also contain number of other
pointers that are pointing to the object
• Or do they…–What if an object contains the number of
pointers to itself?– Benefits / downsides
• Designs for this
Pointers
Factories
• In your words, what are they?
Pointers
Approaches
• Function that returns an object• Function that takes an object and
returns a pointer• Function that takes an id and returns
a pointer to it• Hash map for memory addresses and
# of accesses• Others?
Pointers
Advantages/Disadvantages
• Why use factories?• What do they mean for your code?• Benefits• Downsides
Pointers
Flyweight
• What does the word bring to mind?• One object / pointer reused lots and
lots of times• Similar to NULL except it is a type /
pointer• What reasons do you think you would
use a flyweight object?• Benefits / Downsides
Pointers
Disk buffer
• How many GB does a DVD hold?• 3 DVD game• How does that game load everything
into RAM? Or does it load everything into RAM?
• Memory Mapping to HD idea
Pointers
How it works
• Several blocks of data reserved in memory
• Each block maps to a unique block on a HD
• Data is requested, it is loaded from HD – If it is in list, use it, move to MRU
position– If it isn’t, load into least recently used
block and move it to the MRU position– Linked list of blocks?
Pointers
What it enables
Pointers
Design patterns
• Not language specific features• Encompasses a particular idea• May or may not be heavily supported
in a language– Java supports smart pointers by default– C++ requires a separate class
• Not a silver bullet
Pointers
Command pattern
• Signals when an action needs to be performed
CommandCentral
Contains pointers to objectsContains list of commandsTold to execute X, it actuallydoes it
Pointers
Cell phones
• How do they work (communication side)
Pointers
Cell Networks
Pointers
Other scenarios
• Computer networks• Google maps• Facebook friends• Gaming
Pointers
Rationale
• How do you model a cell phone network on a computer?
• Why would you want to simulate a cell phone network?
Pointers
Graphs
• Composed of vertices and edges• Vertices– Represent an object in a graph
• Edges– A connection between two vertices
Pointers
Variations
• Weighted graph– Toll road– Hotel cost– Identifiers
• Possible usage scenarios?
Pointers
Methods of implementation
• Arrays• Pointers• Benefits of each approach• Downsides of each approach
Pointers
Code
• Should we use a package?• What about generics?
Pointers
Searching
• How do you find information in a graph?
Destination
Start
Pointers
Breadth first
• For each node I am connected to– Is this the node I’m looking for?
• If I didn’t find it– For each node I am connected to• Call breadth first search on it
Pointers
Depth first
• If I am the node searched for, stop and return
• For each node I am connected to– Call depth first search on that node
Pointers
Issues
• What are some of the issues that might happen with searching?
• How do you implement each way?– Stacks / Recursion / Packages / ?
Pointers
More
• How do you pick the best path?– Lowest cost– Highest cost– Cover all points with least overlap
Pointers
Summary
• Rationale for graph theory• Approach• Finding algorithms
Pointers
Summary
• Memory usage at a higher level