Skip to main content

Abstraction in C# Explained

Abstraction in C#

 

Abstraction is a principle of object-oriented programming language (OOP) that is used to hide the implementation details and display only essential features of the object.

 

In Abstraction, by using access modifiers we can hide the required details of the object and expose only necessary methods and properties through the reference of an object.

 

Abstraction can be achieved using abstract classes in C#. C# allows you to create abstract classes that are used to provide a partial class implementation of an interface. Implementation is completed when a derived class inherits from it. Abstract classes contain abstract methods, which are implemented by the derived class. The derived classes have more specialized functionality.

The following are some of the key points −

  • You cannot create an instance of an abstract class
  • You cannot declare an abstract method outside an abstract class
  • When a class is declared sealed, it cannot be inherited, abstract classes cannot be declared sealed.

In real-time, the mobile phone is a perfect example of abstraction in c#. A mobile phone consists of many things such as processor, storage, motherboard, screen, camera, battery, speakers, etc. To use it, we just need to know how to operate the phone by switching it on, we don’t need to know how internally all the parts are working. Here, the phone is an object which is designed to expose only required features by hiding its implementation details.

 

In object-oriented programming, a class is the perfect example of abstraction. In C#, we can create a class with required methodsproperties and we can expose only  necessary methods and properties using access modifiers based on our requirements.

 

Following is the example of defining a class with required methodsproperties and exposing it by using access modifiers to achieve abstraction functionality.

 

     public class Phone

    {

        private string brand;

        private string model;

        public string Brand

        {

            get { return brand; }

            set { brand = value; }

        }

 

        public string Model

        {

            get { return model; }

            set { model = value; }

        }

 

        public void PhoneDetails()

        {

            Console.WriteLine("Brand: " + Brand);

            Console.WriteLine("Model: " + Model);

        }

 

        public void PhoneKeyboard()

        {

            Console.WriteLine("Type using Keyword");

        }

 

        private void MotherBoardInfo()

        {

            Console.WriteLine("MotheBoard Information");

        }

 

        private void InternalProcessor()

        {

            Console.WriteLine("Processor Information");

        }

 

    }

 

From the above code snippets, we defined a Phone class with required fields, properties and methods with the publicprivate access modifiers to achieve an abstraction functionality by hiding and exposing some of the methods and properties based on our requirements.

 

Here, the public modifier is used to allow defined fields, properties and methods to access outside of the class and the private modifier is used to hide or restrict access of required fields, properties and methods from the outside of class.

 

By creating an instance of Phone class we can access defined fields, properties, and methods. Following is the pictorial representation of creating an instance of a class and accessing fields, properties and methods.

 

 

Phone Class

 

If we observe the above image, we will notice that we are exposing only the necessary properties and methods outside of the class by using public and private access modifiers.

 

Abstraction Example in C#

The following code snippets form the example of implementing an abstraction functionality by allowing only a few properties and methods to access outside of the class.

 

using System;

using System.Text;

namespace CsharpnaijaTutorial

{

    public class Phone

    {

        private string brand;

        private string model;

        public string Brand

        {

            get { return brand; }

            set { brand = value; }

        }

 

        public string Model

        {

            get { return model; }

            set { model = value; }

        }

 

        public void PhoneDetails()

        {

            Console.WriteLine("Brand: " + Brand);

            Console.WriteLine("Model: " + Model);

        }

 

        public void PhoneTouchPad()

        {

            Console.WriteLine("Type using Keyword");

        }

 

        private void MotherBoardInfo()

        {

            Console.WriteLine("MotheBoard Information");

        }

 

        private void InternalProcessor()

        {

            Console.WriteLine("Processor Information");

        }

 

    }

 

    class Program

    {

        static void Main(string[] args)

        {

            Phone phone = new Phone();

            phone.Brand = "Tecno";

            phone.Model = "Camon 11 Pro";

            phone.PhoneDetails();

            Console.WriteLine("\nPress Enter Key to Exit..");

            Console.ReadLine();

        }

    }

}

 

Based on the example above, we defined fields, properties and methods with public, private access modifiers to allow or disallow propertiesmethods access based on requirements.

 

Difference between Abstraction and Encapsulation

The differences between abstraction and encapsulation is that abstraction is used to hide unwanted data and shows only the required properties and methods while encapsulation is used to bind data members and member functions into a single unit to prevent outsiders to access it directly.

 

Thank you

 

References

1.     Tutlane

2.     TutorialPoint


Comments

Popular posts from this blog

Collections in C#

Collections in C# In our previous article , we have learned about how we can use arrays in C#. Arrays in programming are used to group a set of related objects. So one could create an array or a set of Integers, which could be accessed via one variable name. What is Collections in C#? Collections are similar to Arrays, it provides a more flexible way of working with a group of objects. In arrays, you would have noticed that you need to define the number of elements in an array beforehand. This had to be done when the array was declared. But in a collection, you don't need to define the size of the collection beforehand. You can add elements or even remove elements from the collection at any point of time. This article will focus on how we can work with the different collections available in C#. There are three distinct collection types in C#: standard generic concurrent The standard collections are found under the System.Collections. They do not store elemen...

The String.Join Method in C# Explained

The String.Join Method in C#   The string.Join concatenates the elements of a specified array or the members of a collection, using the specified separator between each element or member. Overloads of string.Join Method Description Join(Char, Object[]) Concatenates the string representations of an array of objects, using the specified separator between each member. Join(Char, String[]) Concatenates an array of strings, using the specified separator between each member. Join(String, IEnumerable<String>) Concatenates the members of a constructed IEnumerable<T> collection of type String, using the specified separator between each member. Join(String, Object[]) Concatenates the elements of an object array, using the specified separator between each element. Join(String, String[]) Concatenates all the elements of a string array, usi...

System.IO Namesapce in C#

  System.IO Namesapce in C# A  file  is a collection of data stored in a disk with a specific name and a directory path. When a file is opened for reading or writing, it becomes a  stream . The stream is basically the sequence of bytes passing through the communication path. There are two main streams: the  input stream  and the  output stream . The  input stream  is used for reading data from file (read operation) and the  output stream  is used for writing into the file (write operation). From the above definition of file, the C# provides a namespace that enable us to manipulate file in C# called System.IO.   System.IO  is a  namespace  and it contains a standard IO (input/output) types such as classes , structures , enumerations , and  delegates  to perform a read/write operations on different sources like file, memory, network, etc.   System.IO Classes The table below shows differen...