Topic
Object responsibilities, encapsulation, abstraction, inheritance, composition, polymorphism, construction, and maintainable C# type design.
Practice items tagged with Object-Oriented Programming.
Separates hiding implementation complexity from controlling access to state, with practical examples where both ideas work together.
Uses public, internal, protected, private, and protected internal deliberately to control API surface and inheritance exposure.
Chooses contracts and shared implementation based on substitutability, state ownership, evolution, and inheritance constraints.
Chooses a type shape from identity, value semantics, mutation, copy cost, default values, and serialization boundaries.
Creates valid objects with clear intent while choosing construction patterns proportionally to optional data, validation, and lifecycle complexity.
Combines focused collaborators for independent behavior while recognizing cases where a genuine stable hierarchy remains simpler.