Keyword this pada OOP (C++, class, lingkaran)

Saat praktek coding membuat plugin WordPress, seorang murid saya tiba-tiba saja bertanya “this itu untuk apa pak”. Cliiing….. Saya tentunya paham apa itu this (rugi kuliah di ITS kalau tidak mengerti this dan mengajar OOP pula 🙂 Namun karena saya ingin menjelaskan supaya mudah siswa saya memahami, saya mesti menyiapkan slide dan coding-nya dulu. Kata kunci atau keyword this pada OOP digunakan untuk merujuk pada anggota class didalam lingkup class yang bersangkutan.

Bingungkan? Untuk lebih mudah memahami saya akan jelaskan dengan menggunakan contoh class berikut dalam bahasa C++. Kita akan membuat 2 class untuk lingkaran, kemudian membandingkan keduanya untuk memahami kegunaan keyword this.

1) class Lingkaran_A


class Lingkaran_A
{
    private:
         double radius;

    public:
        void setRadius(double radius)
        {
            this->radius = radius;
        }

        double hitungLuas (double r)
        {
            setRadius(r);
	    return (22.0/7.0) * radius * radius;
        }
};

int main()
{
    LingkaranA lingkaran1;
    
    double luas;

    luas = lingkaran1.hitungLuas(7);
    cout << "\n\nLuas lingkaran Class A : " << luas;

    cin.get();
    return 0;
}

2) class Lingkaran_B


class LingkaranB
{
    private:
        double radius;

    public:
        void setRadius(double radius)
        {
            this->radius = radius;
        }

        double hitungLuas (double r) 
        { 
            setRadius(r); 
            return (22.0/7.0) * radius * radius; 
        }
};

int main()
{ 
    LingkaranB lingkaran2; 
    double luas; 

    luas = lingkaran2.hitungLuas(7); 
    cout << "\n\nLuas lingkaran Class B : " << luas; 
    
    cin.get(); 
    return 0; 
}

 

3) Pembandingan back to back – kegunaan Keyword this pada OOP

Class LingkaranA tanpa this

Class LingkaranA tanpa this

Class LingkaranB dengan this

Class LingkaranB dengan this

4) Program selengkapnya

Berikut program selenkapnya. Dibuat menggunakan Visual Studio 2010. Project C++ => CLR Console Application. Program ini mendemonstrasikan 2 class lingkaran untuk menghitung luas lingkaran.


// lingkaranOOP_CLR_ConsoleAPp.cpp : main project file.
#include "stdafx.h"
#include <iostream>

using namespace System;
using namespace std;

class LingkaranA
{
    private:
        double radius;

    public:
        void setRadius(double r)
        {
            radius = r;
        }

        double hitungLuas (double r)
        {
            setRadius(r);
            return (22.0/7.0) * radius * radius;
        }
};

class LingkaranB
{
    private:
        double radius;

    public:
        void setRadius(double radius)
        {
            this->radius = radius;
        }

        double hitungLuas (double r)
        {
            setRadius(r);
            return (22.0/7.0) * radius * radius;
        }
};

int main(array<System::String ^> ^args)
{
    LingkaranA lingkaran1;
    LingkaranB lingkaran2;

    double luas;

    luas = lingkaran1.hitungLuas(7);
    cout << "\n\nLuas lingkaran Class A : " << luas;

    luas = lingkaran2.hitungLuas(7);
    cout << "\n\nLuas lingkaran Class B : " << luas;

    cin.get();
    return 0;
}

 

 

 

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

This site uses Akismet to reduce spam. Learn how your comment data is processed.