"Hai, Amigo. Hari ini saya akan memberitahu anda tentang program Java biasa. Berita besarnya ialah setiap program yang ditulis dalam Java terdiri daripada kelas dan objek."

"Saya sudah tahu apa itu kelas. Apakah objek?"

"Mari kita mulakan dengan analogi. Katakan anda ingin membina sebuah kapal kecil. Anda bekerja pada reka bentuk dan kemudian menghantar pelan tindakan itu ke kilang, di mana sebuah kapal akan dipasang mengikut reka bentuk anda. Atau sedozen kapal, atau seberapa banyak kapal. seperti yang anda mahu. Maksud saya ialah berpuluh-puluh kapal yang serupa boleh dibuat berdasarkan satu pelan tindakan."

"Begitulah ia berfungsi dengan Java."

" Pengaturcara Java adalah seperti jurutera reka bentuk, kecuali daripada mencipta pelan tindakan, mereka menulis kelas. Bahagian kapal dibuat berdasarkan cetak biru, manakala objek dicipta berdasarkan kelas. "

"Pertama, kami menulis kelas (membuat cetak biru). Kemudian, apabila program dijalankan, mesin Java mencipta objek berdasarkan kelas ini. Ia sama seperti bagaimana kapal dibina daripada pelan tindakan. Satu pelan tindakan – banyak kapal. Kapal adalah berbeza . Mereka mempunyai nama yang berbeza dan membawa kargo yang berbeza. Tetapi mereka masih serupa. Mereka semua mempunyai reka bentuk yang sama, dan mampu melaksanakan tugas yang serupa."

"OK, saya dapat analogi kapal awak. Bolehkah awak beri saya beberapa lagi untuk membantu saya memastikan saya faham apa yang awak katakan?"

"Ambil, sebagai contoh, lebah..."

"Tidak, calar itu. Saya ada pengalaman buruk dengan lebah. Mari kita ambil semut."

"Koloni semut ialah contoh yang baik tentang cara objek berinteraksi. Mana-mana koloni semut terdiri daripada tiga kelas: ratu, askar dan semut pekerja. Bilangan semut dalam setiap kelas berbeza-beza. Biasanya koloni hanya mempunyai seorang ratu, berpuluh-puluh askar. , dan ratusan pekerja. Tiga kelas, ratusan objek. Semut mematuhi peraturan yang ketat semasa mereka berinteraksi dengan semut dalam kelas mereka sendiri dan semut yang tergolong dalam kelas lain."

"Ini adalah contoh yang sempurna. Program tipikal berfungsi sama seperti itu. Terdapat objek utama yang mencipta objek dalam semua kelas. Objek berinteraksi antara satu sama lain dan dengan dunia luaran. Tingkah laku objek dirangkai (diprogramkan) secara dalaman ."

"Saya tidak begitu faham. Maksud saya, saya tidak faham langsung."

"Kedua-dua penjelasan ini adalah dua sisi syiling yang sama. Kebenarannya ada di antaranya. Contoh pertama (tentang pelan tindakan dan kapal) menunjukkan kepada kita hubungan antara kelas dan objeknya. Ia adalah analogi yang kuat. Analogi koloni semut menunjukkan hubungan antara objek, yang diterangkan oleh kelas dan wujud hanya semasa program sedang berjalan."

"Maksud anda kita perlu menulis kelas untuk semua objek yang digunakan dalam program, dan kemudian menerangkan interaksi mereka?"

"Ya, tetapi ia lebih mudah daripada yang didengari. Di Java, semasa program sedang berjalan, semua entiti adalah objek. Menulis program sama dengan menerangkan pelbagai cara objek boleh berinteraksi. Objek hanya memanggil kaedah satu sama lain dan menghantar data yang diperlukan kepada mereka."

"Ia agak kabur, tetapi saya rasa saya hampir faham."

"Bagaimana kita tahu kaedah mana yang hendak dipanggil dan data mana yang hendak dihantar?"

"Setiap kelas mempunyai pengisytiharan, yang menunjukkan penggunaannya yang dimaksudkan. Begitu juga, setiap kaedah mempunyai pengisytiharan yang menunjukkan perkara yang boleh dilakukan dan data yang perlu kami sampaikan kepadanya. Untuk menggunakan kelas, anda perlu mempunyai pemahaman umum tentang apa ia berlaku. Anda perlu tahu dengan tepat apa yang dilakukan oleh setiap kaedah, tetapi bukan bagaimana ia melakukannya . Ia seperti tongkat sakti."

"Hah! Sedap bunyinya."

"Di sini. Lihat kod kelas yang menyalin fail:"

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 boleh mengatakan saya mendapat semuanya, tetapi saya fikir saya mendapat intipatinya."

"Bagus. Jumpa lagi lain kali."

"Saya hampir terlupa. Ini tugas awak daripada Diego."