TUGAS 5
Inner Class, Interface, Abstract Class
1.
Inner Class
Inner
Class adalah kelas yang disisipkan di
dalam kelas yang lain. Fungsi kelas sisipan ini adalah mendukung suatu proses
yang akan dijalankan oleh kelas utamanya. Inner Class bersifat tersarang
terhadap kelas – kelas utamanya, seperti halnya blok penyeleksian (if, for) yang tersarang pada blok
penyeleksian lainnya atau method yang tersarang pada method lainnya.
Analogi Inner
Class
Inner
Class dapat dianalogikan sebagi hubungan antara manusia dan paru – paru. Setiap
manusia pasti bernafas dengan menggunakan paru – paru. Dalam hal ini berarti
kinerja dari paru – paru turut mendukung/menetukan kinerja dari manusia. Dalam
bahasa pemrograman berorientasi objek manusia dapat dikatakan sebagai outer
class dan paru – paru sebagai inner
class-nya.
2.
Interface
Interface
adalah suatu class yang berisi method – method tanpa imlementasi, namun tanpa
modifier abstract, apabila suatu interface memiliki atribut, maka atributnya
akan berlaku sebagai konstanta (static final).
Analogi
Interface
Interface
dapat dianalogikan sebagai kontrak yang dapat dipakai oleh setiap kelas. Dalam
kehidupan nyata kita mengetahui bahwa ada yang bekerja sebagai penyayi,
pengacara, pelawak, dsb, tentunya manusia –manusia tersebut selain harus
memiliki method standar seorang manusia, juga harus memiliki method yang sesuai
dengan pekerjaannya. Dengan demikian untuk membuat seorang objek Yuna penyayi
kita harus membuat kelas yang merupakan turunan kelas manusia yang
mengimplementasikan interface penyayi.
3.
Abstract Class
Abstract
class adalah suatu class yang dinyatakan abstract, umumnya memiliki satu atau
abstract method, abstract method adalah suatu method yang belum memiliki
implementasi dan menggunakan modifier abstract. Abstract class biasanya
dijadikan parent atau super class dari kelas – kelas yang dapat membuat objek,
abstract class tidak dapat diinstanisasi.
Analogi
Inheritance dan Abstract Class :
Inheritence
dapat dianalogikan seperti penggolongan kelas, ordo, phylum dalam biologi.
Makhluk hidup dapat diturunkan atau diextend atau diperluas (di-inherit)
menjadi burung, reptile, ikan dan lain – lain, jenjang penurunan tersebut
disebut inheritance.
Kita
mengetahui bahwa suatu kelas dapat diinstanisasi menjadi suatu objek, misal
kelas manusia dapat diinstanisasi menjadi Yuna, Rinoa, Ashe, dan lain – lain,
namun kita tidak mungkin dapat menginstanisasi kelas makhluk hidup, maupun
kelas hewan, sebab kelas tersebut terlalu umum (abstract), kelas seperti inilah
yang desebut sebagai abstract class, apabila class makhluk hidup mempunyai
method bernafas, maka kita tidak dapat menentukan (meng-implementasikan) cara
makhluk hidup tersebut bernafas, dengan paru – paru, insang atau stomata,
dengan demikian kita dapat menyatakan bahwa di dalam kelas makhluk hidup,
bernafas merupakan method yang abstract.
PEMBAHASAN
4.1. Contoh Pemrograman Java
Contoh
pertama :
//Class
Mahasiswa.java
public
abstract class Mahasiswa {
public String nim;
public String nama;
public String jurusan;
public abstract void biodata();
public abstract void matakuliah();
}
//Class
Pembayaran.java
public
interface Pembayaran {
public double spp = 5000000;
public void biayakuliah(int
jml_matakuliah);
}
//Class
MahasiswaElektro.java
public class
MahasiswaElektro extends Mahasiswa implements Pembayaran {
@Override
public void biodata() {
jurusan = "Elektro";
System.out.println("NIM : " + nim);
System.out.println("Nama : " + nama);
System.out.println("Jurusan :
" + jurusan);
}
@Override
public void matakuliah () {
System.out.println("---Daftar Mata
Kuliah---");
System.out.println("1. Rangkaian
Elektronika");
System.out.println("2.
Robotika");
}
public void biayakuliah(int jml_matakuliah)
{
double persks = 25000;
System.out.println("Biaya
Kuliah:" + (spp + (persks * jml_matakuliah)));
}
}
//Class
MahasiswaTI.java
public class
MahasiswaTI extends Mahasiswa implements Pembayaran {
@Override
public void biodata() {
jurusan = "Teknik
Informatika";
System.out.println("NIM : " + nim);
System.out.println("Nama : " + nama);
System.out.println("Jurusan :
" + jurusan);
}
@Override
public void matakuliah () {
System.out.println("---Daftar Mata
Kuliah---");
System.out.println("1.
OOP2");
System.out.println("2. Pemrograman
Web");
}
public void biayakuliah(int jml_matakuliah)
{
double persks = 50000;
System.out.println("Biaya
Kuliah :" + (spp + (persks * jml_matakuliah)));
}
public static void main (String args[]) {
MahasiswaTI mhs1 = new MahasiswaTI();
mhs1.nim = "1109100501";
mhs1.nama = "Budi
Sudjatmiko";
mhs1.biodata();
mhs1.matakuliah();
mhs1.biayakuliah(24);
MahasiswaElektro mhs2 = new
MahasiswaElektro();
mhs2.nim = "1109400901";
mhs2.nama = "Herman
Suherman";
mhs2.biodata();
mhs2.matakuliah();
mhs2.biayakuliah(24);
}
}
Contoh kedua
:
//Class
Kendaraan.java
public abstract class Kendaraan {
protected
String jenis;
protected
int jmlhroda;
protected int
ThnProduksi;
public Kendaraan (String jenis, int jmlhroda, int
ThnProduksi) {
this.jenis = jenis; //persamaan nilai atribut dan
nilai parameter
this.jmlhroda = jmlhroda; //persamaan nilai atribut
dan nilai parameter
this.ThnProduksi= ThnProduksi; //persamaan nilai
atribut dan nilai parameter
}
abstract
void gerak () ;
public void ket () { //ket adalah nama method dari
class Kendaraan tanpa parameter
System.out.println (" Jenis Kendaraan :
" + jenis);
System.out.println (" Jumlah roda Kendaraan :
" + jmlhroda);
System.out.println (" Tahun produksi :
" + ThnProduksi);
}
}
//Class Mobil.java
public class Mobil extends Kendaraan {
Mobil
(String nama) {
super (nama,
4, 2004);
}
public void
gerak () {
System.out.println (jenis+ " bergerak
kearah depan");
}
class produksi {
public void ThnProduksi () {
System.out.println (ThnProduksi+"2004");
}
}
public static void main (String [] args) {
Mobil m = new Mobil ("Jazz");
m.ket(); //memanggil
method ket untuk objek m
m.gerak();
//memanggil method gerak untuk objek m
}
}
4.2. Contoh Pemrograman C#
using System;
namespace Abstract_Class
{
public abstract class TaxCalculator {
protected double itemPrice;
protected double tax;
public abstract double CalculateTax();
public double Tax {
get { return tax; }
}
public double ItemPrice {
get { return itemPrice; }
}
}
class SalesTaxCalculator :
TaxCalculator {
public SalesTaxCalculator(double itemPrice) {
this.itemPrice = itemPrice;
}
public override double CalculateTax() {
tax = 0.3 * itemPrice;
return itemPrice + tax;
}
}
class WarSurchargeCalculator
: TaxCalculator {
public WarSurchargeCalculator(double itemPrice) {
this.itemPrice = itemPrice;
}
public override double CalculateTax() {
tax = 0.5 * itemPrice;
return itemPrice + tax;
}
}
class Test {
public static void Main() {
SalesTaxCalculator salesTaxCalc = new SalesTaxCalculator(225);
double newPrice = salesTaxCalc.CalculateTax();
WarSurchargeCalculator WarSurCalc = new WarSurchargeCalculator(225);
double Price = WarSurCalc.CalculateTax();
Console.WriteLine("The item price
has changed because of Sales tax from {0} $ to {1} $",
salesTaxCalc.ItemPrice, newPrice);
Console.WriteLine("Tax applied =
{0} $", salesTaxCalc.Tax);
Console.WriteLine("The item price
has changed because of War tax from {0} $ to {1} $",
WarSurCalc.ItemPrice, Price);
Console.WriteLine("Tax applied =
{0} $", WarSurCalc.Tax);
Console.Write("Press any key to continue...");
Console.ReadKey(true);
}
}
}
4.3. Contoh Pemrograman C++
#include
<iostream.h>
using
namespace std;
class
area {
double
dim1, dim2;
public:
void
setarea(double d1, double d2) {
dim1 =
d1;
dim2 =
d2;
}
void
getdim(double &d1, double &d2) {
d1 =
dim1;
d2 =
dim2;
}
virtual
double getarea() = 0;
};
class rectangle
: public area {
public:
double
getarea() {
double
d1, d2;
getdim(d1,
d2);
return d1
* d2;
}
};
class
triangle : public area {
public:
double
getarea() {
double
d1, d2;
getdim(d1,
d2);
return
0.5 * d1 * d2;
}
};
int
main() {
area *p;
rectangle
r;
triangle
t;
r.setarea(3.3,
4.5);
t.setarea(4.0,
5.0);
p =
&r;
cout
<< "Rectangle has area : " << p->getarea() <<
'\n';
p =
&t;
cout
<< "Triangle has area : " << p->getarea() <<
'\n';
return 0;
}
Coin Casino Review 2021
BalasHapusPlay the best casino games in one place! No matter what type of casino you are playing, Coin Casino is 코인카지노실시간바카라사이트 an enjoyable, rewarding online casino with lots of Bonus: Welcome Bonus up to €500 and 300 free spins✔️ Mobile: Android,iPhone,iPad,Other Bonuses: Cashout Welcome Bonus up to €500