MATLAB Object-Oriented Programming

(Joyce) #1
Example Code Discussion
function insertBefore(newNode, nodeAfter)
removeNode(newNode);
newNode.Next = nodeAfter;
newNode.Prev = nodeAfter.Prev;
if ~isempty(nodeAfter.Prev)
nodeAfter.Prev.Next = newNode;
end
nodeAfter.Prev = newNode;
end

Insert node into doubly linked list before
specified node, or link the two specified
nodes if there is not already a list. This
method assigns correct values for Next
and Prev properties.

See “Insert Nodes” on page 3-39
function removeNode(node)
if ~isscalar(node)
error('Nodes must be scalar')
end
prevNode = node.Prev;
nextNode = node.Next;
if ~isempty(prevNode)
prevNode.Next = nextNode;
end
if ~isempty(nextNode)
nextNode.Prev = prevNode;
end
node.Next = = dlnode.empty;
node.Prev = = dlnode.empty;
end

Remove node and fix the list so that
remaining nodes are properly connected.
node argument must be scalar.

Once there are no references to node,
MATLAB deletes it.

“Remove a Node” on page 3-41

function clearList(node)
prev = node.Prev;
next = node.Next;
removeNode(node)
while ~isempty(next)
node = next;
next = node.Next;
removeNode(node);
end
while ~isempty(prev)
node = prev;
prev = node.Prev;
removeNode(node)
end
end

Avoid recursive calls to destructor as a
result of clearing the list variable. Loop
through list to disconnect each node.
When there are no references to a node,
MATLAB calls the class destructor (see
the delete method) before deleting it.

methods (Access = private)
function delete(node)
clearList(node)
end

Class destructor method. MATLAB calls
the delete method you delete a node
that is still connected to the list.
end
end
End of private methods and end of class
definition.

3 MATLAB Classes Overview

Free download pdf