CodeGym /Java Blog /এলোমেলো /পুরাতন স্তর 02
John Squirrels
লেভেল 41
San Francisco

পুরাতন স্তর 02

এলোমেলো দলে প্রকাশিত

কোডজিম - জাভাতে প্রোগ্রামিং শেখা

পুরাতন স্তর 02 - 1কিভাবে প্রোগ্রামিং অধ্যয়ন এবং একটি শিক্ষা পেতে একটি সম্পূর্ণ নতুন উপায় সম্পর্কে? আপনি আগে দেখেছেন এমন কিছু মনে হচ্ছে না। কিভাবে শেখার বিষয়ে, যেখানে আপনার একটি লক্ষ্য, উপায় এবং ফলাফল আছে? আমি আপনাকে জাভা শেখার জন্য নতুন অনলাইন প্রোগ্রামিং কোর্স উপস্থাপন করতে পেরে আনন্দিত।

1 প্রশিক্ষণ হল একটি অনলাইন-গেম

আপনি একটি টাস্ক নিন, এটি কার্যকর করুন এবং একটি পুরষ্কার পান। আমি মনে করি এটি আপনার জন্য পরিষ্কার এবং সাধারণ। কাজগুলি সবচেয়ে বিভিন্ন: কোড পড়া, কাজগুলি সমাধান করা, ভিডিও-পাঠ, কোডে ত্রুটি সংশোধন, নতুন বৈশিষ্ট্য যোগ করা, বড় কাজ, গেম লেখা এবং আরও অনেক কিছু।

2 শুধুমাত্র খালি প্রয়োজনীয় জিনিস

কোর্সটি যাতে 5 বছর স্থায়ী না হয় তার জন্য, আমি সমস্ত দরকারী জিনিস ফেলে দিয়েছিলাম এবং এটি থেকে কেবলমাত্র প্রয়োজনীয় জিনিসগুলি রেখেছিলাম। আমি শ্রমবাজারে দশ হাজার শূন্যপদ বিশ্লেষণ করেছি। জাভা জুনিয়র ডেভেলপারের চাকরি পেতে নবাগতদের যে সমস্ত বিষয় জানতে হবে তা কোর্সে অন্তর্ভুক্ত করা হয়েছে।

3 আমি আপনার প্রশিক্ষণের সাথে যোগাযোগ করেছি

একটি সম্পূর্ণ কোর্সে 500টি মিনি-বক্তৃতা এবং 1200টি (!) ব্যবহারিক কাজ থাকে ৷ কাজগুলো ছোট, কিন্তু সেগুলো অনেক। তাদের মধ্যে একটি মহান চুক্তি আছে. শুধু যে ন্যূনতম, যা করার, আপনি যেমন একটি মূল্যবান অভিজ্ঞতা পাবেন. এছাড়াও জোড়ায় কাজ, বিভিন্ন খেলা, বড় কাজ, বাস্তব প্রকল্প এবং অন্যান্য ধরনের অনুশীলন আছে।

4 আপনি গেমটি শেষ করতে পারবেন না এবং বিকাশকারী হতে পারবেন না

কোর্সে 40টি স্তর রয়েছে। আপনি পরবর্তী স্তরে যেতে পারেন, শুধুমাত্র যদি আপনি বর্তমান স্তরে কাজগুলির বৃহত্তর অংশ সমাধান করেন৷ সামান্য এবং সহজ দিয়ে শুরু, বড় এবং খুব দরকারী দিয়ে শেষ। প্রতিটি ব্যক্তি যিনি শেষ পর্যন্ত পৌঁছাবেন তারা 300-500 ঘন্টার বাস্তব অভিজ্ঞতা পাবেন। এবং এটি জয়ের একটি দুর্দান্ত সুযোগ দেয়। আর চাকরি পাওয়ার জন্য।

5 লক্ষ্য-ভিত্তিক চাকরির ইন্টারভিউ প্রস্তুতি

শেষ 10টি স্তর একটি জীবনবৃত্তান্ত লেখা, সাক্ষাত্কারের প্রস্তুতি এবং দলগত কাজের দক্ষতা অর্জনের জন্য নিবেদিত। চাকরির ইন্টারভিউ এবং তাদের বিশ্লেষণের ভিডিও যুক্ত করা হবে। ভাল এবং, অবশ্যই, উত্তর সহ সাক্ষাত্কারে সাধারণ প্রশ্ন। পুরাতন স্তর 02 - 2

6 আপনি সাইটে সরাসরি কাজ সমাধান করতে পারেন

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

7 তাত্ক্ষণিক টাস্ক চেক (সেকেন্ডেরও কম সময়ে)

আপনি কি পরিস্থিতির সাথে পরিচিত, যখন আপনি পরীক্ষা করার জন্য একটি কাজ/কাজ হস্তান্তর করেছিলেন এবং ফলাফলের জন্য এক সপ্তাহ অপেক্ষা করতে হয়েছিল, কারণ যে ব্যক্তি এটি পরীক্ষা করে সে ব্যস্ত? এটি বেশিরভাগ অফলাইন কোর্সের ক্ষেত্রেই হয়। CodeGym-এ আপনি একটি «Execute/Check» বোতাম টিপে এক সেকেন্ডেরও কম সময়ের মধ্যে আপনার টাস্ক সলিউশন কম্পাইল ও চেক করার ফলাফল পাবেন।

8 CodeGym এটা পছন্দ করে, যখন আপনি অধ্যয়নের সময় Facebook-এ সময় কাটান

ফেসবুকে প্রকল্পের জন্য নিবেদিত একটি পৃষ্ঠা রয়েছে। এতে আপনি আকর্ষণীয় প্রযুক্তিগত নিবন্ধ, অনুপ্রেরণামূলক গল্প, কোডজিমের খবর এবং অন্যান্য অনেক দরকারী তথ্য পেতে পারেন।

9 কভারেজ

লেকচারে বিভিন্ন ওয়েব সাইটের অনেক রেফারেন্স আছে, যেখানে আপনি অন্যান্য লেকচারারদের ব্যাখ্যা পড়তে পারেন। আমার উদ্দেশ্য হল আপনি উপাদান বোঝেন, শুধুমাত্র আমার কথা শুনবেন না।

10 একজন বিকাশকারী হওয়ার জন্য আপনার শুধুমাত্র আপনার মস্তিষ্ক এবং কম্পিউটারের প্রয়োজন হবে

আপনি কতটা সময় অনুশীলন করবেন তার উপর নির্ভর করে আপনার 3 থেকে 6 মাস সময় লাগবে।

11 সমর্থন

পুরাতন স্তর 02 - 3নিঃসন্দেহে প্রশ্ন উঠবে যখন আপনি হাজারো কাজের মুখোমুখি হবেন। আমরা একটি বিশেষ পরিষেবা প্রতিষ্ঠা করেছি, যেখানে আপনি কাজ সম্পর্কে প্রশ্ন জিজ্ঞাসা করতে সক্ষম হবেন। অন্যান্য কোডজিম-ছাত্র, মডারেটর, স্বেচ্ছাসেবক এবং পরিষেবার প্রতিষ্ঠাতা সদস্যরা আপনাকে উত্তর দেবে।

12 সম্প্রদায়

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

আপনি একটি নতুন স্তরে পৌঁছেছেন

স্তর 2

পুরাতন স্তর 02 - 4

1 এলি, সকলের ভিত্তি

- আরে, আমিগো। আজ আমি আপনাকে বলতে চাই কিভাবে একটি সাধারণ জাভা প্রোগ্রাম গঠন করা হয়। মূল বিষয় হল প্রতিটি জাভা প্রোগ্রাম ক্লাস এবং অবজেক্ট নিয়ে গঠিত - আমি ইতিমধ্যে জানি ক্লাস কি. এবং বস্তু কি? - একটি ছোট জাহাজ নির্মাণের সাথে সাদৃশ্য দ্বারা, প্রথমে আপনাকে একটি অঙ্কন তৈরি করতে হবে এবং তারপরে এটি শিপইয়ার্ডে দিতে হবে। এই অঙ্কনের উপর ভিত্তি করে একটি জাহাজ একত্রিত করা হবে। অথবা পাঁচটি জাহাজ। প্রকৃতপক্ষে, যতগুলি আপনি চান। এক অঙ্কনের উপর ভিত্তি করে কয়েক ডজন অভিন্ন জাহাজ তৈরি করা হয়, এটিই হল! - জাভা প্রোগ্রামিং এর সব জিনিস হুবহু একই। - প্রোগ্রামার একজন ডিজাইন ইঞ্জিনিয়ারের মতো। আর ডিজাইন ইঞ্জিনিয়ারকে ড্রয়িং করতে হলে জাভা প্রোগ্রামারকে ক্লাস লিখতে হয়। তারপরে, অংশগুলি অঙ্কনের উপর ভিত্তি করে তৈরি করা হয়, এবং বস্তুগুলি ক্লাসের উপর ভিত্তি করে তৈরি করা হয়। - প্রথমে, আমরা ক্লাস লিখি (ড্রয়িং করি), এবং পরে প্রোগ্রাম রানটাইমে, জাভা ভার্চুয়াল মেশিন এই ক্লাসগুলি ব্যবহার করে অবজেক্ট তৈরি করে। ঠিক একইভাবে জাহাজ তৈরি করা হয়। একটি অঙ্কন এবং অনেক জাহাজ আছে. বিভিন্ন নাম রয়েছে এবং বিভিন্ন পণ্যবাহী জাহাজ রয়েছে। যাইহোক, তারা খুব একই রকম: তাদের সকলের একই কাঠামো রয়েছে এবং একই কাজ সম্পাদন করতে পারে। - জাহাজের ক্ষেত্রে, সবকিছু পরিষ্কার। এটি সম্পর্কে ঠিক কি বুঝতে আমাকে আরও কয়েকটি তুলনা দিন? - অবশ্যই। উদাহরণস্বরূপ, মৌমাছি... পুরাতন স্তর 02 - 5- আরে না, একটু অপেক্ষা করুন, মৌমাছিরা আমাকে খারাপ কিছু মনে করিয়ে দেয়। একটি anthill ভাল চিন্তা করুন. - একটি anthill বস্তুর মিথস্ক্রিয়া একটি ভাল উদাহরণ. সহজতম পিঁপড়াতে, পিঁপড়ার তিনটি শ্রেণি রয়েছে: একটি রানী, সৈন্য এবং কর্মী পিঁপড়া। প্রতিটি শ্রেণীর জন্য পিঁপড়ার সংখ্যার পার্থক্য রয়েছে। রাণী নীড়ে একা; সেখানে রয়েছে অসংখ্য সৈন্য এবং শত শত কর্মক্ষম পিঁপড়া। সুতরাং, আমরা বলতে পারি, তিনটি শ্রেণী এবং শত শত বস্তু আছে। পিঁপড়ারা একে অপরের সাথে যোগাযোগ করে, একই পিঁপড়া এবং অন্যান্য শ্রেণীর পিঁপড়ার সাথে কঠোর নিয়ম অনুসারে। - এটি একটি নিখুঁত উদাহরণ. একটি সাধারণ প্রোগ্রামের জন্য, এটি সব একই। একটি প্রধান বস্তু অন্য সব শ্রেণীর বস্তু তৈরি করে। বস্তুগুলি একে অপরের সাথে এবং একটি প্রোগ্রামের "বাহ্যিক বিশ্বের" সাথে যোগাযোগ করতে শুরু করে। বস্তুর আচরণ তাদের ভিতরে হার্ডকোড করা হয়. - আমি ঠিক বুঝতে পারছি না। বরং একদমই বুঝবেন না। - এই দুটি ব্যাখ্যা একই মুদ্রার বিভিন্ন দিক। সত্য এর মাঝে কোথাও আছে। প্রথম উদাহরণটি (অঙ্কন এবং জাহাজ সহ) ক্লাস এবং এই শ্রেণীর বস্তুর মধ্যে সম্পর্ক দেখায়। সাদৃশ্য খুব কাছাকাছি। দ্বিতীয় উদাহরণ (অ্যান্টিল সহ) লিখিত ক্লাস এবং রানটাইমে বিদ্যমান বস্তুর মধ্যে সম্পর্ক দেখায়। - আপনি কি বলতে চান যে প্রথমে আমাদের একটি প্রোগ্রামে বিদ্যমান সমস্ত অবজেক্টের জন্য ক্লাস লিখতে হবে এবং আরও কী, তাদের মিথস্ক্রিয়া বর্ণনা করতে হবে? - হ্যাঁ, কিন্তু এটা যতটা সহজ মনে হচ্ছে তার চেয়েও সহজ। জাভাতে, প্রোগ্রাম রানটাইমে সমস্ত জিনিসই অবজেক্ট, এবং আপনি যখন প্রোগ্রামটি লেখেন, তখন আপনাকে অবজেক্ট ইন্টারঅ্যাকশনের বিভিন্ন উপায় বর্ণনা করা উচিত। বস্তুগুলি একে অপরের পদ্ধতিগুলিকে কল করে এবং তাদের কাছে প্রয়োজনীয় ডেটা প্রেরণ করে। - এটা স্পষ্ট নয়, কিন্তু প্রায় পরিষ্কার। - কিন্তু আপনি কিভাবে জানেন যে কোন পদ্ধতিতে কল করতে হবে এবং কোন পদ্ধতিতে আপনাকে পাস করতে হবে? - ক্লাসটি কিসের জন্য তৈরি করা হয়েছিল তা নির্দিষ্ট করার জন্য প্রতিটি ক্লাসের তার বিবরণ রয়েছে। প্রতিটি পদ্ধতির একইভাবে এটি কী করে এবং কী ডেটা পাঠাতে হবে তার বর্ণনা রয়েছে। ক্লাসটি ব্যবহার করার জন্য, আপনাকে এটি কী করে তা সাধারণভাবে জানতে হবে। এছাড়াও, আপনাকে এই ক্লাসের প্রতিটি পদ্ধতি ঠিক কী করে তা জানতে হবে। কিন্তু এটা কিভাবে করা হয় তা আপনাকে জানতে হবে না । এটা এক ধরনের জাদু. - হাম্ফ। তাই শোনাচ্ছে.   - এখানে, একটি ক্লাস কোড দেখুন যা একটি ফাইল অনুলিপি করে: পুরাতন স্তর 02 - 6- এটি এত সহজ নয়, তবে আমি ইতিমধ্যে ছবিটি পেয়েছি। - ঠিক আছে। পরে দেখা হবে, কুমির!

2 রিশা, চলক এবং আদিম প্রকার

- আরে তুমি, বিনামূল্যে শ্রম। - মানে, "হাই, অ্যামিগো"। আমি আপনাকে ভেরিয়েবলের অভ্যন্তরীণ কাঠামোর সাথে পরিচিত করতে চাই। আপনি ইতিমধ্যেই জানেন যে প্রতিটি ভেরিয়েবলের সাথে একটি মেমরি যুক্ত থাকে, যেখানে ভেরিয়েবলটি তার মান সংরক্ষণ করে। - হ্যাঁ। গতবার বলেছিলে। - ঠিক আছে। এটা আপনার মনে রাখা একটি ভাল জিনিস. তারপর আমি চালিয়ে যাব। - ক্লাস । যখন আমরা একটি প্রোগ্রামে একটি নতুন ক্লাস বর্ণনা করি, এর মানে হল যে আমরা একটি নতুন জটিল যৌগিক প্রকার ঘোষণা করি , কোন ডেটা হয় অন্য জটিল প্রকার বা আদিম প্রকার। পুরাতন স্তর 02 - 7- এটা এখনও একটি বিস্ময়ের জন্য পরিষ্কার. - যেহেতু বৃহৎ (জটিল) প্রকারগুলি অনেকগুলি ছোট (আদিম) নিয়ে গঠিত, তাই তাদের বস্তুগুলি প্রচুর মেমরি ব্যবহার করে। স্বাভাবিক আদিম টাইপ ভেরিয়েবলের চেয়ে বেশি। মাঝে মাঝে অনেক বেশি। জটিল ধরনের ভেরিয়েবলের বরাদ্দ অনেক সময় নেয় এবং প্রচুর পরিমাণে মেমরি অনুলিপি করতে হয়। এই কারণেই জটিল টাইপ ভেরিয়েবলগুলি বস্তুকে সঞ্চয় করে না, তবে একটি নিছক বস্তুর রেফারেন্স (এটি একটি চার-বাইটের ঠিকানা)। এটি অবজেক্ট ডেটা অ্যাক্সেস করার জন্য যথেষ্ট। JVM এর সাথে সম্পর্কিত সমস্ত অসুবিধা গ্রহণ করে। - আমি বুঝতে পারছি না। - আমরা ইতিমধ্যে আলোচনা করেছি যে ভেরিয়েবলটি একটি বাক্সের মতো। এটিতে 13 সংরক্ষণ করতে, আপনি কাগজের শীটে সংখ্যাটি লিখতে পারেন এবং এটি একটি বাক্সে রাখতে পারেন। - এখন কল্পনা করুন যে আপনাকে একটি বাক্সে (ভেরিয়েবল) একটু বড় কিছু সংরক্ষণ করতে হবে। উদাহরণস্বরূপ, একটি কুকুর, একটি গাড়ী, বা আপনার প্রতিবেশী জো. তাই সহজ করার জন্য আপনি একটি সহজ জিনিস করতে পারেন: কুকুরের পরিবর্তে কুকুরের ছবি, গাড়ির পরিবর্তে গাড়ির নম্বর প্লেট এবং জো-এর পরিবর্তে একটি কাগজের শীটে লেখা জো-এর ফোন নম্বর রাখুন৷ - এখন আমরা এক টুকরো কাগজ নিয়ে তাতে জো এর ফোন নম্বর লিখি। এটা একটা অবজেক্ট রেফারেন্স মত. আমরা যদি বাক্সের বাইরে একটি শীটে জো-র নম্বর লেখা থাকে, কপি তৈরি করি এবং কয়েকটি বাক্সে রাখি, তবে জো-র রেফারেন্স বাড়বে, তবে কেবল একজন জো থাকতে পারে। - এই ধরনের তথ্য সংরক্ষণের সুবিধা হল যেঅনেক রেফারেন্স এবং শুধুমাত্র একটি বস্তু হতে পারে । - এটা উত্তেজনাপূর্ণ. যাইহোক, আমি প্রায় বুঝতে পেরেছি। কেবলমাত্র আরও একটি প্রশ্নের উত্তর দিন: যদি আমি একটি জটিল টাইপ ভেরিয়েবলকে অন্য জটিল টাইপ ভেরিয়েবলে বরাদ্দ করি তাহলে কী হবে? - তাহলে এই দুটি ভেরিয়েবল একই ঠিকানা ধারণ করবে। এবং, তাই, যদি আপনি একটি জটিল প্রকারের ভেরিয়েবলে সংরক্ষিত ডেটা পরিবর্তন করেন, তবে অন্যটির ডেটাও পরিবর্তিত হবেকারণ আপনি জানেন , ভেরিয়েবলগুলি রেফারেন্স সংরক্ষণ করে শুধুমাত্র একটি বস্তু আছে । তবুও, অনেকগুলি ভেরিয়েবল থাকতে পারে যা বস্তুর রেফারেন্স সংরক্ষণ করে। - এবং কোন অবজেক্ট রেফারেন্স না থাকা অবস্থায় জটিল টাইপ ভেরিয়েবলে (রেফারেন্স/ক্লাস টাইপ) কী সংরক্ষণ করা হয়? সত্যিই কি এমন কিছু হতে পারে? - হ্যাঁ, আমিগো। তুমি আমার মুখ থেকে কথাগুলো বের করেছ। এটা হতে পারে. যদি রেফারেন্স (জটিল) টাইপ ভেরিয়েবলে কোন অবজেক্ট রেফারেন্স না থাকে তবে এটি null সংরক্ষণ করে , একটি বিশেষ «নাল রেফারেন্স»। প্রকৃতপক্ষে, এটি কেবল 0 এর সমান একটি বস্তুর ঠিকানা সংরক্ষণ করে। কিন্তু জাভা ভার্চুয়াল মেশিন কখনই শূন্য ঠিকানা দিয়ে অবজেক্ট তৈরি করে না, তাই এটি সর্বদা জানে যে যদি রেফারেন্স ভেরিয়েবল 0 হয় তবে সেখানে কোন অবজেক্ট নেই। পুরাতন স্তর 02 - 8আমি এটা ঠিক পেতে? ভেরিয়েবল দুটি প্রকারে বিভক্ত - আদিম এবং রেফারেন্স। একটি আদিম টাইপ ভেরিয়েবল একটি মান সঞ্চয় করে যখন একটি রেফারেন্স টাইপ ভেরিয়েবল একটি বস্তুর রেফারেন্স সংরক্ষণ করে। আদিম প্রকারগুলি হল int, char, বুলিয়ান এবং আরও কিছু। বাকিগুলি রেফারেন্স ভেরিয়েবল, তারা ক্লাস ব্যবহার করে গঠিত হয়। - এটা ঠিক, ছেলে.

3 এলি, কি বস্তু

পুরাতন স্তর 02 - 9- এখানে আবার আপনার প্রিয় শিক্ষক। যেহেতু আমরা দ্রুত এগিয়ে যাই, তাই আমি আপনাকে বলব যে বস্তুগুলি কী এবং কীভাবে সেগুলি মোকাবেলা করা যায়৷ - যেকোন অবজেক্ট তৈরি করতে হলে আপনাকে অবজেক্ট টাইপের নাম (ক্লাস) এবং তার আগে নতুন কীওয়ার্ড লিখতে হবে। বলুন আমাদের একটি ক্লাস ক্যাট আছে, তারপর: পুরাতন স্তর 02 - 10- আপনি যদি একটি অবজেক্ট তৈরি করেন এবং এটিকে [তার রেফারেন্স] কোনো পরিবর্তনশীলকে বরাদ্দ না করেন তবে কী হবে? - যদি আপনি এটি করেন, জাভা ভার্চুয়াল মেশিন বস্তুটি তৈরি করবে এবং অবিলম্বে এটিকে আবর্জনা (অব্যবহৃত বস্তু) ঘোষণা করবে। কিছুক্ষণ পরে, এটি আবর্জনা সংগ্রহের সময় সেই বস্তুটি মুছে ফেলবে। - যদি আমার আর প্রয়োজন না হয় তবে আমি কীভাবে বস্তুটিকে ধ্বংস করতে পারি? - তুমি পারবে না।একটি অবজেক্ট রেফারেন্স সংরক্ষণ করার জন্য কোন পরিবর্তনশীল না থাকলে, বস্তুটিকে আবর্জনা হিসাবে পতাকাঙ্কিত করা হবে এবং পরবর্তী আবর্জনা সংগ্রহের সময় JVM এটিকে ধ্বংস করবে। যতক্ষণ পর্যন্ত অন্তত একটি অবজেক্ট রেফারেন্স আছে, এটি লাইভ বলে বিবেচিত হবে এবং ধ্বংস করা হবে না। আপনি যখন বস্তুটিকে দ্রুত ধ্বংস করতে চান, তখন এর সমস্ত রেফারেন্স null এ সেট করুন, অর্থাৎ, সেই অবজেক্টের উল্লেখ করে এমন সমস্ত ভেরিয়েবলের জন্য একটি নাল মান নির্ধারণ করুন। - বুঝেছি. আগের লেকচারগুলোর পর এটা মোটেও কঠিন মনে হয় না। - ঠিক আছে, তাহলে আপনার দক্ষতা উন্নত করার জন্য এখানে কয়েকটি কাজ রয়েছে। এগুলো System.out এও আছে। কিন্তু পরে আরও কঠিন হতে যাচ্ছে। এবং আপনি কি ইস্পাত তৈরি করা হয় তা আমাদের দেখাতে পারে।
কাজ
1 একটি প্রোগ্রাম লিখুন যা প্রদর্শন করে: "ধাপে ধাপে এবং জিনিসটি হয়ে গেছে।"
2 একটি প্রোগ্রাম লিখুন যা 7 বার প্রদর্শন করে: "অসম্ভবকে করা এক ধরনের মজার।"
3 একটি প্রোগ্রাম লিখুন যা প্রদর্শন করে: "সর্বদা কিছু দরকারী শেখার ইচ্ছা।"

4 রিশা, ভেরিয়েবলের দৃশ্যমানতা।

- হাই, আমার প্রিয় ছাত্র. এখন আমি আপনাকে ভেরিয়েবলের দৃশ্যমানতা সম্পর্কে বলব । - কেন, অদৃশ্য ভেরিয়েবলও আছে? - না, ভেরিয়েবলগুলি কোডের জায়গায় দৃশ্যমান যেখানে সেই ভেরিয়েবলটি অ্যাক্সেস করা যেতে পারে। কিছু ভেরিয়েবল একটি প্রোগ্রামের যেকোনো জায়গা থেকে অ্যাক্সেস করা যেতে পারে, অন্যগুলি শুধুমাত্র তাদের ক্লাসের মধ্যে, এবং কিছু ভেরিয়েবল শুধুমাত্র একটি পদ্ধতিতে অ্যাক্সেস করা যেতে পারে। - উদাহরণস্বরূপ, আপনি ভেরিয়েবলটিকে ঘোষণা করার আগে উল্লেখ করতে পারবেন না। - এটা পরিস্কার. - এখানে কিছু উদাহরণ রয়েছে: পুরাতন স্তর 02 - 111 একটি পদ্ধতিতে ঘোষিত একটি ভেরিয়েবল বিদ্যমান / ঘোষণার শুরু থেকে পদ্ধতির শেষ পর্যন্ত দৃশ্যমান। 2 একটি কোড ব্লকে ঘোষিত একটি পরিবর্তনশীল এই কোড ব্লকের শেষ পর্যন্ত বিদ্যমান। 3 ভেরিয়েবল - পদ্ধতি আর্গুমেন্ট - পদ্ধতির সুযোগের মধ্যে যে কোন জায়গায় বিদ্যমান। 4 বর্গ / অবজেক্ট ভেরিয়েবল তাদের অবজেক্টের সমগ্র জীবনকালে বিদ্যমান। বিশেষ অ্যাক্সেস মডিফায়ার পাবলিক এবং প্রাইভেট অতিরিক্তভাবে তাদের দৃশ্যমানতা নিয়ন্ত্রণ করে। প্রোগ্রাম রানটাইমে 5 স্ট্যাটিক ক্লাস ভেরিয়েবল বিদ্যমান। অ্যাক্সেস মডিফায়ারগুলি তাদের দৃশ্যমানতাও নির্ধারণ করে। - আমি ছবি ভালোবাসি, সবকিছু জায়গায় পড়ে। - আপনার জন্য ভাল, আমিগো. সর্বদা জানতাম আপনি একজন স্মার্ট মানুষ। - আমি আপনাকে অ্যাক্সেস মডিফায়ার সম্পর্কেও বলব । এত ভয় পেয়ো না, এটা রকেট সায়েন্স নয়। এগুলি আপনি দেখতে পাবলিক এবং প্রাইভেট শব্দগুলি । - আমি ভয় পাচ্ছি না, এখানে শুধু ঠান্ডা। - হ্যা অবশ্যই. আপনি অন্যান্য ক্লাস থেকে আপনার ক্লাসে পদ্ধতি এবং ভেরিয়েবলের অ্যাক্সেস (দৃশ্যমানতা) নিয়ন্ত্রণ করতে পারেন। প্রতিটি পদ্ধতি বা পরিবর্তনশীলের জন্য, আপনি শুধুমাত্র একটি অ্যাক্সেস মডিফায়ার নির্দিষ্ট করতে পারেন। 1 মডিফায়ার পাবলিক একটি পরিবর্তনশীল, পদ্ধতি বা ক্লাস একটি পরিবর্তনকারী পাবলিক সহ পতাকাঙ্কিত প্রোগ্রামের যে কোনও জায়গা থেকে অ্যাক্সেস করা যেতে পারে। এটি সীমাবদ্ধতা ছাড়াই উন্মুক্ততার সর্বোচ্চ ডিগ্রি। 2 মডিফায়ার প্রাইভেট একটি পরিবর্তনশীল বা পদ্ধতি একটি মডিফায়ার প্রাইভেট সহ পতাকাঙ্কিত শুধুমাত্র সেই ক্লাস থেকে অ্যাক্সেস করা যেতে পারে যেখানে এটি ঘোষণা করা হয়েছে। অন্যান্য সমস্ত শ্রেণীর জন্য, একটি পতাকাঙ্কিত পদ্ধতি বা পরিবর্তনশীল অদৃশ্য, যেন তাদের অস্তিত্ব নেই। এটি বন্ধের সর্বোচ্চ ডিগ্রি (শুধুমাত্র একই ক্লাস থেকে দৃশ্যমান)। 3 সংশোধক ডিফল্ট যদি কোনো পরিবর্তনকারী কোনো পরিবর্তনশীল বা পদ্ধতিকে পতাকাঙ্কিত না করে, তাহলে এটি একটি সংশোধক ডিফল্ট হিসেবে বিবেচিত হয়। সেই পরিবর্তনকারীর সাথে ভেরিয়েবল বা পদ্ধতিগুলি (অর্থাৎ, কোনওটি ছাড়াই) প্যাকেজের সমস্ত শ্রেণিতে দৃশ্যমান যা তারা ঘোষণা করেছে৷ শুধুমাত্র একই প্যাকেজে৷ এই সংশোধকটিকে কখনও কখনও প্যাকেজ বলা হয় যাতে বোঝা যায় যে সম্পূর্ণ প্যাকেজের জন্য ভেরিয়েবল এবং পদ্ধতিতে অ্যাক্সেস সম্ভব, যেটি তাদের ক্লাস ব্যাখ্যা ট্যাবের অন্তর্গত: পুরাতন স্তর 02 - 12

5 দিয়েগো, একগুচ্ছ ভেরিয়েবল তৈরি করার জন্য কাজ

- ওহে বন্ধু. যদি প্রয়োজন হয়, আমি আপনার জন্য চুক্তির একটি কপি রাখব। সেই ছিমছাম সস্তাস্কেট রিশা আনন্দিতভাবে অজানা। আপনি আমার চুক্তির পরিমাণ দেখা উচিত ছিল. হে হে. - ভাল হয়েছে, দিয়েগো. আমি মনে করি আপনি আমাকে বাস্তব দরকারী জিনিস শেখান. - অবশ্যই, আমিগো। ব্যথা ছাড়া কোন লাভ নেই. কিন্তু তবুও কেউ লাভ ছাড়াই কষ্ট ভোগ করে। - চলো ভালো করে পড়াশোনায় হাত বাড়াই। এখন আমি আপনাকে দেখাব কিভাবে বিভিন্ন উপায়ে একগুচ্ছ ভেরিয়েবল তৈরি করা যায়: পুরাতন স্তর 02 - 13- বাহ, দিয়েগো! তুমি ভীষন চৌকষ. - হে হে! ধন্যবাদ, আমিগো। - আমি মনে করি আপনি ইতিমধ্যে আমার কাজ মিস করেছেন. তাই এখানে তাদের কিছু. সেই মানুষ, এলিয়েনরা আমাদের রোবো-লাইফ সম্পর্কে কিছুই জানে না। আমি ছাড়া আর কে শিখাবে তোমাকে সেটা?
কাজ
1 একটি প্রোগ্রাম লিখুন যা 3 বার প্রদর্শন করে: "অনেক মানুষ বেঁচে আছে শুধুমাত্র কারণ তাদের গুলি করা অবৈধ।"
2 একটি প্রোগ্রাম লিখুন যা প্রদর্শন করে: "আমি যদি আপনার মতামত চাই, আমি আপনাকে প্রয়োজনীয় ফর্মগুলি পূরণ করতে বলব।"
3 একটি প্রোগ্রাম লিখুন যা 20 বার প্রদর্শন করে: "আমি যা বলেছি তার বেশিরভাগই আমি কখনও বলিনি।"

6 এলি, রেফারেন্স দ্বারা পাসিং. রেফারেন্স ভেরিয়েবল

- আরে, আমিগো, এটা আবার আমি, এলি। দুঃখিত আমি সর্বদা এটি বলি, কিন্তু 31 শতকে পৃথিবীতে জিনিসগুলি যেভাবে করা হয় ঠিক তেমনই। আমি আপনাকে রেফারেন্স ভেরিয়েবলের বৈশিষ্ট্য এবং কীভাবে রেফারেন্সিয়াল আর্গুমেন্টগুলি ফাংশনে (পদ্ধতি) পাস করতে হয় তা ব্যাখ্যা করব। - আমি প্রস্তুত. - তাহলে, রেফারেন্স ভেরিয়েবল হল আদিম ছাড়া সব ধরনের ভেরিয়েবল। এই ভেরিয়েবলে শুধু অবজেক্টের ঠিকানা থাকে (অবজেক্ট রেফারেন্স)। - আদিম প্রকারের ভেরিয়েবলগুলি একটি মান এবং প্রকার সংরক্ষণ করে এবং ক্লাস ভেরিয়েবলগুলি একই শ্রেণীর, ভাল বা শূন্যের বস্তুর রেফারেন্স সংরক্ষণ করে। আমি কি সঠিক? - একদম। - তাই, একটি রেফারেন্স কি? - অবজেক্ট এবং এর রেফারেন্স লিঙ্ক করা হয়েছে, আসুন বলি, একজন মানুষ এবং তার ফোন নম্বরের মতো। একটি ফোন নম্বর কোনও পুরুষ নয়, তবে এটি কোনও লোককে তার কাছে কিছু জিজ্ঞাসা করতে, গাইড করতে বা নির্দেশ দেওয়ার জন্য কল করতে ব্যবহার করা যেতে পারে। একটি রেফারেন্স একটি বস্তুর সাথে যোগাযোগ করতেও ব্যবহৃত হয়। সমস্ত বস্তু রেফারেন্সের মাধ্যমে একে অপরের সাথে যোগাযোগ করে। - এটা যেন মানুষ একে অপরের সাথে ফোনে যোগাযোগ করে? - সেটা ঠিক. আপনি যখন একটি আদিম বস্তু বরাদ্দ করেন, তখন এর মান অনুলিপি করা হয় (ডুপ্লিকেটেড)। যখন আপনি একটি রেফারেন্স ভেরিয়েবল বরাদ্দ করেন, শুধুমাত্র বস্তুর ঠিকানা (ফোন নম্বর) অনুলিপি করা হয়, বস্তুটি নিজেই নয়। - ওকে, বুঝেছি। - একটি রেফারেন্স আরেকটি সুবিধা দেয়: আপনি যেকোন পদ্ধতিতে একটি অবজেক্টের রেফারেন্স পাস করতে পারেন এবং এই পদ্ধতিটি আমাদের অবজেক্টকে এর পদ্ধতিগুলি কল করে এবং অবজেক্টের মধ্যে ডেটা অ্যাক্সেস করার মাধ্যমে এর রেফারেন্স ব্যবহার করে পরিবর্তন (পরিবর্তন) করতে সক্ষম হবে। - a & bপুরাতন স্তর 02 - 14 ভেরিয়েবলের মানগুলি সোয়াপ পদ্ধতির ভিতরে বিনিময় করা হয় । আপনি যখন অদলবদল পদ্ধতিতে কল করেন, তখন a & b ভেরিয়েবল m & n মানের কপি পায় । অতএব, আপনি যখন a & b এর মান পরিবর্তন করেন তখন m & n ভেরিয়েবলের মান একই থাকে । এটি ডান কলামের কোডে স্পষ্টভাবে দৃশ্যমান। - সত্যি বলতে, আমি এর কিছুই পাইনি। আমি আরো একটি দম্পতি উদাহরণ থাকতে পারে? - রেফারেন্স টাইপের ক্ষেত্রে, আপনি এটি করতে পারেন: পুরাতন স্তর 02 - 15- a এবং b ভেরিয়েবলগুলিকে এমা এবং এলিস এর জন্য রেফারেন্স বরাদ্দ করা হয়, যথাক্রমে, a এবং b এর মানগুলি emma এবং alice বস্তুর মধ্যে পরিবর্তিত হয়। - তাই অন্য ক্লাসের মধ্যেও ক্লাস ঘোষণা করা সম্ভব? কি দারুন! - বাকি জন্য, এটা পরিষ্কার না. - সব একই সময়ে নয়।

7 এলি, ফাংশন কল, রিটার্ন মান

-আচ্ছা তাহলে ঘুরে আসি। আমরা পদ্ধতি কল কিভাবে কাজ করে তা নিয়ে কথা বলব, এবং তারপর আপনি আবার আগের লেকচারের দিকে নজর দেওয়ার চেষ্টা করুন, ঠিক আছে? -ডিল ! - আচ্ছা, তারপর আমি আপনাকে ফাংশন/পদ্ধতি কল এবং ফেরত দেওয়া মান সম্পর্কে বলব। - কমান্ডগুলিকে ফাংশনগুলির মধ্যে গোষ্ঠীভুক্ত করা হয়, তাই আপনি সেগুলিকে একটি একক ব্লকে চালাতে পারেন, একটি জটিল কমান্ড হিসাবে। এটি করার জন্য, আপনাকে ফাংশনের নাম লিখতে হবে (পদ্ধতি) এবং তারপর নাম অনুসরণ করে বন্ধনীতে মান এবং পরামিতিগুলি উল্লেখ করতে হবে। পুরাতন স্তর 02 - 16- উপরের উদাহরণে, আমরা 4 বার পাস করা স্ট্রিং প্রদর্শন করে একটি ফাংশন লিখেছি। তারপরে আমরা লাইন 6-এ ফাংশন print4 কে বলেছিলাম। - যখন লাইন 6 এর এক্সিকিউশন আসে, তখন প্রোগ্রামটি 9 লাইনে চলে যাবে এবং s ভেরিয়েবলের একটি মান বরাদ্দ করা হবে "আমি এটিকে সরাতে চাই, এটি সরান।" - তারপর লাইন 11-14 কার্যকর করা হবে, এবং অবশেষে, ফাংশনটি সম্পূর্ণ হবে এবং প্রোগ্রামটি 7 লাইন দিয়ে চলতে থাকবে। - গোটচা। - আপনি ফাংশনে শুধুমাত্র আর্গুমেন্ট (প্যারামিটার) পাস করতে পারবেন না, কিন্তু ফাংশনের অপারেশনের ফলাফল (মান)ও দিতে পারবেন। এটি কীওয়ার্ড রিটার্ন ব্যবহার করে করা হয়। এটি দেখতে কেমন তা এখানে: পুরাতন স্তর 02 - 17- আমি মনে করি আমি এটি ধরছি। এটি বাম এবং ডানদিকে একই কোড। বাম দিকে, এটি শুধুমাত্র একটি পৃথক ফাংশন হিসাবে উপস্থাপন করা হয়েছে। - ফাংশনটি একটি মান গণনা করে এবং যারা এটিকে রিটার্ন কমান্ড ব্যবহার করে কল করেছে তাদের কাছে এটি প্রেরণ করে। অন্তত আমি তাই মনে করি. - মূলত, এটা সত্য. - এবং অকার্যকর টাইপ কি? - কিছু ফাংশন শুধু কিছু করে, কিন্তু আমাদের মেথড প্রধানের মতো কোনো মান গণনা করে না এবং ফেরত দেয় না() এই ফাংশনগুলির জন্য এটি একটি বিশেষ ফলাফল টাইপ void (একটি খালি টাইপ) তৈরি করা হয়েছিল। - কেন আমরা শুধু কিছুই নির্দিষ্ট করতে পারি না, যদি একটি ফাংশন কিছু ফেরত না দেয়? - শুধু চিন্তা করুন কিভাবে প্রতিটি ভেরিয়েবল ঘোষণা করা হয়: প্রকার এবং নাম। টাইপ, নাম এবং বন্ধনী সহ একটি ফাংশন ঘোষণা করা হয়। বন্ধনী দ্বারা অনুসরণ করা ফাংশন নাম একটি ফাংশন কল! - সুতরাং যেগুলি একটি মান ফেরত দেয় এবং একটি মান ফেরত দেয় না এমন ফাংশনগুলিকে দুটি বিভাগে ভাগ করার চেয়ে "খালি টাইপ" নিয়ে আসা সহজ ছিল? -ঠিক! আপনি একটি দ্রুত চিন্তাশীল, আমার ছেলে. - এবং আমি কিভাবে একটি খালি টাইপ ফেরত দিতে পারি? - তুমি পারবে না। এটি কীভাবে কাজ করে তা এখানে: যখন JVM একটি রিটার্ন কার্যকর করেকমান্ড, এটি রিটার্ন শব্দের ডানদিকে অভিব্যক্তির মান গণনা করে, সেই মানটিকে একটি বিশেষ মেমরি এলাকায় সংরক্ষণ করে এবং অবিলম্বে ফাংশন থেকে প্রস্থান করেযেখানে ফাংশন কল করা হয়েছিল সেখানে একটি ফাংশন কলের ফলাফল হিসাবে এটি সংরক্ষিত মান ব্যবহার করে। আপনি উপরের উদাহরণে এটি দেখতে পারেন। - আপনি কি সেই জায়গা বলতে চাচ্ছেন যেখানে int m = min(a,b) m = m2 তে রূপান্তরিত হয়েছে ? - হ্যাঁ. ফাংশন কলের পরে সবকিছু এমনভাবে কাজ করতে থাকে যেন ফাংশনের পরিবর্তে তার ফলাফল একই জায়গায় লেখা থাকে। সেই বাক্যটি আবার পড়ুন এবং শেষ উদাহরণের কোডটি দেখুন। - এটা সহজ মনে হয়, কিন্তু বাস্তবে এটা কঠিন। আমি শুধু সামান্য বিট পেয়েছি, যে সব. - ঠিক আছে.প্রথম চেষ্টাতেই আপনি বুঝতে পারবেন যা আপনি ইতিমধ্যে জানেন। যত বেশি আপনি আপনার জন্য একটি নতুন এলাকায় পেয়েছেন, ততই এটি অস্পষ্ট। এবং ফলাফল আরও ভয়ঙ্কর হবে। সময় গড়ানোর সাথে সাথে সবকিছু পরিষ্কার হয়ে যায়। - ঠিক আছে, যদি তাই হয়, তাহলে চলুন চালিয়ে যান.

8 দিয়েগো

- আরে, আমিগো। এখানে আপনার জন্য কয়েকটি কাজ রয়েছে। এখন আপনি System.out এর চেয়ে বেশি কিছু করতে সক্ষম। সাধ্যমত চেষ্টা কর! তোমার উপর আমার বিশ্বাস আছে!
কাজ
1 ন্যূনতম দুটি সংখ্যা
এমন একটি ফাংশন লিখুন যা ন্যূনতম দুটি সংখ্যা প্রদান করে।
2 সর্বাধিক দুটি সংখ্যা
এমন একটি ফাংশন লিখুন যা সর্বাধিক দুটি সংখ্যা প্রদান করে।
3 ন্যূনতম তিনটি সংখ্যা
এমন একটি ফাংশন লিখুন যা ন্যূনতম তিনটি সংখ্যা প্রদান করে।
4 ন্যূনতম চারটি সংখ্যা
এমন একটি ফাংশন লিখুন যা ন্যূনতম চারটি সংখ্যা প্রদান করে।
ফাংশন min(a,b,c,d) ব্যবহার করতে হবে (কল) ফাংশন min(a, b)
5 স্ট্রিং ডুপ্লিকেশন
একটি ফাংশন লিখুন যা পাস করা স্ট্রিংয়ের তিনগুণ প্রদর্শন করে। প্রতিটি স্ট্রিং একটি নতুন লাইনে থাকা উচিত।
6 পাঠ্য প্রদর্শন
একটি ফাংশন লিখুন যা একই লাইনে তিনবার পাস করা স্ট্রিং (শব্দ) প্রদর্শন করে।
শব্দগুলিকে একটি স্থান দ্বারা পৃথক করা আবশ্যক এবং একটিতে একত্রিত হতে হবে না৷

9 দিয়েগো, পুরো ক্লাসের নাম

পুরাতন স্তর 02 - 18- আরে, আমিগো, আমি আপনাকে পুরো ক্লাসের নাম বলতে চাই। - আপনি ইতিমধ্যেই জানেন যে ক্লাসগুলি প্যাকেজে রয়েছে। সুতরাং, একটি পূর্ণ শ্রেণীর নাম এমন একটি নাম যা পয়েন্ট দ্বারা পৃথক করা সমস্ত প্যাকেজ এবং একটি শ্রেণির নাম কভার করে। উদাহরণ: পুরাতন স্তর 02 - 19 - আপনার নিজের কোডে ক্লাস ব্যবহার করতে আপনাকে এর পুরো নাম উল্লেখ করতে হবে। যাইহোক, আপনি একটি ছোট নাম ব্যবহার করতে পারেন - শুধুমাত্র একটি শ্রেণীর নাম। এটি করার জন্য আপনি একটি ক্লাস ঘোষণা করার আগে আমদানি শব্দটি যোগ করে এর নাম উল্লেখ করে এই শ্রেণীর "আমদানি" করতে হবে। java.lang (স্ট্রিং, ইন্টিজার,...) প্যাকেজের ক্লাস ডিফল্টরূপে আমদানি করা হয়। আপনি তাদের নির্দিষ্ট করতে হবে না. উদাহরণ: পুরাতন স্তর 02 - 20- সংক্ষিপ্ত নামের ব্যবহারের একটি উদাহরণ: পুরাতন স্তর 02 - 21- আমি এটা পেয়েছি। - ঠিক আছে।

10 অধ্যাপক, ক্লাস এবং অবজেক্ট সম্পর্কে বক্তৃতা

পুরাতন স্তর 02 - 22- আরে, আমিগো। আশা করি আজকে এলি আর রিশা যা বলেছে সবই বুঝতে পেরেছেন। শুধু নিরাপদ থাকার জন্য, যেমন আমি প্রতিশ্রুতি দিয়েছিলাম, এখানে আরও উপাদানের লিঙ্ক রয়েছে: 1 আমার নোট 2 জাভাতে চিন্তা করা। যে দুর্দান্ত বইটি আমি ইতিমধ্যেই আপনাকে বলেছি। এটা পড়লে খুব ভালো হবে। - আমি আশা করি আপনি এটি দেখার জন্য সময় বের করবেন। - আহেম। অবশ্যই আমি করব!

11 জুলিও

- আরে, আমিগো! আশা করি আপনি কিছু কঠিন এবং ক্লান্তিকর বিশ্রামের জন্য আছেন?

মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION