ITEC 320 Lecture 12 Higher level usage of pointers.

29
ITEC 320 Lecture 12 Higher level usage of pointers

Transcript of ITEC 320 Lecture 12 Higher level usage of pointers.

Page 1: ITEC 320 Lecture 12 Higher level usage of pointers.

ITEC 320

Lecture 12Higher level usage of pointers

Page 2: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Review

• Linked list– Pointer usage– Package design

Page 3: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Problems

• What are the major problems with pointers?

Page 4: ITEC 320 Lecture 12 Higher level usage of 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?

Page 5: ITEC 320 Lecture 12 Higher level usage of pointers.

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

Page 6: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Factories

• In your words, what are they?

Page 7: ITEC 320 Lecture 12 Higher level usage of pointers.

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?

Page 8: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Advantages/Disadvantages

• Why use factories?• What do they mean for your code?• Benefits• Downsides

Page 9: ITEC 320 Lecture 12 Higher level usage of pointers.

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

Page 10: ITEC 320 Lecture 12 Higher level usage of pointers.

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

Page 11: ITEC 320 Lecture 12 Higher level usage of pointers.

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?

Page 12: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

What it enables

Page 13: ITEC 320 Lecture 12 Higher level usage of pointers.

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

Page 14: ITEC 320 Lecture 12 Higher level usage of pointers.

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

Page 15: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Cell phones

• How do they work (communication side)

Page 16: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Cell Networks

Page 17: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Other scenarios

• Computer networks• Google maps• Facebook friends• Gaming

Page 18: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Rationale

• How do you model a cell phone network on a computer?

• Why would you want to simulate a cell phone network?

Page 19: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Graphs

• Composed of vertices and edges• Vertices– Represent an object in a graph

• Edges– A connection between two vertices

Page 20: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Variations

• Weighted graph– Toll road– Hotel cost– Identifiers

• Possible usage scenarios?

Page 21: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Methods of implementation

• Arrays• Pointers• Benefits of each approach• Downsides of each approach

Page 22: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Code

• Should we use a package?• What about generics?

Page 23: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Searching

• How do you find information in a graph?

Destination

Start

Page 24: ITEC 320 Lecture 12 Higher level usage of pointers.

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

Page 25: ITEC 320 Lecture 12 Higher level usage of pointers.

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

Page 26: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Issues

• What are some of the issues that might happen with searching?

• How do you implement each way?– Stacks / Recursion / Packages / ?

Page 27: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

More

• How do you pick the best path?– Lowest cost– Highest cost– Cover all points with least overlap

Page 28: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Summary

• Rationale for graph theory• Approach• Finding algorithms

Page 29: ITEC 320 Lecture 12 Higher level usage of pointers.

Pointers

Summary

• Memory usage at a higher level