Muhammad Firdaus

23
TUGAS PEMROGRAMAN 2 Operator dan Kelas Konstruktor dan Destruktor Pengkapsulan, Pewarisan, Polimorfisme, Eksepsi Operator Kelas Nama : Muhammad Firdaus Nim : 3201416054 Mata Kuliah : PEMROGRAMAN 2 Semester : 2 Program Studi : T. Inforamtika Dosen : MARYANA SYAMSYUDIN

Transcript of Muhammad Firdaus

Page 1: Muhammad Firdaus

TUGAS

PEMROGRAMAN 2

Operator dan Kelas

Konstruktor dan Destruktor

Pengkapsulan, Pewarisan, Polimorfisme, Eksepsi

Operator Kelas

Nama : Muhammad Firdaus

Nim : 3201416054

Mata Kuliah : PEMROGRAMAN 2

Semester : 2

Program Studi : T. Inforamtika

Dosen : MARYANA SYAMSYUDIN

Class dan ObjectClass dan Object adalah dua istilah yang sering dipakai dalam Object Pascal dan

Page 2: Muhammad Firdaus

bahasa OOP lainnya. Class adalah type data yang didefinisikan oleh pemakai. Class

mempunyai keadaan (representasi) dan operasi (perilaku). Class mempunyai data

internal dan beberapa method (dalam bentuk procedure dan function. Method

menggambarkan karakteristrik dasar dan perilaku sejumlah objek yang serupa.

Object adalah instance dari sebuah class atau sebuah variable dengan type class. Pada

saat program dijalankan, Object memerlukan memori untuk representasi internalnya.

Hubungan antara class dan obect sama dengan hubungan type data dengan variable.

Page 3: Muhammad Firdaus

KONSTRUKTOR DAN DESTRUKTOR

KONSTRUKTOR

Konstruktor adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat

penciptaan objek (mendeklarasikan instance). Konstruktor ditandai dengan namanya, yaitu

sama dengan nama kelas. Konstruktor tidak mempunyai tipe hasil (return value). Biasanya

konstruktor dipakai untuk inisialisasi anggota data dan melakukan operasi lain seperti

membuka file dan melakukan alokasi memori secara dinamis. Meskipun konstruktor tidak

harus ada dalam kelas, tetapi jika diperlukan konstruktor dapat lebih dari satu. 

Konstruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama

kelas.  Kegunaannya :

Mengalokasikan ruang bagi sebuah objek

Memberikan nilai awal terhadap anggota data suatu objek

Membentuk tugas-tugas umum lainnya  

Adapaun jenis-jenis kontruktor adalah sebagai berikut:

1. Konstruktor default : tidak dapat menerima argumen, anggota data diberi nilai awal

tertentu.

2. Konstruktor penyalinan dengan parameter : anggota data diberi nilai awal berasal

dari parameter.

3. Konstruktor penyalinan objek lain : parameter berupa objek lain, anggota data diberi

nilai awal dari objek lain.

Contoh penulisan konstruktor :

#include

class jumlah

{

   public:

    int jumlah1;

      int jumlah2;

      ~jumlah();

}; 

jumlah objek1,objek2;

Page 4: Muhammad Firdaus

void main()

{

   cout<<”Didalam main() \n”;

   cout<<”objek1.jumlah1 adalah “<<

   cout<<”objek1.jumlah2 adalah “<<

   cout<<”objek2.jumlah1 adalah “<<

   cout<<”objek2.jumlah2 adalah “<<

jumlah::~jumlah()

{

   cout<<”Didalam jumlah() \n”;

DESTRUKTOR

Destruktor adalah pasangan konstruktor. Pada saat program membuat objek maka

secara otomatis kontruktor akan dijalankan, yang biasanya dimaksudkan untuk memberi

nilai awal variable private. Sejalan dengan itu, C++ menyediakan fungsi destruktor

(penghancur atau pelenyap) yang secara otomatis akan dijalankan pada saat berakhirnya

objek. Setiap kelas mempunyai tepat satu destuktor. jika kita tidak mendeklarasikan sebuah

destruktor dalam sebuah kelas, maka destruktor akan diciptakan sendiri oeh compiler C++.

Fungsi destruktor itu sendiri adalah untuk mendealokasikan memori dinamis yang diciptakan

kontruktor. Nama destruktor sama dengan nama kelas ditambah awalan karakter tilde (~).

Walaupun compiler C++ akan secara otomatis mendeklarasikan sebuah destruktor, akan

tetapi sangat disarankan untuk mendeklarasikan sendiri sebuah destruktor. Karena dengan

mendeklarasikan sendiri destruktor maka kita mempunyai kontrol penuh terhadap apa yang

dilakukan destruktor dari kelas yang kita buat.

Destruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama

kelas ditambah symbol tilde (~) didepannya. 

Contoh  penulisan dalam Destruktor :

#include

Class Tpersegi

{

   int *lebar, *panjang;

   public:

      Tpersegi (int, int);

      ~Tpersegi();

      int Luas() {return (*lebar * *panjang);}

Page 5: Muhammad Firdaus

};

Tpersegi::Tpersegi(int a, int b)

{

   lebar=new int;

   panjang=new int;

   *lebar = a;

   *panjang = b;

}

Tpersegi::~Tpersegi()

{

   delete lebar;

   delete panjang;

}

int main()

{

   Tpersegi pers(3,4), persg(5,6);

   cout<<”Luas pers= “<<

   cout<<”Luas persg = “<<

   return 0;

}

KESIMPULAN

Dari uraian diatas dapat kita simpulkan bahwa:

Konstruktor :

-          Nama kontruktor sama dengan nama kelas

-          Kontruktor tidak mempunyai nilai balik

-          Kontruktor harus diletakkan di bagian public

-          Kontruktor dijalankan dengan sendirinya pada saat objek diciptakan, bahkan kontruktor

dijalankan sebelum fungsi main() dijalankan.

Destruktor:

-          Nama destruktor  sama dengan nama kelas ditambahkan tanda tilde (~) di depannya.

-          Destruktor tidak mempunyai nilai balik.

-          Destruktor harus diletakkan di bagian public.

-          Destruktor dijalankan dengan sendirinya pada saat objek akan sirna.

Contoh Lain konstruktor dan destruktor :

#include "stdafx.h"

#include "iostream.h"

Page 6: Muhammad Firdaus

#include "stdlib.h"

class hitung

{

public:

    double alas,tinggi,luas,sisi,jari,kel;

    void segitiga()

    {    cout<<"** Luas Segitiga **"<

        cout<<"Masukkan Alas   = ";cin>>alas;

        cout<<"Masukkan Tinggi = ";cin>>tinggi;

        luas=(alas*tinggi)/2;

        cout<<"Luas Segitiga   = "<<

    }

    void persegi()

    {    cout<<"** Luas Persegi **"<

        cout<<"Masukkan Panjang Sisi = ";cin>>sisi;

        luas=sisi*sisi;

        cout<<"Luas Persegi          = "<<

    }

    void llingkaran()

    {    cout<<"** Luas Lingkaran **"<

        cout<<"Masukkan Panjang Jari = ";cin>>jari;

        luas=3.14*jari*jari;

        cout<<"Luas Lingkaran        = "<<

    }

    void ppanjang()

    {    cout<<"** Luas Persegi Panjang **"<

        cout<<"Masukkan Alas          = ";cin>>alas;

        cout<<"Masukkan Tinggi        = ";cin>>tinggi;

        luas=alas*tinggi;

        cout<<"Luas Persegi Panjang   = "<<

    }

    void kellingkaran()

    {   

        cout<<"** Keliling Lingkaran **"<

        cout<<"Masukkan Panjang Jari   = ";cin>>jari;

        kel=2*3.14*jari;

        cout<<"Keliling Lingkaran      = "<<

    }

};

Page 7: Muhammad Firdaus

void main()

{    hitung htg;

    char tanya;

    tanya = 'y';

    int pilih;

    do {

        system ("cls");

    cout<<"== KALKULATOR LINDA =="<

    cout<<"---------------------------"<

    cout<<"1. Mencari Luas Segitiga"<

    cout<<"2. Mencari Luas Persegi"<

    cout<<"3. Mencari Luas Lingkaran"<

    cout<<"4. Mencari Luas Persegi Panjang"<

    cout<<"5. Mencari Keliling Lingkaran"<

    cout<<"---------------------------"<

    cout<<"Masukkan pilihan Anda = ";cin>>pilih;

    if (pilih==1)

    {    htg.segitiga();} else

    if (pilih==2)

    {    htg.persegi();} else

    if (pilih==3)

    {    htg.llingkaran();} else

    if (pilih==4)

    {    htg.ppanjang();} else

    if (pilih==5)

    {    htg.kellingkaran();}

    cout<<"---------------------------"<

    cout<<"Apakah Anda Ingin Mengulanginya ..? "; cin>>tanya;

    } while (tanya == 'y');

}

Page 8: Muhammad Firdaus

Mengenal eksepsi pada Delphi

Kesalahan sewaktu program dieksekusi atau yang dikenal dengan istilah runtime error bisa terjadi karena terdapat operasi pembagian oleh bilangan nol, memory habis ketika diperlukan, atau operasi penulisan ke suatu peranti gagal dilaksanakan.

Untuk mengatasi permasalahan demikian, Delphi menyediakan mekanisme yang disebut eksepsi. Dengan memberikan kode pada penangan eksepsi, suatu tindakan dapat diatur sendiri oleh pemrogram sekiranya kesalahan-kesalahan ang tidak normal terjadi. Eksepsi akan muncul manakala suatu kesalahan atau kejadian yang menginterupsi eksekusi yang normal terjadi pada program. Eksepsi akan menyebabkan kontrol program diberikan kepada penanganan eksepsi. Dengan melakukan penanganan terhadap eksepsi, pemrogram dapat menangkap kesalahan, memberitahukan atau mengoreksi kesalahan, serta menjalankan atau bahkan menghentikan eksekusi program.

PEWARISAN

Pewarisan Di Delphi 7.Inheritance/pewarisan merupakan fitur yang tersedia dalam OOP(Object Oriented Programming).Dimana kita bisa menduplikasi sifat-sifat sebuah class , dan memanfaatkannya di class yang lain.Class dalam Delphi 7 sendiri ialah file Unit yang bersisi source code dari program.Dan class itu sendiri merupakan sebuah object.

Contoh :TypeTitik = Objekx,y,Warna : Integer;constructor Initsdestructor doneprocedure SetX(newx:Integer)function GetX:Integer;End;Lingkaran = Object(Titik)

Page 9: Muhammad Firdaus

R : Real;End;

PENGKAPSULAN

Penggabungan data dan metode menjadi satu kesatuan yang disebut kelas. Pada konsep ini terdapat konsep untuk menyembunyikan infomasi. Konsep penyembunyian informasi ini dalam hal kontrol akses (AC), yang terdiri dari Public dan Private. Public, anggota kelas tersebut hanya dapat diakses dari kelas/procedure yang lain, sedangkan Private, hanya dapat diakses pada kelas/procedure pada unit yang sama.

Contoh :TypeTitik = ObjekPrivatex,y,Warna : Integer;Publicconstructor Initsdestructor doneprocedure SetX(newx:Integer)function GetX:Integer;End;

POLIMORFISME

Banyak bentuk, merupakan dua kelas yang diturunkan dari satu kelas mempunyai metode sama tetapi implementasinya berbeda. Atau dengan kata lain nama metode sama kode berbeda. Metode ini sering disebut metode Virtual. Penggunaannya dengan menggunakan kata “Virtual”Contoh :TypeTitik = Objekx,y,Warna : Integer;constructor Initsdestructor doneprocedure gambar; virtual;End;Lingkaran = Object(Titik)R : Real;constructor Initsdestructor doneprocedure gambar; virtual;End;Metode gambar pada titik dam lingkaran adalah Virtual, artinya implementasinya bisa berbeda tergantung kelasnya.Contoh :

Page 10: Muhammad Firdaus

Procedure Titik.Gambar;BeginWriteln(‘Titik’);End;Procedure Lingkaran.Gambar;BeginWriteln(‘Lingkaran’);End;

Page 11: Muhammad Firdaus

KONSTRUKTOR DAN DESTRUKTOR

KONSTRUKTOR

Konstruktor adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat penciptaan

objek (mendeklarasikan instance). Konstruktor ditandai dengan namanya, yaitu sama dengan nama

kelas. Konstruktor tidak mempunyai tipe hasil (return value). Biasanya konstruktor dipakai untuk

inisialisasi anggota data dan melakukan operasi lain seperti membuka file dan melakukan alokasi

memori secara dinamis. Meskipun konstruktor tidak harus ada dalam kelas, tetapi jika diperlukan

konstruktor dapat lebih dari satu. 

Konstruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama kelas. 

Kegunaannya :

Mengalokasikan ruang bagi sebuah objek

Memberikan nilai awal terhadap anggota data suatu objek

Membentuk tugas-tugas umum lainnya  

Adapaun jenis-jenis kontruktor adalah sebagai berikut:

4. Konstruktor default : tidak dapat menerima argumen, anggota data diberi nilai awal tertentu.

5. Konstruktor penyalinan dengan parameter : anggota data diberi nilai awal berasal dari

parameter.

6. Konstruktor penyalinan objek lain : parameter berupa objek lain, anggota data diberi nilai

awal dari objek lain.

Contoh penulisan konstruktor :

#include

class jumlah

{

   public:

    int jumlah1;

      int jumlah2;

      ~jumlah();

}; 

jumlah objek1,objek2;

Page 12: Muhammad Firdaus

void main()

{

   cout<<”Didalam main() \n”;

   cout<<”objek1.jumlah1 adalah “<<

   cout<<”objek1.jumlah2 adalah “<<

   cout<<”objek2.jumlah1 adalah “<<

   cout<<”objek2.jumlah2 adalah “<<

jumlah::~jumlah()

{

   cout<<”Didalam jumlah() \n”;

DESTRUKTOR

Destruktor adalah pasangan konstruktor. Pada saat program membuat objek maka secara otomatis

kontruktor akan dijalankan, yang biasanya dimaksudkan untuk memberi nilai awal variable private.

Sejalan dengan itu, C++ menyediakan fungsi destruktor (penghancur atau pelenyap) yang secara

otomatis akan dijalankan pada saat berakhirnya objek. Setiap kelas mempunyai tepat satu destuktor.

jika kita tidak mendeklarasikan sebuah destruktor dalam sebuah kelas, maka destruktor akan

diciptakan sendiri oeh compiler C++. Fungsi destruktor itu sendiri adalah untuk mendealokasikan

memori dinamis yang diciptakan kontruktor. Nama destruktor sama dengan nama kelas ditambah

awalan karakter tilde (~). Walaupun compiler C++ akan secara otomatis mendeklarasikan sebuah

destruktor, akan tetapi sangat disarankan untuk mendeklarasikan sendiri sebuah destruktor. Karena

dengan mendeklarasikan sendiri destruktor maka kita mempunyai kontrol penuh terhadap apa yang

dilakukan destruktor dari kelas yang kita buat.

Destruktor adalah fungsi anggota yang mempunyai nama yang sama dengan nama kelas

ditambah symbol tilde (~) didepannya. 

Contoh  penulisan dalam Destruktor :

#include

Class Tpersegi

{

   int *lebar, *panjang;

   public:

      Tpersegi (int, int);

      ~Tpersegi();

      int Luas() {return (*lebar * *panjang);}

Page 13: Muhammad Firdaus

};

Tpersegi::Tpersegi(int a, int b)

{

   lebar=new int;

   panjang=new int;

   *lebar = a;

   *panjang = b;

}

Tpersegi::~Tpersegi()

{

   delete lebar;

   delete panjang;

}

int main()

{

   Tpersegi pers(3,4), persg(5,6);

   cout<<”Luas pers= “<<

   cout<<”Luas persg = “<<

   return 0;

}

KESIMPULAN

Dari uraian diatas dapat kita simpulkan bahwa:

Konstruktor :

-          Nama kontruktor sama dengan nama kelas

-          Kontruktor tidak mempunyai nilai balik

-          Kontruktor harus diletakkan di bagian public

-          Kontruktor dijalankan dengan sendirinya pada saat objek diciptakan, bahkan kontruktor dijalankan

sebelum fungsi main() dijalankan.

Destruktor:

-          Nama destruktor  sama dengan nama kelas ditambahkan tanda tilde (~) di depannya.

-          Destruktor tidak mempunyai nilai balik.

-          Destruktor harus diletakkan di bagian public.

-          Destruktor dijalankan dengan sendirinya pada saat objek akan sirna.

Page 14: Muhammad Firdaus

Contoh Lain konstruktor dan destruktor :

#include "stdafx.h"

#include "iostream.h"

#include "stdlib.h"

class hitung

{

public:

    double alas,tinggi,luas,sisi,jari,kel;

    void segitiga()

    {    cout<<"** Luas Segitiga **"<

        cout<<"Masukkan Alas   = ";cin>>alas;

        cout<<"Masukkan Tinggi = ";cin>>tinggi;

        luas=(alas*tinggi)/2;

        cout<<"Luas Segitiga   = "<<

    }

    void persegi()

    {    cout<<"** Luas Persegi **"<

        cout<<"Masukkan Panjang Sisi = ";cin>>sisi;

        luas=sisi*sisi;

        cout<<"Luas Persegi          = "<<

    }

    void llingkaran()

    {    cout<<"** Luas Lingkaran **"<

        cout<<"Masukkan Panjang Jari = ";cin>>jari;

        luas=3.14*jari*jari;

        cout<<"Luas Lingkaran        = "<<

    }

    void ppanjang()

    {    cout<<"** Luas Persegi Panjang **"<

        cout<<"Masukkan Alas          = ";cin>>alas;

        cout<<"Masukkan Tinggi        = ";cin>>tinggi;

        luas=alas*tinggi;

        cout<<"Luas Persegi Panjang   = "<<

    }

    void kellingkaran()

    {   

Page 15: Muhammad Firdaus

        cout<<"** Keliling Lingkaran **"<

        cout<<"Masukkan Panjang Jari   = ";cin>>jari;

        kel=2*3.14*jari;

        cout<<"Keliling Lingkaran      = "<<

    }

};

void main()

{    hitung htg;

    char tanya;

    tanya = 'y';

    int pilih;

    do {

        system ("cls");

    cout<<"== KALKULATOR LINDA =="<

    cout<<"---------------------------"<

    cout<<"1. Mencari Luas Segitiga"<

    cout<<"2. Mencari Luas Persegi"<

    cout<<"3. Mencari Luas Lingkaran"<

    cout<<"4. Mencari Luas Persegi Panjang"<

    cout<<"5. Mencari Keliling Lingkaran"<

    cout<<"---------------------------"<

    cout<<"Masukkan pilihan Anda = ";cin>>pilih;

    if (pilih==1)

    {    htg.segitiga();} else

    if (pilih==2)

    {    htg.persegi();} else

    if (pilih==3)

    {    htg.llingkaran();} else

    if (pilih==4)

    {    htg.ppanjang();} else

    if (pilih==5)

    {    htg.kellingkaran();}

    cout<<"---------------------------"<

    cout<<"Apakah Anda Ingin Mengulanginya ..? "; cin>>tanya;

    } while (tanya == 'y');

}

Page 16: Muhammad Firdaus

Mengenal eksepsi pada Delphi

Kesalahan sewaktu program dieksekusi atau yang dikenal dengan istilah runtime error bisa terjadi

karena terdapat operasi pembagian oleh bilangan nol, memory habis ketika diperlukan, atau operasi

penulisan ke suatu peranti gagal dilaksanakan.

Untuk mengatasi permasalahan demikian, Delphi menyediakan mekanisme yang disebut eksepsi.

Dengan memberikan kode pada penangan eksepsi, suatu tindakan dapat diatur sendiri oleh

pemrogram sekiranya kesalahan-kesalahan ang tidak normal terjadi. Eksepsi akan muncul manakala

suatu kesalahan atau kejadian yang menginterupsi eksekusi yang normal terjadi pada program.

Eksepsi akan menyebabkan kontrol program diberikan kepada penanganan eksepsi. Dengan

melakukan penanganan terhadap eksepsi, pemrogram dapat menangkap kesalahan, memberitahukan

atau mengoreksi kesalahan, serta menjalankan atau bahkan menghentikan eksekusi program.

PEWARISAN

Pewarisan Di Delphi 7.Inheritance/pewarisan merupakan fitur yang tersedia dalam OOP(Object

Oriented Programming).Dimana kita bisa menduplikasi sifat-sifat sebuah class , dan

memanfaatkannya di class yang lain.Class dalam Delphi 7 sendiri ialah file Unit yang bersisi source

code dari program.Dan class itu sendiri merupakan sebuah object.

Contoh :

Type

Titik = Objek

x,y,Warna : Integer;

constructor Inits

Page 17: Muhammad Firdaus

destructor done

procedure SetX(newx:Integer)

function GetX:Integer;

End;

Lingkaran = Object(Titik)

R : Real;

End;

PENGKAPSULAN

Penggabungan data dan metode menjadi satu kesatuan yang disebut kelas. Pada konsep ini terdapat

konsep untuk menyembunyikan infomasi. Konsep penyembunyian informasi ini dalam hal kontrol

akses (AC), yang terdiri dari Public dan Private. Public, anggota kelas tersebut hanya dapat diakses

dari kelas/procedure yang lain, sedangkan Private, hanya dapat diakses pada kelas/procedure pada

unit yang sama.

Contoh :

Type

Titik = Objek

Private

x,y,Warna : Integer;

Public

constructor Inits

destructor done

procedure SetX(newx:Integer)

function GetX:Integer;

End;

POLIMORFISME

Banyak bentuk, merupakan dua kelas yang diturunkan dari satu kelas mempunyai metode

sama tetapi implementasinya berbeda. Atau dengan kata lain nama metode sama kode

berbeda. Metode ini sering disebut metode Virtual. Penggunaannya dengan menggunakan

Page 18: Muhammad Firdaus

kata “Virtual”

Contoh :

Type

Titik = Objek

x,y,Warna : Integer;

constructor Inits

destructor done

procedure gambar; virtual;

End;

Lingkaran = Object(Titik)

R : Real;

constructor Inits

destructor done

procedure gambar; virtual;

End;

Metode gambar pada titik dam lingkaran adalah Virtual, artinya implementasinya bisa

berbeda tergantung kelasnya.

Contoh :

Procedure Titik.Gambar;

Begin

Writeln(‘Titik’);

End;

Procedure Lingkaran.Gambar;

Begin

Writeln(‘Lingkaran’);

End;

OPERATOR KELAS

|Operator kelas ialah operator as dan is menerima class dan instan obyek sebagai

operand, operator = dan juga beroperasi dengan class.

Page 19: Muhammad Firdaus