Dec 16

binus-university image001

 

Kegiatan ini dilakukan dengan tujuan memenuhi tugas mata kuliah Character Building : Professional Development dan bekerja sama dengan Teach for Indonesia serta Dinas Pendidikan DKI Jakarta.

Kelas : LD01

Dosen : SILVERIUS CONSTANTINO JOHANES MARIA LAKE, M.HUM,

Waktu Pelaksanaan : Rabu, 4 November 2015

Jam Pelaksanaan : 08.00 s/d 10.00 WIB

Lokasi Pelaksanaan : SDN 03 Jagakarsa PG

Tim yang Hadir :

Ketua : Daniel David / 1701291610

Anggota :

  • Deviani / 1701292600
  • Olivia Rusli / 1701294423
  • Sezi Sagarianti / 1701293300
  • Henricko Randy S. / 1701293931
  • Yohannes Yobel Budiman / 1701294026
  • Audi Asmarandana / 1701296246
  • Frangky Adiputra / 1701295262

Tim yang tidak hadir : –

Foto bukti Jagakarsa 1

 

Dari kiri ke kanan : Frangky Adiputra, Bapak Kamal (KepSek), Daniel David, Olivia Rusli, Deviani, Sezi Sagarianti, Henricko Randy, Yohannes Yobel Budiman, Bapak Ali (Person in Charge), Photograph by Audi Asmarandana

 

Foto bukti Jagakarsa 2

 

Dari kiri ke kanan : Audi Asmarandana, Bapak Kamal (KepSek), Daniel David, Olivia Rusli, Deviani, Sezi Sagarianti, Henricko Randy, Yohannes Yobel Budiman, Bapak Ali (Person in Charge), Photograph by Frangky Adiputra

 

BAGIAN ISI

Teori yang diajarkan di mata kuliah ini adalah bagaimana kita bisa menjadi seorang professional dalam menjalankan tugas yang diberikan kepada kami. Dengan menjalankan tugas ini, kami sudah harus memegang prinsip-prinsip seorang professional yaitu, tanggung jawab, hormat kepada hak orang lain, otonomi, dan integritas. Prinsip yang ditekankan dalam menjalankan tugas ini adalah tanggung jawab. Karena kami bertanggung jawab dalam memastikan berjalannya Program KJP di sekolah yang kami datangi.

 

Berikut ini adalah kronologi dari kegiatan kami :

Kami melakukan survey lokasi pada hari Rabu tanggal 28 Oktober 2015 pukul 09.00. Kami bertemu dengan KepSek dan staff yang bertanggung jawab dalam pelaksanaan KJP. Survey dilakukan hanya bertiga dari kelompok kami, yaitu Daniel David, Audi Asmarandana, dan Henricko Randy. Dalam survey ini kami melakukan perjanjian bahwa kegiatan akan dilaksanakan seminggu kemudian, yaitu tanggal 4 November 2015 dan bertempat di Musholla sekolah.

Seminggu kemudian, kami datang ke sekolah pada pukul 07.30 pagi. Kami berbincang-bincang sebentar dengan staff KJP dan KepSek mengenai bagaimana cara kami akan melakukan kegiatan ini.

Jam 08.00 kami pun memulai kegiatan kami. Di Musholla disediakan meja sebanyak 8 buah, ini ditujuan agar masing-masing dari kami bisa mewawancarai anak-anak secara empat mata dan mempercepat kegiatan wawancara. Anak-anak yang diwawancarai adalah murid-murid kelas 3 s/d 6 SD. Beberapa dari mereka bisa menjawab dengan baik dan lancar, ada juga yang agak malu-malu dalam menjawab dikarenakan tidak tahu atau tidak mengerti dengan apa yang ditanyakan. Kami pun memang merasa bahwa pertanyaan yang diberikan agak terlalu sulit untuk dimengerti oleh anak SD. Namun demikian, kegiatan wawancara ini bisa dilakukan dengan baik.

Setelah wawancara selesai, kami melanjutkan di kantor guru untuk melakukan verifikasi data 8355, validasi pendidikan, dan evaluasi kegiatan. Kami didampingi oleh Bapak Ali.

Hasil yang kami dapatkan adalah semua data 8355 sudah cocok dan semuanya terdaftar. Kami pun melihat arsip-arsip yang berisi struk-struk pembelian dari murid-murid yang dilaporkan ke sekolah.

Setelah itu kami melakukan dokumentasi di depan sekolah dan berpamitan.

 

Metode yang kami gunakan dalam melakukan wawancara adalah dengan bertanya langsung secara empat mata dengan murid. Begitu selesai, langsung dilanjutkan dengan murid yang berikutnya.

Kelebihan dari metode ini adalah efisiensi waktu yang baik, wawancara juga bisa lebih terarah karena dilakukan secara privat. Dan kami tidak melihat adanya kelemahan dalam metode ini.

 

Berikut ini adalah bukti bahwa kami TELAH MENGISI data siswa, data KJP, serta Validasi Pendidikan di Google Docs :

KJP Siswa

 

KJP Sekolah

Validasi Pendidikan

 

Secara eksternal, kinerja kami dalam menjalankan tugas dinilai amat baik oleh pihak sekolah. Semua terlihat dari keantusiasan dan keramahan yang diperlihatkan oleh pihak sekolah. Hasil evaluasi kegiatan akan kami lampirkan di bawah.

Secara internal, kami tidak ingin menyebutkan siapa yang paling baik dalam menjalankan tugas ini. Masing-masing dari kami dapat menjadi contoh kepada anggota yang lain. Jadi tidak ada anggota atau bahkan ketua sekalipun yang ditonjolkan dalam kegiatan ini. Semua telah bekerja dengan sangat amat baik dari segala aspek.

Evaluasi Jagakarsa

BAGIAN PENUTUP

Kami sudah mengisi data siswa, data KJP, dan Validasi Pendidikan seperti yang tertera di atas.

Kesimpulan dari hasil pengecekan KJP dan 8355 yang terlah kami lakukan adalah SEMUA SISWA SUDAH TERDAFTAR baik di sekolah maupun di Dinas.

Kesimpulan yang kami ambil dari pelaksanaan kegiatan ini adalah : melakukan kegiatan professional memang tidak mengenal jarak. Perjalanan jauh yang kami tempuh dari Binus menuju kawasan Jagakarsa merupakan hal yang melelahkan. Namun karena kegiatan kami ini adalah kegiatan yang bertujuan baik, kami pun melakukannya dengan bersikap professional dan berprinsip tanggung jawab.

Next to do : Kami melakukan kegiatan selanjutnya SDN 05 Palmerah PG dan mengusahakan agar kegiatan selanjutnya bisa terlaksana dengan lebih efisien.

Jumlah peserta : 30 anak.

Dec 14

binus-university image001

Kegiatan ini dilakukan dengan tujuan memenuhi tugas mata kuliah Character Building : Professional Development dan bekerja sama dengan Teach for Indonesia serta Dinas Pendidikan DKI Jakarta.

Kelas : LD01

Dosen : SILVERIUS CONSTANTINO JOHANES MARIA LAKE, M.HUM,

Waktu Pelaksanaan : Selasa, 10 Novermber 2015

Jam Pelaksanaan : 08.00 s/d 10.00 WIB

Lokasi Pelaksanaan : SDN 05 Palemerah PG

Tim yang Hadir :

Ketua : Daniel David / 1701291610

Anggota :

  • Deviani / 1701292600
  • Olivia Rusli / 1701294423
  • Sezi Sagarianti / 1701293300
  • Henricko Randy S. / 1701293931
  • Yohannes Yobel Budiman / 1701294026
  • Audi Asmarandana / 1701296246
  • Frangky Adiputra / 1701295262

Tim yang tidak hadir : –

Foto bukkti Palmerah 1

Dari kiri ke kanan : Daniel David, Henricko Randy, Frangky Adiputra, Sezi Sagarianti, Kepala Sekolah, Staff Tata Usaha, Deviani, Olivia Rusli, Audi Asmarandana, Yohannes Yobel.

 

BAGIAN ISI

Teori yang diajarkan di mata kuliah ini adalah bagaimana kita bisa menjadi seorang professional dalam menjalankan tugas yang diberikan kepada kami. Dengan menjalankan tugas ini, kami sudah harus memegang prinsip-prinsip seorang professional yaitu, tanggung jawab, hormat kepada hak orang lain, otonomi, dan integritas. Prinsip yang ditekankan dalam menjalankan tugas ini adalah tanggung jawab. Karena kami bertanggung jawab dalam memastikan berjalannya Program KJP di sekolah yang kami datangi.

 

Berikut ini adalah kronologi kegiatan kami :

Survey lokasi sekolah dilakukan pada tanggal 4 November 2015 pada pukul 1 siang. Survey lokasi ini dilakukan setelah kami menjalankan kegiatan pertama kami di sekolah SDN 03 Jagakarsa PG. Pada awalnya, kami agak mengalami kesulitan dalam membuat perjanjian dengan sekolah ini dikarenakan sekolah ini sedang mengadakan renovasi. Komunikasi yang kami jalin via telepon agak kurang diterima dengan baik. Oleh sebab itu kami langsung mendatangi sekolah ini dengan membawa surat jalan yang sudah kami pegang.

Pada akhirnya kami berhasil mengadakan perjanjian dengan sekolah ini untuk mengadakan kegiatan pada tanggal 10 November 2015, bertepatan dengan Hari Pahlawan.

Saat hari -H, kelompok kami berkumpul di lokasi pada pukul 8 pagi. Setelah itu kami langung bertemu dengan kepala sekolah, dan memulai kegiatan di suatu ruangan.

Untuk mempersingkat waktu, kami membagi tugas, Yohannes dan Randy mengurusi verifikasi data 8355 bersama dengan kepala sekolah dan sisanya menjalankan wawancara kepada murid ditemani oleh staff dari tata usaha.

Satu demi satu murid datang untuk kami wawancarai. Beberapa dapat menjawab dengan baik walaupun sambil kebingungan.

Kegiatan wawancara ini berlangsung kurang lebih selama 1 jam.

BERIKUT INI ADALAH YANG HARUS DIPERHATIKAN KARENA ADANYA KESALAHPAHAMAN DALAM PELAKSANAAN TUGAS KAMI.

Pada awalnya kami memilih sekolah SDN 05 PALMERAH PG dalam form yang disediankan oleh pihak TFI. Namun saat pelaksanaan, kami malah melakukan kegiatan bersama dengan SDN 03 PALMERAH PG. Mengapa demikian? Ini disebabkan karena ketidaktahuan kami bahwa SDN 05 PALMERAH PAGI dan SDN 03 PALMERAH PG adalah SATU GEDUNG dan hanya berbeda lantai. SDN 05 berada di lantai 2 dan SDN 03 berada di lantai 1. Karena mengetahui kesalahpahaman ini setelah melaksanakan kegiatan, maka kami berinisiatif untuk menghubungi kelompok lain yang seharusnya melaksanakan kegiatan di SDN 03 Palmerah PG dan meminta agar bertukar sekolah. Kelompok lain tersebut pun MENYATAKAN SETUJU untuk melakukan tukar sekolah dengan kelompok kami.

 

Metode yang kami gunakan dalam melakukan wawancara adalah dengan bertanya langsung secara empat mata dengan murid. Begitu selesai, langsung dilanjutkan dengan murid yang berikutnya.

Kelebihan dari metode ini adalah efisiensi waktu yang baik, wawancara juga bisa lebih terarah karena dilakukan secara privat. Dan kami tidak melihat adanya kelemahan dalam metode ini.

 

Berikut ini adalah bukti bahwa kami TELAH MENGISI data siswa, data KJP, serta Validasi Pendidikan di Google Docs :

KJP SiswaKJP Sekolah Validasi Pendidikan

 

 

Secara eksternal, pengukuran kinerja yang sudah kami lakukan dinilai secara baik oleh pihak sekolah karena keteraturan dan ketepatan kami dalam menjalankan tugas. Untuk form evaluasi sekolah akan dilampirkan di bawah.

Secara internal, kami tidak ingin menyebutkan siapa yang paling baik dalam menjalankan tugas ini. Masing-masing dari kami dapat menjadi contoh kepada anggota yang lain. Jadi tidak ada anggota atau bahkan ketua sekalipun yang ditonjolkan dalam kegiatan ini. Semua telah bekerja dengan sangat amat baik dari segala aspek.

Evaluasi Palmerah

 

BAGIAN PENUTUP

Kami sudah mengisi data siswa, data KJP, dan Validasi Pendidikan seperti yang tertera di atas.

Kesimpulan dari hasil pengecekan KJP dan 8355 yang terlah kami lakukan adalah SEMUA SISWA SUDAH TERDAFTAR baik di sekolah maupun di Dinas.

Kesimpulan yang kami ambil dari pelaksanaan kegiatan ini adalah : menjadi seorang professional bukanlah hal yang mudah untuk dilakukan. Tapi dengan kegiatan ini kami jadi dapat merasakan bagaimana rasanya bekerja untuk tujuan yang baik yaitu memastikan bahwa Program KJP telah terlaksana dengan baik.

Next to do : –

Jumlah peserta : 30 anak.

Jun 05

Nama : Daniel David

NIM : 1701291610

Kelas : LD01

Isi Laporan :

Jumat, 15 Mei 2015

Setelah melakukan kegiatan ketiga kami, kami beristirahat sebentar sambil menunggu anak shift siang masuk. Kegiatan keempat kami adalah memberikan penyuluhan kepada anak shift siang.

Tidak kalah dengan shift pagim anak-anak siang pun sangat antusias dengan kami. Mereka mendengarkan dengan baik apa saja yang kami sampaikan.

Setelah penyuluhan, kami juga memberikan hadiah-hadiah kepada anak dengan gambar terbaik serta anak-anak lainnya.

Berikut adalah foto kegiatan keempat kami :

Logo TFI

20150506_115523

20150506_115525

20150506_120532

20150506_123027

20150506_123037

Jun 05

Nama : Daniel David

NIM : 1701291610

Kelas : LD01

Isi Laporan :

Jumat, 15 Mei 2015

Keesokan harinya kami kembali lagi ke TK Kemala Bhayangkari. Kali ini kami akan memberikan penyuluhan kepada anak-anak tentang pentingnya kejujuran.

Aktifitas dimulai seperti biasa oleh guru-guru. Setelah selesai dengan senam, anak-anak masuk ke kelas masing-masing dan kami pun masuk dengan mereka. Kami meminta anak-anak untuk duduk secara rapi. Anak-anak sangat antusias dalam mendengarkan apa yang kami sampaikan.

Untuk memeriahkan suasana, kami juga akan memberikan hadiah kepada anak yang memiliki gambar terbaik. Unutk menghindari adanya rasa iri, kami tetap membagikan hadiah kepada anak-anak yang lain.

Berikut adalah foto kegiatan kami :

Logo TFI

DSC00068

DSC00069

DSC00076

DSC00077

DSC00078

Jun 05

Nama : Daniel David

NIM : 1701291610

Kelas : LD01

Isi Laporan :

Kamis, 14 Mei 2015

Hari ini kami mulai menjalankan kegiatan kami yang selanjutnya. Dalam kegiatan ini, kami mengangkat tema mengenai ‘Kejujuran Sejak Dini’. Kami ingin menyampaikan nilai ini kepada anak-anak melalui kegiatan simulasi mewarnai.

Dalam kegiatan ini, kami akan melihat bagaimana anak-anak bisa bekerja secara jujur saat mewarnai gambarnya masing-masing. Jika ada yang berlaku kurang baik, maka akan kami tegur.

Kami bekerja selama 2 shift, yaitu pada kelas pagi dan kelas siang. Karena ramainya anak-anak, kamis dibagi manjadi 2 orang perkelas.

Berikut ini adalah foto kegiatan kami :

Logo TFI

DSC00025

DSC00027

DSC00033

DSC00085

DSC00087

DSC00093

DSC00097

DSC00099

Jun 05

Nama : Daniel David

NIM : 1701291610

Kelas : LD01

Isi Laporan :

Selasa, 24 Maret 2015

Kami kelompok 8 melakukan kegiatan pertama kami yaitu melakukan survey ke lokasi dimana nantinya kami akan melakukan kegiatan CB. Kami memilih lokasi di sebuah taman kanak-kanak yang tidak begitu jauh dari kampus. Lokasi yang kami pilih adalah TK Kemala Bhayangkari Palmerah. Lokasi ini bisa dijangkau hanya dengan menaiki angkot M11 dari Binus Anggrek.

Sesampainya di lokasi, kami disambut hangat oleh Ibu Dini selaku Kepsek. Kami menyampaikan maksud dan tujuan kmai datang ke sekolah tersebut. Tanpa berfikir panjang, kami langsung mendapatkan ijin dari Ibu Dini untuk melakukan kegiatan disana.

Selanjutnya kami berkeliling sekolah untuk melihat-lihat.

Berikut ini adalah fotonya

Logo TFI

DSC00001

DSC00013

Jun 17

UAS T0044 PAGI 20xx

 

  1. Pilihan (40 poin)

 

01. Ide dari generic programming adalah mengganti

a. static function                                 b. inline function

c. virtual function                                d. friend function

dengan fungsi yang ada di template parameter.

 

02. Overloading function juga dikenal dengan nama

a.ad hoc polymorphism                    b. subtype polymorphism

c. true polymorphism                          d. parametric polymorphism

03. Opsi berikut yang bukan merupakan fitur utama dari OOP adalah

a. encapsulation           b. inheritance   c. polymrophism          d. template

04. Inheritance kerap kali dihubungkan dengan polymorphism. Istilah yang paling

tepat untuk menyatakan inheritance sebagai polymorphism adalah

a.trivial polymorphism                        b. universal polymorphism

c. pure polymorphism                          d. subtype polymorphism

 

05. Meskipun mendukung penggunaan multiple inheritance tetapi penggunaan fitur

ini tidak dianjurkan di C++. Opsi berikut yang dianjurkan sebagai penggantinya

adalah

a. composition                                                b. template

c. polymorphism                                  d. overloading function

 

06. Selain sebagai tool untuk membentuk generic programming, template juga

merupakan tool untuk membentuk

a. universal polymorphism                  b. static polymorphism

c. ad hoc polymorphism                      d. subtype polymorphism.

 

07. Run-time polymorphism dapat diimplementasikan menggunakan

a. virtual function      .                       b. overloading function

c. friend function                                d. inline function

 

08. Paradigma-paradigma berikut yang digunakan mendukung pemrograman C++

adalah

a. procedural dan object oriented programming

b. object oriented programming dan generic programming

c. generic programming dan object oriented programming

d. procedural, object oriented programming dan generic programming.

 

 

 

09. Contoh dari deklarasi pure virtual function adalah

a. int fungsi (virtual int ) = 0;              b. virtual int fungsi (int) = 0;

c. int virtual fungsi (int ) = 0;              d. virtual int fungsi (int = 0);

 

10. Fungsi-fungsi berikut yang binding time-nya terjadi saat compile time adalah

a. overloading function dan template function

b. template function dan overriding virtual function

c, overriding virtual function dan overloading function

d. overloading function, template function dan overriding virtual function

 

11. Secara sederhana polymorphism dapat didefinisikan sebagai multiple routine

with the same name. Opsi berikut yang tidak dapat digunakan untuk

mendefinisikan polymorphism adalah

a. satic binding                                   b. dynamic binding

c. generic programming                       d. function overriding

 

12. Opsi berikut yang bukan merupakan karakteristik dari fungsi virtual adalah

a. dapat di override di derived class

b. digunakan untuk mendukung polimorfisme

c. deklarasi virtual di derived class

d. deklarasi virtual di base class

 

13. Salah satu kerugian penggunaan inheritance di OOP adalah

a. independensi di antara class dalam hirarki

b. independensi di antara object dalam hirarki

c. dependensi di antara class dalam hirarki

d. dependensi di antara object dalam hirarki

 

14. Dua prototipe berikut : add (const Base &) dan add (const Derived &) berbeda

dalam hal:

a. scope                      b. protocol       c. signatures                d. precedence

 

15 Tipe inheritance yang dianjurkan untuk melakukan derivation adalah

a. private                                             b. protected

c. public                                              d. private, protected dan public

 

16. Nilai yang dikirim ke non type parameter pada class template harus berbentuk

a. variable        b. ekspresi                   c. constanta                d pointer

 

17. Fitur OOP yang bertentangan dengan konsep pemrograman modular adalah

      a. encapsulation                                 b. inheritance

c. overloading function                       d. generic programming

 

18. Iterator tidak lain adalah

a. generalized reference                      b. generalized pointer

c. specialized reference                       d. specialized pointer.

 

 

19. Mekanisme di OOP yang memungkinkan suatu fungsi bukan anggota untuk

mengakses anggota klas adalah

a. fungsi overloading                          b. fungsi overriding

c. fungsi virtual                                   d. fungsi friend

 

20. Polymorphism yang dapat diimplementasikan tanpa harus menggunakan

konsep encapsulation dan inheritance

a. virtual polymorphism                      b. trivial polymorphism

b. true polymorphism                          d. ad hoc polymorphism

 

 

  1. Uraian (40 poin)

 

1.(10 poin) Selalu ada pengecualian. Fenomena ini juga berlalu di C++, karena itu

tidak semua data atau fungsi anggota diturunkan dari base class ke derived class. Uraikan mengapa constructor dan destructor tidak diwariskan di C++ meskipun mereka kita deklarasikan dengan level akses public atau protected. Uraikan juga mengapa fungsi friend tidak diwariskan di klas turunan. Selanjutnya, sebutkan pula sejumlah fitur lain di klas induk yang tidak diwariskan di klas turunan.

 

  • Karena constructor bukanlah suatu interface dari class, sedangkan yang diwariskan oleh fitur inheritance hanyalah interface dari class
  • Destructor tidak diwariskan karena destructor hanya ada satu
  • Friend function tidak dapat diwariskan karena friend function hanya digunakan untuk memberi akses kepada member class yang mempunyai access modifier private yang kemudian menjadi dapat diakses oleh fungsi tertentu. Jika diwariskan, datanya akan mengalami perubahan dan friend function tersebut harus berubah juga
  • Yang tidak dapat diwariskan pada kelas anak yaitu, data private dan assignment operator

 

 

2. (10 poin) Ilmu pengetahuan itu sifatnya kumulatif sehingga meskipun kita sudah mempunyai utilitas ADT yang tidak lain adalah enkapsulasi kita masih memerlukan inheritance. WHY? Untuk bisa menjawab kasus ini kamu harus membandingkan inheritance dengan ADT. Pertanyaan buat kamu adalah coba bandingkan inheritance dengan ADT dari berbagai sisi diantaranya dari sisi komponen, struktur komponen, advantage dan disadvantage.

 

  Abstract data type Inheritance
Komponen Representasi atribut dan method Kelas induk dan turunan
Struktur
CLASS B
CLASS A
CLASS B
CLASS A
Keuntungan
  1. Tidak ada ketergantungan antar kelas satu dan lainnya
  2. Overriding
  3. Prototipe sama untuk kelas yang berbeda
  4. Reusability
Kekurangan
  1. Tidak adanya reusability
  2. Ketergantungan antar kelas dalam hirarki

 

 

3. (10 poin) Ada banyak tipe polymorphism yang kita kenal sehingga sukar bagi kita untuk membuat klasifikasi yang baku atau klasifikasi tunggal. Coba uraikan apa yang kamu ketahui tentang berbagai istilah berikut: parametric polymorphism, ad hoc polymorphism, subtype polymorphism, dan override polymorphism .

 

Parametic polymorphism : polymorphism yang tidak memilik virtual function, dan menggunakan static binding, classnya juga merupakan class yang nyata atau konkret dan bukan abstract, juga tidak dapat menerapkan inheritance atau memakai template

 

Ad hoc polymorphism : sama dengan Parametic polymorphism. Tetapi menggunakan overloading function, sifat reusability hanya berlaku untuk nama. Memiliki tree function syndrome, yaitu different type, number, dan order.

 

Subtype polymorphism : sama dengan Parametic polymorphism. Tetapi menggunakan overriding function.

 

Override polymorphism : keadaan dimana method pada subclass menolak method pada superclassnya. Ciri dari Overriding adalah nama method, daftar parameter, dan return type yang harus sama

 

 

4. (10 poin) Generic programming, khususnya template function, yang di C++

diimplementasikan menggunakan template kerapkali dikontraskan dengan

overloading function. Melalui penggalan kode sebagai contoh, coba tunjukkan

keunggulan template function dibandingkan dengan overloading function.

 

Kelebihan template function adalah :

  • Satu fungsi dapat digunakan untuk beberapa tipe parameter, karena fungsi tersebut akan dengan sendirinya menyesuaikan tipe data parameter dengan actual parameternya
  • Satu fungsi untuk satu task

 

Contoh template function :

 

template<classT>

void output(Ta, Tb)

{

cout << “A = ” << x << endl;

cout << “B = ” << y << endl;

}

 

Contoh Overload function :

 

void output(inta, intb)

{

cout << “A = ” << a << endl;

cout << “B = ” << b << endl;

}

 

void output(chara, charb)

{

cout << “A = ” << a << endl;

cout << “B = ” << b << endl;

}

 

II. Pemrograman (20 poin)

 

Perguruan X adalah suatu institusi pendidikan dengan sejumlah pegawai atau karyawan. Dalam beberapa bulan terakhir ini, ada keinginan dari manajemen untuk mendesain ulang sistem informasi yang sedang berlaku. Sebagai pilot project, subsistem kepegawaian diambil untuk lebih dulu didesain ulang. Untuk mengembangkan sistem sederhana yang diinginkan, seorang program developer lulusan TI Binus di-hire. Pendekatan yang digunakan adalah OOD.

 

Berkat bantuan Prof. Djun sebagai konsultan dalam waktu yang relatif singkat, sesuai dengan kebutuhan sistem awal, developer menghasilkan tiga klas yaitu person, employee dan teacher dimana klas teacher dirancang sebagai turunan dari klas person dan employee. Karena masih dalam taraf uji coba, data dan fungsi anggota untuk setiap klas dibuat sangat sederhana. Fungsi anggota untuk semua klas adalah entryData() dan displayData(). Untuk data anggota hanya data dasar yang disimpan. Data anggota untuk klas person adalah name, age dan sex, klas employee dengan data anggota department dan wage, sedangkan klas teacher, sebagai turunan dari klas person dan employee data tambahanya adalah teacherGrade. Dengan demikian data angota dan fungsi anggota untuk setiap klas selengkapnya adalah sebagaui berikut:

 

Klas                Data anggota                         Fungsi anggota

Person             Name                                       entryData()

Age                                         displayData()

Sex

Employee        Department                             entryData()

Wage                                       displayData()

Teacher            Name                                       entryData()

Age                                         displayData()

Sex

Deparement

Wage

TeacherGrade

 

Tugas kamu:

  1. (10 poin) Gambar class diagram dari kasus di atas.

 

 

 

 

 

 

 

 

  1. (5 poin) Tulislah kode untuk masing-masing klas. Di dalam klas, fungsi anggota hanya berbentuk prototype sedangkan definisinya ditulis di luar klas. Jangan lupa menggunakan scope oprator :: saat kamu menulis fungsi anggota.

 

classPerson

{

protected:

string name;

int age;

string sex;

public:

void entryData(string name, int age, string sex);

void displayData(string name, int age, string sex);

};

 

classEmployee

{

protected:

string department;

int wage;

public:

void entryData(string department, int wage);

void displayData(string department, int wage);

};

 

classTeacher: publicPerson, publicEmployee

{

private:

int teacherGrade;

public:

void entryData(string name, int age, string sex, string department, int wage, int teacherGrade);

void displayData(string name, int age, string sex, string department, int wage, int teacherGrade);

};

 

voidPerson::entryData(stringname, intage, stringsex)

{

this->name = name;

this->age = age;

this->sex = sex;

}

 

voidPerson :: displayData(stringname, intage, stringsex)

{

cout << name << endl << age << endl << sex << endl;

}

 

voidEmployee :: entryData(stringdepartment, intwage)

{

this->department = department;

this->wage = wage;

}

 

voidEmployee :: displayData(stringdepartment, intwage)

{

cout << department << endl << wage << endl;

}

 

voidTeacher :: entryData(stringname, intage, stringsex, stringdepartment, intwage, intteacherGrade)

{

this->name = name;

this->age = age;

this->sex = sex;

this->department = department;

this->wage = wage;

this->teacherGrade = teacherGrade;

}

 

voidTeacher :: displayData(stringname, intage, stringsex, stringdepartment, intwage, intteacherGrade)

{

cout << name << endl << age << endl << sex << endl << department << endl << wage << endl << teacherGrade << endl;

}

 

  1. (5 poin) Fungsi main() untuk menguji kode di bagian b.

 

void main()

{

Person per;

Employee emp;

Teacher teach;

 

per.entryData( “Daniel” , 23 , “Male” );

per.displayData( “Daniel” , 23 , “Male” );

emp.entryData( “Teknik Informatika” , 3000000);

emp.displayData( “Teknik Informatika” , 3000000);

teach.entryData( “Ria” , 22 , “Female” , “Teknik Informatika” , 3000000 , 95);

teach.displayData( “Ria” , 22 , “Female” , “Teknik Informatika” , 3000000 , 95);

 

cin.get();

}

 

 

Daniel David 1701291610 02PPT

 

 

-d1030-

Jun 10

UAS T0044 PAGI 20xx

 

  1. Pilihan (20 poin)

 

  1. Opsi berikut yang bukan merupakan fitur dari OOPL adalah

a. encapsulation           b. inheritance   c. polymrophism          d. template

 

  1. Secara sederhana polymorphism dapat didefinisikan sebagai multiple routine with the same name. Opsi berikut yang tidak dapat digunakan untuk mendefinisikan polymorphism adalah

a. early binding           b. late binding            c. overriding                d. overloading

 

  1. Dua prototipe berikut : add (const Base &) dan add (const Derived &) berbeda dalam hal:

a. scope                       b. lifetime        c. signatures                d. precedence

 

  1. Meskipun mendukung penggunaan multiple inheritance tetapi penggunaan fitur ini tidak dianjurkan di C++. Opsi berikut yang dianjurkan sebagai penggantinya adalah

a. composition                                                b. template

c. polymorphism                                  d. overloading function

 

  1. Selain sebagai tool untuk membentuk generic programming, template juga merupakan tool untuk membentuk

a. universal polymorphism                  b. static polymorphism

c. ad hoc polymorphism                      d. subtype polymorphism.

6.   Paradigma-paradigma berikut yang mendukung pemrograman C++ adalah

a. procedural dan object oriented programming  

b. procedural dan generic programming

c. generic dan object oriented programming

d. procedural, object oriented dan generic programming.

 

7.   Ide dari generic programming adalah mengganti

a. static function                                b. inline function

c. virtual function                                d. friend function

dengan fungsi yang ada di template parameter.

 

 

8.   Iterator tidak lain adalah

a. generalized reference                      b. generalized pointer

c. specialized reference                       d. specialized pointer.

 

9.   Tipe inheritance yang digunakan untuk melakukan encapsulation adalah

a. private                                             b. protected

c. public                                              d. private, protected dan public

 

  1. Opsi berikut yang bukan merupakan karakteristik dari fungsi virtual adalah

a. dapat di override di derived class

b. digunakan untuk mendukung polimorfisme

c. deklarasi virtual di base class

d. deklarasi virtual di derived class

 

 

  1. Uraian (40 poin)

 

1. (10 poin) Uraikan mengapa constructor dan destructor tidak diwariskan di C++ meskipun mereka kita deklarasikan dengan level akses public atau protected. Uraikan juga mengapa fungsi friend tidak diwariskan di klas turunan. Selanjutnya, sebutkan pula sejumlah fitur lain di klas induk yang tidak diwariskan di klas turunan.

 

  • Karena constructor bukanlah suatu interface dari class, sedangkan yang diwariskan oleh fitur inheritance hanyalah interface dari class
  • Destructor tidak diwariskan karena destructor hanya ada satu
  • Friend function tidak dapat diwariskan karena friend function hanya digunakan untuk memberi akses kepada member class yang mempunyai access modifier private yang kemudian menjadi dapat diakses oleh fungsi tertentu. Jika diwariskan, datanya akan mengalami perubahan dan friend function tersebut harus berubah juga
  • Yang tidak dapat diwariskan pada kelas anak yaitu, data private dan assignment operator

 

2. (10 poin) Konsep inheritance memunculkan fitur baru dalam C++ yaitu reuseability, dominating dan overriding. Jelaskan melalui penggalan kode, apa yang kamu ketahui tentang ketiga fitur tersebut.

 

Reusability memungkinkan sebuah kelas induk mewariskan data member ke kelas turunannya

Dominating adalah berkuasanya kelas induk terhadap kelas turunannya saat inheritance

Overriding memungkinkan sebuah kelas turunan untuk menyediakan sebuah implementasi spesifik dari metode yang sudah disediakan oleh kelas induknya

 

class Animal

{

protected:

string nama;

int kaki;

public:

Animal()

{

nama = “”;

kaki = 0;

}

 

//overloading constructor

Animal(string nama, int kaki):nama(nama), kaki(kaki){}

 

//overriding function

virtualvoid move() = 0;

 

//setter

void setNama(string nama)

{

this->nama = nama;

}

void setKaki(int kaki)

{

this->kaki = kaki;

}

 

//getter

string getNama()

{

returnthis->nama;

}

int getKaki()

{

returnthis->kaki;

}

};

 

class Horse : public Animal //reusability

{

protected:

int horsePower;

public:

Horse(){}

Horse(string nama, int kaki, int horsePower)

{

this->nama = nama;

this->kaki = kaki;

this->horsePower = horsePower;

}

 

//overriding function

virtualvoid move()

{

cout << “Horse walking” << endl;

}

};

 

class Bird : public Animal //reusability

{

protected:

int flyPower;

public:

Bird(){}

Bird(string nama, int kaki, int flyPower)

{

this->nama = nama;

this->kaki = kaki;

this->flyPower = flyPower;

}

 

//overriding function

virtualvoid move()

{

cout << “Bird flying” << endl;

}

};

 

class Pegasus : public Horse, public Bird       //multiple inherit : reusability

{

private:

int attack;

Horn horn;

public:

Pegasus(string nama,

int kaki,

int horsePower,

int flyPower,

int attack,

Horn horn)

{

Horse::nama = nama;

Horse::kaki = kaki;

this->horsePower = horsePower;

this->flyPower = flyPower;

this->attack = attack;

this->horn = horn;

}

 

//overriding function

virtualvoid move()

{

cout << “Pegasus flying while running” << endl;

}

 

int getPanjang()

{

return horn.getPanjang();

}

};

 

 

3. (10 poin) Ada banyak tipe polymorphism yang kita kenal diantaranya adalah parametric polymorphism, ad hoc polymorphism, subtype polymorphism, override polymorphism dan sebagainya. Uraikan apa yang kamu ketahui tentang tipe-tipe polymorphism tersebut.

 

Parametic polymorphism : polymorphism yang tidak memilik virtual function, dan menggunakan static binding, classnya juga merupakan class yang nyata atau konkret dan bukan abstract, juga tidak dapat menerapkan inheritance atau memakai template

 

Ad hoc polymorphism : sama dengan Parametic polymorphism. Tetapi menggunakan overloading function, sifat reusability hanya berlaku untuk nama. Memiliki tree function syndrome, yaitu different type, number, dan order.

 

Subtype polymorphism : sama dengan Parametic polymorphism. Tetapi menggunakan overriding function.

 

Override polymorphism : keadaan dimana method pada subclass menolak method pada superclassnya. Ciri dari Overriding adalah nama method, daftar parameter, dan return type yang harus sama

 

4. (10 poin) Banyak penulis buku menyatakan bahwa untuk class X paling sedikit ia

mempunyai satu constructor yaitu default constructor dengan prototype X(). Tetapi

John Hubbard dalam bukunya Programming with C++ menyatakan bahwa setiap

class X paling sedikit mempunyai dua constructor yaitu default X() dan copy

constructor yang prototipe sintaksnya adalah X (const X & ), fungsi anggota dengan

satu parameter dan pass by constant reference.

 

  1. Kapan copy constructor dieksekusi?

Saat fungsi copy constructor dipanggil.

b. Tulislah fungsi main() untuk menguji copy constructor yang ada dalam penggalan

kode berikut:

class Rational {

public : Rational(int n, int d) : num(n), den (d) { }

Rational(const Rational & r) : num(r.num), den(r.den)

{ cout << “COPY CONSTRUCTOR CALLED\n”;}

private: int num, den;

};

 

Rational f(Rational r) {

Rational s = r;

return s;

}

 

int main(){

 

Rational x;

 

Rational y=x;

 

return 0;

 

 

 

  1. Pemrograman (40 poin)

 

a. (10 poin) Desain class String dengan dua data anggota len bertipe unsigned untuk mewakili panjang string dan buf bertipe pointer ke character untuk menampung string karakterr aktual. Untuk menyederhanakan kasus, fungsi anggota dalam class ini cukup tiga buah yaitu default constrctor dengan prototipe String (unsigned = 0), copy constructor dengan prototype String (const String&) dan destructor dengan prototype ~String().

 

b. (10 poin) Tulis implementasi ketiga fungsi anggota tersebut di luar class.

 

c. Tulislah the bubble sort (function) templates yang dapat digunakan untuk men-sort any data type termasuk class String di atas. Program yang Anda desain paling tidak harus terdiri dari tiga komponen yaitu

 

  • (10 poin) function template sortBubble() di mana type parameter T nantinya akan diganti dengan tipe data yang akan di-sort.
  • (5 poin) function template print() di mana type parameter T nantinya akan diganti dengan tipe data yang akan dicetak. .
  • (5 poin) main() program sebagai driver untuk men-tes function templates yang Anda desain menggunakan dua kasus: array of int dan array of double. Cetak data sebelum di-sort dan sesudah di-sort.

 

#include<iostream>

#include<string>

 

usingnamespace std;

 

classString

{

private:

char *buf;

unsignedint len;

 

public:

String(unsigned=0);

String(constString&);

~String();

};

 

String::String(unsigned=0)

{

strcpy(buf, NULL);

}

 

String::String(constString& strng2)

{

for(int i=0 ; i<strlen(strng2.buf) ; i++)

{

this->buf[i]=strng2.buf[i];

this->buf[i]=”;

len=strlen(strng2.buf);

}

}

 

String::~String()

{

cout<<“String deleted.”<<endl;

}

 

template<classT>

void bubblesort(T *tem,intjum)

{

T templ;

for(int a=1;a<jum;a++)

{

for(int b=count-1;b>=a;b–)

{

if(tem[b-1]>tem[b])

{

templ=tem[b-1];

tem[b-1]=tem[b];

tem[b]=templ;

}

}

}

}

 

template<classT>

void print(T *tem,intjum)

{

T templ;

for(int i=0; i<jum; i++)

{

cout<<tem[i]<<endl;

}

cout<<endl;

}

 

void main()

{

int arrayofint[10] = {3,6,2,4,1,5,8,7,9,0};

double arrayofdouble[5] = {2.3,6.5,7.4,1.8,0.9};

 

cout<<“Before: “; print(arrayofint, 10);

bubblesort(arrayofint, 10);

cout<<“After: “; print(arrayofint,10);

 

cout<<“Before: “; print(arrayofdouble, 10);

bubblesort(arrayofdouble, 10);

cout<<“After: “; print(arrayofdouble,10);

}

 

Daniel David 1701291610 02PPT

-ooo-

May 27

TM 08 : Class Strings

 

  1. Desain class String. Klas ini mempunyai dua data anggota dengan level akses private, yaitu string aktual s yang disajikan dalam bentuk pointer char * s dan len untuk menyajikan panjang string s. Fungsi anggotanya, level akses public, adalah default constructor String(), constructor String (char*, unsigned), constructor String (const char*), copy constructor String (const String &) dan destructor ~String(). Dalam desain ini semua fungsi anggota harus berbentuk prototype

 

#include<iostream>

 

usingnamespace std;

 

classString

{

private :

char * s;

int len;

 

public :

String(){}

void setS(char *s);

char *getS();

void setLen(int len);

int getLen();

~String();

};

 

  1. Selanjutnya implementasikan definisi semua fungsi anggota di luar class String. Ingat jangan lupa gunakan scope resolution operator :: .

 

String :: String()

{

s = “”;

len = 0;

}

 

voidString :: setS(char *s)

{

strcpy(this->s , s);

}

 

char *String :: getS()

{

return s;

}

 

voidString :: setLen(intlen)

{

this->len = len;

}

 

intString :: getLen()

{

return len;

}

 

String :: ~String()

{

cout << “Destructor Activated…” << endl;

}

 

  1. Terakhir, tulislah fungsi main() sebagai driver untuk menguji desain kamu.

 

void main()

{

String str;

str.setS(“TM 08”);

cout << “String : ” << str.getS() << endl;

cout << “Length of String : ” << str.getLen() << endl;

cin.get();

}

 

 

Daniel David 1701291610 02PPT

 

 

I AM PROUD AS BINUSIAN

 

 

May 27

Kuis dan TM 7

Soal Pilihan

  1. Inheritance kerap kali dihubungkan dengan polymorphism. Istilah yang paling

tepat untuk menyatakan inheritance sebagai polymorphism adalah

a.trivial polymorphism                        b. universal polymorphism

c. pure polymorphism                                   d. subtype polymorphism

 

02.   Meskipun mendukung penggunaan multiple inheritance tetapi penggunaan fitur

ini tidak dianjurkan di C++. Opsi berikut yang dianjurkan sebagai penggantinya

adalah

a. composition                                     b. template

c. polymorphism                                d. overloading function

 

03. Salah satu kerugian penggunaan inheritance di OOP adalah

a. independensi di antara class dalam hirarki

b. independensi di antara object dalam hirarki

c. dependensi di antara class dalam hirarki

d. dependensi di antara object dalam hirarki

 

04. Tipe inheritance yang dianjurkan untuk melakukan derivation adalah

a. private                                             b. protected

c. public                                               d. private, protected dan public

 

05. ADT dan inheritance mempunyai komponen yang sama tetapi hanya beda strukturnya.

Paralel di ADT, hirarki di inheritance. Karena itu sejumlah inheritance mempunyai

kelebihan dibandingkan dengan ADT. Kelebihan-kelebihan itu diantaranya adalah

adalah adanya fitur-fitur bedrikut ini

a. reuse-ability dan extend ability        b. extend ability dan overriding function

c. overriding function dan reuse-ability

d. reuseability, extend ability dan overriding function

 

Soal Uraian

 

  1. Apa yang salah dalam penggalan definisi class berikut:

class Time {

   public:                                 // prototype fungsi

   private: int h = 0;

               int m = 0;

               int s = 0;

}

 

Karena adanya inisialisasi nilai pada access modifier private.

 

  1. Jika Rasional adalah class bilangan rasional (pecahan seperti 22/7), apa beda ketiga pernyataan berikut:

Rasional y(x); (Function declaration)

Rasional y = x; (Object declaration)

Rasional y; y = x; (Object declaration)

 

  1. Uraikan mengapa constructor dan destructor tidak diwariskan di C++ meskipun mereka kita deklarasikan dengan level akses public atau protected. Uraikan juga mengapa fungsi friend tidak diwariskan di klas turunan. Selanjutnya, sebutkan pula sejumlah fitur lain di klas induk yang tidak diwariskan di klas turunan.

 

Constructor dan destructor hanya ada pada kelas induk saja dan tidak bisa diwariskan ke kelas turunannya.

Fungsi friend hanya berguna untuk mengakses data member dalam access modifier private.

Data member dengan access modifier private dan friend function.

 

  1. Konsep inheritance memunculkan fitur baru dalam C++ yaitu reuseability, dominating dan overriding. Jelaskan melalui penggalan kode, apa yang kamu ketahui tentang ketiga fitur tersebut.

 

Reusability memungkinkan sebuah kelas induk mewariskan data member ke kelas turunannya

Dominating adalah berkuasanya kelas induk terhadap kelas turunannya saat inheritance

Overriding memungkinkan sebuah kelas turunan untuk menyediakan sebuah implementasi spesifik dari metode yang sudah disediakan oleh kelas induknya

 

class Animal

{

protected:

string nama;

int kaki;

public:

Animal()

{

nama = “”;

kaki = 0;

}

 

//overloading constructor

Animal(string nama, int kaki):nama(nama), kaki(kaki){}

 

//overriding function

virtualvoid move() = 0;

 

//setter

void setNama(string nama)

{

this->nama = nama;

}

void setKaki(int kaki)

{

this->kaki = kaki;

}

 

//getter

string getNama()

{

returnthis->nama;

}

int getKaki()

{

returnthis->kaki;

}

};

 

class Horse : public Animal //reusability

{

protected:

int horsePower;

public:

Horse(){}

Horse(string nama, int kaki, int horsePower)

{

this->nama = nama;

this->kaki = kaki;

this->horsePower = horsePower;

}

 

//overriding function

virtualvoid move()

{

cout << “Horse walking” << endl;

}

};

 

class Bird : public Animal //reusability

{

protected:

int flyPower;

public:

Bird(){}

Bird(string nama, int kaki, int flyPower)

{

this->nama = nama;

this->kaki = kaki;

this->flyPower = flyPower;

}

 

//overriding function

virtualvoid move()

{

cout << “Bird flying” << endl;

}

};

 

class Pegasus : public Horse, public Bird       //multiple inherit : reusability

{

private:

int attack;

Horn horn;

public:

Pegasus(string nama,

int kaki,

int horsePower,

int flyPower,

int attack,

Horn horn)

{

Horse::nama = nama;

Horse::kaki = kaki;

this->horsePower = horsePower;

this->flyPower = flyPower;

this->attack = attack;

this->horn = horn;

}

 

//overriding function

virtualvoid move()

{

cout << “Pegasus flying while running” << endl;

}

 

int getPanjang()

{

return horn.getPanjang();

}

};

 

  1. Ilmu pengetahuan itu sifatnya kumulatif sehingga meskipun kita sudah mempunyai utilitas ADT yang tidak lain adalah enkapsulasi kita masih memerlukan inheritance. WHY? Untuk bisa menjawab kasus ini kamu harus membandingkan inheritance dengan ADT. Pertanyaan buat kamu adalah coba bandingkan inheritance dengan ADT dari berbagai sisi diantaranya dari sisi komponen, struktur komponen, advantage dan disadvantage.
  Abstract data type Inheritance
Komponen Representasi atribut dan method Kelas induk dan turunan
Struktur
CLASS B
CLASS A
CLASS B
CLASS A
Keuntungan
  1. Tidak ada ketergantungan antar kelas satu dan lainnya
  2. Overriding
  3. Prototipe sama untuk kelas yang berbeda
  4. Reusability
Kekurangan
  1. Tidak adanya reusability
  2. Ketergantungan antar kelas dalam hirarki

 

 

Daniel David 1701291610 02PPT

 

I AM PROUD AS BINUSIAN