1/14
Vocabulary flashcards covering key terms and definitions from the lecture on SOLID principles in object-oriented design.
Name | Mastery | Learn | Test | Matching | Spaced |
---|
No study sessions yet.
Object-Oriented Design (OOD)
A discipline focused on designing software that is easy to modify, extend and maintain by organizing systems around interacting objects.
Object-Oriented Programming (OOP)
A programming paradigm based on objects containing data and behavior; language support alone is insufficient without proper design practices.
SOLID
A mnemonic coined by Robert C. Martin summarizing five key principles—SRP, OCP, LSP, ISP, DIP—for managing dependencies and creating flexible, maintainable software.
Single Responsibility Principle (SRP)
States that a class should have only one reason to change, encouraging high cohesion and separation of concerns.
Cohesion
The functional relatedness of elements within a module; high cohesion means a module’s elements change for the same single reason.
Open/Closed Principle (OCP)
Classes, modules, or functions should be open for extension but closed for modification, allowing new behavior without altering existing code.
Liskov Substitution Principle (LSP)
Subtypes must be substitutable for their base types without altering the correctness of a program, ensuring polymorphic behavior.
Interface Segregation Principle (ISP)
Clients should not be forced to depend on interfaces they do not use; many specific interfaces are better than one large, ‘fat’ interface.
Dependency Inversion Principle (DIP)
High-level and low-level modules should both depend on abstractions, not on concrete classes, thereby decoupling software layers.
Robert C. Martin ("Uncle Bob")
Software engineer and author who popularized the SOLID principles through books like “Clean Code” and “Agile Software Development.”
Structured Programming
An earlier methodology emphasizing control structures over GOTO statements; precursor to object-oriented approaches for building complex software.
Fat Interface
An interface that contains methods unrelated to a particular client’s needs, causing unnecessary coupling and violating ISP.
Abstraction (in DIP context)
A high-level definition (interface or abstract class) that both high-level and low-level modules depend upon, enabling flexibility and reuse.
Coupling
The degree to which one component relies on another; SOLID principles aim to minimize tight coupling and improve maintainability.
Reason to Change
A distinct cause that forces a class or module to be modified; SRP demands each class have exactly one such reason.