"হাই, অ্যামিগো। আজ আমি আপনাকে একটি সাধারণ জাভা প্রোগ্রাম সম্পর্কে বলব। বড় খবর হল যে জাভাতে লেখা প্রতিটি প্রোগ্রাম ক্লাস এবং অবজেক্ট নিয়ে গঠিত।"

"আমি ইতিমধ্যেই জানি ক্লাস কি। অবজেক্ট কি?"

"আসুন একটি উপমা দিয়ে শুরু করা যাক। ধরুন আপনি একটি ছোট জাহাজ তৈরি করতে চান। আপনি একটি নকশার উপর কাজ করেন এবং তারপরে একটি কারখানায় ব্লুপ্রিন্ট পাঠান, যেখানে একটি জাহাজ আপনার নকশা অনুযায়ী একত্রিত হবে। অথবা এক ডজন জাহাজ, বা অনেকগুলি জাহাজ আপনি যেমন চান। আমার বক্তব্য হল একটি ব্লুপ্রিন্টের ভিত্তিতে ডজন ডজন অভিন্ন জাহাজ তৈরি করা যেতে পারে।"

"জাভাতে ঠিক এভাবেই কাজ করে।"

" জাভা প্রোগ্রামাররা ডিজাইন ইঞ্জিনিয়ারদের মতো, তারা ব্লুপ্রিন্ট তৈরি করার পরিবর্তে ক্লাস লেখে। জাহাজের অংশগুলি ব্লুপ্রিন্টের উপর ভিত্তি করে তৈরি করা হয়, যখন বস্তুগুলি ক্লাসের উপর ভিত্তি করে তৈরি করা হয়। "

"প্রথমে, আমরা ক্লাস লিখি (ব্লুপ্রিন্ট তৈরি করি)। তারপর, যখন প্রোগ্রামটি চালানো হয়, তখন জাভা মেশিন এই ক্লাসগুলির উপর ভিত্তি করে অবজেক্ট তৈরি করে। এটি ঠিক যেভাবে একটি ব্লুপ্রিন্ট থেকে জাহাজ তৈরি করা হয়। একটি ব্লুপ্রিন্ট - অনেকগুলি জাহাজ। জাহাজগুলি আলাদা। তাদের বিভিন্ন নাম রয়েছে এবং বিভিন্ন পণ্য বহন করে। কিন্তু তারা এখনও একই রকম। তাদের সকলের একটি অভিন্ন নকশা রয়েছে এবং তারা একই ধরনের কাজ করতে সক্ষম।"

"ঠিক আছে, আমি আপনার জাহাজের সাদৃশ্য পেয়েছি। আপনি কি বলছেন তা আমি বুঝতে পেরেছি তা নিশ্চিত করতে আপনি কি আমাকে আরও কিছু দিতে পারেন?"

"উদাহরণস্বরূপ, মৌমাছি ধরুন..."

"না, ওটা আঁচড়ে দাও। মৌমাছির সাথে আমার একটা খারাপ অভিজ্ঞতা হয়েছে। চল পিঁপড়া নিয়ে আসি।"

"একটি পিঁপড়া কলোনি হল একটি ভাল উদাহরণ যে কীভাবে বস্তুগুলি মিথস্ক্রিয়া করে। যে কোনও পিঁপড়া উপনিবেশ তিনটি শ্রেণী নিয়ে গঠিত: রানী, সৈন্য এবং কর্মী পিঁপড়া। প্রতিটি শ্রেণিতে পিঁপড়ার সংখ্যা পরিবর্তিত হয়। সাধারণত একটি উপনিবেশে শুধুমাত্র একজন রাণী থাকে, কয়েক ডজন সৈন্য। , এবং শত শত কর্মী। তিন শ্রেণীর, শত শত বস্তু। পিঁপড়ারা কঠোর নিয়ম অনুসরণ করে কারণ তারা তাদের নিজস্ব শ্রেণীর পিঁপড়া এবং অন্যান্য শ্রেণীর পিঁপড়ার সাথে যোগাযোগ করে।"

"এটি একটি নিখুঁত উদাহরণ। একটি সাধারণ প্রোগ্রাম ঠিক সেভাবেই কাজ করে। একটি প্রধান বস্তু রয়েছে যা সমস্ত শ্রেণিতে বস্তু তৈরি করে। বস্তুগুলি একে অপরের সাথে এবং বাহ্যিক বিশ্বের সাথে যোগাযোগ করে। বস্তুর আচরণ অভ্যন্তরীণভাবে হার্ডওয়্যারযুক্ত (প্রোগ্রামযুক্ত) "

"আমি পুরোপুরি বুঝতে পারছি না। আমি বলতে চাচ্ছি, আমি এটা মোটেও বুঝতে পারছি না।"

"এই দুটি ব্যাখ্যা একই মুদ্রার দুটি দিক। সত্যটি মাঝখানে কোথাও রয়েছে। প্রথম উদাহরণ (ব্লুপ্রিন্ট এবং জাহাজ সম্পর্কে) আমাদের একটি শ্রেণী এবং এর বস্তুর মধ্যে সংযোগ দেখায়। এটি একটি শক্তিশালী সাদৃশ্য। পিঁপড়া উপনিবেশ সাদৃশ্য প্রদর্শন করে অবজেক্টের মধ্যে সম্পর্ক, যা ক্লাস দ্বারা বর্ণনা করা হয় এবং শুধুমাত্র একটি প্রোগ্রাম চলাকালীনই বিদ্যমান।"

"আপনি বলতে চাচ্ছেন আমাদের একটি প্রোগ্রামে ব্যবহৃত সমস্ত বস্তুর জন্য ক্লাস লিখতে হবে এবং তারপরে তাদের মিথস্ক্রিয়া বর্ণনা করতে হবে?"

"হ্যাঁ, তবে এটি শোনার চেয়ে সহজ। জাভাতে, যখন একটি প্রোগ্রাম চলছে, তখন সমস্ত সত্তাই অবজেক্ট। একটি প্রোগ্রাম লেখার অর্থ হল বিভিন্ন উপায়ে যে বস্তুগুলি ইন্টারঅ্যাক্ট করতে পারে তা বর্ণনা করা। বস্তুগুলি কেবল একে অপরের পদ্ধতিগুলিকে কল করে এবং প্রয়োজনীয় ডেটা পাস করে তাদেরকে."

"এটা একটু অস্পষ্ট, কিন্তু আমি মনে করি আমি প্রায় পেয়ে গেছি।"

"আমরা কিভাবে জানি কোন পদ্ধতিতে কল করতে হবে এবং কোন ডেটা পাস করতে হবে?"

"প্রতিটি ক্লাসের একটি ঘোষণা রয়েছে, যা তার উদ্দেশ্যমূলক ব্যবহার নির্দেশ করে। একইভাবে, প্রতিটি পদ্ধতির একটি ঘোষণা রয়েছে যা নির্দেশ করে যে এটি কী করতে পারে এবং আমাদের এটিতে কোন ডেটা পাস করতে হবে। একটি ক্লাস ব্যবহার করার জন্য, আপনাকে কী সম্পর্কে সাধারণ ধারণা থাকতে হবে। এটা করে। প্রতিটি পদ্ধতি ঠিক কী করে তা আপনাকে জানতে হবে, কিন্তু এটা ঠিক কীভাবে করে তা নয় । এটা একটা জাদুর কাঠির মতো।"

"হুহ! সুন্দর লাগছে।"

"এখানে। একটি ক্লাসের কোড দেখুন যা ফাইল কপি করে:"

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();
    }
}

"আমি বলতে পারি না যে আমি এটি সব পেয়েছি, তবে আমি মনে করি আমি এর সারমর্ম পেয়েছি।"

"দারুণ। পরের বার দেখা হবে।"

"আমি প্রায় ভুলেই গিয়েছিলাম। এখানে ডিয়েগো থেকে আপনার কাজ।"