Access control in MATLAB - Time & Space Complexity
Access control often involves checking permissions before allowing actions. Understanding how long these checks take helps us write efficient programs.
We want to know how the time to check access grows as the number of users or permissions increases.
Analyze the time complexity of the following code snippet.
function allowed = checkAccess(user, resource, permissions)
allowed = false;
for i = 1:length(permissions)
if strcmp(permissions(i).user, user) && strcmp(permissions(i).resource, resource)
allowed = true;
break;
end
end
end
This code checks if a user has permission to access a resource by scanning a list of permissions.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Loop through the permissions list to find a matching user and resource.
- How many times: Up to the total number of permissions (length of permissions array).
As the number of permissions grows, the time to check access grows roughly the same way.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | Up to 10 comparisons |
| 100 | Up to 100 comparisons |
| 1000 | Up to 1000 comparisons |
Pattern observation: The time grows directly with the number of permissions checked.
Time Complexity: O(n)
This means the time to check access grows linearly with the number of permissions.
[X] Wrong: "Checking access is always instant, no matter how many permissions there are."
[OK] Correct: The code checks each permission one by one, so more permissions mean more checks and longer time.
Understanding how access checks scale helps you design systems that stay fast as they grow. This skill shows you can think about real-world program efficiency.
"What if we used a hash map to store permissions instead of a list? How would the time complexity change?"
Practice
private access modifier do in a MATLAB class?Solution
Step 1: Understand the role of
Theprivatein MATLAB classesprivatekeyword restricts access to properties or methods so that only the class itself can use them.Step 2: Compare with other access modifiers
publicallows access from anywhere,protectedallows access from child classes, butprivateis the most restrictive.Final Answer:
It restricts access to class properties or methods only within the class itself. -> Option DQuick Check:
privatemeans class-only access [OK]
- Confusing private with public access
- Thinking private allows child class access
- Assuming private is accessible from outside
data in a MATLAB class?Solution
Step 1: Recall MATLAB property access syntax
Access modifiers are specified in parentheses after thepropertieskeyword, e.g.,properties (protected).Step 2: Identify correct syntax for protected
The correct syntax uses parentheses:properties (protected). properties protected data end misses parentheses, so it's invalid.Final Answer:
properties (protected) data end -> Option BQuick Check:
Use parentheses for access modifiers [OK]
- Omitting parentheses around access modifier
- Using wrong access modifier for the question
- Placing access modifier outside properties block
classdef MyClass
properties (Access = private)
secret = 42;
end
methods
function val = getSecret(obj)
val = obj.secret;
end
end
end
obj = MyClass();
disp(obj.secret);
What happens when you run this code?Solution
Step 1: Identify access level of
The propertysecretsecretis declared private, so it cannot be accessed directly outside the class.Step 2: Analyze the code trying to access
The linesecretdisp(obj.secret);tries to access the private property directly, which is not allowed and causes an error.Final Answer:
It causes an error becausesecretis private. -> Option AQuick Check:
Private properties block outside access [OK]
- Assuming private properties can be accessed directly
- Confusing method access with property access
- Ignoring access modifiers in property declaration
classdef Parent
properties (Access = protected)
value
end
end
classdef Child < Parent
methods
function setValue(obj, val)
obj.value = val;
end
end
end
c = Child();
c.setValue(10);
disp(c.value);Solution
Step 1: Understand protected access
The propertyvalueis protected, so Child can set it, but outside code cannot access it directly.Step 2: Identify why
Outside code tries to accessdisp(c.value)failsvaluedirectly, which is not allowed for protected properties.Step 3: Fix by adding a getter method
Adding a method in Child to returnvalueallows controlled access without changing access level.Final Answer:
Add a getter method in Child to accessvalue. -> Option AQuick Check:
Use getter for protected property access outside class [OK]
- Trying to access protected property directly outside class
- Changing access to public unnecessarily
- Not using inheritance properly
BankAccount where the balance is private, but child classes can update it. You also want to allow anyone to check the balance. Which access control setup is correct?Solution
Step 1: Identify access needs for
Balance should be hidden from outside for updates but readable by anyone, and updatable by child classes.balanceStep 2: Choose access modifier and methods
Protected allows child classes to update balance. A public getter method allows anyone to read balance safely.Final Answer:
Declarebalanceas protected and provide a public getter method; child classes can update balance, others can only read it. -> Option CQuick Check:
Protected + public getter fits requirements [OK]
- Making balance public allowing unwanted updates
- Using private without getter blocking read access
- Not providing a getter method for balance
Ready to prove it?
Pass the test and this pattern moves unknown
