How do you create a user-defined type in C#?
New (user-defined) types are most often created in C# with the keyword class.
What is the difference between a class and an object?
A class defines a new type; an object is an instance of that type.
Why should member fields be private?
Making your member fields private allows you to change how you store that data (as a member variable, in a database) without breaking your client's code.
What is encapsulation?
Encapsulation is the principle of keeping each class discreet and self-contained, so you can change the implementation of one class without affecting any other class.
What is specialization and how is it implemented in C#?
Specialization allows a new class to "inherit" many of the characteristics of an existing class, and to be used polymorphically with that class. Specialization is implemented in C# through inheritance.
What is polymorphism?
Polymorphism is the ability to treat derived classes as if they were all instances of their base class, yet have each derived class specialize its own implementation of the base class's methods.
What is the difference between the is-a and the has-a relationship?
The is-a relationship is established through inheritance. The has-a relationship is implemented through aggregation (making one type a member variable of another type).
What are access modifiers?
Access modifiers indicate which class' methods have access to a given field, property or method of a class. Public members are available to methods of any class; private members are available only to methods of instances of the same class.
Describe the differences between state, capabilities, and responsibilities.
State is the current conditions and values of an object, and is implemented with properties and member variables. Capabilities are what the object can do, exposed through public methods. Responsibilities are the promises a well-designed class makes to the clients of that class.
What is a use-case scenario?
A use-case scenario is a tool for the analysis of a problem. In a use-case scenario, you walk through the details of how your product will be used by one user to accomplish one task, noting which classes interact and what their responsibilities are.