Menguasai Java: Memahami Objek, Kelas, dan Konsep OOP Inti
Java adalah Bahasa Berorientasi Objek. Sebuah bahasa yang memiliki fitur Berorientasi Objek, Java mendukung konsep dasar berikut −
- Polymorphism
- Inheritance
- Encapsulation
- Abstraction
- Classes
- Objects
- Instance
- Method
- Message Passing
Dalam bab ini, kita akan melihat konsep - Classes dan Objects.
Object − Objek memiliki status dan perilaku. Contoh: Seekor anjing memiliki status - warna, nama, ras serta perilaku – menggerakkan ekor, menggonggong, makan. Sebuah objek adalah instance dari sebuah class.
Class − Sebuah class dapat didefinisikan sebagai template/blueprint yang menggambarkan perilaku/status yang didukung oleh objek dari tipe tersebut.
Objek dalam Java
Mari kita sekarang lihat lebih dalam tentang objek. Jika kita mempertimbangkan dunia nyata, kita dapat menemukan banyak objek di sekitar kita, mobil, anjing, manusia, dll. Semua objek ini memiliki status dan perilaku.
Jika kita mempertimbangkan seekor anjing, maka statusnya adalah - nama, ras, warna, dan perilakunya adalah - menggonggong, menggerakkan ekor, berlari.
Jika Anda membandingkan objek perangkat lunak dengan objek dunia nyata, mereka memiliki karakteristik yang sangat mirip.
Objek perangkat lunak juga memiliki status dan perilaku. Status objek perangkat lunak disimpan dalam field dan perilaku ditampilkan melalui method.
Jadi dalam pengembangan perangkat lunak, method beroperasi pada status internal dari sebuah objek dan komunikasi objek-ke-objek dilakukan melalui method.
Kelas dalam Java
Sebuah class adalah blueprint dari mana objek individu dibuat.
Berikut adalah contoh sebuah class.
Contoh
public class Dog { String breed; int age; String color; void barking() { } void hungry() { } void sleeping() { } } Sebuah class dapat berisi salah satu jenis variabel berikut.
Local variables − Variabel yang didefinisikan di dalam method, konstruktor, atau blok disebut variabel lokal. Variabel akan dideklarasikan dan diinisialisasi dalam method dan variabel akan dihancurkan setelah method selesai.
Instance variables − Variabel instance adalah variabel di dalam class tetapi di luar method apa pun. Variabel ini diinisialisasi saat class diinstancekan. Variabel instance dapat diakses dari dalam method, konstruktor atau blok class tertentu tersebut.
Class variables − Variabel class adalah variabel yang dideklarasikan di dalam class, di luar method apa pun, dengan kata kunci static.
Sebuah class dapat memiliki sejumlah method untuk mengakses nilai dari berbagai jenis method. Dalam contoh di atas, barking(), hungry() dan sleeping() adalah method.
Berikut adalah beberapa topik penting yang perlu dibahas ketika melihat classes dalam Bahasa Java.
Konstruktor
Saat membahas tentang classes, salah satu sub topik terpenting adalah konstruktor. Setiap class memiliki konstruktor. Jika kita tidak secara eksplisit menulis konstruktor untuk sebuah class, kompiler Java membuat konstruktor default untuk class tersebut.
Setiap kali sebuah objek baru dibuat, setidaknya satu konstruktor akan dipanggil. Aturan utama konstruktor adalah bahwa mereka harus memiliki nama yang sama dengan class. Sebuah class dapat memiliki lebih dari satu konstruktor.
Berikut adalah contoh konstruktor −
Contoh
public class Puppy { public Puppy() { } public Puppy(String name) { // This constructor has one parameter, name. } } Java juga mendukung Singleton Classes tempat Anda akan dapat membuat hanya satu instance dari sebuah class.
Catatan − Kami memiliki dua jenis konstruktor yang berbeda. Kami akan membahas konstruktor secara rinci dalam bab-bab berikutnya.
Membuat Sebuah Objek
Seperti yang telah disebutkan sebelumnya, sebuah class menyediakan blueprint untuk objek. Jadi pada dasarnya, sebuah objek dibuat dari sebuah class. Dalam Java, kata kunci new digunakan untuk membuat objek baru.
Ada tiga langkah saat membuat sebuah objek dari sebuah class −
Declaration − Deklarasi variabel dengan nama variabel dengan tipe objek.
Instantiation − Kata kunci 'new' digunakan untuk membuat objek.
Initialization − Kata kunci 'new' diikuti dengan panggilan ke konstruktor. Panggilan ini menginisialisasi objek baru.
Berikut adalah contoh membuat sebuah objek −
Contoh
Live Demo
public class Puppy { public Puppy(String name) { // This constructor has one parameter, name. System.out.println("Passed Name is :" + name ); } public static void main(String []args) { // Following statement would create an object myPuppy Puppy myPuppy = new Puppy( "tommy" ); } } Jika kita mengkompilasi dan menjalankan program di atas, maka akan menghasilkan hasil berikut −
Output
Passed Name is :tommy
Mengakses Variabel Instance dan Method
Variabel instance dan method diakses melalui objek yang dibuat. Untuk mengakses variabel instance, berikut adalah jalur yang sepenuhnya memenuhi syarat −
/* First create an object */ ObjectReference = new Constructor(); /* Now call a variable as follows */ ObjectReference.variableName; /* Now you can call a class method as follows */ ObjectReference.MethodName();
Contoh
Contoh ini menjelaskan cara mengakses variabel instance dan method dari sebuah class.
Live Demo
public class Puppy { int puppyAge; public Puppy(String name) { // This constructor has one parameter, name. System.out.println("Name chosen is :" + name ); } public void setAge( int age ) { puppyAge = age; } public int getAge( ) { System.out.println("Puppy's age is :" + puppyAge ); return puppyAge; } public static void main(String []args) { /* Object creation */ Puppy myPuppy = new Puppy( "tommy" ); /* Call class method to set puppy's age */ myPuppy.setAge( 2 ); /* Call another class method to get puppy's age */ myPuppy.getAge( ); /* You can access instance variable as follows as well */ System.out.println("Variable Value :" + myPuppy.puppyAge ); } } Jika kita mengkompilasi dan menjalankan program di atas, maka akan menghasilkan hasil berikut −
Output
Name chosen is :tommy Puppy's age is :2 Variable Value :2
Aturan Deklarasi Berkas Sumber
Sebagai bagian terakhir dari bagian ini, mari kita sekarang lihat aturan deklarasi berkas sumber. Aturan ini penting saat mendeklarasikan class, import statements dan package statements dalam sebuah berkas sumber.
Hanya boleh ada satu public class per berkas sumber.
Sebuah berkas sumber dapat memiliki beberapa class non-public.
Nama public class harus menjadi nama berkas sumber juga yang harus ditambahkan dengan .java di akhir. Contoh: nama class adalah public class Employee{} maka berkas sumber harus seperti Employee.java.
Jika class didefinisikan di dalam sebuah package, maka package statement harus menjadi statement pertama dalam berkas sumber.
Jika import statements ada, maka harus ditulis di antara package statement dan class declaration. Jika tidak ada package statements, maka import statement harus menjadi baris pertama dalam berkas sumber.
Import dan package statements akan berlaku untuk semua class yang ada dalam berkas sumber. Tidak mungkin untuk mendeklarasikan import dan/atau package statements yang berbeda untuk berbagai class dalam berkas sumber.
Class memiliki beberapa level akses dan ada berbagai jenis class; abstract classes, final classes, dll. Kami akan menjelaskan tentang semua ini dalam bab access modifiers.
Kecuali jenis-jenis class yang disebutkan di atas, Java juga memiliki beberapa class khusus yang disebut Inner classes dan Anonymous classes.
Java Package
Dalam kata sederhana, ini adalah cara untuk mengkategorikan class dan interfaces. Saat mengembangkan aplikasi dalam Java, ratusan class dan interfaces akan ditulis, oleh karena itu mengkategorikan class ini sangat penting serta membuat hidup jauh lebih mudah.
Import Statements
Dalam Java jika sebuah nama yang sepenuhnya memenuhi syarat, yang mencakup package dan nama class diberikan, maka kompiler dapat dengan mudah menemukan kode sumber atau class. Import statement adalah cara untuk memberikan lokasi yang tepat untuk kompiler untuk menemukan class tertentu tersebut.
Misalnya, baris berikut akan meminta kompiler untuk memuat semua class yang tersedia di direktori java_installation/java/io −
import java.io.*;
Sebuah Studi Kasus Sederhana
Untuk studi kasus kami, kita akan membuat dua class. Mereka adalah Employee dan EmployeeTest.
Pertama buka notepad dan tambahkan kode berikut. Ingat ini adalah Employee class dan class ini adalah public class. Sekarang, simpan berkas sumber ini dengan nama Employee.java.
Employee class memiliki empat variabel instance - name, age, designation dan salary. Class ini memiliki satu konstruktor yang secara eksplisit didefinisikan, yang mengambil sebuah parameter.
Contoh
import java.io.*; public class Employee { String name; int age; String designation; double salary; // This is the constructor of the class Employee public Employee(String name) { this.name = name; } // Assign the age of the Employee to the variable age. public void empAge(int empAge) { age = empAge; } /* Assign the designation to the variable designation.*/ public void empDesignation(String empDesig) { designation = empDesig; } /* Assign the salary to the variable salary.*/ public void empSalary(double empSalary) { salary = empSalary; } /* Print the Employee details */ public void printEmployee() { System.out.println("Name:"+ name ); System.out.println("Age:" + age ); System.out.println("Designation:" + designation ); System.out.println("Salary:" + salary); } } Seperti yang telah disebutkan sebelumnya dalam tutorial ini, pemrosesan dimulai dari main method. Oleh karena itu, untuk dapat menjalankan Employee class ini harus ada main method dan objek harus dibuat. Kami akan membuat class terpisah untuk tugas-tugas ini.
Berikut adalah EmployeeTest class, yang membuat dua instance dari class Employee dan memanggil method untuk setiap objek untuk menetapkan nilai untuk setiap variabel.
Simpan kode berikut dalam berkas EmployeeTest.java.
import java.io.*; public class EmployeeTest { public static void main(String args[]) { /* Create two objects using constructor */ Employee empOne = new Employee("James Smith"); Employee empTwo = new Employee("Mary Anne"); // Invoking methods for each object created empOne.empAge(26); empOne.empDesignation("Senior Software Engineer"); empOne.empSalary(1000); empOne.printEmployee(); empTwo.empAge(21); empTwo.empDesignation("Software Engineer"); empTwo.empSalary(500); empTwo.printEmployee(); } } Sekarang, kompilasi kedua class dan kemudian jalankan EmployeeTest untuk melihat hasilnya sebagai berikut −
Output
C:\> javac Employee.java C:\> javac EmployeeTest.java C:\> java EmployeeTest Name:James Smith Age:26 Designation:Senior Software Engineer Salary:1000.0 Name:Mary Anne Age:21 Designation:Software Engineer Salary:500.0
Apa Selanjutnya?
Dalam sesi selanjutnya, kita akan membahas tipe data dasar dalam Java dan bagaimana mereka dapat digunakan saat mengembangkan aplikasi Java.