Core software engineering concept:\nIs an abstraction best described as a generalization of something (capturing essential characteristics while omitting detail)?

Difficulty: Easy

Correct Answer: Correct

Explanation:


Introduction / Context:
Abstraction is a foundational idea in computer science, software engineering, and data modeling. It allows us to focus on essential properties while hiding inessential detail so we can reason, design, and implement effectively.



Given Data / Assumptions:

  • We are defining “abstraction,” not a specific API feature.
  • Abstraction applies across paradigms (procedural, OO, functional) and layers (UI, logic, data).
  • The statement claims abstraction is a generalization.



Concept / Approach:
An abstraction is a model that emphasizes relevant characteristics and suppresses the rest. Generalization is one common form of abstraction—e.g., modeling “Vehicle” instead of separate “Car,” “Truck,” “Bike.” In databases, we abstract entities and relationships; in APIs, we expose interfaces not implementations; in algorithms, we define operations without committing to representations.



Step-by-Step Solution:
Identify a concrete domain (e.g., payments) and find essential properties (amount, currency, status).Define an abstract type or interface capturing those properties and behaviors.Hide implementation details (storage, network, vendors) behind the abstraction, enabling substitution and evolution.



Verification / Alternative check:
Design patterns, type hierarchies, and schema normalization all leverage abstraction to reduce coupling and complexity.



Why Other Options Are Wrong:
Abstraction is not limited to OO nor dictated by language choice; it is a universal design strategy.



Common Pitfalls:
Over-abstracting (adding layers without value) or under-abstracting (hard-coding vendor specifics) which harms flexibility.



Final Answer:
Correct

Discussion & Comments

No comments yet. Be the first to comment!
Join Discussion