"Merhaba Amigo. Bugün size tipik bir Java programından bahsedeceğim. Büyük haber şu ki, Java ile yazılmış her program sınıflardan ve nesnelerden oluşur."

"Sınıfların ne olduğunu zaten biliyorum. Nesneler nedir?"

"Bir benzetmeyle başlayalım. Diyelim ki küçük bir gemi yapmak istiyorsunuz. Bir tasarım üzerinde çalışıyorsunuz ve planı bir fabrikaya gönderiyorsunuz, orada tasarımınıza göre bir gemi monte ediliyor. Ya da bir düzine gemi ya da bir o kadar gemi. Demek istediğim, tek bir plana dayanarak düzinelerce birbirinin aynı gemi yapılabilir."

"Java ile tam olarak böyle çalışıyor."

" Java programcıları tasarım mühendisleri gibidir, tek farkları plan oluşturmak yerine sınıflar yazmaktır. Gemi parçaları planlara göre yapılırken, nesneler sınıflara göre oluşturulur. "

"Önce sınıflar yazarız (taslaklar yaparız). Ardından, program çalıştırıldığında, Java makinesi bu sınıflara dayalı nesneler oluşturur. Tıpkı gemilerin bir plandan inşa edilmesi gibi. Bir plan - birçok gemi. Gemiler farklı ... İsimleri farklı, yükleri farklı. Ama yine de benzerler. Hepsinin tasarımı aynı, benzer görevleri yerine getirebiliyorlar."

"Tamam, gemi benzetmeni anladım. Ne dediğini anladığımdan emin olmam için bana birkaç tane daha verebilir misin?"

"Örneğin arıları ele alalım..."

"Hayır, çiz şunu. Arılarla ilgili kötü bir deneyimim oldu. Karıncaları ele alalım."

"Bir karınca kolonisi, nesnelerin nasıl etkileşime girdiğine iyi bir örnektir. Herhangi bir karınca kolonisi üç sınıftan oluşur: kraliçe, askerler ve işçi karıncalar. Her sınıftaki karınca sayısı değişir. Genellikle bir kolonide yalnızca bir kraliçe, düzinelerce asker bulunur. , ve yüzlerce işçi.Üç sınıf, yüzlerce nesne.Karıncalar, kendi sınıflarındaki karıncalarla ve diğer sınıflara ait karıncalarla etkileşime girerken katı kurallara uyarlar."

"Bu mükemmel bir örnek. Tipik bir program tam olarak böyle çalışır. Tüm sınıflarda nesneler yaratan bir ana nesne vardır. Nesneler birbirleriyle ve dış dünyayla etkileşim halindedir. Nesnelerin davranışları dahili olarak programlanmıştır (programlanmıştır). ."

"Tam olarak anlamadım. Yani, hiç anlamadım."

"Bu iki açıklama aynı madalyonun iki yüzü. Gerçek arada bir yerde. İlk örnek (taslaklar ve gemiler hakkında) bize bir sınıf ile nesneleri arasındaki bağlantıyı gösteriyor. Bu güçlü bir analoji. Karınca kolonisi benzetmesi, sınıflar tarafından tanımlanan ve yalnızca bir program çalışırken var olan nesneler arasındaki ilişki."

"Bir programda kullanılan tüm nesneler için sınıflar yazmamız ve ardından bunların etkileşimlerini tanımlamamız gerektiğini mi söylüyorsunuz?"

"Evet, ama göründüğünden daha kolay. Java'da, bir program çalışırken, tüm varlıklar nesnedir. Bir program yazmak, nesnelerin etkileşime girebileceği çeşitli yolları açıklamak anlamına gelir. Nesneler basitçe birbirlerinin yöntemlerini çağırır ve gerekli verileri iletir. onlara."

"Biraz bulanık, ama sanırım neredeyse anlıyorum."

"Hangi yöntemleri çağıracağımızı ve hangi verileri ileteceğimizi nasıl bileceğiz?"

"Her sınıfın, kullanım amacını gösteren bir bildirimi vardır. Benzer şekilde, her yöntemin, neler yapabileceğini ve ona hangi verileri iletmemiz gerektiğini belirten bir bildirimi vardır. Bir sınıfı kullanmak için, ne olduğuna dair genel bir anlayışa sahip olmanız gerekir. Her yöntemin tam olarak ne yaptığını bilmeniz gerekir, ancak tam olarak nasıl yaptığını bilmemeniz gerekir . Sihirli bir değnek gibi."

"Hah! Kulağa hoş geliyor."

"İşte. Dosyaları kopyalayan bir sınıfın koduna bir bakın:"

c:\data.txt dosyasını c:\result.txt konumuna kopyalayın
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();
    }
}

"Hepsini anladığımı söyleyemem ama sanırım özünü anladım."

"Harika. Bir dahaki sefere görüşürüz o zaman."

"Neredeyse unutuyordum. İşte sana Diego'dan gelen görev."