OOP DASAR
Disusun Oleh :
NIM : M3111014
Kelas : TI A
2012
DASAR TEORI
Sebagai Informasi bahwa Ciri khas Pemrograman Berorientasi Objek ada tiga hal yaitu:
1. Enkapsulasi ( Pembungkusan )
2. Inheritance ( Pewarisan )
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat
mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class dapat
mempunyai class turunan
Suatu class yang mempunyai class turunan dinamakan parent class atau base class.
Sedangkan class turunan itu sendiri seringkali disebut subclass atau child class. Suatu
subclass dapat mewarisi apa-apa yang dipunyai oleh parent class.
Karena suatu subclass dapat mewarisi apa apa yang dipunyai oleh parent class-nya,
maka member dari suatu subclass adalah terdiri dari apa-apa yang ia punyai dan juga
apa-apa yang ia warisi dari class parent-nya.
Kesimpulannya, boleh dikatakan bahwa suatu subclass adalah tidak lain hanya
memperluas (extend) parent class-nya.
Dari hirarki diatas dapat dilihat bahwa, semakin kebawah, class akan semakin bersifat
spesifik. Class mamalia memiliki seluruh sifat yang dimiliki oleh binatang, demikian
halnya juga macan , kucing, Paus dan Monyet memiliki seluruh sifat yang diturunkan
dari class mamalia.
Dengan konsep ini, karakteristik yang dimiliki oleh class binatang cukup didefinisikan
didefinisikan dalam class binatang saja.
Class mamalia tidak perlu mendefinisikan ulang apa yang telah dimiliki oleh class
binatang, karena sebagai class turunannya, ia akan mendapatkan karakteristik dari
class binatang secara otomatis. Demikian juga dengan class macan, kucing, Paus dan
monyet, hanya perlu mendefinisikan karakteristik yang spesifik dimiliki oleh class-nya
masing-masing.
Dengan memanfaatkan konsep pewarisan ini dalam pemrograman, maka hanya perlu
mendefinisikan karakteristik yang lebih umum akan didapatkan dari class darimana ia
diturunkan.
Deklarasi yang digunakan adalah dengan menambahkan kata kunci extends setelah
deklarasi nama class, kemudian diikuti dengan nama parent class-nya. Kata kunci
extends tersebut memberitahu kompiler Java bahwa kita ingin melakukan perluasan
class.
Pada saat dikompilasi, Kompiler Java akan membacanya sebagai subclass dari class
Object.
/**
*
* @author RPL 04
*/
public class Kalkulator2 {
}
8. Buat class bernama completeCalculator sebagai tempat penulisan rumus
statistik. Script-nya seperti berikut ini :
package kalkulator2;
/**
*
* @author RPL 04
*/
public class completeCalculator extends Kalkulator2 {
public void akar(String a){
float tempA=Float.parseFloat(a);
this.hasil = (float)Math.sqrt(tempA);
}
public void kuadrat(String a){
float tempA=Float.parseFloat(a);
tempA=tempA*tempA;
this.hasil = tempA;
}
public void pangkat(String a, String b){
this.hasil= 1;
float tempA=Float.parseFloat(a);
int tempB= Integer.parseInt(b);
for(int c=1;c<=tempB;c++){
this.hasil = this.hasil*tempA;
}
}
public void akarpangkat(String a, String b){
this.hasil= 1;
float tempA=Float.parseFloat(a);
float tempB=1/Float.parseFloat(b);
this.hasil= (float)Math.pow(tempA,tempB);
}
public void sin(String a){
float tempA=Float.parseFloat(a);
this.hasil = (float)Math.sin(Math.toRadians(tempA));
}
public void cos(String a){
float tempA=Float.parseFloat(a);
this.hasil = (float)Math.cos(Math.toRadians(tempA));
}
public void tan(String a){
float tempA=Float.parseFloat(a);
this.hasil = (float)Math.tan(Math.toRadians(tempA));
}
public void faktorial(String a){
int tempA=Integer.parseInt(a);
for(int c=tempA;c>0;c--){
this.hasil=this.hasil*c;
}
}
}
9. Buat class bernama Calculatorjadi sebagai tempat penulisan rumus
matematika dasar. Script-nya seperti berikut ini :
package kalkulator2;
/**
*
* @author Day
*/
public class Calculatorjadi extends completeCalculator {
public void segitiga(String a, String b){
float tempA = Float.parseFloat(a);
float tempB = Float.parseFloat(b);
this.hasil = tempA * tempB / 2;
}
}
}
}
10. Buat class yang dijadikan main dari program kalkulator ini, beri nama class
mainCalculator. Scriptnya adalah seperti berikut :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package kalkulator2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
*
* @author RPL 04
*/
public class mainCalculator {
public static void main(String args[]){
int pilihan=-1;
String bil_a;
String bil_b;
Calculatorjadi cal= new Calculatorjadi();
BufferedReader reader;
reader = new BufferedReader (new InputStreamReader (System.in));
boolean a = true;
while(a==true){
System.out.println("=======================================");
System.out.println("Pilih salah satu dari vasilitas berikut");
System.out.println("1. Menambahkan bilangan bulat");
System.out.println("2. Mengurangi bilangan bulat");
System.out.println("3. Perkalian bilangan bulat");
System.out.println("4. Pembagian bilangan bulat");
System.out.println("5. akar kuadrat");
System.out.println("6. kuadrat");
System.out.println("7. pangkat");
System.out.println("8. Akar pangkat");
System.out.println("9. faktorial");
System.out.println("10. sin");
System.out.println("11. cos");
System.out.println("12. tan");
System.out.println("13. Luas Segitiga");
System.out.println("14. Luas Persegi");
System.out.println("15. Luas Persegi Panjang");
System.out.println("16. Luas Lingkaran");
System.out.println("17. Persamaan Kuadrat");
System.out.println("18. Keluar dari program");
System.out.print("Pilihan anda:");
try{
pilihan = Integer.parseInt(reader.readLine());
}catch(IOException e){
System.out.print(e);
}
System.out.println("=======================================");
switch(pilihan){
case 1:
try{
System.out.print("inputkan bilangan bulat
a=");
bil_a = reader.readLine();
System.out.print("inputkan bilangan bulat
b=");
bil_b = reader.readLine();
cal.tambah(bil_a,bil_b);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil penjumlahan adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 2:
try{
System.out.print("inputkan bilangan bulat
a=");
bil_a = reader.readLine();
System.out.print("inputkan bilangan bulat
b=");
bil_b = reader.readLine();
cal.kurang(bil_a, bil_b);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil penjumlahan adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 3:
try{
System.out.print("inputkan bilangan bulat
a=");
bil_a = reader.readLine();
System.out.print("inputkan bilangan bulat
b=");
bil_b = reader.readLine();
cal.kali(bil_a, bil_b);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil penjumlahan adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 4:
try{
System.out.print("inputkan bilangan bulat
a=");
bil_a = reader.readLine();
System.out.print("inputkan bilangan bulat
b=");
bil_b = reader.readLine();
cal.bagi(bil_a, bil_b);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil penjumlahan adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 5:
try{
System.out.print("inputkan bilangan bulat =");
bil_a = reader.readLine();
cal.akar(bil_a);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil akar kuadrat adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 6:
try{
System.out.print("inputkan bilangan bulat =");
bil_a = reader.readLine();
cal.kuadrat(bil_a);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil kuadrat adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 7:
try{
System.out.print("inputkan bilangan bulat =");
bil_a = reader.readLine();
System.out.print("inputkan pangkat =");
bil_b = reader.readLine();
cal.pangkat(bil_a, bil_b);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil pangkat adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 8:
try{
System.out.print("inputkan bilangan bulat =");
bil_a = reader.readLine();
System.out.print("inputkan akar pangkat =");
bil_b = reader.readLine();
cal.akarpangkat(bil_a, bil_b);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil akar pangkat adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 9:
try{
System.out.print("inputkan bilangan bulat =");
bil_a = reader.readLine();
cal.faktorial(bil_a);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil faktorial adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 10:
try{
System.out.print("inputkan bilangan bulat =");
bil_a = reader.readLine();
cal.sin(bil_a);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil sin adalah "+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 11:
try{
System.out.print("inputkan bilangan bulat =");
bil_a = reader.readLine();
cal.cos(bil_a);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil cos adalah "+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 12:
try{
System.out.print("inputkan bilangan bulat =");
bil_a = reader.readLine();
cal.tan(bil_a);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil tan adalah "+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 13:
try{
System.out.print("inputkan alas =");
bil_a = reader.readLine();
System.out.print("inputkan tinggi =");
bil_b = reader.readLine();
cal.segitiga(bil_a, bil_b);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil luas segitiga adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 14:
try{
System.out.print("inputkan panjang sisi =");
bil_a = reader.readLine();
cal.persegi(bil_a);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil luas persegi adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 15:
try{
System.out.print("inputkan panjang =");
bil_a = reader.readLine();
System.out.print("inputkan lebar =");
bil_b = reader.readLine();
cal.persegiPanjang(bil_a, bil_b);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil luas persegi panjang adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 16:
try{
System.out.print("inputkan jari-jari =");
bil_a = reader.readLine();
cal.lingkaran(bil_a);
}catch(IOException e){
System.out.print(e);
}
System.out.println("hasil luas lingkaran adalah
"+cal.getHasil());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 17:
try{
System.out.print("inputkan bilangan bulat
a=");
bil_a = reader.readLine();
System.out.print("inputkan bilangan bulat b=");
bil_b = reader.readLine();
System.out.print("inputkan bilangan bulat c=");
String bil_c = reader.readLine();
cal.persamaanKuadrat(bil_a, bil_b, bil_c);
}catch(IOException e){
System.out.print(e);
}
System.out.println("himpunan penyelesaian adalah x1 =
"+cal.getx1());
System.out.println(" x2 = "+cal.getx2());
System.out.println("\n\n\n\n\n\n\n");
a=true;break;
case 18:
System.out.print("exit....");
a=false;break;
}
}
System.out.println("terimakasih...");
}
}
11. Lalu jalankan program.
PEMBAHASAN
public class Calculator {
private int nilai_a;
return this.nilai_b;
return this.hasil;
this.nilai_b = Integer.parseInt(b);
this.nilai_a = Integer.parseInt(a);
berarti nilai parameter a yang bertype string diubah bertype integer dan dimasukkan
atau disimpan dalam variable nilai_a.
Hasil dari perhitungan matematika diubah bertype float lalu disimpan dalam variable
hasil.
Dalam method di atas getNilai_a dan getNilai_b diubah bertype float agar hasil
pembagian dapat benar – benar tepat. Karena hasil pembagian tidak selalu bilangan
bulat, bisa juga bilangan desimal.
public void penambahan(){
int tem_hasil = getNilai_a()+ getNilai_b();
this.hasil = Float.parseFloat(Integer.toString(tem_hasil));
}
Script d atas merupakan deklarasi dari method mutator penambahan,getNilai_a
merupakan nilai pertama yang akan di tambahkan dengan getNilai_b.
Untuk menghitung sin, cos, tangen nilai input harus diubah ke radians lebih
dahulu agar hasil lebih tepat.
public void faktorial(){
int i;
this.hasil=1;
System.out.println("n \t\t\t n!");
for (i=1; i<=(long)getNilai_a(); i++){
this.hasil=this.hasil*i;
System.out.println(i+" \t\t\t "+this.hasil);
}
}
Untuk perhitungan faktorial kita menggunakan perulangan,perulangan di lakukan
sampai memenuhi getNilai_a().
public void segitiga(String a, String b){
float tempA = Float.parseFloat(a);
float tempB = Float.parseFloat(b);
this.hasil = tempA * tempB / 2;
}
tempA digunakan untuk menyimpan hasil dari konversi a dari string ke float
tempB digunakan untuk menyimpan hasil dari konversi b dari string ke float
hasil merupakan rumus dari luas segitiga
}
}
Calculator calculator = new Calculator();
Digunakan untuk mendefinisikan class dengan nama yang baru,pemanggilan yang nanti
akan dilakukan menggunakn nma yang class yang baru.
Dalam program ini menggunakn perulangan while
Perulangan menggunakan while dengan kondisi a=true. Jika nilai yang
diinputkan user bernilai “true” maka perulangan akan terus terjadi, tetapi jika
bernilai “false” maka perulangan akan berhenti. Dibawahnya terdapat statement
untuk memilih fasilitas kalkulator, apakah user menginginkan kalkulator
penjumlahan, pengurangan, perkalian, ataukah pembagian. Kemudian masuk ke
pemilihan switch case yang digunakan untuk melakukan sejumlah tindakan
berbeda terhadap sejumlah kemungkinan nilai yang memudahkan pembacaan
alur program bercabang yang sangat banyak. Terdapat pernyataan break yang
digunakan untuk mengakhiri eksekusi switch.
Jika kita menginputkan menu no.1 maka yang dieksekusi antara lain:
Penginputan nilai pertama(a), penginputan nilai kedua(b).
Nilai a yang bertype data string diubah melalui methods mutator setNilai_a
menjadi this.nilai_a yang bertype integer (berlaku juga untuk nilai b).
Nilai_a dan nilai_b ditampung untuk nantinya dikembalikan oleh methods
accesor getNilai_a dan getNilai_b.
Terdapat statement “calculator.penambahan”, maka nilai_a dan nilai_b diolah
sesuai dengan perhitungan penjumlahan di method penambahan.
Hasil perhitungan ditampilkan dengan adanya statement “System.out.println
("hasil penjumlahan adalah "+calculator.getNilai_hasil()); ”
HASIL OUTPUT
Dari output di atas, perulangan terjadi setelah hasil dari perhitungan muncul maka
menu juga akan langsung ditampilkan kembali. Tetapi jika menginputkan 18 maka
program akan keluar dan menu tidak muncul lagi (tidak terjadi perulangan).
KESIMPULAN
Import java.io.BufferedReader, import java.io.IOException, import
java.io.InputStreamReader adalah package – package yang digunakan untuk
mendapatkan input. Package – package tersebut mempunyai fungsi yang saling
berhubungan.
Di dalam class simpleCalculator, class Calculator didefinisikan dengan nama baru yaitu
calculator dan untuk pemanggilannya menggunakan nama baru tersebut yaitu
calculator.
Method main digunakan untuk memanggil method-method yang lain.
Method accessor digunakan untuk mengembalikan nilai
Method mutator digunakan untuk mengubah nilai
Access control yang digunakan antara lain:
- public : class satu dengan yang lain atau method dalam suatu class dengan
method yang lain dapat diakses secara bebas.
- Private : method atau variable instance hanya dapat diakses dalam satu class.
Untuk menghitung sin, cos, dan tangen maka nilai inputan harus diubah ke radians lebih
dulu agar hasilnya tepat
extends class adalah class yang mewarisi sifat dari sifat-sifat yang dimiliki oleh
superclass.
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat
mempunyai entitas/obyek turunan
Dengan memanfaatkan konsep pewarisan ini dalam pemrograman, maka hanya
perlu mendefinisikan karakteristik yang lebih umum akan didapatkan dari class
darimana ia diturunkan.
DAFTAR PUSTAKA
http://rully6092.wordpress.com/konsep-bahasa-pemrogaraman-java/
Alim,Sahirul.OOP Dasar dengan Java.2012
http://yaniarprayogo.wordpress.com/2010/09/27/contoh-extends-class-di-java/
http://mungjava.blogspot.com/2009/05/memahami-konsep-inheritance-pewarisan.html