18
Pewarisan , Polimorfisme dan Enkapsulasi FANDY SYAUKATI PUTRA 090010310 N091 Fandy Syaukati Putra 090010310 N091

Tugas 3 C#

Embed Size (px)

Citation preview

Pewarisan , Polimorfisme

dan Enkapsulasi

FANDY SYAUKATI PUTRA090010310

N091

Fandy Syaukati Putra 090010310 N091

1. InheritanceInheritance adalah mewariskan segala sesuatu yang ada pada class induk ke class turunannya, baik itu berupa method, maupun berupa variabel, jika di ilustrasikan, Inheritance bisa di gambarkan sebagai berikut :

Dari gambar di atas, misalnya Manusia mempunyai nama, alamat, umur, pekerjaan, begitu juga kelas turunannya (Dosen, Mahasiswa) bisa mempunyai nama, alamat, umur, pekerjaan. Dalam menentukan bahwa class anak itu mempunyai induk, di gunakan tanda : (titik dua) setelah nama classnya.Contoh Codenya :1. Class Induknya :

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Pewarisan{ class Manusia { protected string nama,alamat,pekerjaan; protected int umur; public void tampilkannama() { Console.WriteLine("Nama saya : "+nama);

} public void tampilkanumur() { Console.WriteLine("Umur saya : " +umur); }

Fandy Syaukati Putra 090010310 N091

Manusia

Dosen Mahasiswa

public void tampilkanalamat() { Console.WriteLine("Alamat saya : "+alamat); }

public void tampilkanpekerjaan() { Console.WriteLine("Pekerjaan saya : "+pekerjaan); } }}

2. Class anaknya :- Class Mahasiswa :

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Pewarisan{ class Mahasiswa : Manusia // artinya bahwa class Mahasiswa mempunyai induk class bernama class Manusia { public void tulisnama() { Console.Write("Masukan nama anda : "); nama = Console.ReadLine(); /*terlihat disini bahwa variabel yang terdapat pada class induknya bisa di

pake di class anaknya, jadi semua yang terdapat di class induk bisa di pake di class anaknya */

} public void tulisumur() { Console.Write("Masukan umur anda : "); umur = int.Parse(Console.ReadLine()); } public void tulisalamat() { Console.Write("Masukan alamat anda : "); alamat = Console.ReadLine(); } public void tulispekerjaan() { Console.Write("Masukan pekerjaan anda : "); pekerjaan = Console.ReadLine(); }

Fandy Syaukati Putra 090010310 N091

}}

- Class Dosen :using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Pewarisan{ class Dosen : Manusia { public void tulisnama() { Console.Write("Masukan nama anda : "); nama = Console.ReadLine(); } public void tulisumur() { Console.Write("Masukan umur anda : "); umur = int.Parse(Console.ReadLine()); } public void tulisalamat() { Console.Write("Masukan alamat anda : "); alamat = Console.ReadLine(); } public void tulispekerjaan() { Console.Write("Masukan pekerjaan anda : "); pekerjaan = Console.ReadLine(); } }}

3. Class Program (yang terdapat method main)using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Pewarisan{ class Program

Fandy Syaukati Putra 090010310 N091

{ static void Main(string[] args) { Mahasiswa fandy = new Mahasiswa(); Dosen fandysp = new Dosen(); Console.WriteLine("========================"); Console.WriteLine(" Mahasiswa "); Console.WriteLine("========================"); fandy.tulisnama(); fandy.tulisalamat(); fandy.tulisumur(); fandy.tulispekerjaan(); Console.Clear();

Console.WriteLine("========================"); Console.WriteLine(" Dosen "); Console.WriteLine("========================"); fandysp.tulisnama(); fandysp.tulisalamat(); fandysp.tulisumur(); fandysp.tulispekerjaan(); Console.Clear();

Console.WriteLine("========================"); Console.WriteLine(" Mahasiswa "); Console.WriteLine("========================"); fandy.tampilkannama(); /* terlihat disini bahwa kelas anak bisa memakai method yang terdapat pada

induknya */ fandy.tampilkanalamat(); fandy.tampilkanumur(); fandy.tampilkanpekerjaan(); Console.WriteLine();

Console.ReadLine(); Console.WriteLine("========================"); Console.WriteLine(" Dosen "); Console.WriteLine("========================"); fandysp.tampilkannama(); fandysp.tampilkanalamat(); fandysp.tampilkanumur(); fandysp.tampilkanpekerjaan(); Console.ReadLine(); } }}

Fandy Syaukati Putra 090010310 N091

hasil tampilannya :

Setelah di clear screen :

Setelah di clear screen :

Setelah lihat hasil tampilan run dan coding yang sudah saya berikan commentya, terbukti bahwa apapun yang terdapat pada induk class , bisa di gunakan oleh anak classnya.

Dalam inheritance, class induk , bisa mewariskan apapun yang ada pada class itu ke banyak class anak , sedangkan sebuah class anak tidak bisa mempunyai dua induk class contoh :

class Mahasiswa : Manusia : Mamalia { }

Fandy Syaukati Putra 090010310 N091

Jika melakukan hal seperti di atas , maka tool pembuat program C# (Visual Studio) akan mengeluarkan pesan error seperti berikut :

Jadi setelah kita melihat pesan error di atas, terbukti bahwa satu induk class bisa mewariskan ke banyak anak class, sedangkan anak class tidak bisa mempunyai banyak induk. Kemudian di pewarisan ini, statement apapun yang terdapat pada method class induknya, maka class anaknya pun memakai statement apapun yang terdapat pada method tersebut , contoh :- Class induk :

class Manusia { protected string nama,alamat,pekerjaan; protected int umur; public void tampilkannama() { Console.WriteLine("Nama saya : "+nama);

} public void tampilkanumur() { Console.WriteLine("Umur saya : " +umur); }

public void tampilkanalamat() { Console.WriteLine("Alamat saya : "+alamat); }

public void tampilkanpekerjaan() { Console.WriteLine("Pekerjaan saya : "+pekerjaan); }

}- Pemanggilan method kelas induk, dengan menggunakan class anaknya (yang di bold dan

berwarna magenta adalah pemanggilan method induk menggunakan kelas anaknya):

Fandy Syaukati Putra 090010310 N091

class Program { static void Main(string[] args) { Mahasiswa fandy = new Mahasiswa(); // pembuatan objec fandy dari kelas mahasiswa Dosen fandysp = new Dosen(); // pembuatan object fandysp dari kelas dosen Console.WriteLine("========================"); Console.WriteLine(" Mahasiswa "); Console.WriteLine("========================"); fandy.tulisnama(); fandy.tulisalamat(); fandy.tulisumur(); fandy.tulispekerjaan(); Console.Clear();

Console.WriteLine("========================"); Console.WriteLine(" Dosen "); Console.WriteLine("========================"); fandysp.tulisnama(); fandysp.tulisalamat(); fandysp.tulisumur(); fandysp.tulispekerjaan(); Console.Clear();

Console.WriteLine("========================"); Console.WriteLine(" Mahasiswa "); Console.WriteLine("========================"); fandy.tampilkannama(); /* terlihat disini bahwa kelas anak bisa memakai method yang terdapat pada

induknya */ fandy.tampilkanalamat(); fandy.tampilkanumur(); fandy.tampilkanpekerjaan(); Console.WriteLine();

Console.ReadLine(); Console.WriteLine("========================"); Console.WriteLine(" Dosen "); Console.WriteLine("========================"); fandysp.tampilkannama(); fandysp.tampilkanalamat(); fandysp.tampilkanumur(); fandysp.tampilkanpekerjaan(); Console.ReadLine(); }

Fandy Syaukati Putra 090010310 N091

untuk pembuktian pengeluaran methodnya sama seperti induknya :

Terbukti bukan, pada method induknya dengan method induknya seperti ini : public void tampilkannama() { Console.WriteLine("Nama saya : "+nama);

} public void tampilkanumur() { Console.WriteLine("Umur saya : " +umur); }

public void tampilkanalamat() { Console.WriteLine("Alamat saya : "+alamat); }

public void tampilkanpekerjaan() { Console.WriteLine("Pekerjaan saya : "+pekerjaan);

} Ketika di panggil menggunakan anaknya dengan cara seperti ini : Console.WriteLine("========================");

Console.WriteLine(" Mahasiswa "); Console.WriteLine("========================"); fandy.tampilkannama(); /* terlihat disini bahwa kelas anak bisa memakai method yang terdapat pada

induknya */ fandy.tampilkanalamat(); fandy.tampilkanumur(); fandy.tampilkanpekerjaan();

Fandy Syaukati Putra 090010310 N091

Console.WriteLine();

Console.ReadLine(); Console.WriteLine("========================"); Console.WriteLine(" Dosen "); Console.WriteLine("========================"); fandysp.tampilkannama(); fandysp.tampilkanalamat(); fandysp.tampilkanumur(); fandysp.tampilkanpekerjaan();Menghasilkan tampilan seperti di atas, jadi intinya, pewarisan itu adalah mewariskan variabel dan method – method apapun yang terdapat pada induknya, ke pada anaknya, dan anaknya pun jika menggunakan method yang di wariskan, statement – statement yang terdapat pada method tersebut jika di jalankan sama seperti statement – statement yang terdapat pada induknya.

2. PolimorfismPolimorfism itu hampir sama dengan pewarisan, bedanya hanyalah pada methodnya, jika pada pewarisan, apapun yang ada pada method induknya, itu juga yang akan di jalankan pada anaknya, sedangkan Polimorfism, walaupun sama nama methodnya seperti nama method induknya, tetapi isi / statement – statement yang terdapat pada method induknya, berbeda dengan anaknya, jadi yang di jalankan berbeda dengan induknya, untuk melakukan seperti itu, method di induknya harus di tuliskan virtual dan pada anaknya harus di tuliskan override, contoh :1. Class induk :

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Polimorfisme{ class Mamalia { public virtual string nama() { return "Ini adalah Mamalia"; }

public virtual string makan() { return "Mamalia bisa makan "; }

public virtual string bicara() { return "Mamalia bisa bicara "; } }}

Fandy Syaukati Putra 090010310 N091

Terlihat method – method yang terdapat di samping ini, bahwa method – method itu dapat di polimorfisme kan karena terdapat kata virtual dalam bentuk methodnya

2. Class anaknya : - class Manusia :

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Polimorfisme{ class Manusia : Mamalia { public override string nama() { return "Ini adalah Manusia"; }

public override string makan() { return "Manusia bisa makan daging dan sayur "; }

public override string bicara() { return "Manusia bisa bicara apa saja "; } }}

- class Kucing :using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Polimorfisme{ class Kucing : Mamalia { public override string nama() { return "Ini adalah Kucing"; }

public override string makan() { return "Kucing bisa makan daging saja "; }

public override string bicara() { return "Kucing bisa bicara meong - meong "; } }}

Fandy Syaukati Putra 090010310 N091

Dari yang terlihat di samping, bahwa method yang terdapat pada induknya di polimorfism kan dengan cara menuliskan override di methodnya

Dari yang terlihat di samping, bahwa method yang terdapat pada induknya di polimorfism kan dengan cara menuliskan override di methodnya

- class Sapi : using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Polimorfisme{ class Sapi : Mamalia { public override string nama() { return "Ini adalah Sapi"; }

public override string makan() { return "Sapi bisa makan rumput "; }

public override string bicara() { return "Sapi bisa bicara moooooooooooooooooo"; } }}

- class Panda :

using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Polimorfisme{ class Panda : Mamalia { }}

3. Class Program (class yang terdapat method mainnya ) : using System;

using System.Collections.Generic;using System.Linq;using System.Text;

namespace Polimorfisme{ class Program { static void Main(string[] args) {

Fandy Syaukati Putra 090010310 N091

Dari yang terlihat di samping, bahwa method yang terdapat pada induknya di polimorfism kan dengan cara menuliskan override di methodnya

Terlihat di class Panda ini, tidak mempolimorfisme method – method yang ada pada induknya, sehingga ia mewarisi semua yang terdapat pada induknya tampa perubahan sedikitpun

Mamalia induk = new Mamalia(); Manusia fandy = new Manusia(); Kucing dian = new Kucing(); Sapi lidya = new Sapi(); Panda mandha = new Panda(); Console.WriteLine("Ayo - ayo kita lihat kelas induk : "); Console.WriteLine("==================="); Console.WriteLine(" Mamalia "); Console.WriteLine("==================="); Console.WriteLine(induk.nama()); Console.WriteLine(induk.makan()); Console.WriteLine(induk.bicara()); Console.WriteLine(); Console.WriteLine("Ayo - ayo kita lihat kelas anak : "); Console.WriteLine("==================="); Console.WriteLine(" Manusia "); Console.WriteLine("==================="); Console.WriteLine(fandy.nama()); Console.WriteLine(fandy.makan()); Console.WriteLine(fandy.bicara()); Console.WriteLine();

Console.WriteLine("==================="); Console.WriteLine(" Kucing "); Console.WriteLine("==================="); Console.WriteLine(dian.nama()); Console.WriteLine(dian.makan()); Console.WriteLine(dian.bicara()); Console.WriteLine();

Console.WriteLine("==================="); Console.WriteLine(" Sapi "); Console.WriteLine("==================="); Console.WriteLine(lidya.nama()); Console.WriteLine(lidya.makan()); Console.WriteLine(lidya.bicara()); Console.WriteLine();

Console.WriteLine("==================="); Console.WriteLine(" Panda "); Console.WriteLine("==================="); Console.WriteLine(mandha.nama()); Console.WriteLine(mandha.makan()); Console.WriteLine(mandha.bicara()); Console.WriteLine();

Console.ReadLine();

} }}

Fandy Syaukati Putra 090010310 N091

Jika di run, maka hasilnya :

Pada gambar di atas terlihat bukan, class anak yang sama dengan induknya hanyalah class Panda karena class Panda tidak mempolimorfismekan method – method induknya, sedangkan class - class yang lainnya mempolimorfismekan method – method class induknya .

3. EnkapsulasiEnkapsulasi adalah pembungkusan sebuah informasi agar hanya class yang mempunyai informasi itu saja yang bisa menggunakannya, tujuannya adalah agar class lainnya tidak bisa mengakses informasi tersebut, biasanya informasi tersebut di jadikan private, sehingga hanya class itu saja yang bisa mengakses informasi / variabel tersebut. Di C# enkapsulasi ini di katakan sebagai properti yang dimana berfungsi seperti sebuah method tetapi properti ini bukan method, cara mendeklarasikannya adalah :AccessModifier Type PropertyName{get{// baca accessor code}

Fandy Syaukati Putra 090010310 N091

set{// tulis accessor code}}

contoh :

Class yang terdapat enkapsulasi :using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Enkapsulasi{ class Mahasiswa { private string nama, alamat, nim; private int umur; public string Nama { get { return nama; } set { this.nama = value; } }

public string Alamat { get { return alamat; } set { this.alamat = value; } }

public string Nim { get { return nim; } set { this.nim = value; }

Fandy Syaukati Putra 090010310 N091

Yang di samping berwarna magenta itu adalah pembuatan enkapsulasi yang dimana nantinya bisa di gunakan untuk mengakses variabel – variabel yang terdapat pada class mahasiswa ini

}

public int Umur { get { return umur; } set { this.umur = value; } } }}

Class yang terdapat method main :using System;using System.Collections.Generic;using System.Linq;using System.Text;

namespace Enkapsulasi{ class Program { static void Main(string[] args) { Mahasiswa fandy = new Mahasiswa(); Console.Write("Masukan nama anda : "); fandy.Nama = Console.ReadLine(); Console.Write("Masukan nim anda : "); fandy.Nim = Console.ReadLine(); Console.Write("Masukan umur anda : "); fandy.Umur = int.Parse(Console.ReadLine()); Console.Write("Masukan alamat anda : "); fandy.Alamat = Console.ReadLine(); Console.Clear(); Console.WriteLine("Nama anda : " +fandy.Nama); Console.WriteLine("Nim anda : " +fandy.Nim); Console.WriteLine("Umur anda : " +fandy.Umur); Console.WriteLine("Alamat anda : "+fandy.Alamat); Console.ReadLine(); } }}

Hasil tampilan :

Fandy Syaukati Putra 090010310 N091

Yang di samping berwarna magenta itu adalah pembuatan enkapsulasi yang dimana nantinya bisa di gunakan untuk mengakses variabel – variabel yang terdapat pada class mahasiswa ini

Yang berwarna magenta di samping adalah pengaksesan enkapsulasi dari class yang terdapat method main

Setelah di clear screen :

Fandy Syaukati Putra 090010310 N091

Fandy Syaukati Putra 090010310 N091