5 abstract class
TRANSCRIPT
Disusun Oleh : Asep Ahmad Sukmadi
Hal. 1
DIKTAT MATA KULIAH PEMROGRAMAN LANJUT
TEKNIK INFORMATIKA
BAB V ABSTRACT CLASS, INTERFACE,
OVERLOADING
ABSTRACT CLASS
Karakteristik :
1. Abstract class adalah class yang berposisi sebagai super class namun objeknya tidak dapat
dibuat dengan tujuan untuk dijadikan pola bagi class turunannya.
2. Abstract class dapat memiliki field dan non-abstract method / property.
3. Abstract method / property hanyalah berupa prototype (tidak memiliki body / kode program).
4. Abstract method / property harus ditimpa (override) oleh class-class turunannya.
Contoh dari diagram diatas dengan menjadikan personal sebagai abstract class maka hanya
akan menjadi pola bagi kedua class turunannya (dosen dan mhs).
Personal.cs
Personal
+Nama() +Usia()
Dosen
+Nama() +Usia()
Mahasiswa
+Nama() +Usia()
abstract class personal { public abstract void usia(); public abstract void nama(); }
Ini adalah prototype yaitu method yang tidak memiliki isi atau perintah. Menggunakan keyword abstract pada method dan class nya
Disusun Oleh : Asep Ahmad Sukmadi
Hal. 2
Dosen.cs
Mhs.cs
program.cs
Dosen dan mhs adalah class biasa (bukan abstract class) sehingga dapat dibuat objeknya.
Method yang digunakan adalah nama dan usia milik mereka masing-masing, karena telah menimpa
(override) method nama dan usia hasil turunan dari class personal.
class dosen : personal { public override void usia() { Console.WriteLine("Usia dosen 29 thn"); } public override void nama() { Console.WriteLine("Nama Dosen Adam "); } }
class mhs : personal { public override void usia() { Console.WriteLine("Usia Mahasiswa 22 thn"); } public override void nama() { Console.WriteLine("Nama mhs ....."); } }
Method override untuk
menimpa abstract method
milik superclass (personal)
yang nama methodnya sama
(nama dan usia)
class Program { static void Main(string[] args) { personal ppersonal= new dosen(); mhs pmhs = new mhs(); ppersonal.usia(); pmhs.usia(); ppersonal.nama(); pmhs.nama(); Console.ReadLine(); } }
Pembuatan objek dari class
biasa bukan dari abstract
class (personal).
Disusun Oleh : Asep Ahmad Sukmadi
Hal. 3
1. Abstract class untuk membuat sebuah class sebagai pola yang harus dipenuhi oleh class
turunannya.
2. Mencegah adanya pembuatan objek dari sebuah class dari pola tersebut.
3. Membiarkan method / property yang masih belum diketahui implementasinya untuk tetap
kosong (tanpa kode program / prototype) sekaligus mengharuskan setiap class turunan
memberikan implementasinya (dengan cara menimpa / override).
INTERFACE
Interface hampir serupa dengan abstract yang berfungsi sebagai pola yang harus dipenuhi
oleh setiap class meng-implement-nya.
Karakteristik :
1. Interface adalah sebuah pola berupa prototype dari method / property yang harus dibuat
oleh class yang meng-implement-nya.
2. Interface tidak memiliki field (hanya prototype method/property).
3. Prototype method/property pada interface tidak memiliki modifier (otomatis public).
Contoh diagram diatas sama dengan sebelumnya hanya saja ditambahkan interface-nya.
Buatlah sebuah interface beserta prototype methodnya.
skripsi.cs
Personal
+Nama() +Usia()
Dosen
+Nama() +Usia()
Mahasiswa
+Nama() +Usia()
skripsi
+sidang()
Class dan turunannya interface
namespace Interface_lat { interface skripsi { void sidang(); } }
Nama interface (skripsi)
Nama prototype method (sidang)
tanpa ada modifier (otomatis public)
Disusun Oleh : Asep Ahmad Sukmadi
Hal. 4
Untuk abstract class personal sama seperti sebelumnya tidak ada perubahan atau
penambahan yang kita tambahkan / ubah adalah class dosen, class mhs, dan program utama.
Dosen.cs
Mhs.cs
class dosen : personal, skripsi { public override void usia() { Console.WriteLine("Usia dosen 29 thn"); } public override void nama() { Console.WriteLine("Nama Dosen Adam "); } public void sidang() { Console.WriteLine("Dosen sedang menguji mhs"); } }
class mhs : personal, skripsi { public override void usia() { Console.WriteLine("Usia Mahasiswa 22 thn"); } public override void nama() { Console.WriteLine("Nama mhs ....."); } public void sidang() { Console.WriteLine("Mhs sedang menjalani sidang tugas akhir"); } }
Class ini meng-implement
interface skripsi dan harus
membuat method/property yang
terdapat dalam interface tersebut
Sesuai dengan pola pada
interface method ini harus
dibuat(bukan override)
Class ini meng-implement
interface skripsi dan harus
membuat method/property yang
terdapat dalam interface tersebut
Sesuai dengan pola pada
interface method ini harus
dibuat(bukan override)
Disusun Oleh : Asep Ahmad Sukmadi
Hal. 5
Setelah kita buat interface dan memodifikasi class turunannya baru buat program utamanya.
Program.cs
Penjelasan program utama
1. Membuat list dari personal. List adalah salah satu jenis kumpulan data (hamper serupa
dengan array)
2. Menambahkan anggota list.
3. Melakukan perulangan untuk setiap anggota list dimana “isiperson” adalah statement dari
foreach boleh diganti dengan kata lain (selain “isiperson”).
4. Mememriksa apakah termasuk salah satu objek yang sedang skripsi.
5. Menjalankan method sidang.
Catatan :
1. Virtual method/property : boleh ditimpa oleh class anak / subclass.
2. Abstract method/property : harus ditimpa oleh class anak / subclass.
3. Method/property pada interface : harus dibuat oleh class yang mengimplement interface
tersebut.
class Program { static void Main(string[] args) { List<personal> ppersonal = new List<personal>(); ppersonal.Add(new dosen()); ppersonal.Add(new mhs()); foreach (personal isiperson in ppersonal) { if (person is skripsi) (person as skripsi).sidang(); } Console.ReadLine(); } }
1
2
3
4 5
Disusun Oleh : Asep Ahmad Sukmadi
Hal. 6
Perbedaan Abstract Class dan Interface
1. Abstract Class : Dapat berisi field/atribut, property dan method.
Interface : Hanya berisi prototype method/property saja.
2. Abstract class : Modifier dalam tiap member dapat beragam (public, private, dan
protected);
Interface : Tidak memiliki modifier (otomatis public)
3. Abstract class : class anak / subclass harus menimpa abstract method/property yang
terdapat pada abstract class.
Interface : subclass harus membuat method/property yang terdapat pada interface.
4. Abstract class : sebuah calss hanya dapat menjadi turunan dari satu buah abstract class
saja.
Interface : sebuah class dapat meng-implement lebih dari 1 interface.