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
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
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
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
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
Top Related