Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the main idea behind the procedural programming approach?
Procedural programming organizes code as a sequence of instructions or steps, focusing on functions and procedures to perform tasks.
Click to reveal answer
beginner
What does object-oriented programming (OOP) focus on?
OOP focuses on organizing code around objects that combine data and behavior, using concepts like classes, inheritance, and encapsulation.
Click to reveal answer
intermediate
How does procedural programming handle data and functions?
In procedural programming, data and functions are separate; functions operate on data passed to them as arguments.
Click to reveal answer
intermediate
What is encapsulation in object-oriented programming?
Encapsulation means bundling data and methods that work on that data inside one unit (class), hiding internal details from outside code.
Click to reveal answer
intermediate
Give a simple example difference: How would you represent a 'Car' in procedural vs object-oriented style?
Procedural: Use separate functions like start_car(), stop_car() and variables for car data.<br>Object-oriented: Create a Car class with methods start() and stop() and attributes like color or speed.
Click to reveal answer
Which programming approach groups data and functions together inside objects?
AProcedural programming
BObject-oriented programming
CFunctional programming
DDeclarative programming
✗ Incorrect
Object-oriented programming groups data and functions inside objects called classes.
In procedural programming, how is the program mainly structured?
AAs reactive components
BAs objects with methods
CAs a sequence of functions and procedures
DAs database tables
✗ Incorrect
Procedural programming structures code as a sequence of functions or procedures.
Which concept is NOT typically part of object-oriented programming?
ARecursion
BEncapsulation
CInheritance
DPolymorphism
✗ Incorrect
Recursion is a general programming technique, not specific to object-oriented programming.
What is a key benefit of using object-oriented programming?
ABetter organization and reuse of code
BEasier to write short scripts
CFaster execution speed
DNo need to write functions
✗ Incorrect
OOP helps organize code better and promotes reuse through classes and inheritance.
In procedural programming, data is usually:
AStored in classes
BHidden inside objects
CImmutable
DPassed around to functions
✗ Incorrect
Procedural programming passes data as arguments to functions.
Explain the main differences between procedural and object-oriented programming.
Think about how data and actions are organized in each approach.
You got /4 concepts.
Describe a simple example of how you would model a real-world object like a 'Car' in both procedural and object-oriented styles.
Imagine explaining to a friend how you would write code for a car using each style.
You got /3 concepts.
Practice
(1/5)
1. Which statement best describes the main difference between procedural and object-oriented programming in Python?
easy
A. Procedural programming is faster than object-oriented programming in all cases.
B. Procedural programming is only for small programs; object-oriented programming is for large programs.
C. Procedural programming cannot use variables; object-oriented programming can.
D. Procedural programming uses functions and step-by-step instructions; object-oriented programming uses classes and objects.
Solution
Step 1: Understand procedural programming basics
Procedural programming organizes code as functions and instructions executed in order.
2. Which of the following is the correct way to define a class in Python?
easy
A. def MyClass(): pass
B. class MyClass(): pass
C. function MyClass() {}
D. class MyClass[]: pass
Solution
Step 1: Recall Python class syntax
In Python, classes are defined using the keyword class followed by the class name and parentheses.
Step 2: Check each option
class MyClass(): pass uses correct Python syntax. def MyClass(): pass uses def which defines a function, not a class. function MyClass() {} uses JavaScript syntax. class MyClass[]: pass uses invalid brackets.
Final Answer:
class MyClass(): pass -> Option B
Quick Check:
Python classes start with 'class' keyword [OK]
Hint: Classes start with 'class' keyword in Python [OK]
Common Mistakes:
Using def instead of class
Using wrong brackets [] instead of ()
Confusing Python with other languages syntax
3. What will be the output of this Python code?
def greet(name):
return f"Hello, {name}!"
class Person:
def __init__(self, name):
self.name = name
def greet(self):
return greet(self.name)
p = Person("Anna")
print(p.greet())
medium
A. TypeError
B. Hello, name!
C. Hello, Anna!
D. AttributeError
Solution
Step 1: Understand the procedural function greet
The function greet(name) returns the string "Hello, {name}!" with the given name.
Step 2: Understand the Person class and method call
The Person class stores the name and its greet method calls the procedural greet function with self.name. Creating p with name "Anna" and calling p.greet() returns "Hello, Anna!".
Final Answer:
Hello, Anna! -> Option C
Quick Check:
Class method calls procedural function correctly [OK]
Hint: Class method calls function with self.name [OK]
Common Mistakes:
Confusing variable name with string 'name'
Expecting error due to mixing styles
Forgetting to use self.name
4. Identify the error in this code that mixes procedural and object-oriented styles:
class Calculator:
def add(self, a, b):
return a + b
result = Calculator.add(3, 4)
print(result)
medium
A. Missing self argument when calling add method
B. Class Calculator is not defined
C. add method should not return a value
D. print statement syntax error
Solution
Step 1: Understand method call on class vs instance
The add method is an instance method requiring a self parameter. Calling Calculator.add(3, 4) misses the self argument.
Step 2: Correct usage
To fix, create an instance: calc = Calculator() then call calc.add(3, 4). This passes self automatically.
Final Answer:
Missing self argument when calling add method -> Option A
Quick Check:
Instance methods need self, call via instance [OK]
Hint: Call instance methods on object, not class [OK]
Common Mistakes:
Calling instance method directly on class
Ignoring self parameter
Assuming methods are static by default
5. You want to convert this procedural code into an object-oriented style. Which class design correctly encapsulates the data and behavior?
# Procedural code
def area_rectangle(width, height):
return width * height
w = 5
h = 3
print(area_rectangle(w, h))
hard
A. class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
B. class Rectangle:
def area(width, height):
return width * height
C. class Rectangle:
def __init__(self):
pass
def area(self):
return width * height
D. class Rectangle:
def __init__(self, width, height):
return width * height
Solution
Step 1: Identify data and behavior to encapsulate
The procedural code uses width and height as data and area_rectangle as behavior. In OOP, these should be inside a class.
Step 2: Check class options for correct encapsulation
class Rectangle:
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height stores width and height as instance variables and defines area() method using them. Other options either miss self, lack data storage, or misuse return in constructor.
Final Answer:
class Rectangle with __init__ storing width and height, and area method using them -> Option A
Quick Check:
OOP encapsulates data and behavior in class [OK]
Hint: Store data in __init__, use methods for behavior [OK]