Class is a template which defines the state 
and Behavior of Objects.
A class represents a set of objects that share 
a common structure and a common behavior- Grady Booch's.
Class is composed of three things: a name, 
attributes, and operations.
Type of Class supported by dotnet.
- Partial 
- Abstract 
- Static 
- Sealed 
- Instance 
Abstract Class: When the 
developer/programmer don't know the functionality of the class fully and , you 
want to leave the implementation to the derived classes , then use the Abstract 
class
Sealed Class: when the class 
is functionality is complete and you don't want to allow any other class to 
extend your class
Static Class: when any class 
is most frequently used or if any class is qualified as helper class( helper 
class is one which will be repeatedly used by all other classes) then try using 
Static Class
According to Object Oriented Design 
Principles, there are five principles that you must follow when design a class,
SRP - The Single 
Responsibility Principle – A class should have one, and only one, reason to 
change.
OCP - The Open Closed 
Principle – You should be able to extend a classes behavior, without modifying 
it.
LSP - The Liskov Substitution 
Principle- Derived classes must be substitutable for their base classes.
DIP - The Dependency 
Inversion Principle- Depend on abstractions, not on concretions.
ISP - The Interface 
Segregation Principle- Make fine grained interfaces that are client specific.