"Hai, Amigo. Hari ini saya akan memberi tahu Anda tentang program khas Java. Berita besarnya adalah setiap program yang ditulis dalam Java terdiri dari kelas dan objek."

"Saya sudah tahu apa itu class. Apa itu object?"

Mari kita mulai dengan sebuah analogi. Misalkan Anda ingin membangun sebuah kapal kecil. Anda mengerjakan sebuah desain dan kemudian mengirimkan cetak birunya ke sebuah pabrik, di mana sebuah kapal akan dirakit sesuai dengan desain Anda. Atau selusin kapal, atau kapal sebanyak-banyaknya. seperti yang Anda inginkan. Maksud saya adalah lusinan kapal yang identik dapat dibuat berdasarkan satu cetak biru."

"Begitulah cara kerjanya dengan Java."

" Pemrogram Java seperti insinyur desain, kecuali alih-alih membuat cetak biru, mereka menulis kelas. Bagian kapal dibuat berdasarkan cetak biru, sedangkan objek dibuat berdasarkan kelas. "

"Pertama, kita menulis kelas (membuat cetak biru). Kemudian, ketika program dijalankan, mesin Java membuat objek berdasarkan kelas-kelas ini. Persis seperti bagaimana kapal dibangun dari cetak biru. Satu cetak biru – banyak kapal. Kapalnya berbeda . Mereka memiliki nama yang berbeda dan membawa kargo yang berbeda. Tapi mereka masih serupa. Mereka semua memiliki desain yang identik, dan mampu melakukan tugas yang serupa."

"Oke, saya mengerti analogi kapal Anda. Bisakah Anda memberi saya beberapa lagi untuk membantu saya memastikan saya mengerti apa yang Anda katakan?"

"Ambil, misalnya, lebah ..."

"Tidak, gores itu. Aku punya pengalaman buruk dengan lebah. Mari kita ambil semut."

Koloni semut adalah contoh yang baik tentang bagaimana objek berinteraksi. Setiap koloni semut terdiri dari tiga kelas: ratu, tentara, dan semut pekerja. Jumlah semut di setiap kelas bervariasi. Biasanya koloni hanya memiliki satu ratu, puluhan tentara , dan ratusan pekerja. Tiga kelas, ratusan objek. Semut mengikuti aturan ketat saat mereka berinteraksi dengan semut di kelasnya sendiri dan semut yang termasuk dalam kelas lain."

"Ini adalah contoh sempurna. Sebuah program tipikal bekerja persis seperti itu. Ada objek utama yang membuat objek di semua kelas. Objek berinteraksi satu sama lain dan dengan dunia luar. Perilaku objek tertanam (diprogram) secara internal ."

"Aku tidak mengerti. Maksudku, aku tidak mengerti sama sekali."

"Dua penjelasan ini adalah dua sisi dari mata uang yang sama. Kebenaran ada di antara keduanya. Contoh pertama (tentang cetak biru dan kapal) menunjukkan kepada kita hubungan antara kelas dan objeknya. Ini adalah analogi yang kuat. Analogi koloni semut menunjukkan hubungan antara objek, yang dijelaskan oleh kelas dan hanya ada saat program sedang berjalan."

"Maksud Anda, kita perlu menulis kelas untuk semua objek yang digunakan dalam suatu program, dan kemudian menjelaskan interaksinya?"

"Ya, tapi ini lebih mudah daripada kedengarannya. Di Java, saat sebuah program sedang berjalan, semua entitas adalah objek. Menulis sebuah program sama dengan menjelaskan berbagai cara agar objek dapat berinteraksi. Objek hanya memanggil metode satu sama lain dan mengirimkan data yang diperlukan ke mereka."

"Agak kabur, tapi kurasa aku hampir mengerti."

"Bagaimana kita tahu metode mana yang harus dipanggil dan data mana yang harus diteruskan?"

"Setiap kelas memiliki deklarasi, yang menunjukkan tujuan penggunaannya. Demikian pula, setiap metode memiliki deklarasi yang menunjukkan apa yang dapat dilakukannya dan data apa yang perlu kita berikan padanya. Untuk menggunakan kelas, Anda perlu memiliki pemahaman umum tentang apa itu. Anda perlu tahu persis apa yang dilakukan masing-masing metode, tetapi tidak persis bagaimana melakukannya . Ini seperti tongkat ajaib. "

"Hah! Kedengarannya bagus."

"Ini. Lihat kode kelas yang menyalin file:"

Salin c:\data.txt ke c:\result.txt
package com.codegym.lesson2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy
{
    public static void main(String[] args) throws IOException
    {
        FileInputStream fileInputStream = new FileInputStream("c:\data.txt");
        FileOutputStream fileOutputStream = new FileOutputStream("c:\result.txt");

        while (fileInputStream.available() > 0)
        {
            int data = fileInputStream.read();
            fileOutputStream.write(data);
        }

        fileInputStream.close();
        fileOutputStream.close();
    }
}

"Saya tidak bisa mengatakan saya mendapatkan semuanya, tapi saya pikir saya mendapatkan esensinya."

"Bagus. Sampai jumpa lain kali."

"Aku hampir lupa. Ini tugasmu dari Diego."