5 abstract class

6
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

Upload: salman-muhammad

Post on 24-Apr-2015

13 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: 5 Abstract Class

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

Page 2: 5 Abstract Class

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).

Page 3: 5 Abstract Class

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)

Page 4: 5 Abstract Class

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)

Page 5: 5 Abstract Class

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

Page 6: 5 Abstract Class

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.