Inherentance
Inheritanceatau pewarisan pada pemrograman berorientasi objek merupakan suatu hubungan dua buah kelas atau lebih. Dalam hal ini ada kelas yang memiliki atribut dan metode yang sama dengan kelas lainnya beserta atribut dan metode tambahan yang merupakan sifat khusus kelas yang menjadi turunannya. Sebagai contoh, misalkan ada sebuah kelas Titik yang mempunyai kelas turunan Titik3D:
class
Titik
private integer x
private integer y
Titik()
x < 0
y < 0
{end Titik}
public getX() -> integer
-> x
{end getX}
public getY() -> integer
-> y
{end getY}
{end class}
class Titik3D: Titik
private integer z
Titik3D()
z <- 0
{end Titik3D}
public getZ() -> integer
-> z
{end getZ}
{end class}
Keterkaitan antara kelas Titik dan
Titik3D adalah kelas Titik3D merupakan kelas turunan dari kelas Titik. Dalam
hal ini kelas Titik disebut dengan kelas dasar atau super classatau base
classsedangkan kelas Titik3D disebut sebagai kelas turunan atau derived
classatau subclass.
Pada contoh di atas, ketika kelas Titik3D dibuat objeknya maka objek tersebut dapat menggunakan metode yang ada pada kelas Titik walau pada kode programnya metode itu tidak dituliskan, misalkan sebagai berikut:
Pada contoh di atas, ketika kelas Titik3D dibuat objeknya maka objek tersebut dapat menggunakan metode yang ada pada kelas Titik walau pada kode programnya metode itu tidak dituliskan, misalkan sebagai berikut:
Titik3D
p <- new Titik3D()
integer x <- p.getX()
integer y <- p.getY()
integer z <- p.getZ()
Keuntungan dari pewarisan adalah
tidak perlu mengutak atik kode kelas yang membutuhkan tambahan atribut atau
metode saja, karena tinggal membuat kelas turunannya tanpa harus mengubah kode
kelas dasarnya. Kelas dasar akan mewariskan semua atribut dan kodenya kecuali
konstruktor dan destruktor yang memiliki izin akses publicdan protectedke
kelas turunannya dengan izin akses yang sama dengan pada kelas dasar.
Ketika sebuah kelas turunan dibuat objeknya saat eksekusi, maka secara implisit konstruktor kelas dasar dipanggil terlebih dahulu baru kemudian konstruktor kelas turunan dijalankan. Begitu juga saat objek dimusnahkan maka secara destruktor kelas turunan akan dijalankan baru kemudian destruktor kelas dasar dijalankan.
Ketika sebuah kelas turunan dibuat objeknya saat eksekusi, maka secara implisit konstruktor kelas dasar dipanggil terlebih dahulu baru kemudian konstruktor kelas turunan dijalankan. Begitu juga saat objek dimusnahkan maka secara destruktor kelas turunan akan dijalankan baru kemudian destruktor kelas dasar dijalankan.
Enkapsulasi
Enkapsulasi adalah pembungkus,
pembungkus disini dimaksudkan untuk menjaga suatu proses program agar tidak
dapat diakses secara sembarangan atau di intervensi oleh program lain. Konsep
enkapsulasi sangat penting dilakukan untuk menjaga kebutuhan program agar dapat
diakses sewaktu-waktu, sekaligus menjaga program tersebut.
Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.
Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.
Contoh dalam program
Belajar.Java
class belajar{
public String x =”Pintar”;
private String y = “Java”;
}
Pintar.Java
public class Pintar{
public static void main(String[]args){
Coba panggil = new Belajar();
System.out.println(“Panggil X : “+panggil.x);
System.out.println(“Panggil Y : “+panggil.y);
}}
Tipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari variable x dapat diakses oleh class Belajar. Sedangkan variable y yang menggunakan fungsi private tidak dapat dipanggil didalam class Belajar.
Dalam kehidupan sehari hari enkapsulasi dapat dimisalkan sebagai arus listrik pada generator, dan sistem perputaran generator untuk menghasilkan arus listrik. Kerja arus listrik tidak mempengaruhi kerja dari sistem perputaran generator, begitu pula sebaliknya. Karena didalam arus listrik tersebut, kita tidak perlu mengetahui bagaimana kinerja sistem perputaran generator, apakah generator berputar kebelakang atau ke depan atau bahkan serong. Begitu pula dalam sistem perputaran generator, kita tidak perlu tahu bagaimana arus listrik, apakah menyala atau tidak.
Begitulah konsep kerja dari enkapsulasi, dia akan melindungi sebuah program dari akses ataupun intervensi dari program lain yang mempengaruhinya. Hal ini sangat menjaga keutuhan program yang telah dibuat dengan konsep dan rencana yang sudah ditentukan dari awal.
Contoh dalam program
Belajar.Java
class belajar{
public String x =”Pintar”;
private String y = “Java”;
}
Pintar.Java
public class Pintar{
public static void main(String[]args){
Coba panggil = new Belajar();
System.out.println(“Panggil X : “+panggil.x);
System.out.println(“Panggil Y : “+panggil.y);
}}
Tipe public dan private mempunyai fungsi yang berbeda. Fungsi public yang terdapat dalam class Coba pada variable x, memungkinkan nilai dari variable x dapat diakses oleh class Belajar. Sedangkan variable y yang menggunakan fungsi private tidak dapat dipanggil didalam class Belajar.
Polymorphisme
Polymorphism,
suatu aksi yang memungkinkan pemrogram menyampaikan pesan tertentu keluar dari
hirarki obyeknya, dimana obyek yang berbeda memberikan tanggapan/respon
terhadap pesan yang sama sesuai dengan sifat masing-masing obyek.
Atau Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.
Contoh program java nya :
Simpan dengan nama BeautyfullMahasiswa.java
public class BeautyfullMahasiswa extends Mahasiswa{
public void printNama(){
System.out.println(“Hallo, saya Mahasiswa yg cantik n baik”);
Super.printNama();
}
}
Simpan dengan nama Main.java
public class Main{
public static void main(String[] args]) {
BeautyfullMahasiswa mhs = new BeautyfullMahasiswa();
mhs.setNim(“09530524”);
mhs.setNama(“Afrida Asna”);
mhs.printNim();
mhs.printNama();
}
}
Kemudian compile dan run.
C:\>javac BeautyfullMahasiswa.java
C:\>javac Main.java
C:\>java Main
Kontruksi objek mahasiswa
Nim:09530524
Hallo, saya Mahasiswa yg cantik n baik
Nama: Afrida Asna
C:\>
Atau Polymorphic dapat berarti banyak bentuk, maksudnya yaitu kita dapat menimpa (override), suatu method, yang berasal dari parent class (super class) dimana object tersebut diturunkan, sehingga memiliki kelakuan yang berbeda.
Contoh program java nya :
Simpan dengan nama BeautyfullMahasiswa.java
public class BeautyfullMahasiswa extends Mahasiswa{
public void printNama(){
System.out.println(“Hallo, saya Mahasiswa yg cantik n baik”);
Super.printNama();
}
}
Simpan dengan nama Main.java
public class Main{
public static void main(String[] args]) {
BeautyfullMahasiswa mhs = new BeautyfullMahasiswa();
mhs.setNim(“09530524”);
mhs.setNama(“Afrida Asna”);
mhs.printNim();
mhs.printNama();
}
}
Kemudian compile dan run.
C:\>javac BeautyfullMahasiswa.java
C:\>javac Main.java
C:\>java Main
Kontruksi objek mahasiswa
Nim:09530524
Hallo, saya Mahasiswa yg cantik n baik
Nama: Afrida Asna
C:\>
Penjelasan dari program
:
MEMBUAT PROGRAM
SuperClass.java
Ini bukan kelas utama karena tidak
memiliki fungsi utama.
Memiliki 2 method.
public class SuperClass{
public SuperClass() { method 1 / construktor
System.out.println("Ini Konstruktor Milik SuperClass");
}
public void methodSuperClass () { method 2
System.out.println("Ini Method Milik SuperClass");
}
}
MEMBUAT PROGRAM SubClass.java
Dengan turunan maka subclass bisa mengakses ke kelas superclass,
Memiliki 2 method.
public class SuperClass{
public SuperClass() { method 1 / construktor
System.out.println("Ini Konstruktor Milik SuperClass");
}
public void methodSuperClass () { method 2
System.out.println("Ini Method Milik SuperClass");
}
}
MEMBUAT PROGRAM SubClass.java
Dengan turunan maka subclass bisa mengakses ke kelas superclass,
subclass => kelas
anak, dan superclass=> kelas induk.
public class SubClass extends
SuperClass{
public SubClass() { method/ construktor
super (); perintah untuk memanggil constructor kelas induk.
}
public void methodSubClass() { method
super.methodSuperClass(); perintah untuk memanggil method superclass dari kelas induk
}
}
MEMBUAT PROGRAM DemoInheritance,java
Merupakan kelas utama, karena ada fungsi utamanya.
public class DemoInheritance {
public static void main (String[] args){
SubClass sc = new SubClass ();
sc.methodSubClass(); perintah untuk memanggil method subclass dr objek sc
}
}
public SubClass() { method/ construktor
super (); perintah untuk memanggil constructor kelas induk.
}
public void methodSubClass() { method
super.methodSuperClass(); perintah untuk memanggil method superclass dari kelas induk
}
}
MEMBUAT PROGRAM DemoInheritance,java
Merupakan kelas utama, karena ada fungsi utamanya.
public class DemoInheritance {
public static void main (String[] args){
SubClass sc = new SubClass ();
sc.methodSubClass(); perintah untuk memanggil method subclass dr objek sc
}
}
sc = nama objek
perintah untuk membuat objek baru
MEMBUAT PROGRAM
Persegi.java
public class Persegi {
private double panjang;
private double lebar; disembunyikan, karena ada modifier private
private double tinggi;
public Persegi() {
panjang = 0;
lebar = 0;
}
private double luas (double p, double l) { method yang disembunyikan krn ada private dan kelas lain tidak bisa diakses dan wilayah aksesnya kelas yang utama.
return p*l;
}
public void setpanjang (double panjang1) {
this.panjang = panjang1;
}
public void setlebar (double lebar1) {
this.lebar = lebar1;
}
public double getpanjang () {
return panjang;
}
public double getlebar () {
return lebar;
}
public double getluas () {
return luas (panjang, lebar); (double p, double l => 10 * 20 = 200)
}
}
MEMBUAT PROGRAM MainPersegi.java
public class MainPersegi {
public static void main (String[] args) {
Persegi pg = new Persegi();
pg.setpanjang(10);
pg.setlebar(20);
System.out.println ("Panjang : "+pg.getpanjang());
System.out.println ("Lebar : "+pg.getlebar());
System.out.println ("Luas : "+pg.getluas());
}
}
MEMBUAT PROGRAM Karyawan.java
abstract class Karyawan {
int gaji;
Karyawan() {
gaji = 1000000;
}
int getgaji() {
return gaji;
}
abstract void naikgaji();
}
MEMBUAT PROGRAM Manager.java
class Manager extends Karyawan{
Manager () {
gaji += 2000000;
}
void naikgaji () {
gaji+= 3000000;
}
}
MEMBUAT PROGRAM Receptionist.java
class Receptionist extends Karyawan{
Receptionist () {
gaji += 1000000;
}
void naikgaji () {
gaji+= 1000000;
}
}
MEMBUAT PROGRAM Polymorphisme.java
class Polymorphisme {
public static void main (String[] args) {
Karyawan K[] = new Karyawan [3];
K[0] = new Manager ();
K[1] = new Receptionist ();
K[2] = new Manager ();
for (int i=0; i<3; i++)
System.out.println ("Gaji Karyawan "+i+" adalah "+K[i].getgaji());
for (int i=0; i<3; i++)
K[i].naikgaji();
for (int i=0; i<3; i++)
System.out.println ("Gaji Sekarang "+i+" adalah "+K[i].getgaji());
}
}
public class Persegi {
private double panjang;
private double lebar; disembunyikan, karena ada modifier private
private double tinggi;
public Persegi() {
panjang = 0;
lebar = 0;
}
private double luas (double p, double l) { method yang disembunyikan krn ada private dan kelas lain tidak bisa diakses dan wilayah aksesnya kelas yang utama.
return p*l;
}
public void setpanjang (double panjang1) {
this.panjang = panjang1;
}
public void setlebar (double lebar1) {
this.lebar = lebar1;
}
public double getpanjang () {
return panjang;
}
public double getlebar () {
return lebar;
}
public double getluas () {
return luas (panjang, lebar); (double p, double l => 10 * 20 = 200)
}
}
MEMBUAT PROGRAM MainPersegi.java
public class MainPersegi {
public static void main (String[] args) {
Persegi pg = new Persegi();
pg.setpanjang(10);
pg.setlebar(20);
System.out.println ("Panjang : "+pg.getpanjang());
System.out.println ("Lebar : "+pg.getlebar());
System.out.println ("Luas : "+pg.getluas());
}
}
MEMBUAT PROGRAM Karyawan.java
abstract class Karyawan {
int gaji;
Karyawan() {
gaji = 1000000;
}
int getgaji() {
return gaji;
}
abstract void naikgaji();
}
MEMBUAT PROGRAM Manager.java
class Manager extends Karyawan{
Manager () {
gaji += 2000000;
}
void naikgaji () {
gaji+= 3000000;
}
}
MEMBUAT PROGRAM Receptionist.java
class Receptionist extends Karyawan{
Receptionist () {
gaji += 1000000;
}
void naikgaji () {
gaji+= 1000000;
}
}
MEMBUAT PROGRAM Polymorphisme.java
class Polymorphisme {
public static void main (String[] args) {
Karyawan K[] = new Karyawan [3];
K[0] = new Manager ();
K[1] = new Receptionist ();
K[2] = new Manager ();
for (int i=0; i<3; i++)
System.out.println ("Gaji Karyawan "+i+" adalah "+K[i].getgaji());
for (int i=0; i<3; i++)
K[i].naikgaji();
for (int i=0; i<3; i++)
System.out.println ("Gaji Sekarang "+i+" adalah "+K[i].getgaji());
}
}
Tidak ada komentar:
Posting Komentar