930 likes | 1.22k Views
By : Winzaldi Java Programmer EDI I ndonesia. Object Oriented Programming With Java. Konsep O O P. Intro O O P. OOP adalah sebuah paradigma / cara pandang pemograman Salah satu cara untuk menggam barkan struktur dari aplikasi
E N D
By : Winzaldi Java Programmer EDI Indonesia ObjectOriented ProgrammingWithJava
Intro OOP • OOP adalahsebuahparadigma/carapandangpemograman • Salahsatucarauntukmenggambarkanstrukturdariaplikasi • Paradigmaselain OOP - Procedural,Functionaldan lain-lain • Sekarang OOP menjadiparadigmapemograman yang popular - Java - PHP 5 - C# - C++
KeuntunganOOP • Reuseability- Once you written code, you can reuse it! • Management- Aplikasi yang diprogrammenggunakankelas-kelasdanobjek.objek-objek yang salingberkomuniskasi. • Maintenance- ketikakitamelakukanperubahan code, makatidakakanmempengaruhiseluruhbagiandariaplikasi
KonsepDasar : Objek • Di dunianyata, duniaterdiriatasobjek-objek.- mobil-mobil,bangunan-bangunan,pepohonan,manusia, bungadan lain-lain. • Biasanyasetiapobjekmempunyaiperilaku/aksi • (fungsi-fungsi) yang mempengaruhiobjek lain. - agusmengendaraibmw - objekagusmempengaruhiobjekbmw. - agus.mengendarai(bmw); • Dan Objekmempunyaiatribut-atribut. - bmwmempunyaigears,warna,kacaspiondan lain-lain.
ContohObjek • Mobil BMW • Mobil BMW memilikibebarapaperilaku/aksi : - melaju- berhenti- tambahkecepatan”- dan lain-lain • Mobil BMW memilikiinformasiatauatribut-atribut.- warna,jumlahgears,jumlahpintudan lain-lain.
KonsepDasar : Kelas • Kelasadalahsebuah blue print ataucetakandarisebuahobjek. • Kelasmenggambarkanstate/atributdanperilaku/aksiobjek. • ObjekdibentukdariKelas
ContohKelas • Jika BMW adalahObjekMakaKelasnyaadalahMobil • Jikakitainginmembuatobjek BMW makakitaharusmempunyai blue print/ cetakandari BMW • Blue print/ CetakandariObjek : Mobil • KelasMobil -> Objek BMW
Mobil merk mesin jumlahPintu warna jumlahRoda … … Mobil Blueprint (Kelas) di UML
datsun Mobil Datsun 100A 1.0 3 red 4 merk tipeMesin jumlahPintu warna jumlahRoda … … lambo Lamborghini Diablo 8.0 3 red 4 KelaskeObjek
Orang namaAwal namaAkhir umur pekerjaan noTelpon Makan() Tidur() minumTeh() KelasOrang > Objek Iwan Iwan Mahmud 25 guru 021-12345 makan tidur minumTeh Zaki zaki Hasan 30 Programmer Java 021-654321
Orang namaAwal namaAkhir umur pekerjaan noTelpon makan tidur minumTeh Orang – Kelas > Java class Orang { public String namaAwal; public String namaAkhir; public int age; public String pekerjaan; public String noTelpon; public void makan() { System.out.println(“Makan ..yummy!"); } public void tidur() { System.out.println(“LagiTidur!"); } public void minumTeh() { System.out.println(“MinumTeh!"); } }
Teskelasorang.bisanyaapplikasidimulaidarimain-method class Orang { .... } class JustTesting { public static void main(String [] args) { // Declare the object Orang jack; // Initialize the object jack = new Orang(); jack.namaAwal = "Jack"; jack.namaAkhir = "Smith"; jack.minumTeh(); System.out.println(“nama : ” + jack.namaAwal); } }
Contoh: Kelas -Mobil class Mobil { public String merk; public intjumlahMinyak; public void jalan() { jumlahMinyak--; } }
class Mobil { .... } class JustTesting { public static void main(String [] args) { • Mobil datsun = new Mobil(); datsun.jumlahMinyak = 100; datsun.jalan(); System.out.println(datsun.jumlahMinyak); • Mobil ferrari = new Mobil(); ferrari.jumlahMinyak = 300; ferrari.jalan(); System.out.println(ferrari.jumlahMinyak); } }
private public method KonsepDasar - Enkapsulasi
Tentang Atribut • Atribut-atribut biasa dibuat private • Agar objek lain tidak bisa merubah sewenang-wenang • Misalnya, Anda tidak ingin bahwa setiap benda di dunia bisa mengubah berat badan seseorang untuk 500kg
Contoh: KelasOrang class Orang { private String nama; private intberat; }
class Orang { private String nama; private intberat; } class JustTesting { public static void main(String [] args) { Orang jack = new Orang(); jack.nama = "Jack Smith"; jack.berat = 500; } } RESULT: TB308POHJUS-L-2:temp pohjus$ javac Orang.java Orang.java:9: nama has private access in Orang jack.nama = "Jack Smith"; ^ Orang.java:10: berat has private access in Orang jack.berat = 500; ^ 2 errors
class Person { private String nama; private int weight; public void setnama(String n) { nama = n; } public String getnama() { return nama; } public void setWeight(int w) { if(w > 0 && w <= 150) weight = w; } public intgetWeight() { return weight; } } class JustTesting { public static void main(String [] args) { Person jack = new Person(); jack.setnama("Jack Smith"); jack.setWeight(200); System.out.println(jack.getnama()); } }
Accessor and Mutator - methods class Orang { private String nama; private intberat; // Mutator public void setNama(String n) { nama = n; } // Accessor public String getNama() { return nama; } // Mutator public void setBerat(int w) { if(w > 0 && w <= 150) berat = w; } // Accessor public intgetBerat() { return berat; } }
Tipe-tipedi Java • Tipe-tipedi java • 1) Primitive types • byte, short, int, long, double, float, char, boolean • 2) Class(Kelas) types • String, Scanner, Array, JButton, JFrame ...
Perbedaanya • Tipe2 primitifditulis dg hurufkecildiawal: • int, double, float... • Tipe2 kelasditulis dg hurufbesardiawal • String, Scanner, Person, Cat, Mobil ... • Deklarasidaninisialisasi • int a = 5; • TipeKelasdeklarasidaninisialisasidengannew • Orangiwan= newOrang();
Perbedaan • TipePrimitif • int a = 5; • TipeKelas • int [] b= new int[5]; • b menampungalamatdi memory • a menampungnilai 5.
Alamatdi memory ? int [] b = new int[2]; b[0] = 1; b[1] = 2; // prints 0x01 System.out.println(b); RAM variabelb
Alamatdi memory? int [] b = new int[2]; b[0] = 1; b[1] = 2; int [] a = b; // prints 0x01 System.out.println(b); // prints 0x01 System.out.println(a); RAM variabelb variabela
Output? int [] b = new int[2]; b[0] = 1; b[1] = 2; int [] a = b; b[0] = 99; // Output? System.out.println(a[0]);
PerbedaanLagi • TipePrimitif • int a = 5; • TipeKelas • int [] b= new int[5]; • b menampungalamatdi memory • a menampungnilai 5.
Output? • Orang jack = new Orang(); • jack.setNama("Jack Smith"); • Orangjames = jack; • james.setNama("James Bond"); • // output? • System.out.println(jack.getNama());
Methods and Variables public void method(int x) { x++; } public void main(String [] args) { int y = 3; method(y); // Output nya3! System.out.println(y); }
Methods and Variables public void method(int [] x) { x[0] = 12; } public void main(String [] args) { int [] y = {1,2,3}; method(y); // Output nya12 karna array termasuktipekelas! System.out.println(y[0]); }
* String • String adalahsebuahpengecualiandaritipekelas. • String adalahtipekelas yang perlakuannyasepertitipeprimitif. • String adalahtipekelas yang hanyabisadiinisialisasitanpakatanew. • String a = "hello"; • String diperlakukansebagaipassed by value didalammethod,sehingga String adalahcopianketika String dilewatkandidalam method.
StringdanMemori • Variable stringadalahobjek=> manampungalamatdimemori. • MembandingkanisidarivariabelString • a.equals(b); • Membandingkanalamatdimemori • a == b
Konstruktor • Konstruktoradalahsebuah “init method” yang dipanggilketikaobjekdiciptakan. • Java menyediakan default konstruktortanpa parameter. • Konstruktormempunyanama yang samadengannamakelas. • Konstruktortidakmengembalikanapapun. • hanyamempunyai access modifer, tidakada keyword lain yang diletakkansebelumnama method padadeklarasi constructor
Example class Mobil { public Mobil() { System.out.println(“Konstruktor!"); } } class Test { public static void main(String [] args) { Mobil ferrary = new Mobil(); } } > java Test Konstruktor!
> java Test Datsun 100A class Mobil { private String merk; public Mobil(String b) { merk = b; } public String getMerk() { return merk; } } class Test { public static void main(String [] args) { Mobil datsun = new Mobil("Datsun 100A"); System.out.println( datsun.getMerk() ); } }
Multiple Konstruktor class Mobil { public Mobil() { // Do something } public Mobil(String merk) { // Do something else } } class Test { public static void main(String [] args) { Mobil datsun = new Mobil(); Mobil ferrari = new Mobil("Ferrari"); } }
Masalah ? class Mobil { String merk; public Mobil(String merk) { merk = merk; } } class Test { public static void main(String [] args) { Mobil datsun = new Mobil("Datsun 100a"); } } > java Test null
Solusi class Mobil { String merk; public Mobil(String merk) { this.merk = merk; } } class Test { public static void main(String [] args) { Mobil datsun = new Mobil("Datsun 100a"); } } > java Test Datsun 100a
Komposisi • Hubunganantaraobjek-objek,dimanasuatuobjekmemilikiobjek lain. • Dimanaobjekkeduatidakbisaberdirisendiritanpaobjekpertama. • Mobil memilikiMesin • KetikakitamencipatkanMobil,berartikitajugamencipatkanmesin. • Ketika Mobil dihancurkanberartimesinjugadihancurkan.
Notasi UML Mobil Mesin
Java: Komposisi // Komposisi class Mobil { private Mesinmesin; public Mobil() { mesin = new Mesin(); } }
One to Many (SatukeBanyak)? Departemen 1..20 Professor
Java: One to Many class Departemen { private Professor [] anggota; private intjumlahAnggota; public Departemen(Professor prof) { anggota = new Professor[20]; anggota[0] = prof; jumlahAnggota = 1; } public void addProfessor(Professor prof) { anggota[jumlahAnggota] = prof; jumlahAnggota++; } }