When you define a class, you describe the characteristics and behavior of objects of that type. In C#, you describe characteristics with member fields:
class Dog { private int weight; // member field private string name; // member field }
Member fields are used to hold each object’s state. For example, the state of the Dog
is defined by its current weight and name. The state of an Employee
might be defined by (among other things) her current salary, management level, and performance rating. Classes can have instances of other classes as member fields; a Car
class might include an Engine
class with its own members. Chapter 7 includes a full discussion of member fields.
You define the behavior of your new type with methods. Methods contain code to perform an action:
class Dog { private int weight; private string name;public void Bark( ) // member method
{
// code here to bark
}
}
The keywords public
and private
are known as access modifiers, which are used to specify what methods of which classes can access particular members. For instance, public members can be called from methods in any class, whereas private members are visible only to the methods of the class defining the member. Thus, objects of any class can call Bark
on an instance of Dog
, but only methods of the Dog
class have access to the weight
and name
of a Dog
. We discuss access modifiers in Chapter 7.
A class typically defines a number of methods to do the work of that class. A Dog
class might contain methods for barking, eating, napping, and so forth. An Employee
class might contain methods for adjusting salary, submitting annual reviews, and evaluating performance objectives.
Methods can manipulate the state of the object by changing the values in member fields, or a method could interact with other objects of its own type or with objects of other types. This interaction among objects is crucial to object-oriented programming.
For example, a method in Dog
might change the state of the Dog
(for example, a Feed
method might change the Dog
’s weight), interact with other Dog
s (Bark
and Sniff
), or interact with People
(BegForFood
). A Product
object might interact with a Customer
object, and a Video
object might interact with an EditingWindow
object.
Designing a good C# program is not unlike forming a good team; you look for players (or objects, in the case of a program) who have different skills and to whom you can delegate the various tasks you must accomplish. Those players cooperate with one another to get the job done.
In a good object-oriented program, you will design objects that represent things in your problem domain. You will then divide the work of the program among your objects, assigning responsibility to objects based on their ability.