
ITEC 320 Lecture 12 Higher level usage of pointers
Review • Linked list • Pointer usage • Package design
Problems • What are the major problems with 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?
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
Factories • In your words, what are they?
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?
Advantages/Disadvantages • Why use factories? • What do they mean for your code? • Benefits • Downsides
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
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
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?
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
Command pattern • Signals when an action needs to be performed Command Central Contains pointers to objects Contains list of commands Told to execute X, it actually does it
Cell phones • How do they work (communication side)
Other scenarios • Computer networks • Google maps • Facebook friends • Gaming
Rationale • How do you model a cell phone network on a computer? • Why would you want to simulate a cell phone network?
Graphs • Composed of vertices and edges • Vertices • Represent an object in a graph • Edges • A connection between two vertices
Variations • Weighted graph • Toll road • Hotel cost • Identifiers • Possible usage scenarios?
Methods of implementation • Arrays • Pointers • Benefits of each approach • Downsides of each approach
Code • Should we use a package? • What about generics?
Searching • How do you find information in a graph? Start Destination
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
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
Issues • What are some of the issues that might happen with searching? • How do you implement each way? • Stacks / Recursion / Packages / ?
More • How do you pick the best path? • Lowest cost • Highest cost • Cover all points with least overlap
Summary • Rationale for graph theory • Approach • Finding algorithms
Summary • Memory usage at a higher level