Polymorphism di C++
Setelah Inheritance, mari kita posting tentang polymorphism. Jika kita membicarakan polymorphism dalam C++, tentu kita harus membicarakan tentang fungsi virtual / virtual function dan overriding.
Berikut ini, code sederhana untuk contoh polymorphism
#include <iostream>
using namespace std;
class CPolygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b; }
virtual int area () /* virtual function */
{ return (0); }
};
class CRectangle: public CPolygon {
public:
int area ()
{ return (width * height); }
};
class CTriangle: public CPolygon {
public:
int area ()
{ return (width * height / 2); }
};
int main () {
CRectangle rect;
CTriangle trgl;
CPolygon poly;
CPolygon * ppoly1 = ▭
CPolygon * ppoly2 = &trgl;
CPolygon * ppoly3 = &poly;
ppoly1->set_values (4,5);
ppoly2->set_values (4,5);
ppoly3->set_values (4,5);
cout << ppoly1.area() << endl;
cout << ppoly2->area() << endl;
cout << ppoly3->area() << endl;
return 0;
}
Jadi kesimpulannya adalah : fungsi virtual / virtual function yang ditandai dengan keyword virtual pada base class mengindikasikan bahwa class derived diperbolehkan untuk melakukan overriding terhadap method / fungsi pada base class tersebut.
Referensi : dari berbagai sumber 😀
Sesuatu yang Perlu Dilakukan Sebelum Shalat Jumat.
Saat sebelum shalat jumat kemarin saya sempat berpikir sunnah sunnah apa saja yang dapat dilakukan sebelum melakukan shalat jumat. Tentu dalam ibadah kita ingin memperoleh pahala yang lebih, salah satunya dengan melaksanakan sunnah sunnah ibadah wajib.Terus saya googling menemukan sunnah sunnah yang perlu dilakukan sebelum shalat jumat.
- Mandi Sebelum Berangkat ke Masjid. Untuk mandi sebelum shalat jumaat berdasar referensi yang saya dapatkan sifatnya wajib. Sunnah atau wajib bagi saya harus dilakukan. Karena akan terasa aneh jika tidak dilakukan. Saya pernah mandi pada pagi harinya sekitar jam 7, saat shalat jumat seperti ada yang kurang. Maka saya sering mandi sebelum shalat jumat satu jam sebelumnya.
- Memakai Pakaian yang Baik dan Rapi, Mencukur kumis dan Memotong Kuku.
- Menggunakan Pengharum
- Bersegera Untuk Berangkat ke Masjid
- Sholat Sunnah Ketika Menunggu Imam atau Khatib
- Memperbanyak Sholawat Nabi dan Doa
- Membaca Alquran dan zikir sebelum khutbah jumat dimulai.
- Sholat Sunnah Setelah Sholat Juma. Shalat sunnah ini bisa 2 atau 4 rakaat. Jika 4 rakaat menggunakan 1 kali salam saja.
- Membaca Surat Al Kahfi. Nabi bersabda yang artinya, “Barang siapa yang membaca surat Al Kahfi pada hari Jumat maka Allah akan meneranginya di antara dua Jumat.” (HR. Imam Hakim )
Jika ada yang salah, Koreksi saya karena saya tidak ahli dalam masalah agama. 😀
Referensi : dari berbagai sumber.
Ren’s Message:
Jika sesuatu pekerjaan tersebut dapat menjauhkanmu dari api neraka walaupun cuma 1 cm, maka lakukanlah.
Inheritance / Pewarisan dalam C++ Part 2
Salah satu perbedaan antara Java dengan C++ dalam hal pewarisan adalah C++ mengijinkan penggunanya melakukan multiple inheritance / pewarisan berganda sedangkan Java menggunakan interface untuk memperoleh keuntungan dari multiple inheritance ( koreksi saya untuk pernyataan ini jika salah. Saya agak ragu 😀 ).
Multiple inheritance adalah dimana derived class mempunyai 2 atau lebih base class. Berikut ini syntax / format untuk multiple inheritance.
class nama_derived_class : penentu pewarisan nama_base_class1, penentu pewarisan nama_base_class2
{
/* code untuk derived class */
};
Menggunakan multiple inheritance mungkin dapat menyebabkan kerancuan dalam kompilasi code, misal nama method di dua base class sama. Untuk mengatasi hal tersebut dapat dilakukan dengan menggunakan nama base class untuk memanggil method tersebut.
syntax sebagai berikut.
object_derived_class. name_base_class::method_base_class();
Contoh code multiple inheritance
#include <iostream>
using namespace std;
class CPolygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b;}
};
class COutput {
public:
void output (int i);
};
void COutput::output (int i) {
cout << i << endl;
}
class CRectangle: public CPolygon, public COutput {
public:
int area ()
{ return (width * height); }
};
class CTriangle: public CPolygon, public COutput {
public:
int area ()
{ return (width * height / 2); }
};
int main () {
CRectangle rect;
CTriangle trgl;
rect.set_values (4,5);
trgl.set_values (4,5);
rect.output (rect.area());
trgl.output (trgl.area());
return 0;
}
Referensi : dari berbagai sumber. 😀
Inheritance / Pewarisan dalam C++ Part 1
Mari kita break untuk posting tentang Java, kita isi dengan posting bahasa pemrograman yang lain yaitu C++. Untuk posting kali ini adalah inheritance / pewarisan pada bahasa C++. Tentu salah satu hal yang perlu diperhatikan dalam inheritance adalah akses modifier untuk setiap entitas pada class base baik itu fungsi / method dan variabel. Secara default entitas pada class base yang mempunyai akses modifier public dan protected, pada class derived / turunan akses modifiernya berubah menjadi private. Sedangkan entitas pada base class yang akses modifiernya private tidak diturunkan kepada derived class, begitu juga konstruktor dan destruktor juga tidak diturunkan kepada derived class. Untuk mengubah setting default pada pewarisan dapat menggunakan penentu pewarisan. berikut ini format untuk inheritance pada C++.
class nama_derived_class : penentu pewarisan nama_base_class
{
/* code untuk derived class */
};
Berikut tabel Penentu pewarisan.
Penentu pewarisan |
Akses modifier di base class |
Akses modifier pada derived class |
Private | Private Protected Public |
Tidak diwariskan Private private |
Protected | Private Protected Public |
Tidak diwariskan Protected Protected |
Public | Private Protected Public |
Tidak diwariskan Protected Public |
Contoh code untuk inheritance menggunakan penentu pewarisan public semoga bermanfaat.
#include <iostream>
using namespace std;
class CPolygon {
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b;}
};
class CRectangle: public CPolygon {
public:
int area ()
{ return (width * height); }
};
class CTriangle: public CPolygon {
public:
int area ()
{ return (width * height / 2); }
};
int main () {
CRectangle rect;
CTriangle trgl;
rect.set_values (4,5);
trgl.set_values (4,5);
cout << rect.area() << endl;
cout << trgl.area() << endl;
return 0;
}
Referensi : dari berbagai sumber 😀
Tiga Kata yang Menginspirasi.
Hari ini saya menonton salah satu video motivasi dari Nick Vujicic yang bagi saya sangat memovitasi diri sendiri. Untuk yang belum menonton, lihat saja di Youtube.com :D. Dari video tersebut ada tiga hal penting untuk membuat kita dapat meraih cita cita dan impian kita.
- Perspektif
Adalah bagaiman kita memandang hidup dan kondisi / state kita. Kebanyakan orang memiliki perspektif yang negatif dalam hidup mereka. Perspektif yang negatif membuat kita berpikir bahwa diri ini penuh dengan keterbatasan. Misalnya andai saja dulu melakukan ini? andai saja saya punya ini? andai saja saya punya itu? permasalahnya apakah pikiran tersebut membuat kita menjadi lebih baik. Tentu saja jawabannya tidak, pikiran tersebut malah akan membuat kita menjadi tersandera dan membuat kita tidak bisa maju. Yang perlu kita persepektif positif adalah inilah saya, saya bersyukur semua yang ada pada diri saya, saya dapat mencapai semua impian dan cita saya. Kenapa kita butuh perspektif positif? Karena dengan perspektif positif, kita tidak membatasi diri sendiri, kita tidak terpengaruh dengan opini negatif orang orang lain, kita tetap berjalan sesuai dengan perspektif kita.
Today is yours, Lakukan yang ingin kita lakukan. Sesuai dengan prioritas kita.
- Visi
Visi adalah tujuan, impian yang akan kita capai dalam hidup ini. Dan jangan menyesali kesempatan yang terlewatkan karena hanya akan membuat kita kehilangan kesempatan yang lain. Dalam mencapai visi tersebut harus dilakukan dengan selangkah demi selangkah. Jangan pernah berpikir suatu saat saya akan memperoleh semua yang kita impikan ( Jika suatu saat itu datang ). Yup, karena kata ” suatu saat “ kadang membuat kita melupakan bahwa kita masih punya “hari ini”. Berpikirlah, hari ini saya akan melakukan sesuatu yang bermanfaat. Benar kita harus punya visi masa depan yang jelas dan besar, tapi jangan karena visi masa depan tersebut kita melupakan fakta bahwa kita masih mempunyai “hari ini”. Lakukan selangkah demi selangkah, sedikit demi sedikit. Lakukan apa yang dapat kau lakukan hari ini, Jangan menundanya. Renungkan ungkapan berikut ” Next time? There will be no next time “. Lakukan yang terbaik untuk hari ini.
- Pilihan
Dan yang terpenting dari semua ini adalah seberapa bijak kita dalam memilih dalam hidup ini? karena hidup adalah pilihan.
Semoga bermanfaat bagi saya dan kamu 😀
Kenapa Negeriku Malah Dijadikan Surga Bagi Expatriate?
Saya menemukan artikel yang menarik. Artikelnya sebagai berikut.
Tiga setengah abad berada di bawah penjajahan Belanda yang sangat tidak beradab telah membuat bangsa Indonesia tumbuh menjadi bangsa yang “rendah diri”. Meskipun sudah lebih dari 60 tahun merdeka, tetapi sindrom “mental bangsa terjajah” ini tetap belum hilang. Masih saja merasa diri belum sejajar dengan bangsa lain.
Satu contoh sederhana keminderan ini terlihat dari diskriminasi tingkat gaji yang sangat tinggi antara expatriate dibandingkan anak negeri sendiri. Para expatriate di Indonesia digaji 10 kali lipat dari orang Indonesia meskipun dengan tingkat pendidikan, kemampuan, tanggung jawab dan kinerja yang sama.
Seorang foreign engineer di Jakarta misalnya, menurut standar Bappenas, mendapatkan gaji sekitar US $5.000,00 per tahun. Sebaliknya orang Indonesia, dengan kualifikasi sama hanya menerima sebesar $500,00 saja. Tidak jarang dalam suatu proyek, meskipun dengan kualifikasi pendidikan lebih tinggi semisal MSc atau PHd, orang Indonesia digaji tetap lebih rendah dari expatriate yang cuma BSc (Rahardjo, 2006).
Di samping gaji tinggi, biasanya expatrite juga mendapat berbagai fasilitas berlimpah seperti berkantor di kawasan segitiga mas (Sudirman, Thamrin dan Kuningan), tempat tinggal di apartemen mewah, keanggotan di club-club olah raga dan hiburan elite dan lain-lain. Intinya mereka sangat dimanjakan, sehingga tidak salah kalau dikatakan Indonesia adalah syurga bagi para expatriate.
Sebenarnya tidak masalah jika expatriate digaji sedemikian tinggi jika memang memiliki kemampuan unik yang tidak dimiliki oleh orang Indonesia dan betul-betul dibutuhkan. Tetapi jika kemampuan dan kinerja sama, lalu digaji lebih tinggi hanya karena statusnya bule, sungguh tidak logis menurut cara fakir orang yang berjiwa “merdeka”.
Jika pemerintah atau perusahaan harus membayar mahal hanya untuk status ke-bule-an saja, bukankah ini standar yang sangat stupid. Ketika jasa seseorang dihargai cuma 1/10 dari koleganya, hanya karena dia orang INDONESIA, berarti sungguh malang menjadi orang Indonesia.
Mirisnya lagi, yang mengeluarkan standar gaji yang sangat diskriminatif ini adalah Bappenas – Pemerintah Indonesia sendiri. Berarti pemerintah Indonsia melecehkan rakyatnya sendiri, menganggap bodoh bangsanya sendiri. Ini sungguh bertolak belakang dari peran yang seharusnya dimainkan oleh pemerintah.
Bukankah pemerintah suatu negara seharusnya menyokong rakyatnya, mendorong mereka supaya bisa maju, jika belum mampu difasilitasi supaya mencapai kualifikasi sama dengan expatriate. Singkatnya memberi kesempatan seluas-luasnya kepada anak bangsa untuk bisa berkembang dan mengekspolasi potensinya.
Kenyataan di lapangan menunjukkan tidak selalu yang bernama bule lebih pintar dari orang Indonesia. Banyak diantara mereka memiliki kemampuan biasa-biasa saja. Malah mungkin di negaranya berada pada lapis ke-3 atau 4, tapi di Indonesia mereka disanjung sedemikian rupa, mendapatkan posisi yang sangat bagus dan hidup mewah.
Keadaan ini tidak hanya berlaku di dunia bisnis, tetapi juga pada proyek-proyek pemerintah. Suatu kali tim peneliti dari UGM mendapat tugas membuat perencanaan daerah wisata pulau Jemur, di Kabupaten Rokan Hulu Riau. Sebagai arsitek dan perencana lokal, tim ini hanya mendapat dana sebesar 500 juta rupiah untuk jangka waktu 6 (enam) bulan. Sementara ada satu kabupaten lain yang lebih percaya pada konsultan dari Singapura harus mengeluarkan anggaran sebesar 3 milyar rupiah.
Saat hasil penelitian dan perencanaan sama-sama dipresentasikan, ternyata perencanaan yang dibuat tim peneliti UGM tidak kalah bagus dari konsultan Singapura yang dibayar enam kali lipat lebih tinggi. Malahan perencaanan UGM terlihat lebih menyentuh apa yang dibutuhkan masyarakat karena mereka memadukan dengan metodePartisipatory Planning sehinga mereka tahu betul apa keinginan masyarakat.
Sebenarnya kita sendiri yang menempatkan para expatriate pada posisi yang sangat tinggi, menyanjung mereka sedemikian rupa, begitu percaya dan yakin mereka lebih baik, dan lebih berkualitas. Sebaliknya tidak memberi perlakuan sama kepada bangsa sendiri. Secara umum di seluruh dunia, expatriate memang digaji lebih tinggi dari pekerja lokal, namun perbedaannya tidak separah di Indonesia. Di Silicon Valley misalnya, gaji seorang software engineer (expatriate) dua kali pekerja lokal, termasuk jikaexpatriate-nya orang Indonesia (Patriawan, 2006).
Pemerintah Indonesia sepertinya tidak yakin dengan kemampuan sendiri. Inilah warisan mental Inlander (sindrom minder, rasa rendah diri, dan inferior) dari Belanda (Yulianto, 2007). Padahal fakta membuktikan banyak anak-anak Indonesia yang brilliant malah dimanfaatkan oleh orang luar negeri. Bukankah banyak jebolan ITB yang menjadienginer-nya perusahan-perusahan minyak dunia di Houston misalnya, yang dikenal sebagai kota minyak dunia. Itu membuktikan kalau kualifikasi anak Indonesia, sama sekali tidak kalah dengan yang bernama bule.
Mereka adalah aset bangsa yang sangat berharga, dimana potensi mereka seharusnya dimaksimalkan untuk membangun bangsa. Yang terjadi malah mereka “disia-siakan”, dan dimanfaatkan negara lain. Bukankah lebih baik memanggil mereka pulang dan memberi penghargaan yang sama sebagaimana layaknya expatriate, ketimbang menggaji orang asing. Ibarat memberikan sumbangan, lebih baik kepada saudara sendiri dahulu baru kepada yang lebih jauh.
Disamping perlunya memberikan kesempatan yang sama kepada putra-putri dalan negeri sendiri, seharusnya pemerintah sangat berhati-hati dalam pemakaian expatriate, terutama untuk bidang perencanaan. Persoalannya bukan hanya sekedar pembayaran yang jauh lebih tinggi, tetapi menyangkut aspek lain yang lebih luas. Perlu digarisbawahi, pada proyek-proyek pemerintah, masuknya para expatriate ke Indonesia bukan karena sebuah rekruitment terbuka.
Mereka adalah “AGEN-AGEN” yang dipekerjakan oleh pemerintah dari negara mereka, lalu ditempatkan pada lembaga lembaga strategis di Indonesia, khususnya dalam bidang-bidang perencanaan.
Sebagaimana diketahui, fondasi dari sebuah pembangunan baik fisik maupun mental adalah pada aspek perencanaan. Ketika para expatriate berada pada posisi perencanaan, maka dengn mudah mereka menyuntikkan virus virus kapitalis didalamnya. Mereka memang sengaja dihadirkan melalui proyek- proyek besar yang didanai oleh negara-negara asing. Ini adalah dampak negatif bagi bangsa Indonesia yang perlu diwaspadai oleh pemerintah.
Karena itu, perlu adanya perubahan paradigma yang menganggap bangsa asing (bangsa berkulit putih) lebih baik dari orang Indonesia. Pemerintah juga sebaiknya segera melakukan pemetaan SDM yang dimiliki Indonesia, baik menyangkut kuantitas maupun kualitas. Dengan adanya statistik lengkap dan peta yang jelas tentang penyebaran SDM Indonesia di berbagai disiplin ilmu, maka akan didapatkan gambaran jelas tentang kekuatan SDM Indonesia.
Dengan kedua hal ini, diharapkan Bappenas – pemerintah – dapat merevisi standarnya yang tidak rasional tersebut. dan menggantinya dengan standar yang lebih mencerminkan jiwa merdeka sebuah bangsa. Lebih jauh, pemerintah bisa mendapatkan keyakinan bahwa sebenarnya tersedia cukup SDM dengan jumlah dan kualifikasi yang memadai, sehingga tidak selalu harus bergantung pada expatriate. Pada akhirnya diharapkan ibu pertiwi dapat menjadi surga bagi anak negeri sendiri.
Semoga bermanfaat. Sebagai perenungan untuk semua anak Indonesia.