This visual execution shows how to decide between Protocol-Oriented Programming (POP) and Object-Oriented Programming (OOP) in Swift. We start by choosing whether to use classes (OOP) or protocols and structs (POP). The example defines a Vehicle protocol with a drive() method. Then a Car class and a Bike struct both implement drive() differently. The execution table traces creating instances, calling drive(), and assigning to Vehicle-typed variables. It shows polymorphism working in both OOP and POP styles. The variable tracker follows instance assignments. Key moments clarify why classes support method overriding but structs do not, how protocol conformance enables polymorphism, and why POP prefers value types to avoid shared state. The quiz tests understanding of outputs, assignment steps, and behavior changes if Bike was a class. The snapshot summarizes the main differences and when to use each pattern.