TUGAS PRAKTIKUM OOP II NAMA : SUMARNI
NIM : H12112271
TUGAS 1
Ringkasan Materi OOP II
Inheritance, Polimorphisme, dan contoh dalam Java beserta penjelasan overriding & overloading
PENDEFINISIAN TENTANG INHERITANCE DAN POLIMORPHISME
1. Inheritance (Pewarisan)
Inheritance (penurunan sifat / pewarisan), ini merupakan ciri khas dari OOP yang tidak terdapat pada pemrograman prosedural gaya lama. Dalam hal ini, inheritance bertujuan membentuk obyek baru yang memiliki sifat sama atau mirip dengan obyek yang sudah ada sebelumnya (pewarisan). Obyek turunan dapat digunakan membetuk obyek turunan lagi dan seterusnya. Setiap perubahan pada obyek induk, juga akan mengubah obyek turunannya. Susunan obyek induk dengan obyek turunannya disebut dengan hirarki obyek.
Atau Inheritance yaitu pewarisan sifat-sifat suatu object kepada object turunannya.
Contoh program javanya :
Simpan dengan nama Mahasiswa.java
Public class Mahsiswa extends Mahasiswa{
Simpan dengan nama Main.java
public class Main{
public static void main(String[] args]) {
Mahasiswa mhs = new Mahasiswa(); mhs.setNim(6666); mhs.setNama(Andaru);
mhs.printNim();
mhs.printNama();
} kemudian jalankan
C:\>javac FunMahasiswa.java
C:\>javac Main.java
C:\>java Main
Kontruksi objek mahasiswa
Nim: 6666
Nama: Andaru
C:\>
2. Polymorphic (Banyak bentuk)
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 FunMahasiswa.java
public class FunMahasiswa extends Mahasiswa{
public void printNama(){ System.out.println(Hallo, saya Mahasiswa Statistika);
Super.printNama();
Simpan dengan nama Main.java
public class Main{
public static void main(String[] args]) {
FunMahasiswa mhs = new FunMahasiswa(); mhs.setNim(H12112271); mhs.setNama(Sumarni);
mhs.printNim();
mhs.printNama();
Kemudian compile dan run.
C:\>javac FunMahasiswa.java
C:\>javac Main.java
C:\>java Main
Kontruksi objek mahasiswa
Nim: H12112271
Hallo, saya Mahasiswa Statistika
Nama: Sumarni
C:\>
Terlihat bahwa disini kita mengoverride method printNama(), dengan menambahkan beberapa teks tambahan, sehingga method printNama(), pada class FunMahasiswa, memiliki perilaku yang berbeda dengan class Mahasiswa.
PENDEFINISIAN OVERRIDING DAN OVERLOADING
Override
1.
Mendefinisikan
method
dengan
nama
sama
pada
class
yang
berbeda.
2. Konsep dapat di manfaatkan dalam beberapa kasus inheritance, di mana menginginkan penamaan method dengan nama sama namunberbeda dalam impelementasinya.
Contohnya :
class Kendaraan { .............. public String getJenis() { System.out.println(Harga BBM turun); } } class Motor extends Kendaraan {
.............. public String getJenis() { System.out.println(Harga BBM premium 4000 rupiah); } }
NB dari contoh program di atas dapat di jelaskan sebagai berikut:
* class motor mengextends class kendaraan * class motor melakukan override method di kendaraan namun berbeda implementasi
Kesimpulan:
* Override method merupakan method yang sama persis dengan method yang sudah ada di super kelasnya, biasanya perbedaannya adalah pada implementasi (program body) * Overidding tidak bisa dilakukan dalam kelas itu sendiri * Jadi Overidding kerat kaitannya dengan inheritance (pewarisan)
Overload
1. mendefinisikan method dengan nama sama dalam satu class. 2. Konsep sering di gunakan dalam penggunaan constructor.
Dalam pemrograman Java, mungkin kita seringkali menginginkan pembuatan lebih dari satu method dengan nama sama tetapi dengan daftar parameter yang berbeda. Ini disebut overloading method. Overloading method digunakan untuk melayani sifat polimorfik Java. Contoh berikut ini adalah versi class Point yang menggunakan overloading method untuk menghasilkan konstuktor alternatif yang membuat beberapa nilai default untuk koordinat x dan y. Contoh programnya :
class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; }
Point() { x = -1; y = -1; } } class PointCreateAlt { public static void main(String args[] ) { Point p = new Point(); System.out.println("x = " + p.x +" y =" + p.y); } } Atau contoh sesuai yang dilakukan sewaktu praktikum,berikut : Contoh Program Encapsulation:
public class manusia { public String nama; public manusia(String n){ this.nama= n;} public String tampilkanNama(){ return nama;} public void makan(){System.out.println("nyam ... nyam..");} public void kerja (){System.out.println("kerja...kerja..");} public void bersantai() {System.out.println("santaiii broo");} // TODO Auto-generated method stub }
B. Inheritance
Contoh Programnya :
public class oop extends manusia { public oop (String n) { super(n); } public void kerja (){ System.out.println("tak tik tuk"); } public void bersantai(){ System.out.println("game over, you lose "); } }
C. Polymorism Contoh program java nya : Simpan dengan nama tentara.java
class tentara extends manusia { public String pangkat; public tentara(String n){ super (n); this.pangkat= n;} public String tampilkanPangkat () {return pangkat;} public void kerja(){System.out.println("Dor...Dor");}}
Kemudian compile dan run. Gabungan program OOP Kelas Utama 1
class Gab { public static void main(String[] args) { manusia Gab = new manusia("Sumarni"); System.out.println("nama : "+Gab.tampilkanNama()); Gab.makan(); Gab.kerja(); Gab.bersantai(); } }
Outputnya :
nama : Sumarni nyam ... nyam.. kerja...kerja.. santaiii broo
Kelas Utama 2
public class Andi { public static void main(String args[]){ sopir dedi=new sopir ("Andi"); System.out.println("nama= "+Andi.tampilkanNama()); Andi.makan(); Andi.kerja(); Andi.bersantai(); } } Outputnya : nama= Andi nyam ... nyam.. nyong...nyong.ciit. santaiii broo
Kelas Utama 3
public class pekerja { public static void main(String[] args) { manusia[] profesi= new manusia[3]; profesi[0]= new oop(""); profesi[1]= new tentara(""); profesi[2]= new sopir("dedi"); for (int i=0; i<3; i++){ profesi[i].kerja(); //*profesi[0].kerja(); //*profesi[1].kerja(); //*profesi[2].kerja(); } }}
Outputnya :
tak tik tuk Dor...Dor nyong...nyong.ciit.
Pewarisan 1
public class manusia { public String nama; public manusia(String n){ this.nama= n;} public String tampilkanNama(){ return nama;} public void makan(){System.out.println("nyam ... nyam..");} public void kerja (){System.out.println("kerja...kerja..");} public void bersantai() {System.out.println("santaiii broo");} // TODO Auto-generated method stub }
Pewarisan 2
public class oop extends manusia { public oop (String n) { super(n); } public void kerja (){ System.out.println("tak tik tuk"); } public void bersantai(){ System.out.println("game over, you lose "); } }
Pewarisan 3
public class sopir extends manusia{ public sopir (String n) { super(n);} public void kerja (){ System.out.println("nyong...nyong.ciit."); } }
Pewarisan 4
package praktikum5; class tentara extends manusia { public String pangkat; public tentara(String n){ super (n); this.pangkat= n;} public String tampilkanPangkat () {return pangkat;} public void kerja(){System.out.println("Dor...Dor");}}
TUGAS 2
Program KASIR
KELAS UTAMA Nama class ini adalah utama dan ini merupakan kelas yang bisa di compile atau di run Karen memiliki method yaitu public static void main(String args [ ] ){ yang memiliki fungsi dan kegunaan yaitu inilah objeknya. Mungkin pertanyaan anda adalah, kalau baris ini adalah objeknya lalu nama objeknya apa, terus atribut dan methodnya mana? Pada contoh program ini saya belum mendefinisikan sebuah nama objek dengan jelas karena programnya masih sangat sederhana, untuk contoh ini main adalah nama objeknya berikutnya yang ada didalam .
package oke; public class tugasutama { public static void main(String args[]){ tugas2 nanny=new tugas2 (); nanny.oop(); System.out.println(""); } }
OUTPUTNYA :
Masukan Bulan penjualan : 7 Jumlah Data : 3 Nama Barang ke- 1: K U L K A S Barang : 2 Harga Rp. : 1000 Nama Barang ke- 2: L A P T O P Barang : 4 Harga Rp. : 3000 Nama Barang ke- 3: L E M A R I Barang : 1 Harga Rp. : 800 Laporan Penjualan PT YAI Bulan : 7 ================================================================= | No. | Nama Barang | Jumlah | Harga | Total | ================================================================= 1. K U L K A S 2 1000 2000 2. L A P T O P 4 3000 12000 3. L E M A R I 1 800 800 ================================================================= Total Barang : 3 Total Penjualan : 14800
Untuk kelas tugasutama ini di gunakan untuk me run dan mengcompile program ini dan di program utama ini akan memanggil kelas tugas2 dimana tugas2 ini merupakan pewarisan dari tugas1 jadi kelas ini memanggil semua method yang ada di kelas tugas1 dan kelas tugas2, sehingga outputnya seperti di atas, untuk memanggil kelas tugas2 kita menggunakan kata public static void OOP yang sudah di deklarasikan di kelas tugas2, dengan terlebih dahulu mendeklarasikan nama nanny . Pewarisan 1 package oke; public class tugas1 {
public void bulan(){System.out.println(" Laporan Penjualan PT YAI");} public void tabel(){System.out.println("=========================================== ======================"); System.out.println("| No. | Nama Barang | Jumlah | Harga | Total |"); System.out.println("============================================= ====================");} public void grs(){System.out.println("============================================= ====================");} } Ini merupakan pewarisan 1 yang berhubungan langsung dengan kelas tugas2 yang bisa diakses oleh semua kelas karena sudah di deklarasikan dengan kata public void tersebut jadi kelas ini bisa di akses oleh semua kelas. Pewarisan 2 package oke; import java.util.Scanner; import oke.tugas1; public class tugas2 extends tugas1 { public void oop(){ Scanner input=new Scanner(System.in); Scanner input2=new Scanner(System.in); System.out.print(" Masukan Bulan penjualan : "); int bulan=input.nextInt(); System.out.print(" Jumlah Data : "); int n = input.nextInt(); int jumlahbarang[]=new int[n+1]; int hargabarang[]=new int[n+1]; String namabarang[]=new String[n+1]; int total[]=new int[n+1];
int total1=0; for (int i=1;i<=(n);i++) { System.out.println(""); System.out.print(" Nama Barang ke- "+i +": "); namabarang[i]=input2.nextLine(); System.out.print(" Barang : "); jumlahbarang[i]=input.nextInt(); System.out.print(" Harga Rp. : "); hargabarang[i]=input.nextInt(); System.out.println(""); total[i]=hargabarang[i]*jumlahbarang[i]; total1=total1+total[i];} tugas1 manny=new tugas1 (); manny.bulan(); System.out.println(" Bulan : "+bulan); manny.tabel(); for (int i=1;i<=n;i++) { System.out.println(" "+i+". "+namabarang[i]+"\t\t"+jumlahbarang[i]+"\t"+hargabarang[i]+"\t\t" +total[i]+"");} manny.grs(); System.out.println(" Total Barang : "+n); System.out.println(" Total Penjualan : "+total1); }} Pada kelas pewarisan 2 ini yaitu kelas tugas2 merupakan method yang paling penting karena program utamanya berada di kelas ini dan di kelas ini kita menghubungkan dengan kelas tugas1 dengan kodfenya yaitu manny.tabel();, dan manny.bulan(); yang ada pada kelas tugas1 ,,, Lalu untuk kelas ini memiliki public void oop yang merupakan kata kunci dari semua ini karena kata oop ini berguna untuk mengakses kelas tugas2 ini yang sudah terhubung dengan kelas anak 1 harus menggunakan public void oop yang sudah ada pada kelas utama.