"हाय, अमिगो. आज मी तुम्हाला जावाच्या एका सामान्य प्रोग्रामबद्दल सांगेन. मोठी बातमी म्हणजे जावामध्ये लिहिलेल्या प्रत्येक प्रोग्राममध्ये क्लासेस आणि ऑब्जेक्ट्स असतात."

"मला आधीपासूनच माहित आहे की वर्ग काय आहेत. वस्तू काय आहेत?"

"सामान्यतेने सुरुवात करूया. समजा तुम्हाला एक लहान जहाज बनवायचे आहे. तुम्ही एका डिझाईनवर काम कराल आणि नंतर ब्लूप्रिंट एका कारखान्याला पाठवा, जिथे तुमच्या डिझाइननुसार एक जहाज असेंबल केले जाईल. किंवा डझनभर जहाजे, किंवा तितकी जहाजे. तुम्हाला हवे तसे. माझा मुद्दा असा आहे की डझनभर एकसारखी जहाजे एका ब्ल्यू प्रिंटच्या आधारे बनवता येतात."

"ते जावा सह कसे कार्य करते तेच आहे."

" जावा प्रोग्रामर हे डिझाइन इंजिनीअर्ससारखे असतात, ब्ल्यूप्रिंट्स तयार करण्याऐवजी ते वर्ग लिहितात. जहाजाचे भाग ब्लूप्रिंटच्या आधारे बनवले जातात, तर वस्तू वर्गांच्या आधारे तयार केल्या जातात. "

"प्रथम, आम्ही वर्ग लिहितो (ब्लूप्रिंट बनवतो). नंतर, जेव्हा प्रोग्राम चालवला जातो, तेव्हा जावा मशीन या वर्गांच्या आधारे ऑब्जेक्ट्स तयार करते. हे अगदी ब्लूप्रिंटमधून जहाजे कशी तयार केली जातात त्याप्रमाणेच आहे. एक ब्लूप्रिंट - अनेक जहाजे. जहाजे भिन्न आहेत. . त्यांची नावे वेगळी आहेत आणि ते वेगवेगळे माल वाहून नेत आहेत. पण तरीही ते सारखेच आहेत. त्या सर्वांची रचना एकसारखी आहे आणि ते समान कार्ये करण्यास सक्षम आहेत."

"ठीक आहे, मला तुमच्या जहाजाची साधर्म्य समजते. तुम्ही काय म्हणत आहात ते मला समजले आहे याची खात्री करण्यासाठी तुम्ही मला आणखी काही देऊ शकता का?"

"उदाहरणार्थ मधमाश्या घ्या..."

"नाही, ते स्क्रॅच करा. मला मधमाशांचा वाईट अनुभव आला आहे. चला मुंग्या घेऊ."

"मुंग्यांची वसाहत हे वस्तू कशा प्रकारे परस्परसंवाद करतात याचे उत्तम उदाहरण आहे. कोणत्याही मुंग्यांच्या वसाहतीमध्ये तीन वर्ग असतात: राणी, सैनिक आणि कामगार मुंग्या. प्रत्येक वर्गातील मुंग्यांची संख्या वेगवेगळी असते. सहसा एका वसाहतीमध्ये फक्त एक राणी असते, डझनभर सैनिक असतात. , आणि शेकडो कामगार. तीन वर्ग, शेकडो वस्तू. मुंग्या कठोर नियम पाळतात कारण ते त्यांच्या स्वतःच्या वर्गातील मुंग्या आणि इतर वर्गातील मुंग्यांशी संवाद साधतात."

"हे एक परिपूर्ण उदाहरण आहे. एक सामान्य प्रोग्राम अगदी त्याचप्रमाणे कार्य करतो. एक मुख्य ऑब्जेक्ट आहे जो सर्व वर्गांमध्ये ऑब्जेक्ट्स तयार करतो. ऑब्जेक्ट्स एकमेकांशी आणि बाह्य जगाशी संवाद साधतात. ऑब्जेक्ट्सचे वर्तन आंतरिकरित्या कठोर (प्रोग्राम केलेले) असते. ."

"मला ते पटत नाही. म्हणजे, मला ते अजिबात पटत नाही."

"ही दोन स्पष्टीकरणे एकाच नाण्याच्या दोन बाजू आहेत. सत्य कुठेतरी दरम्यान आहे. पहिले उदाहरण (ब्लूप्रिंट्स आणि जहाजांबद्दल) आपल्याला वर्ग आणि त्याच्या वस्तूंमधील संबंध दर्शविते. हे एक शक्तिशाली सादृश्य आहे. मुंगी कॉलनी साधर्म्य दर्शवते. ऑब्जेक्ट्समधील संबंध, ज्याचे वर्णन वर्गांद्वारे केले जाते आणि प्रोग्राम चालू असतानाच अस्तित्वात आहे."

"आपल्याला असे म्हणायचे आहे की आम्हाला प्रोग्राममध्ये वापरल्या जाणार्‍या सर्व वस्तूंसाठी वर्ग लिहावे लागतील आणि नंतर त्यांच्या परस्परसंवादाचे वर्णन करावे लागेल?"

"होय, पण ते वाटते त्यापेक्षा सोपे आहे. जावामध्ये, प्रोग्राम चालू असताना, सर्व घटक ऑब्जेक्ट्स असतात. प्रोग्राम लिहिणे म्हणजे ऑब्जेक्ट्स परस्पर संवाद साधू शकणार्‍या विविध मार्गांचे वर्णन करतात. ऑब्जेक्ट्स फक्त एकमेकांच्या पद्धती कॉल करतात आणि आवश्यक डेटा पास करतात त्यांच्या साठी."

"हे थोडे अस्पष्ट आहे, परंतु मला वाटते की मला ते जवळजवळ समजले आहे."

"कोणत्या पद्धतींवर कॉल करायचा आणि कोणता डेटा पास करायचा हे आम्हाला कसे कळेल?"

"प्रत्येक वर्गाची एक घोषणा असते, जी त्याचा हेतू वापरण्यास सूचित करते. त्याचप्रमाणे, प्रत्येक पद्धतीमध्ये एक घोषणा असते जी ते काय करू शकते आणि आम्हाला कोणता डेटा पास करणे आवश्यक आहे हे सूचित करते. वर्ग वापरण्यासाठी, तुम्हाला काय याबद्दल सामान्य समज असणे आवश्यक आहे. ते करते. प्रत्येक पद्धत नेमकी काय करते हे तुम्हाला माहित असणे आवश्यक आहे, परंतु ती कशी करते हे नाही . हे जादूच्या कांडीसारखे आहे."

"हं! छान वाटतंय."

"येथे. फाईल्स कॉपी करणाऱ्या वर्गाचा कोड पहा:"

c:\data.txt 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();
    }
}

"मला हे सर्व मिळाले असे मी म्हणू शकत नाही, परंतु मला वाटते की मला त्याचे सार मिळाले."

"छान. पुढच्या वेळी भेटू."

"मी जवळजवळ विसरलेच आहे. हे तुमचे डिएगोचे कार्य आहे."