Get ready for your Object‑Oriented Programming Test. Use flashcards and multiple-choice questions. Each question includes hints and explanations. Prepare for your exam today!

Multiple Choice

What is the core requirement of the Acyclic Dependencies Principle?

The main idea is that dependencies should form a Directed Acyclic Graph. In other words, there must be no cycles where a chain of dependencies loops back to a component that started the chain. When dependencies flow in one direction without loops, you can reason about initialization, testing, and evolution more reliably, because changes in one part won’t force a domino effect across a cycle of modules. This helps you avoid tight, interdependent coupling and makes it easier to substitute implementations or move components around. A common way to achieve this is to depend on abstractions (interfaces or abstract services) rather than concrete implementations, and to restructure to break cycles when they appear. So the correct understanding is: there must be no cycles in the component dependency graph. The other options describe things that don’t relate to the requirement of acyclicity—such as depending on concrete implementations, requiring every module to depend on all others, or resolving dependencies only at compile time.

The main idea is that dependencies should form a Directed Acyclic Graph. In other words, there must be no cycles where a chain of dependencies loops back to a component that started the chain. When dependencies flow in one direction without loops, you can reason about initialization, testing, and evolution more reliably, because changes in one part won’t force a domino effect across a cycle of modules.

This helps you avoid tight, interdependent coupling and makes it easier to substitute implementations or move components around. A common way to achieve this is to depend on abstractions (interfaces or abstract services) rather than concrete implementations, and to restructure to break cycles when they appear.

So the correct understanding is: there must be no cycles in the component dependency graph. The other options describe things that don’t relate to the requirement of acyclicity—such as depending on concrete implementations, requiring every module to depend on all others, or resolving dependencies only at compile time.