TUGAS 3
Polimorphism, Overloading dan Overriding
1.
Polymorphism
Polymorphism artinya
bersifat poly morphy (memiliki banyak bentuk).
Method-method overloading masih dalam
kelas yang sama, namun contoh berikut memvisualisaikan method respon() nama sama, namun pada kelas
yang berbeda dapat memilki isi method yang berbeda pula tergantung kelasnya.
2.
Overloading
Maksud
overloading disini bukan overloading terhadap operator sebagaimana C++.
Overloading disini adalah mendefinisikan dua atau lebih method di dalam kelas
yang sama, dengan nama yang sama, namun dengan deklarasi parameter yang
berbeda.
Java
interpreter mampu membedakan method mana yang dieksekusi dengan mengenali tipe
parameter yang dilewatkan ke method, serta mengenali return valuenya.
Tugas
dari method-method yang dioverloading tersebut berbeda.
3.
Overriding
Overriding
adalah kemampuan suatu subkelas untuk memodifikasi attribute dan method milik
kelas supernya (tentu yang memiliki sifat private atau final tidak biasa
dilakukan overriding).
Modifikasi
yang dilakukan, misalnya jumlah parameter, tipe parameter, tipe return value,
ataupun lingkungan pemrosesan datanya.
PEMBAHASAN
4.1.
Contoh Pemrograman Java
· Polymorphism
Contoh
pertama :
class EkspresiWajah {
public String
respons() {
return("Perhatikan ekspresi wajah saya");
}
}
class Gembira extends EkspresiWajah {
public String
respons() {
return("ha ha
ha…");
}
}
class Sedih extends EkspresiWajah {
public String
respons() {
return("hik
hik ngeee ngeee ngeee");
}
}
class Marah extends EkspresiWajah {
public String
respons() {
return("Hai
kurang ajar…!");
}
}
class MainEkspresiWajah {
public static void
main(String args[]) {
EkspresiWajah
objEkspresi = new EkspresiWajah();
Gembira objGembira
= new Gembira();
Sedih objSedih =
new Sedih();
Marah objMarah =
new Marah();
EkspresiWajah[]
arrEkspresi = new EkspresiWajah[4];
arrEkspresi[0] =
objEkspresi;
arrEkspresi[1] =
objGembira;
arrEkspresi[2] =
objSedih;
arrEkspresi[3] =
objMarah;
System.out.println("Ekspresi[0]
: " + arrEkspresi[0].respons());
System.out.println("Ekspresi[1]
: " + arrEkspresi[1].respons());
System.out.println("Ekspresi[2]
: " + arrEkspresi[2].respons());
System.out.println("Ekspresi[3]
: " + arrEkspresi[3].respons());
}
}
Contoh
kedua :
//Class
Employee
public class Employee {
private String name;
private double salary;
protected
Employee(String n, double s) {
name = n;
salary = s;
}
protected String
getDetails() {
return "Name
: "+name+ "\nSalary : "+salary;
}
public void cetak() {
System.out.println("coba di Employee");
}
}
//Class
Manager.java
public class Manager extends Employee {
private String
department;
public Manager(String
nama, double salary, String dep) {
super(nama,
salary);
department = dep;
}
public String
getDepartment() {
return department;
}
public String
getDetails() {
return
super.getDetails() + "\nDepartment : " + getDepartment();
}
public void cetak() {
System.out.println("Coba di Manager");
}
}
//Class
View.java
public class View {
public static void
main(String[] args) {
Employee e = new
Employee ("Satria",1100000);
Employee
em = new Manager ("Satria",1100000,"Informatika");
System.out.println("Data
Employee : \n " + e.getDetails());
System.out.println("Data
Manager : \n " + em.getDetails());
em.cetak();
}
}
Catatan
:
Kalau method cetak() di kelas Employee dan kelas
Manager ada, maka yang dijalankan adalah method milik kelas Manager.
Prioritasnya
adalah kelas Manager kemudian kelas Employee.
· Overloading
public class Perkalian {
private
double pangkat(int a, int b) {
double hasil = 1.0;
//kode program
for(int i = 1; i<=b;i++)
hasil *= a;
return hasil;
}
private
double pangkat(double a, int b) {
double hasil = 1.0;
//kode program
for(int i = 1; i<=b;i++)
hasil *= a;
return
hasil;
}
private
double pangkat(int a, double b) {
double hasil = 1.0;
//kode program
for(int i = 1; i<=b;i++)
hasil *= a;
return hasil;
}
private
double pangkat(double a, double b) {
double hasil = 1.0;
//kode program
for(int i = 1; i<=b;i++)
hasil *= a;
return hasil;
}
public
static void main(String[] args) {
Perkalian kali = new Perkalian();
System.out.println(kali.pangkat(5, 3));
System.out.println(kali.pangkat(5.0, 3));
System.out.println(kali.pangkat(5, 3.0));
System.out.println(kali.pangkat(5.0, 3.0));
}
}
·
Overriding
//Class KelasSuper.java
public class KelasSuper {
public void methodAsli() {
System.out.println("Method milik KelasSuper jalan");
}
public static void main(String[]
args) {
KelasSuper KS = new
KelasSuper();
KS.methodAsli();
}
}
//Class SubKelas.java
public class SubKelas extends KelasSuper {
public void methodAsli() {
System.out.println("Method yang overrided jalan");
}
public void methodPemanggil() {
System.out.println("Method pemanggil method Asli jalan");
super.methodAsli();
//yang dipanggil milik kelas super
}
public static void main(String[]
args) {
SubKelas SK = new SubKelas();
SK.methodAsli();
SK.methodPemanggil();
}
}
4.2. Contoh Pemrograman C#
//Class
Kendaraan.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Polymorphism
{
class Kendaraan {
public Kendaraan(int posisi) {
this.posisi = posisi;
}
private int posisi;
public int Posisi {
get { return posisi; }
set { posisi = value; }
}
public virtual void Move() {
return;
}
}
}
//Class Motor.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Polymorphism
{
class Motor : Kendaraan {
public Motor(int posisi)
: base(posisi) { }
public override void Move() {
base.Posisi = base.Posisi + 30;
}
}
}
//Class Mobil.java
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Polymorphism
{
class Mobil : Kendaraan {
public Mobil(int posisi)
: base(posisi) { }
public override void Move() {
base.Posisi = base.Posisi + 70;
}
}
}
//Class Pesawat.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Polymorphism
{
class Pesawat : Kendaraan {
public Pesawat(int posisi)
: base(posisi) { }
public override void Move() {
base.Posisi = base.Posisi + 300;
}
}
}
//Class Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Polymorphism
{
class Program {
static void Main(string[] args) {
int posisi = 10;
Kendaraan[] kendaraan = new Kendaraan[3];
kendaraan[0] = new Motor(posisi);
kendaraan[1] = new Mobil(posisi);
kendaraan[2] = new Pesawat(posisi);
Console.WriteLine("Intansiasi 3
Object Turunan Class Kendaraan");
Console.WriteLine("-Kendaraan[0]
merupakan instantsiasi dari class " + "Motor dengan posisi awal " + posisi);
Console.WriteLine("-Kendaraan[1]
merupakan instantsiasi dari class " + "Mobil dengan posisi awal " + posisi);
Console.WriteLine("-Kendaraan[2]
merupakan instantsiasi dari class " + "Pesawat dengan posisi awal " + posisi);
Console.WriteLine();
for (int i = 0; i < kendaraan.Length; i++) {
Console.WriteLine("Object [" + i + "] memanggil method move");
Console.WriteLine("Posisi sebelum
method move() dipanggil : " + kendaraan[i].Posisi);
kendaraan[i].Move();
Console.WriteLine("Posisi setelah
method move() dipanggil : " + kendaraan[i].Posisi);
Console.WriteLine();
Console.Write("Press any key to
continue...");
Console.ReadKey(true);
}
}
}
}
4.3.
Contoh Pemrograman C++
#include
<iostream>
using
namespace std;
class
Cbangun {
protected:
int
nPanjang, nLebar;
public:
void
PindahSisi(int,int);
};
void
CBangun::PindahSisi(int nAtas, int nSamping) {
nPanjang
= nAtas;
nLebar =
nSamping;
}
class
CPersegi: public Cbangun {
public:
int
Luas() {return(nPanjang * nLebar);};
};
class
CSegitiga: public Cbangun {
public:
int
Luas() {return(nPanjang * nLebar / 2);};
};
int
main() {
CBangun
*pBangun1, *pBangun2;
CPersegi
Persegi;
CSegitiga
Segitiga;
pBangun1
= &Persegi; // pBAngun1 berisi address Persegi
pBangun2
= &Segitiga; // pBangun2 berisi address Segitiga
pBangun1->PindahSisi(6,
6);
pBangun2->PindahSisi(6,
6);
cout
<< "Luas dari persegi adalah: " << Persegi.Luas()
<< endl
<<
"Luas dari segitiga adalah: " << Segitiga.Luas() << endl;
system("PAUSE");
return 0;
}
Tidak ada komentar:
Posting Komentar