;

C# Class and Objects


Classes and objects form the foundation of object-oriented programming (OOP) in C#. In simple terms, a class is a blueprint or template that defines the properties (data) and behaviors (methods) that the objects created from that class can have. An object is an instance of a class, which means it’s a specific entity that can use the class's properties and methods.

Let's dive into understanding classes and objects in C# with detailed explanations and examples.

What is a Class?

A class in C# is like a blueprint for creating objects. It defines the properties, behaviors, and other characteristics that the objects created from it will have. Think of a class as a user-defined data type that contains its own data members (fields, properties) and functions (methods).

Syntax of a Class

class ClassName
{
    // Fields
    // Properties
    // Methods
}

Example:

class Car
{
    public string make;
    public string model;
    public int year;

    public void DisplayInfo()
    {
        Console.WriteLine($"Car: {make}, Model: {model}, Year: {year}");
    }
}

This Car class defines three fields (make, model, and year) and a method (DisplayInfo) to display the car's information.

What is an Object?

An object is an instance of a class. When you create an object, you are creating an entity that has all the properties and methods defined in its class. An object represents a specific example of the class.

Example of Object Creation

Car myCar = new Car();

In this case, myCar is an object (or instance) of the Car class. You can now assign values to its fields and call its methods.

Creating a Class in C#

To create a class in C#, you use the class keyword followed by the class name. Let’s create a simple Person class.

Example:

class Person
{
    public string name;
    public int age;

    public void Introduce()
    {
        Console.WriteLine($"Hi, I'm {name} and I'm {age} years old.");
    }
}

In the Person class, we have two fields (name and age) and one method (Introduce).

Creating an Object in C#

Once the class is defined, you can create objects based on that class. Here’s how you can create an object for the Person class:

Example:

Person person1 = new Person();
person1.name = "John";
person1.age = 30;
person1.Introduce();

Output

Hi, I'm John and I'm 30 years old.

Here, person1 is an object of the Person class. We can access its fields and methods using the dot (.) operator.

Fields, Properties, and Methods in a Class

  • Fields: Variables defined in a class that store the state of an object.
  • Properties: A cleaner way to control access to fields. Properties use get and set accessors.
  • Methods: Functions defined in a class that describe the behavior of the object.

Example of Properties

Let’s add properties to our Person class instead of using public fields:

class Person
{
    private string _name;
    private int _age;

    public string Name
    {
        get { return _name; }
        set { _name = value; }
    }

    public int Age
    {
        get { return _age; }
        set 
        { 
            if (value > 0)
                _age = value;
        }
    }

    public void Introduce()
    {
        Console.WriteLine($"Hi, I'm {Name} and I'm {Age} years old.");
    }
}

Now, the fields are private, and we control how they are accessed using properties.

Constructors in C#

A constructor is a special method that is called when an object is created. It’s used to initialize objects and can be parameterized to assign values to the object's properties at the time of creation.

Syntax:

class ClassName
{
    public ClassName()
    {
        // Constructor logic
    }
}

Example of a Constructor

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    // Constructor
    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }

    public void Introduce()
    {
        Console.WriteLine($"Hi, I'm {Name} and I'm {Age} years old.");
    }
}

You can create an object like this:

Person person1 = new Person("Jane", 25);
person1.Introduce();

Output: 

Hi, I'm Jane and I'm 25 years old.

Access Modifiers in C#

C# provides access modifiers to define the visibility and accessibility of classes, fields, properties, and methods.

  • public: Accessible from anywhere.
  • private: Accessible only within the class.
  • protected: Accessible within the class and its derived classes.
  • internal: Accessible only within the same assembly.

By using access modifiers, you can control how the class and its members can be accessed from other parts of your code.

Use Cases and Real-World Examples of Classes and Objects

Let’s look at some common use cases where classes and objects are helpful.

1. Modeling Real-World Entities

Classes are perfect for modeling real-world objects like cars, people, or products. For example:

class Product
{
    public string Name { get; set; }
    public double Price { get; set; }

    public void DisplayDetails()
    {
        Console.WriteLine($"Product: {Name}, Price: {Price}");
    }
}

2. Creating Game Characters

In game development, you often use classes to define characters, weapons, or levels.

class Character
{
    public string Name { get; set; }
    public int Health { get; set; }

    public void Attack()
    {
        Console.WriteLine($"{Name} attacks with {Health} health points!");
    }
}

3. Building a Banking System

In a banking application, you can create classes for customers, accounts, and transactions.

class BankAccount
{
    public string AccountNumber { get; set; }
    public double Balance { get; private set; }

    public void Deposit(double amount)
    {
        Balance += amount;
    }

    public void Withdraw(double amount)
    {
        if (amount <= Balance)
        {
            Balance -= amount;
        }
        else
        {
            Console.WriteLine("Insufficient funds!");
        }
    }
}

Summary

In C#, classes and objects are the essence of object-oriented programming. Classes define the blueprint for objects, and objects bring those blueprints to life. You can use classes to model real-world entities, create complex applications, and ensure your code is clean, maintainable, and reusable.

By understanding classes and objects, you can build robust software solutions in C#. Whether you're creating a simple program or a complex enterprise system, mastering these concepts is crucial for your success.

Now that you have a solid understanding of classes and objects, you can start applying them to your own projects and see how they make your code more organized and scalable.