04 March 2015

C#: Enkapsulasi


Enkapsulasi (encapsulation) secara harfiah berarti pembungkusan. Enkapsulasi dalam object oriented programing (OOP) berarti menentukan hak akses terhadap suatu data dan method yang menyusun suatu kelas. Membungkus disini diartikan untuk menjaga suatu proses program agar tidak dapat diakses secara sembarangan atau untuk mencegah intervensi dari progam lain.

Konsep enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan akses terhadap program sesuai dengan tujuannya. Pengimplementasian nya dilakukan dengan penentu jenis akses (access specifiers). Access specifiers dalam C# adalah sebagai berikut:

  • Public
  • Private
  • Protected
  • Internal
  • Protected Internal
PUBLIC ACCESS
Jenis akses ini mengizinkan kelas untuk membuka variable dan function yang ada di dalamnya untuk diakses dari function dan object lainnya. Semua public member dapat diakses dari luar Class
Contoh:
using System;
namespace LuasPersegiPanjang
{
    class PersegiPanjang
    {
        public double panjang;
       
public double lebar;

       
public double LuasPersegiPanjang()
        {
            return panjang * lebar;
        }

       
public void TampilkanData()
        {
            Console.WriteLine("Panjang: {0}", panjang);
           
Console.WriteLine("Lebar: {0}", lebar);
           
Console.WriteLine("Luas: {0}", LuasPersegiPanjang());
        }
    } //akhir class PersegiPanjang

   
class Program
    {
        static void Main(string[] args)
        {
            PersegiPanjang r = new
PersegiPanjang();
            r.panjang  = 4.5;
            r.lebar  = 3.5;
            r.TampilkanData();
           
Console.ReadLine();
        }
    }
}

Runtime:
Pada contoh diatas, variable panjang dan lebar dideklarasikan dengan Public, jadi mereka bisa diakses dari kelas lainnya (program) di dalam function Main. dengan menggunakan object yang didekarasikan sebagai class PersegiPanjang yang diberi nama r.

Variable panjang dan lebar dapat digunakan dalam fungsi LuasPersegiPanjang dan TampilkanData secara langsung (tanpa deklarasi object PersegiPanjang karena masih dalam 1 class

Fungsi LuasPersegiPanjang dan TampilkanData juga dideklarasikan dengan Public, jadi dapat juga diakses dari function Main sebagaimana variable variable panjang dan lebar.

PRIVATE ACCESS
Private access memberikan fasilitas terhadap class untuk menyembunyikan variable dan function yang ada di dalamnya dari function dan object/class lain. Hanya fungsi dari class yang sama yang dapat mengaksesnya, bahkan turunan dari class tersebut tidak dapat mengaksesnya.

Contoh:
using System;
namespace LuasPersegiPanjang
{
    class PersegiPanjang
    {
        private double panjang;
        private double lebar;

         double LuasPersegiPanjang()
        {
            return panjang * lebar;
        }
       
        public void InputData()
        {
            Console.WriteLine("Input data panjang: ");
            panjang = Convert.ToDouble(
Console.ReadLine());
           
Console.WriteLine("Input data lebar: ");
            lebar = Convert.ToDouble(
Console.ReadLine());
        }

        public void TampilkanHasil()
        {
           
Console.WriteLine("Panjang: {0}", panjang);
           
Console.WriteLine("Lebar: {0}", lebar);
           
Console.WriteLine("Luas: {0}", LuasPersegiPanjang());
        }
    }//Akhir class PersegiPanjang

    class ExecuteRectangle
    {
        static void Main(string[] args)
        {
            PersegiPanjang r = new PersegiPanjang();
            r.InputData();
            r.TampilkanHasil();
            Console.ReadLine();
        }
    }
}

Runtime:

Protected Access
Protected access hanya dapat diakses dari class itu sendiri dan kelas turunannya. Fasilitas ini mendukung konsep inherit/pewarisan dalam object oriented programming.

Internal Access
Internal access mengizinkan sebuah class untuk membuka variable dan fungsi di dalamnya untuk fungsi dan object yang masih dalam satu assembly. Dengan kata lain, semua bagian dengan internal access bisa digunakan dimanapun selama masih bagian dari satu aplikasi (saat di compile jadi satu exe atau satu dll).
Contoh:
using System;
namespace LuasPersegiPanjang
{
    class PersegiPanjang
    {
        internal double panjang;
       
internal double lebar;

        double HitungLuas()
        {
            return panjang * lebar;
        }
        public void Display()
        {
            Console.WriteLine("Panjang: {0}", panjang);
           
Console.WriteLine("Lebar: {0}", lebar);
           
Console.WriteLine("Luas: {0}", HitungLuas());
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            PersegiPanjang r = new PersegiPanjang();
            r.panjang = 4;
            r.lebar = 3;
            r.Display();
            Console.ReadLine();
        }
    }
}


Runtime:


Protected Internal Access
Protected internal access mengizinkan class untuk menyembunyikan variable dan function di dalamnya, kecuali dengan kelas turunannya dalam satu aplikasi. Hal ini juga digunakan saat mengimplementasikan konsep inherit/pewarisan.



Click here if you like this article.


0 comments: