From 0e1d0a975b78eeb25c7700916c4e52e403fa0784 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Fri, 19 Sep 2014 03:55:42 +0600 Subject: [PATCH 001/150] Updated 2.md --- 2.md | 52 +++++++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/2.md b/2.md index 5b4cf47..216e7f3 100644 --- a/2.md +++ b/2.md @@ -5,25 +5,26 @@ * ক্লাস * ফিল্ডস * মেথডস -* কন্সট্রাকটরস -* এক্সেস মোডিফায়ার -* ইন্টারফেসেস -* কোড ব্লকস -* কমেন্টস -* নেমিং কনভেনশান -* সারসংক্ষেপ +* কন্সট্রাকটরস !! +* এক্সেস মোডিফায়ার !! +* ইন্টারফেসেস !! +* কোড ব্লকস !! +* কমেন্টস !! +* নেমিং কনভেনশান !! +* সারসংক্ষেপ !! এই চ্যাপ্টারে আমি একটি জাভা প্রোগ্রাম এর মৌলিক কিছু ওভারভিউ দেয়ার চেষ্টা করবো। তবে শুরুতে সুবিধার্থে আমাদের কিছু টার্মস সম্পর্কে জেনে নেওয়া জরুরি। -* অবজেক্ট - + **অবজেক্ট** + যেহেতু জাভা একটি অবজেক্ট ওরিয়েন্টেড ল্যাংগুয়েজ, সুতরাং শুরুতে জানতে হবে অবজেক্ট কি। অবজেক্ট এর মানে আমারা যা জানি, সেটা হচ্ছে আমাদের জড়জগতের কোন বস্তু, যাকে ঠিক স্পর্শ করা যায়। তবে যেহেতু আমরা কল্পনা করতে পারি, আমরা অনেক কিছু ধরে নিতে পারি, মনে করুন - একটি বাইসাইকেল। বাইসাইকেল বলতেই আমদের মাথায় একটি চিত্র চলে আসে। আমরা এর বৈশিষ্টগুলো জানি, যেমন এটির দুইটি চাকা থাকে, একটি বসার সিট থাকে, এর ব্রেক আছে। তারপর এও জানি যে এটি কি করে, অর্থাৎ সাইক্যাল এর কাজ গুলোও আমরা জানি- যেমন এটি চলে। দেখা যাচ্ছে যে আমরা একটি বাইসাইকেল এর অবস্থা ও আচরণ সম্পর্কে জানি। এই অবস্থা ও আচরণ গুলো নিয়েই বাইসাইকেল একটি অবজেক্ট। + আমরা যদি আমাদের কল্পনাটুকু আরেকটু বাড়িয়ে নিয়ে বলি, সাইক্যাল হচ্ছে একটি সফটওয়্যার কম্পোনেন্ট যা কিনা কম্পিউটারে চলে, আমার মনে হয় কারো আপত্তি থাকার কথা নয়। যেহেতু আমারা প্রোগ্রামিং নিয়ে আলোচনা করছি, সুতরাং এভাবে বলি, আমরা যদি একটা প্রোগ্রাম লিখি, সেই প্রোগ্রামের ছোট্ট একটি অংশ যার আমাদের এই বাইসাইকেল এর মতো বৈশিষ্ট্য থাকে, এবং একটি কিছু কাজ সম্পাদন করতে পারে, তাহলে সেই ছোট্ট অংশটিকে অবজেক্ট বলতে পারি। -* ক্লাস +**ক্লাস** মনে করি আমরা একটা বাড়ি বানাতে চাই। প্রথমে আমরা চিন্তা করি বাড়িটা আসলে কিভাবে বানাবো। আমরা জায়গা নির্বাচন করি। তারপর চিন্তা করি বাড়িটি কত-তলা হবে, কয়টা এপার্টমেন্ট হবে, এপার্টমেন্ট গুলো কত স্কয়ারফিটের হবে। তারপর চিন্তা করি, একটা এপার্টমেন্ট এ কয়টি রুম হবে, ড্রয়িং রুমের দৈর্ঘ্য কত হবে, কয়টা বাথ থাকবে, বেলকনি কোথায় থাকবে, রান্না ঘর কোথায় হবে ইত্যাদি ইত্যাদি। আচ্ছা এগুলো ঠিক হয়ে গেল, এখন আমরা চিন্তা করবো আরও জটিল কাজ নিয়ে। ওয়্যারিং নিয়ে, প্রত্যেক রুমে কয়টা পয়েন্ট থাকবে, পানির লাইন কিভাবে নেব। তারপরে বাথরুমে কি ধরণের টাইল ব্যবহার করবো, ফ্লোরে কোন গুলো। @@ -35,19 +36,19 @@ আমরা যারা সি কিংবা অন্য কোন প্রোগ্রামিং ল্যাংগুয়েজ আগে থেকেই জানি, একটি প্রোগ্রামে দুটি জিনিস অবশ্যই কমন থাকে - সেগুলো হলো - ফাংশান এবং ডেটা । - একটি জাভা প্রোগ্রাম লিখতে হলে আমাদেরকে অবশ্যএই একটি ফাইল তৈরি করতে হবে যার এক্সটেনশন হবে .java. উদাহরণসরূপ- HelloWorld.java এবার আমরা লক্ষ্য করি একটি জাভা প্রোগ্রামে কি কি থাকে- -প্যাকেজ ডিক্লারেশন -ইম্পোর্ট স্টেটমেন্টস -টাইপ ডিক্লারেশন -ফিল্ডস -মেথডস +- প্যাকেজ ডিক্লারেশন +- ইম্পোর্ট স্টেটমেন্টস +- টাইপ ডিক্লারেশন + - ফিল্ডস + - মেথডস উপরের নামগুলো নিয়ে ধন্দ লাগলে সমস্যা নেই, এক্ষণি সেগুলো নিয়ে আলোচনা করছি, তবে তার আগে একটি জাভা প্রোগ্রাম দেখে নিই। - + + ```java package bd.com.howtocode.java.tutotorial.syntax; import java.util.HashMap; @@ -58,12 +59,13 @@ public static void main(String[] args) { } } - - -এই কোডটির শুরুতেই আছে প্যাকেজ ডিক্লারেশন। আমরা আমাদের কম্পউটারে নানা ধরণের ফাইল গুলো বিভিন্ন ফোল্ডারে সাজিয়ে রাখি। যেমন- মুভি ফোল্ডারে হয়তো আমরা শুধুই মুভি রাখি, সেখানে অন্য ফাইল রাখি না। আবার মুভি ফোল্ডারে এর মধ্যে আরো সাব-ফোল্ডার তৈরি করি আরো আলাদা করার জন্যে, যেমন – বাংলা মুভি, ইংরেজি মুভি ইত্যাদি। জাভাতে প্যাকেজ বলতে এই ধারণটিই বুঝায়। একটি জাভা প্রোগ্রামিং ভাষায় লেখা সফ্টওয়্যার এ শত শত বা হাজার হাজার পৃথক ক্লাস থাকতে পারে। এজন্যে প্যাকেজ ডিক্লারেশন এর মাধ্যমে আমরা একি রকম ক্লাস গুলো একটি প্যাকেজের মধ্যে আলাদা করে রাখি। +``` + +এই কোডটির শুরুতেই আছে প্যাকেজ ডিক্লারেশন। আমরা আমাদের কম্পিউটারে নানা ধরণের ফাইল বিভিন্ন ফোল্ডারে সাজিয়ে রাখি। যেমন- মুভি ফোল্ডারে হয়তো আমরা শুধুই মুভি রাখি, সেখানে অন্য ফাইল রাখি না। আবার মুভি ফোল্ডারে এর মধ্যে আরো সাব-ফোল্ডার তৈরি করি আরো আলাদা করার জন্যে, যেমন – বাংলা মুভি, ইংরেজি মুভি ইত্যাদি। জাভাতে প্যাকেজ বলতে এই ধারণটিই বুঝায়। একটি জাভা প্রোগ্রামিং ভাষায় লেখা সফ্টওয়্যার এ শত শত বা হাজার হাজার পৃথক ক্লাস থাকতে পারে। এজন্যে প্যাকেজ ডিক্লারেশন এর মাধ্যমে আমরা একি রকম ক্লাস গুলো একটি প্যাকেজের মধ্যে আলাদা করে রাখি। উদাহরণসরূপ এখানে প্যাকেজ স্ট্রাকচার এর একটি স্ক্রিনশট দেওয়া হল- + ![package declamation](images/package_structure.png) প্যাকেজ নাম গুলােকে লোয়ার কেস অক্ষরে-এ লিখতে হয়। @@ -101,7 +103,7 @@ আমরা যদি নিচের প্রোগ্রমটি রান করি- - + ```java package bd.com.howtocode.java.tutotorial.syntax; public class HelloWorld { @@ -115,7 +117,7 @@ System.out.println("Hello, world!"); } } - +``` তাহলে কনসলে নিচের লাইন গুলো প্রিন্ট হবে- @@ -126,7 +128,9 @@ -অনুশীলন: নিচের প্যটার্নগুলো প্রিন্ট করতে চেষ্টা করুণ- +**অনুশীলন:** + +নিচের প্যটার্নগুলো প্রিন্ট করতে চেষ্টা করুণ- * * * * * * * * * * * * * * * * * * * * * * * * @@ -136,3 +140,5 @@ (a) (b) (c) +চলবে ...... + From 76fbdaf36504b53c3a9ef1cba8c0225dcb57484f Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Fri, 19 Sep 2014 04:00:52 +0600 Subject: [PATCH 002/150] Updated 2.md --- 2.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/2.md b/2.md index 216e7f3..55f7223 100644 --- a/2.md +++ b/2.md @@ -103,7 +103,8 @@ আমরা যদি নিচের প্রোগ্রমটি রান করি- - ```java + + ```java package bd.com.howtocode.java.tutotorial.syntax; public class HelloWorld { @@ -132,13 +133,13 @@ নিচের প্যটার্নগুলো প্রিন্ট করতে চেষ্টা করুণ- - * * * * * * * * * * * * * * * - * * * * * * * * * - * * * * * * * * * - * * * * * * * * * - * * * * * * * * * * * - (a) (b) (c) - - + * * * * * * * * * * * * * * * + * * * * * * * * * + * * * * * * * * * + * * * * * * * * * + * * * * * * * * * * * + (a) (b) (c) + + চলবে ...... From 45d612ad9eb5707d065854b4a24a1bff977acb82 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Fri, 19 Sep 2014 04:02:09 +0600 Subject: [PATCH 003/150] Updated 1.md --- 1.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/1.md b/1.md index aa4bafe..64aca13 100644 --- a/1.md +++ b/1.md @@ -134,7 +134,7 @@ তবে এই টিউটোরিয়ালে আমরা Eclipse ব্যবহার করবো। তো চলুন- এবার তাহলে আমাদের প্রথম Hello world প্রোগ্রামটি লিখে ফেলি। - + ```java package bd.com.howtocode.java.helloworld; public class HelloWorld { @@ -143,5 +143,6 @@ System.out.println("Hello, world!"); } } +``` ![hello world program](images/hello-world-java.gif) \ No newline at end of file From 7953224f11c6cd4e861b121ec2391b5171dc1a62 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Fri, 19 Sep 2014 04:02:40 +0600 Subject: [PATCH 004/150] Updated 2.md --- 2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/2.md b/2.md index 55f7223..b0a344c 100644 --- a/2.md +++ b/2.md @@ -141,5 +141,5 @@ (a) (b) (c) -চলবে ...... +## চলবে ...... From 93160d650e36f7ad2f2b49fea5dac991998e2349 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sat, 20 Sep 2014 05:00:41 +0600 Subject: [PATCH 005/150] Updated 2.md --- 2.md | 169 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 160 insertions(+), 9 deletions(-) diff --git a/2.md b/2.md index b0a344c..779b218 100644 --- a/2.md +++ b/2.md @@ -5,14 +5,8 @@ * ক্লাস * ফিল্ডস * মেথডস -* কন্সট্রাকটরস !! -* এক্সেস মোডিফায়ার !! -* ইন্টারফেসেস !! -* কোড ব্লকস !! -* কমেন্টস !! -* নেমিং কনভেনশান !! -* সারসংক্ষেপ !! - +* কন্সট্রাকটরস +* কমেন্টস এই চ্যাপ্টারে আমি একটি জাভা প্রোগ্রাম এর মৌলিক কিছু ওভারভিউ দেয়ার চেষ্টা করবো। তবে শুরুতে সুবিধার্থে আমাদের কিছু টার্মস সম্পর্কে জেনে নেওয়া জরুরি। @@ -128,6 +122,164 @@ world!Hello, world! +আমরা ইতিমধ্যে জানি ক্লাস কি- তাহলে এবার একটি ক্লাস লিখে ফেলা যাক- + + ```java + package bd.com.howtocode.java.tutotorial.syntax; + + /** + * @author Bazlur Rahman Rokon + * @since 9/20/14. + */ + public class Bicycle { + int cadence = 0; + int speed = 0; + int gear = 1; + + void changeCadence(int newValue) { + cadence = newValue; + } + + void changeGear(int newValue) { + gear = newValue; + } + + void speedUp(int increment) { + speed = speed + increment; + } + + void applyBrakes(int decrement) { + speed = speed - decrement; + } + + void printStates() { + System.out.println("cadence:" + + cadence + " speed:" + + speed + " gear:" + gear); + } + } +``` + +আমরা ক্লাস এবং অবজেক্ট কি জানি, কিন্তু কিভাবে ক্লাস থেকে অবজেক্ট তৈরি করতে হয় সেটি এবার দেখা যাক- + + ```java + package bd.com.howtocode.java.tutotorial.syntax; + + /** + * @author Bazlur Rahman Rokon + * @since 9/20/14. + */ + + public class BicycleDemo { + public static void main(String[] args) { + // Create two different + // Bicycle objects + + Bicycle bike1 = new Bicycle(); + Bicycle bike2 = new Bicycle(); + + // Invoke methods on + // those objects + bike1.changeCadence(50); + bike1.speedUp(10); + bike1.changeGear(2); + bike1.printStates(); + + bike2.changeCadence(50); + bike2.speedUp(10); + bike2.changeGear(2); + bike2.changeCadence(40); + bike2.speedUp(10); + bike2.changeGear(3); + bike2.printStates(); + } + } +``` +আমরা জানি যে জাভা প্রোগ্রাম চালু করতে হলে একটি মেইন মেথড দরকার হয়। উপরের প্রোগ্রামটিতে একটি মেইন মেথড আছে। এবং এর ভেতরে শুরুতে আমরা দুইটি অবজেক্ট তৈরি করেছি। + + Bicycle bike1 = new Bicycle(); + Bicycle bike2 = new Bicycle(); + +জাভাতে অবজক্ট তৈরি করা খুব সহজ। এর জন্যে আমাদের তিনটি স্টেপ দরকার হয়- + +১. ডিক্লারেশন +২. ইনসটেনশিয়েশান +৩. ইনিশিয়ালাইজেশান + + +**Bicycle bike1** = new Bicycle(); +‌‌‌‌‌‌ + +উপরের বোল্ড অক্ষরে লেখাটুকু হচ্ছে ডিক্লারেশন, তারপর সমান চিহ্ন এর পর new কিওয়ার্ড পর্যন্ত হচ্ছে ইনসটেনশিয়েশান এবং এর পরের অংশটুকুকে ইনিশিয়ালাইজেশান বলা হয়। ইনিশিয়ালাইজেশান এর জন্যে আমাদের ক্লাসটির কনস্ট্রাকটরকে কল করতে হয়। কনস্ট্রাকটর নিয়ে একটু পরেই কথা বলছি। + +এখানে ডিক্লারেশন টাইপ ডিক্লারেশন এর মতোই। ভ্যারিয়বল চ্যাপ্টারে আমরা আরো ডিটেইলস দেখবো। + +তারপর অবজেক্টটি ধরে ডট অপারেটর ব্যবহার করে সেই ক্লাসের মেথড গুলো কল করা হয়ছে। +‌‌‌ +এই প্রোগ্রামটি রান করলে আউটপুট আসবে- + + cadence:50 speed:10 gear:2 + cadence:40 speed:20 gear:3 + + +** কনস্ট্রাকটর ** + +কনস্ট্রাকটর অন্যান্য মেথড বা ফাংশনের মতই একটি মেথড বা ফাংশনে। তবে এটির কোন রিটার্ন টাইপ নেই। একটি ক্লাসকে একটি অবজেক্ট-এ তৈরি করতে যে প্রয়োজনীয় কাজ গুলো করতে হয়, কনস্ট্রাকটর সেই কাজ গুলো করে থাকে। তবে মজার ব্যপার হচ্চে সেই প্রয়োজনীয় কাজ গুলো জন্যে আমাদের কোড লিখতে হয় না। + +আমাদের উপরের ক্লাসটিতে আমরা কোন কনস্ট্রাকটর লিখি নি। তাহলে এর অবজেক্ট তৈরি হলো কিভাবে? +উত্তরটি হচ্ছে আমরা যদি কোন কনস্ট্রাকটর না লিখি তাহলে জাভা কম্পাইলার নিজে থেকেই একটি কনস্ট্রাকটর লিখে কম্পাইল করে, যাকে আমরা বলি ডিফল্ট কনস্ট্রাকটর। তবে আমরা চাইলে নিজের একটি লিখতে পারি। + + public class Bicycle { + int cadence = 0; + int speed = 0; + int gear = 1; + + public Bicycle() { + } + } + + +এবার আমরা দেখবো কিভাবে জাভাতে কমেন্ট লিখতে হয়- + +জাভা তিন ধরণের কমেন্ট সাপোর্ট করে- + + Comment | Description + /* text */ | জাভা কম্পাইলার /* থেকে */ পর্যন্ত সব কিছু উপেক্ষা করে যাবে + // text | জাভা কম্পাইলার // থেকে লাইনের শেষ পর্যন্ত উপেক্ষা করে যাবে + /** documentation */ | এটি হচ্ছে ডকুমেন্টাশান কমে্নট । একে doc comment বলা হয়। + + + +উদাহরণ- + + ```java + + package bd.com.howtocode.java.tutotorial.syntax; + + /** + * The HelloWorld program implements an application that + * simply displays "Hello World!" to the standard output. + * + * @author Bazlur Rahman Rokon + * @since 9/20/14. + */ + public class HelloWorld { + public static void main(String[] args) { + // Prints Hello, World! on standard output. + System.out.println("Hello, world!"); + + /* + for (int i = 0; i < 100; i++) { + System.out.println(i); + }*/ + } + } + +``` +আরও কিছু নিয়ম: + +- জাভাতে প্রত্যেকটি স্টেটমেন্ট এর পর সেমিকোলন (;) দিয়ে স্টেটমেন্ট শেষ করতে হয়। +- জাভা একটি কেইস সেনসিটিভ ল্যাংগুয়েজ- অর্থাৎ hello এবং Hello দুটি আলাদা শব্দ । **অনুশীলন:** @@ -141,5 +293,4 @@ (a) (b) (c) -## চলবে ...... From c46e09151d00280b4975ad113e704f8705eb8aab Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sat, 20 Sep 2014 05:02:42 +0600 Subject: [PATCH 006/150] Updated 2.md --- 2.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/2.md b/2.md index 779b218..21815a5 100644 --- a/2.md +++ b/2.md @@ -202,9 +202,9 @@ জাভাতে অবজক্ট তৈরি করা খুব সহজ। এর জন্যে আমাদের তিনটি স্টেপ দরকার হয়- -১. ডিক্লারেশন -২. ইনসটেনশিয়েশান -৩. ইনিশিয়ালাইজেশান +- ডিক্লারেশন +- ইনসটেনশিয়েশান +- ইনিশিয়ালাইজেশান **Bicycle bike1** = new Bicycle(); From 12848dde5138192c8c3987e1e76b198db6b87827 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 21 Sep 2014 02:31:15 +0600 Subject: [PATCH 007/150] Updated 2.md --- 2.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/2.md b/2.md index 21815a5..ad1ecb7 100644 --- a/2.md +++ b/2.md @@ -82,6 +82,8 @@ এর পরেই আমরা যা দেখছি তাকে বলা হয় ফিল্ড ডিক্লারেশন। অর্থাৎ আমরা যে বিভিন্ন রকম ভ্যারিয়্যবল ডিক্ল্যার করি, সেগুলো। + protected final String hello = "value"; + এবং এর পরেই থাকে মেথড। সি কিংবা অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজ এ যাকে আমরা ফাংশন কিংবা সাবরুটিন বলে থাকে, এখানে আমরা সেগুলোকে মেথড বলি। এক্ষেত্রে আমাদের মেথড হচ্ছে - From 62168947ac36091dd4ed4c4af65c11e1784acc14 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 21 Sep 2014 03:46:19 +0600 Subject: [PATCH 008/150] Updated 3.md --- 3.md | 182 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 174 insertions(+), 8 deletions(-) diff --git a/3.md b/3.md index b929e71..51ccf57 100644 --- a/3.md +++ b/3.md @@ -1,11 +1,177 @@ # পাঠ ৩: ডাটা টাইপস এবং অপারেটর -* প্রিমিটিভ ডাটাটাইপ, ইন্টিজার, লং, ডাবল, ইন্টিজার, ফ্লোট এবং কার -* স্ট্রিং এবং লিটারেল -* রেপার ক্লাস -* অ্যারেস -* নন-এক্সিসটেন্স টাইপ- নাল -* ইনামোরেশান -* বিভিন্ন রকম অপারেটর(ইউনারি, টারনারি, শিফট, এসাইনমেন্ট, রিলেশনাল, ইকুয়ালিটি, এন্ড, অর, এক্সক্লুসিভ এন্ড/ওর, লজিক্যাল এন্ড/ওর ইত্যাদি) -* সারসংক্ষেপ +* ভ্যারিয়েবল +* প্রিমিটিভ ডাটাটাইপ, ইন্টিজার, লং, ডাবল, ইন্টিজার, ফ্লোট এবং কার +* রেপার ক্লাস +* স্ট্রিং এবং লিটারেল !! +* অ্যারেস!! +* নন-এক্সিসটেন্স টাইপ- নাল !! +* ইনামোরেশান!! +* বিভিন্ন রকম অপারেটর(ইউনারি, টারনারি, শিফট, এসাইনমেন্ট, রিলেশনাল, ইকুয়ালিটি, এন্ড, অর, এক্সক্লুসিভ এন্ড/ওর, লজিক্যাল এন্ড/ওর ইত্যাদি)!! +* সারসংক্ষেপ!! + +> বি:দ্র: !! মার্ক দেওয়া গুলো এখনো লেখা হয়নি + +**ভ্যারিয়েবল** + +ভ্যারিয়েবল হচ্ছে একটি নাম যা কম্পিউটারের একটি মেমোরি লোকেশান কে নির্দেশ করে। উদাহরণ- + + int cadence = 0; + +একটি ভ্যারিয়েবল ডিক্লারেশন এর জন্যে একটি ডাটাটাইপ দরকার হয়, অর্থাৎ ভ্যারিয়েবল টি কি ধরণের ডাটা হোল্ড করতে তা বলে দিতে হবে। +উপরের উদাহরণটিতে আমরা একটি ভ্যারিয়েবল ডিক্লার করেছি যার নাম cadence এবং এটি ইন্টিজার টাইপ ডাটা হোল্ড করে। + +যেহেতু জাভা একটি স্ট্যাটিক্যালি টাইপড ল্যাংগুয়েজ সুতরাং ভ্যারিয়েবল ডিক্লারেশন এর সময় ডাটাটাইপ উ্ল্লেখ করা অত্যাবশ্যক। + +জাভাতে আমরা চার ধরণের ভ্যারিয়েবল নিয়ে কাজ করে থাকি - + +1. Instance Variables (Non-static fields) +2. Class Variables (Static Fields) +3. Local variables +4. Parameters variables + +জাভাতে ভ্যারিয়বল এবং ফিল্ড দুই শব্দই ব্যবহার করা হয়, তবে এর কিছু টেকনিকাল পার্থক্য আছে। সেগুলো নিয়েই আলোচনা করা হবে – + +আমরা আবার একটি উদাহরণ দেখি – + +```java + public class Bicycle { + static int numGears = 6; + + int cadence = 0; + int speed = 0; + int gear = 1; + + public Bicycle() { + } + + void changeCadence(int newValue) { + cadence = newValue; + } + + void changeGear(int newValue) { + gear = newValue; + } + + void speedUp(int increment) { + speed = speed + increment; + } + + void applyBrakes(int decrement) { + speed = speed - decrement; + } + + void printStates() { + System.out.println("cadence:" + + cadence + " speed:" + + speed + " gear:" + gear); + } + } +``` + +আমরা জানি যে একটি ক্লাস থেকে আমরা অবজেক্ট তৈরি করি। আমরা একটা ক্লাস থেকে অনেকগুলো অবজেক্ট তৈরি করতে পারি। এবং প্রত্যেক অবজেক্ট-ই আলাদা আলাদা। যেমন - + + Bicycle bike1 = new Bicycle(); + Bicycle bike2 = new Bicycle(); + +এখানে bike1 এবং bike2 দুটি সম্পূর্ণ আলাদা অবজেক্ট। + +এখন bike1 এবং bike2 তে কিছু ভ্যারিয়েবল গুলোও আলাদা। অর্থাৎ আমরা যতগুলো অজেক্ট তৈরি করতেবা ঠিক ততোগুলো আলাদা ভ্যারিয়েবল থাকবে মেমোরিতে। এক্ষেত্রে মেমোরিতে ২টা cadence থাকবে, ২টা gear থাকবে এবং ২ speed ধাকবে। + +এই ভ্যারিয়বল গুলোকে Instance Variables বা Non-static fields বলা হয়। এই ভ্যারিয়বল গুলো আগে static কিওয়ার্ডটি থাকে না। + + static int numGears = 6; + +উপরের উদাহরণটিতে **numGears** নামে একটি ভ্যারিয়বল আছে, এটির আগে একটি **static** কিওয়ার্ডটি আছে। এ ধরণের ভ্যারিয়বল কে Class Variables বা Static Fields বলা হয়। static কিওয়ার্ডটি কম্পাইলারকে বলে যে numGears নামে একটি মাত্র ভ্যারিয়বল থাকবে মেমোরিতে, অবজেক্ট এর সংখ্যা যতই হোক। + +লোকাল ভ্যারিয়বল হলো সেসব ভ্যারিয়বল যে গুলো কোন মেথডের মাঝে ডিক্লার করা হয়। একটি লোকাল ভ্যারিয়বল শুধু মাত্র সেই মেথডের ভেতর থেকেই একসেস করা যাবে। + +আর Parameters variables হলো সেই ভ্যারিয়বল গুলো যেগুলো মেথড কল করার সময় পাস করা হয়। এ গুলোও শুধুমাত্র মেথডের ভেতর থেকেই একসেস করা যায়। + +আমরা Instance Variables এবং Class Variables গুলোকে ফিল্ড বলি। + +এখানে কিছু ভ্যারিয়বল ডিক্লারাশেনের উদাহরণ দেওয়া হলো - + + byte myByte; + short myShort; + char myChar; + int myInt; + long myLong; + float myFloat; + double myDouble; + +শুরুতে আগে টাইপ লিখতে হবে, তারপর একটি নাম, তারপর সেমিকোলন দিয়ে শেষ করতে হবে। তবে আমরা চাইলে ভ্যারিয়বল কে ইনিশিয়ালাইজেশান করতে পারি। যেমন - + + int cadence = 0; + +অর্থাৎ শুরুতে আমরা cadence এর ভ্যালু 0 এসাইন করালাম। + +এরপর যদি আমরা কোন ভ্যারিয়বলে ভ্যালু এসাইন করতে চাই তাহলে - + + myByte = 127; + myFloat = 199.99; + +জাভা ভ্যারিয়েবল লেখার কিছু নিয়ম কানুন আছে- + +1. ভ্যারিয়বল গুলো কেইস সেনসিটিভ। অর্থাৎ money, Money,MONEY তিনটি আলাদা। +2. ভ্যারিয়বল অবশ্যই যেকোন একটি লেটার দিয়ে শুরুকরতে হবে। তবে $ অথবা _ দিয়েও শুরু করা যায়। +3. ভ্যারিয়বল এর মাঝে নাম্বার কিংবা _ থাকতে পারে। +4. ভ্যারিয়েবল জাভার কোন reserved কিওয়ার্ড হতে পারবে না। + + +**ডাটা টাইপ** + +জাভা তে আট ধরণে প্রিমিটিভ ডাটা টাইপ আছে । + +Data type|Description +----------|-------------- +byte|8 bit signed value, values from -128 to 127 +short|16 bit signed value, values from -32.768 to 32.767 +char|16 bit Unicode character +int|32 bit signed value, values from -2.147.483.648 to 2.147.483.647 +long|64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808 +float|32 bit floating point value +double|64 bit floating point value + + +এগুলো প্রমিটিভ , এর মানে হচ্ছে এগুলো অবজেক্ট নয়। এরা মেমোরিতে সরাসরি ভ্যালু রাখে। + +তবে জাভাতে এগুলো কিছু ডাটা টাইপ আছে যেগুলো অবজেক্ট। + +Data type| Description +---------|------------ +Byte| 8 bit signed value, values from -128 to 127 +Short | 16 bit signed value, values from -32.768 to 32.767 +Character |16 bit Unicode character +Integer| 32 bit signed value, values from -2.147.483.648 to 2.147.483.647 +Long | 64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808 +Float | 32 bit floating point value +Double | 64 bit floating point value + + +এগুলোকে প্রিমিটিভ টাইপ এর রেপার রেপার ক্লাস বলা হয়। লক্ষ্য করুণ, এগুলোর সবগুলোর নাম ক্যাপিটাল অক্ষার দিয়ে শুরু হয়েছে। + +তবে আমরা চাইলে অবজেক্ট ডাটাটাইপ এবং প্রিমটিভ ডাটাটাইপ একে অপরের পরিপূরক হিসাবে ব্যবহার করতে পারি। + + Integer a; + int b = 9; + a = b; + +তবে প্রিমিটিভ ভ্যালু গুলো ডিফল্টভ্যালু থাকে। অর্থাৎ আমরা যদি ভ্যালু এসাইন না করি, তাহলে এদের মধ্যে বাইডিফল্ট ভ্যালু থাকে। যেমন - + +Data Type |Default Value (for fields) +-----------|------------------------ +byte |0 +short|0 +int|0 +long|0L +float|0.0f +double|0.0d +char|'\u0000' +boolean|false + + + +## চলবে -- + From 8a84bc8951fd660ec3cec71b89c8bf6b007cb0c1 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 21 Sep 2014 03:47:26 +0600 Subject: [PATCH 009/150] Updated 3.md --- 3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3.md b/3.md index 51ccf57..0bab119 100644 --- a/3.md +++ b/3.md @@ -121,7 +121,7 @@ **ডাটা টাইপ** -জাভা তে আট ধরণে প্রিমিটিভ ডাটা টাইপ আছে । +জাভা তে আট ধরণের প্রিমিটিভ ডাটা টাইপ আছে । Data type|Description ----------|-------------- From 51cfce7a2e528da337278adff110c0e0c5520cb3 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 21 Sep 2014 03:51:05 +0600 Subject: [PATCH 010/150] Updated 3.md --- 3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3.md b/3.md index 0bab119..363887e 100644 --- a/3.md +++ b/3.md @@ -136,7 +136,7 @@ double|64 bit floating point value এগুলো প্রমিটিভ , এর মানে হচ্ছে এগুলো অবজেক্ট নয়। এরা মেমোরিতে সরাসরি ভ্যালু রাখে। -তবে জাভাতে এগুলো কিছু ডাটা টাইপ আছে যেগুলো অবজেক্ট। +তবে জাভাতে কিছু ডাটা টাইপ আছে যেগুলো অবজেক্ট। Data type| Description ---------|------------ From 9c59d62d81fd1c05de95cb1a179f8fb83ba3bffe Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 21 Sep 2014 03:51:25 +0600 Subject: [PATCH 011/150] Updated 3.md --- 3.md | 1 - 1 file changed, 1 deletion(-) diff --git a/3.md b/3.md index 363887e..09e60f4 100644 --- a/3.md +++ b/3.md @@ -148,7 +148,6 @@ Long | 64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372. Float | 32 bit floating point value Double | 64 bit floating point value - এগুলোকে প্রিমিটিভ টাইপ এর রেপার রেপার ক্লাস বলা হয়। লক্ষ্য করুণ, এগুলোর সবগুলোর নাম ক্যাপিটাল অক্ষার দিয়ে শুরু হয়েছে। তবে আমরা চাইলে অবজেক্ট ডাটাটাইপ এবং প্রিমটিভ ডাটাটাইপ একে অপরের পরিপূরক হিসাবে ব্যবহার করতে পারি। From 834518ec145e567d3d78f1ee3ef1ea0498b4abc6 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 21 Sep 2014 16:44:13 +0600 Subject: [PATCH 012/150] Updated 1.md --- 1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1.md b/1.md index 64aca13..99cbc44 100644 --- a/1.md +++ b/1.md @@ -48,7 +48,7 @@ **১. বাইট কোড** – এটি হচ্ছে এক ধরণের ইস্ট্রাকশান সেট- যা কিনা শুধুমাত্র জাভা ভার্চুয়াল মেশিন বুঝতে পারে। জাভা কোড ( হিউম্যান রিডএবল) অর্থাৎ আমরা যে কোড গুলো লিখবো সেগুলো কে জাভা কম্পাইলার দ্বারা কম্পাইল্ড করলে বাইটকোড তৈরি হয়। এই বাইটকোড গুলো .class এক্সটেনশন যুক্ত বাইনারী ফাইলে স্টোর করা হয়। -**২. জাভা ভার্চুয়াল মেশিন(JVM)** - এটি মূলত একটা বাস্তব মেশিনের ভেতর একটা কাল্পনিক মেশিন। সহজ কথায়- এটি একটি সফ্টওয়্যার যা কিনা বাইট কোড পড়ে সেগুলো মেশিন এক্সিকিউটেবল কোড-এ রূপান্তরিত করতে পারে। JVM অনেগুলা মেশিনের জন্যে লেখা হয়েছে- অর্থাৎ এটি উইন্ডোজ, ম্যাক OS, লিনাক্স, আইবিএম mainframes, সোলারিস ইত্যাদি বিভিন্ন অপারেটিং সিস্টেমের জন্যে আলাদা আলাদা ভাবে লেখা হয়েছে। এর ফলে, আমরা যদি একবার কোন জাভা প্রোগ্রাম লিখি, সেটি যেকোন মেশনিে চালানো যাবে। এর কারণ আমরা এখন কোন নির্দিষ্ট মেশিনকে উদ্দ্যেশ্য না করে শুধু মাত্র JVM কে উদ্দ্যেশ্য করে কোড লিখি । যেহেতু সব মেশিনের জন্যেই JVM আছে, সুতরাং আমাদের কোড সব মেশিনেই চলবে। আর এভাবেই - “Write once, run anywhere” সম্ভব হচ্ছে। +**২. জাভা ভার্চুয়াল মেশিন(JVM)** - এটি মূলত একটা বাস্তব মেশিনের ভেতর একটা কাল্পনিক মেশিন। সহজ কথায়- এটি একটি সফ্টওয়্যার যা কিনা বাইট কোড পড়ে সেগুলো মেশিন এক্সিকিউটেবল কোড-এ রূপান্তরিত করতে পারে। JVM অনেকগুলা মেশিনের জন্যে লেখা হয়েছে- অর্থাৎ এটি উইন্ডোজ, ম্যাক OS, লিনাক্স, আইবিএম mainframes, সোলারিস ইত্যাদি অপারেটিং সিস্টেমের জন্যে আলাদা আলাদা করে লেখা হয়েছে। এর ফলে, আমরা যদি একবার কোন জাভা প্রোগ্রাম লিখি, সেটি যেকোন মেশনিে চালানো যাবে। এর কারণ আমরা এখন কোন নির্দিষ্ট মেশিনকে উদ্দ্যেশ্য না করে শুধু মাত্র JVM কে উদ্দ্যেশ্য করে কোড লিখি । যেহেতু সব মেশিনের জন্যেই JVM আছে, সুতরাং আমাদের কোড সব মেশিনেই চলবে। আর এভাবেই - **“Write once, run anywhere”** বা **WORA** সম্ভব হয়েছে। ৩. **জাস্ট ইন টাইম( JIT) কম্পাইলার** – এটি মূলত JVM এর একটি অংশ। আমরা যে জাভা কোড কম্পাইল করার সময় তৈরি করি সেগুলো মূলত JIT কম্পাইলার প্রসেস করে। একে dynamic translator ও বলা যায়- কারণ এটি রানটাইম-এ অর্থাৎ প্রোগ্রাম চলাকালিন সময়ে বাইটকোড প্রসেস করে। From 67e5e880608a9e70d01ec5cd88a6e6df18bda355 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 21 Sep 2014 16:44:47 +0600 Subject: [PATCH 013/150] Updated 1.md From accaa1baaecb07fe694f5f4c7c254d8c2fdfb460 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Wed, 24 Sep 2014 05:36:30 +0600 Subject: [PATCH 014/150] Updated 3.md --- 3.md | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/3.md b/3.md index 09e60f4..1387cdb 100644 --- a/3.md +++ b/3.md @@ -3,7 +3,7 @@ * ভ্যারিয়েবল * প্রিমিটিভ ডাটাটাইপ, ইন্টিজার, লং, ডাবল, ইন্টিজার, ফ্লোট এবং কার * রেপার ক্লাস -* স্ট্রিং এবং লিটারেল !! +* লিটারেল * অ্যারেস!! * নন-এক্সিসটেন্স টাইপ- নাল !! * ইনামোরেশান!! @@ -170,6 +170,60 @@ char|'\u0000' boolean|false +**লিটারেল-** + +প্রোগ্রামিং ল্যাংগুয়েজ কিছু মজার মজার বিল্ট-ইন সুবিধা থাকে, তার মধ্যে লিটারেল একটি। আমরা জানি যে একটা ভ্যারিয়বল ডিক্লারেশান এর জন্য প্রথমে টাইপ লিখতে হয়, তারপর একটা নাম দিতে হয়, তারপর একে ইনিশিয়ালাইজেশান করতে হয়। ভ্যারিয়েবলটি যদি অবজেক্ট হয়, তাহলে ইনটেনশিয়েশান করতে হয়। + +উদাহরণ- + + List list = new ArrayList(); + + or + + Int x = 5; + +উপরের দুটি উদাহরণের মাঝে একটিতে আমরা new কিওয়ার্ড ব্যবহার করে নতুন অবজেক্ট তৈরি করেছি। কিন্তু পরের উদাহরণটিতে সেটি করতে হয় নি। আমরা সরাসরি একটি ভ্যালু এসাইন করেছি। এখানে 5 একটি ভ্যালু। এখানে 5 হচ্ছে লিটারেল। + +এরকম অনেক ক্ষেত্রে আমরা new কিওয়ার্ড ব্যবহার না করেই ভ্যারিয়েবল initialize করতে পারি। + +জাভাতে প্রিমিটিভ টাইপ সকল ডাটাটাইপ লিটারেল সাপোর্ট করে। যেমন - + + boolean result = true; + char capitalC = 'C'; + byte b = 100; + short s = 10000; + int i = 100000; + +নিচে আরো কিছু উদাহরণ দেওয়া হলো – + +**ইন্টিজার লিটারেল-** + + // এখানে 26 হচ্ছে ডেসিমাল নাম্বার + int decVal = 26; + // এখানে 26 সংখ্যাটি হেক্সাডেসিমেল এ দেখানো হয়েছে + int hexVal = 0x1a; + // এখানে 26 সংখ্যাটি বাইনারি-তে এ দেখানো হয়েছে + int binVal = 0b11010; + +**ফ্লােটিং পয়েন্ট লিটারেল-** + + double d1 = 123.4; + // একি ভ্যালু বৈজ্ঞানিক উপায়ে লেখা হয়েছে + double d2 = 1.234e2; + float f1 = 123.4f; + ক্যারেক্টার এন্ড স্ট্রিং লিটারেল-- + +char এবং String উদ্ধৃতি চিহ্নের ভেতরে লেখা হয়। char ক্ষেত্রে একক উদ্ধৃতি চিহ্ন String এর জন্যে ডবল উদ্ধৃতি চিহ্ন ব্যবহার করতে হয়- +যেমন- + + char chr = 'A'; // ক্যারেক্টার লিটারেল + String name = "Bazlur"; // স্ট্রিং লিটারের + +char এবং String ইউনিকোড ক্যারেক্টার হতে পারে। + + + + ## চলবে -- From 650896e0482e2cbe1534b53b8efb89720aaa634f Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 26 Oct 2014 21:57:33 +0600 Subject: [PATCH 015/150] Add operators --- 3.md | 117 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/3.md b/3.md index 1387cdb..1727fcc 100644 --- a/3.md +++ b/3.md @@ -222,7 +222,124 @@ char এবং String উদ্ধৃতি চিহ্নের ভেতর char এবং String ইউনিকোড ক্যারেক্টার হতে পারে। +আমরা জানি কিভাবে ভেরিয়েবল ইনিশিয়ালাইজ করতে হয় জানি, এবার তাহলে এই ভ্যারিয়বল গুলো দিয়ে কি কাজ করা যায় সেগুলো দেখি। +কোন কাজ করতে হলে একজন কার্যকারী বা অপারেটর লাগে। অপারেটর কিছু অপারেন্ড নিয়ে কাজ করে থাকে তারপর ফলাফল রিটার্ন করে। জাভা প্রোগ্রামিং ল্যাংগুয়েজ এ বেশ কিছু অপারেটর আছে- সেগুলো দেখা যাক- + +**এসাইনমেন্ট অপারেটর (Assignment Operator)** + +“=” এটি হচ্ছে এসাইনমেন্ট অপারেটর বাংলায় যাকে বলে সমান সমান চিহ্ন। আমরা একটি Bicycle +ক্লাস দেখেছি, এর মাঝে কিছু ভেরিয়েবল দেখেছি- + +```java + int cadence = 0; + int speed = 0; + int gear = 1; +``` + +এই ভেরিয়েবল গুলোর ডান পাশে সমান সমান চিহ্নের পর আমরা একটা ভ্যালু বা মান বসিয়েছি। এভাবে আমরা একটি ভেরিয়েবল এর মাঝে ভ্যালু এসাইন করতে পারি। + +**এরিথমেটিক অপারেটর(Arithmetic Operator)** + +জাভা প্রোগ্রামিং ল্যাংগুয়েজ-এ যোগ, বিয়োগ, গুন, ভাগ করার জন্যে কিছু অপারেটর আছে। এগুলো আমরা যখন বেসিক গণিত শিখি তখন থেকেই জানি। শুধু একটি অপারেটর নতুন মনে হতে পারে, যা হলো “%”। এটিকে অনেকেই পারসেন্টেজ বা শতকরা চিহ্ণ হিসেবে ভুল করতে পারে, কিন্তু এটি আসলে তা নয় । এটি মূলত একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে। + + + | অপারেটর | এর কাজ | +|--- |---- | +| + | আডিটিভ(Additive) অপারেটর, যা দুটি সংখ্যা বা স্ট্রিং যোগ করার জন্যে ব্যবহার করা হয়। | +| - | সাবস্ট্রাকশান (Subtraction) অপরেটর যা একটি সংখ্যা থেকে আরেকটি সংখ্যা বিয়োগ করার জন্যে ব্যবহার করা হয়।| +| | মাল্টিপ্লিকেশান (Multiplication)অপারেটর যা দুটি সংখ্যাকে গুন করে। | +| / | ডিভিশান(Division) অপারেটর , যা দিয়ে একটি সংখ্যাকে আরেকটি সংখ্যাকে ভাগ করা যায়। | +| % | রিমাইন্ডার (Remainder) অপারেটর যা একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে। | + + +```java + + class ArithmeticDemo { + + public static void main (String[] args) { + + int result = 1 + 2; + // result is now 3 + System.out.println("1 + 2 = " + result); + int original_result = result; + + result = result - 1; + // result is now 2 + System.out.println(original_result + " - 1 = " + result); + original_result = result; + + result = result * 2; + // result is now 4 + System.out.println(original_result + " * 2 = " + result); + original_result = result; + + result = result / 2; + // result is now 2 + System.out.println(original_result + " / 2 = " + result); + original_result = result; + + result = result + 8; + // result is now 10 + System.out.println(original_result + " + 8 = " + result); + original_result = result; + + result = result % 7; + // result is now 3 + System.out.println(original_result + " % 7 = " + result); + } + } + +``` +এই প্রোগ্রামটি রান করলে নিচের ফলাফল প্রকাশিত হবে। + + 1 + 2 = 3 + 3 - 1 = 2 + 2 * 2 = 4 + 4 / 2 = 2 + 2 + 8 = 10 + 10 % 7 = 3 + + + +**ইউনারি (Unary) অপারেটর** + +উপরের সব অপারেটর এর জন্যে আমাদের দইটি করে অপারেন্ড দরকার হতো, তবে এই অপারেটর এর লাগে একটি। + +এগুলো বিভিন্ন ধরণের কাজ করে থাকে যেমন – এক করে ইনক্রিমেন্টিং/ডিক্রিমেন্টিং বা একটা এক্সপ্রেশান নেগেট করা বা একটা বুলিয়ান-কে ইনভার্ট করা । +এগুলো হল - +, -, ++, –-, ‍! +উহাহরণ - + +```java + class UnaryDemo { + + public static void main(String[] args) { + + int result = +1; + // এটি এক করে ইনক্রিমেন্ট করে, সুতরাং এখানে result এর মান 1 + System.out.println(result); + + result--; + // এটি এক করে ডিক্রিমেন্ট করে, সুতরাং এখানে result এর মান 0 + System.out.println(result); + + result++; + // এটিও এক করে ইনক্রিমেন্ট করে, সুতরাং এখানে result এর মান আবার ১ + System.out.println(result); + + result = -result; + // এখানে result কে নেগেট করে, সুতরাং এর মান এখন -1 + System.out.println(result); + + boolean success = false; + // এখানে বুলিয়ানের মান হচ্ছে false + System.out.println(success); + // কিন্তু এর আগে একটি নেগেট অপারেটর এড করলে এটি হয়ে যায় + System.out.println(!success); + } +} + +``` ## চলবে -- From 615105c316b5cfa42c52382dc1a357608a0c20e2 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 13:05:32 +0600 Subject: [PATCH 016/150] Updated 3.md --- 3.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/3.md b/3.md index 1727fcc..c8d940c 100644 --- a/3.md +++ b/3.md @@ -260,32 +260,32 @@ char এবং String ইউনিকোড ক্যারেক্টার public static void main (String[] args) { int result = 1 + 2; - // result is now 3 + // এখানে result এর মান হচ্ছে 3 System.out.println("1 + 2 = " + result); int original_result = result; result = result - 1; - // result is now 2 + //এখানে result থেকে ১ সাবস্ট্রাক্ট করায় এর মান ২ System.out.println(original_result + " - 1 = " + result); original_result = result; result = result * 2; - // result is now 4 + // এখানে result এর সাথে ২ মাল্টিপ্লাই করার ফলে এর মান 4 System.out.println(original_result + " * 2 = " + result); original_result = result; result = result / 2; - // result is now 2 + //আবার result ডিভাইড করার ফলে এর মান হয়ে গেল 2 System.out.println(original_result + " / 2 = " + result); original_result = result; result = result + 8; - // result is now 10 + // ৮ যোগ করার ফলে এর result হলো 10 System.out.println(original_result + " + 8 = " + result); original_result = result; result = result % 7; - // result is now 3 + // result এর সাথে ৭ রিমাইন্ডার অপারেটর ব্যবহার করার ফলে এর মান হয়ে গেল 3, কারণ এটি শুধু মাত্র রিমানইন্ডার বা ভাগশেষ রিটার্ন করে System.out.println(original_result + " % 7 = " + result); } } From c0cf9afc5e44a860eae80106fade0a37b10660e9 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 15:54:40 +0600 Subject: [PATCH 017/150] Updated 3.md --- 3.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/3.md b/3.md index c8d940c..1356a9b 100644 --- a/3.md +++ b/3.md @@ -136,6 +136,8 @@ double|64 bit floating point value এগুলো প্রমিটিভ , এর মানে হচ্ছে এগুলো অবজেক্ট নয়। এরা মেমোরিতে সরাসরি ভ্যালু রাখে। +**রেপার ক্লাস** + তবে জাভাতে কিছু ডাটা টাইপ আছে যেগুলো অবজেক্ট। Data type| Description @@ -342,6 +344,8 @@ char এবং String ইউনিকোড ক্যারেক্টার ``` + + ## চলবে -- From aeb0eb4ffd5a62f65538811c66baeab786389ea8 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 17:15:15 +0600 Subject: [PATCH 018/150] Updated 3.md --- 3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3.md b/3.md index 1356a9b..9eecbb2 100644 --- a/3.md +++ b/3.md @@ -250,7 +250,7 @@ char এবং String ইউনিকোড ক্যারেক্টার |--- |---- | | + | আডিটিভ(Additive) অপারেটর, যা দুটি সংখ্যা বা স্ট্রিং যোগ করার জন্যে ব্যবহার করা হয়। | | - | সাবস্ট্রাকশান (Subtraction) অপরেটর যা একটি সংখ্যা থেকে আরেকটি সংখ্যা বিয়োগ করার জন্যে ব্যবহার করা হয়।| -| | মাল্টিপ্লিকেশান (Multiplication)অপারেটর যা দুটি সংখ্যাকে গুন করে। | +| `*` | মাল্টিপ্লিকেশান (Multiplication)অপারেটর যা দুটি সংখ্যাকে গুন করে। | | / | ডিভিশান(Division) অপারেটর , যা দিয়ে একটি সংখ্যাকে আরেকটি সংখ্যাকে ভাগ করা যায়। | | % | রিমাইন্ডার (Remainder) অপারেটর যা একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে। | From ca889e5253c18dcd897b16778687b912941b3588 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 22:07:15 +0600 Subject: [PATCH 019/150] Create array --- 3.1.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 3.1.md diff --git a/3.1.md b/3.1.md new file mode 100644 index 0000000..5a2662e --- /dev/null +++ b/3.1.md @@ -0,0 +1,71 @@ +## অ্যারে + +## এরে + +এরে হচ্ছে একধরণের কন্টেইনার অবজেক্ট যা অনেকগুলো একিধরণের ডাটা টাইপের এর একটি ফিক্সড সাইজের ভ্যালু ধরে রাখতে পারে। + +এরে ডিক্লার করার জন্যে প্রথমে ডাটাটাইপ (কি ধরণের ডাটাটাইপ রাখবে) এর সাথে ([]) স্কয়ার ব্র্যাকেট তারপর এর একটি ভেরিয়েবল নাম দিতে হয়। + +```java + //একটি ইন্টিজার এরে + int[] anArray; +``` + +তবে স্কয়ার ব্র্যাকেট ভেরিয়েবল নাম এর পরেও দেওয়া যেতে পারে - উদহরণ- +```java + int anArray[]; +``` +এভাবে আমরা অন্য ডাটাটাইপ এর অ্যারে লিখতে পারি - + +```java +long[] anArrayOfLongs; +float[] anArrayOfFloats; +double[] anArrayOfDoubles; +``` + +এরে একটি অবজেক্ট, সুতরাং একে নিউ(new) অপারেটর দিয়ে প্রথমে ক্রিয়েকট করতে হবে। + +```java +// এখানে ১০ সাইজের একটি এরে ক্রিয়েট করা হলো +anArray = new int[10]; +``` + +এই স্ট্যাটমেন্ট যদি না লেখা হয় তাহলে প্রোগ্রামটি কম্পাইল হবে না। + +এরপর আমরা এর এর ভেতর ভ্যাল্যু রাখতে পারি। +```java +anArray[0] = 100; //এখানে প্রথম ভ্যাল্যু রাখা হল +anArray[1] = 200; // এভাবে দ্বিতীয় ভ্যালু +anArray[2] = 300; // এভাবে বাকি গুলো +``` + +এই ভ্যালুগুলো যদি পড়তে চাই তাহলে - + +```java +System.out.println("Element 1 at index 0: " + anArray[0]); +System.out.println("Element 2 at index 1: " + anArray[1]); +System.out.println("Element 3 at index 2: " + anArray[2]); +``` + +এছাড়াও এরে লেখার শর্টকাট পদ্ধতি আছে - + +```java +int[] anArray = { + 100, 200, 300, + 400, 500, 600, + 700, 800, 900, 1000 +}; +``` + +একটি এরে এর মধ্যে আরেকটি অ্যারে রাখা যেতে পারে - + +```java +int[][] anArray = {{1, 2, 3}, {4, 6, 7}, {8, 9}}; +``` + +আমরা যদি একটি এরে এর লেন্থ বা সাইজ জানতে চাই তাহলে – + +```java +int length = anArray.length; +``` + From 824b8de5f339ae48e54db0ca3335f27957923040 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 22:09:08 +0600 Subject: [PATCH 020/150] Updated SUMMARY.md --- SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/SUMMARY.md b/SUMMARY.md index fc4ab31..ba676a3 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -5,6 +5,7 @@ * [পাঠ ১: তোমার প্রথম জাভা প্রোগ্রাম](1.md) * [পাঠ ২: সিনট্যাক্স](2.md) * [পাঠ ৩: ডাটা টাইপস এবং অপারেটর](3.md) + * [পাঠ ৩.১: ডাটা টাইপস এবং অপারেটর](3.1.md) * [পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং](4.md) * [পাঠ ৫: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-১](5.md) * [পাঠ ৬: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-২](6.md) From bcdfbf061471b947d56fa19553305a2f883c5485 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 22:10:54 +0600 Subject: [PATCH 021/150] Updated SUMMARY.md --- SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SUMMARY.md b/SUMMARY.md index ba676a3..6cf3846 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -5,7 +5,7 @@ * [পাঠ ১: তোমার প্রথম জাভা প্রোগ্রাম](1.md) * [পাঠ ২: সিনট্যাক্স](2.md) * [পাঠ ৩: ডাটা টাইপস এবং অপারেটর](3.md) - * [পাঠ ৩.১: ডাটা টাইপস এবং অপারেটর](3.1.md) + * [পাঠ ৩.১: এরে](3.1.md) * [পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং](4.md) * [পাঠ ৫: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-১](5.md) * [পাঠ ৬: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-২](6.md) From f356443c07d56f832eb9384095293a3eecc1eb47 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 23:34:48 +0600 Subject: [PATCH 022/150] =?UTF-8?q?Add=20=E0=A6=8F=E0=A6=95=E0=A7=8D?= =?UTF-8?q?=E0=A6=B8=E0=A6=AA=E0=A7=8D=E0=A6=B0=E0=A7=87=E0=A6=B6=E0=A6=BE?= =?UTF-8?q?=E0=A6=A8(Expressions),=20=E0=A6=B8=E0=A7=8D=E0=A6=9F=E0=A7=8D?= =?UTF-8?q?=E0=A6=AF=E0=A6=BE=E0=A6=9F=E0=A6=AE=E0=A7=87=E0=A6=A8=E0=A7=8D?= =?UTF-8?q?=E0=A6=9F(Statements)=20=E0=A6=8F=E0=A6=AC=E0=A6=82=20=E0=A6=AC?= =?UTF-8?q?=E0=A7=8D=E0=A6=B2=E0=A6=95(Blocks)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3.2.md | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 3.2.md diff --git a/3.2.md b/3.2.md new file mode 100644 index 0000000..dae174b --- /dev/null +++ b/3.2.md @@ -0,0 +1,91 @@ +## এক্সপ্রেশান(Expressions), স্ট্যাটমেন্ট(Statements) এবং ব্লক(Blocks) + + +আমরা ইতিমধ্যে ভেরিয়েবল এবং অপারেটর সম্পর্কে জেনে ফেলেছি, এবার তাহলে আমরা জেনে নিই এক্সপ্রেশান কি। + +**এক্সপ্রেশান** + +একপ্রেশান হচ্ছে কতগুলো ভ্যারিয়েবল, অপারেটর এবং মেথড বা ফাংশান কল এর মাধ্যমে একটি আউটপুট তৈরি করার জন্যে যে কোড লেখা হয়। উদাহরণ- + +```java + ‌‌int cadence = 0; + anArray[0] = 100; + + int result = 1 + 2; + if (value1 == value2) + System.out.println("value1 == value2"); +``` + +উপরের cadence = 0 একটি এক্সপ্রেশান। এটির ‌”=” অপারেটরের মাধ্যমে একটি ভ্যাল্যু cadence ভ্যারিয়েবল এ এসাইন হয়। +তারপর anArray[0] = 100 এই এক্সপ্রেশানের মাধ্যমে anArray এরে এর প্রথম ঘরে 100 এসাইন করা হল। + +1 + 2 একটি এক্সপ্রেশান যা “+” অপারেটর এর মাধ্যমে দুটি সংখ্যা যোগ হয় এবং “=” অপারেটর এর মাধ্যমে result ভ্যারিয়েবল এ এসাইন হয়। সুতরাং এখানে দুইটা এক্সপ্রেশান। + +জাভা প্রোগ্রামিং ল্যাংগুয়েজ কম্পাউন্ড এক্সপ্রেশান সাপোর্ট করে। এর মানে হচ্ছে অনেকগুলো ছোট ছোট এক্সপ্রেশান নিয়ে আমরা একটি বড় এক্সপ্রেশান তৈরি করতে পারি। +একটি এক্সপ্রেশন মূলত একটি ডাটাটাইপ এর ভ্যালু প্রদান করে, সুতরাং কম্পাউন্ড এক্সপ্রেশান এর ক্ষেত্রে সব এক্সপ্রেশান এর ফলাফল একি ডাটাটাইপ এর হতে হবে। + + 1 * 2 * 3 + +এখানে 1 * 2 একটি এক্সপ্রেশান যার ইন্টিজার টাইপ এর ডাটাটাইপ এর আউটপুট প্রদান করে, এবং এটি যখন আবার 3 এর মাল্টিপ্লাই করা হয়, তখনও এর আউটপুট ইন্টিজার টাইপ হয়। +তবে কম্পাউন্ড এক্সপ্রেশান এর ক্ষেত্রে এম্বিগিউটি দূর করার জন্যে ব্রেস “()” ব্যবহার করা উত্তম। উদাহরণ - + + x + y / 100 + +এবং + (x + y) / 100 + +এই দুটি এক্সপ্রেশান এর ফলাফল ভিন্ন হবে। + +তবে যদি এক্সপ্রেশান এর অর্ডার ব্রেস দিয়ে না ঠিক করে দেওয়া হয় তবে অপারেটর এর অগ্রগণ্যতা(precedence) অনুযায়ী এক্সপ্রেশান এর অর্ডার নির্ধারিত হয়। + +**স্টেটমেন্টস(Statements)** + +স্টেটমেন্টস হচ্ছে অনেকটা একটা পূর্ণাঙ্গ বা সার্থক বাংলা বাক্যেের মতো। +তবে প্রোগ্রামিং এর ভাষায় এটি হচ্ছে- একটি ছোট ইউনিট অব কোড যা কিনা এক্সিকিউশান করা যায়। কতগুলো এক্সপ্রেশন শেষে সেমিকোলন (;) দিয়ে শেষ করলে স্টেটমেন্ট হয়ে যায়। যেমন- + +- এসাইনমেন্ট এক্সপ্রেশান +- ++ অথবা-- এর ব্যবহার +- মেথড/ফাংশান কল +- নতুন অবজেক্ট তৈরি করা, ইত্যাদি । + +এদেরকে এক্সপ্রেশনলাল স্টেটমেন্ট বলা হয়। +```java + // এটি এসানমেন্ট স্টেটমেন্ট + aValue = 8933.234; + // এটি ইনক্রিমেন্ট স্টেটমেন্ট + aValue++; + // এখানে একটি মেথড কল করা হয়েছে + System.out.println("Hello World!"); + // এখানে একটি অবজেক্ট তৈরি করা হয়েছে + Bicycle myBike = new Bicycle(); +``` + +আরও দু-ধরণের স্টেটমেন্ট আছে- +ডিক্লারেশান স্টেটমেন্ট – +```java + double aValue = 8933.234; +``` +কন্ট্রোল ফ্লাে স্টেটমেন্ট – এটি নিয়ে অন্য চ্যাপ্টারে আরও বিস্তারিত বলা হবে। + + +**ব্লকস** + +একটি কারলি ব্রেস “{}” এর মাঝে শূণ্য অথবা একাধিক স্টেটমেন্ট থাকলে তাকে ব্লক বলা হয়। +উদারহরণ- + +```java + class BlockDemo { + public static void main(String[] args) { + boolean condition = true; + if (condition) { //এখানে ব্লক -১ এর শুরু + System.out.println("Condition is true."); + } // এখানে ব্লক -১ শেষ + else { // এখানে ব্লক-২ শুরু + System.out.println("Condition is false."); + } // এখানে ব্লক-২ শেষ + } + } +``` + + + From b959d4e74050cf5aa521be0ef035dd0055f951fc Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 23:36:29 +0600 Subject: [PATCH 023/150] Updated SUMMARY.md --- SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/SUMMARY.md b/SUMMARY.md index 6cf3846..3820c4e 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -6,6 +6,7 @@ * [পাঠ ২: সিনট্যাক্স](2.md) * [পাঠ ৩: ডাটা টাইপস এবং অপারেটর](3.md) * [পাঠ ৩.১: এরে](3.1.md) + * [ পাঠ ৩.২: এক্সপ্রেশান(Expressions), স্ট্যাটমেন্ট(Statements) এবং ব্লক(Blocks)](3.2.md) * [পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং](4.md) * [পাঠ ৫: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-১](5.md) * [পাঠ ৬: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-২](6.md) From 1e549752d6cab1a9e47fcc63f90d26a504affa87 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 23:37:34 +0600 Subject: [PATCH 024/150] Updated SUMMARY.md --- SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SUMMARY.md b/SUMMARY.md index 3820c4e..9b13370 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -6,7 +6,7 @@ * [পাঠ ২: সিনট্যাক্স](2.md) * [পাঠ ৩: ডাটা টাইপস এবং অপারেটর](3.md) * [পাঠ ৩.১: এরে](3.1.md) - * [ পাঠ ৩.২: এক্সপ্রেশান(Expressions), স্ট্যাটমেন্ট(Statements) এবং ব্লক(Blocks)](3.2.md) + * [ পাঠ ৩.২: এক্সপ্রেশান(Expressions), স্টেটমেন্ট (Statements) এবং ব্লক(Blocks)](3.2.md) * [পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং](4.md) * [পাঠ ৫: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-১](5.md) * [পাঠ ৬: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-২](6.md) From 7a76a55259426deb87ccaab5681a30413cc43598 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 23:39:29 +0600 Subject: [PATCH 025/150] Updated 3.2.md --- 3.2.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/3.2.md b/3.2.md index dae174b..29c20a6 100644 --- a/3.2.md +++ b/3.2.md @@ -1,8 +1,10 @@ -## এক্সপ্রেশান(Expressions), স্ট্যাটমেন্ট(Statements) এবং ব্লক(Blocks) +## এক্সপ্রেশান(Expressions), স্টেটমেন্ট(Statements) এবং ব্লক(Blocks) আমরা ইতিমধ্যে ভেরিয়েবল এবং অপারেটর সম্পর্কে জেনে ফেলেছি, এবার তাহলে আমরা জেনে নিই এক্সপ্রেশান কি। + + **এক্সপ্রেশান** একপ্রেশান হচ্ছে কতগুলো ভ্যারিয়েবল, অপারেটর এবং মেথড বা ফাংশান কল এর মাধ্যমে একটি আউটপুট তৈরি করার জন্যে যে কোড লেখা হয়। উদাহরণ- @@ -16,17 +18,18 @@ System.out.println("value1 == value2"); ``` -উপরের cadence = 0 একটি এক্সপ্রেশান। এটির ‌”=” অপারেটরের মাধ্যমে একটি ভ্যাল্যু cadence ভ্যারিয়েবল এ এসাইন হয়। +উপরের cadence = 0 একটি এক্সপ্রেশান। এটির ‌”=” অপারেটরের মাধ্যমে একটি ভ্যালু cadence ভ্যারিয়েবল এ এসাইন হয়। তারপর anArray[0] = 100 এই এক্সপ্রেশানের মাধ্যমে anArray এরে এর প্রথম ঘরে 100 এসাইন করা হল। 1 + 2 একটি এক্সপ্রেশান যা “+” অপারেটর এর মাধ্যমে দুটি সংখ্যা যোগ হয় এবং “=” অপারেটর এর মাধ্যমে result ভ্যারিয়েবল এ এসাইন হয়। সুতরাং এখানে দুইটা এক্সপ্রেশান। জাভা প্রোগ্রামিং ল্যাংগুয়েজ কম্পাউন্ড এক্সপ্রেশান সাপোর্ট করে। এর মানে হচ্ছে অনেকগুলো ছোট ছোট এক্সপ্রেশান নিয়ে আমরা একটি বড় এক্সপ্রেশান তৈরি করতে পারি। -একটি এক্সপ্রেশন মূলত একটি ডাটাটাইপ এর ভ্যালু প্রদান করে, সুতরাং কম্পাউন্ড এক্সপ্রেশান এর ক্ষেত্রে সব এক্সপ্রেশান এর ফলাফল একি ডাটাটাইপ এর হতে হবে। +একটি এক্সপ্রেশন মূলত একটি নির্দিষ্ট ডাটাটাইপ এর ভ্যালু প্রদান করে, সুতরাং কম্পাউন্ড এক্সপ্রেশান এর ক্ষেত্রে সব এক্সপ্রেশান এর ফলাফল একি ডাটাটাইপ এর হতে হবে। 1 * 2 * 3 এখানে 1 * 2 একটি এক্সপ্রেশান যার ইন্টিজার টাইপ এর ডাটাটাইপ এর আউটপুট প্রদান করে, এবং এটি যখন আবার 3 এর মাল্টিপ্লাই করা হয়, তখনও এর আউটপুট ইন্টিজার টাইপ হয়। + তবে কম্পাউন্ড এক্সপ্রেশান এর ক্ষেত্রে এম্বিগিউটি দূর করার জন্যে ব্রেস “()” ব্যবহার করা উত্তম। উদাহরণ - x + y / 100 @@ -38,6 +41,8 @@ তবে যদি এক্সপ্রেশান এর অর্ডার ব্রেস দিয়ে না ঠিক করে দেওয়া হয় তবে অপারেটর এর অগ্রগণ্যতা(precedence) অনুযায়ী এক্সপ্রেশান এর অর্ডার নির্ধারিত হয়। + + **স্টেটমেন্টস(Statements)** স্টেটমেন্টস হচ্ছে অনেকটা একটা পূর্ণাঙ্গ বা সার্থক বাংলা বাক্যেের মতো। @@ -65,7 +70,8 @@ ```java double aValue = 8933.234; ``` -কন্ট্রোল ফ্লাে স্টেটমেন্ট – এটি নিয়ে অন্য চ্যাপ্টারে আরও বিস্তারিত বলা হবে। +কন্ট্রোল ফ্লাে স্টেটমেন্ট – এটি নিয়ে পরবর্তী চ্যাপ্টারে আরও বিস্তারিত বলা হবে। + **ব্লকস** From e238f79c3ed30a7eb99a8c854b1ba85066ea43a3 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 23:40:37 +0600 Subject: [PATCH 026/150] Updated 3.2.md --- 3.2.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/3.2.md b/3.2.md index 29c20a6..8f317fc 100644 --- a/3.2.md +++ b/3.2.md @@ -5,7 +5,7 @@ -**এক্সপ্রেশান** +**এক্সপ্রেশান(Expressions)** একপ্রেশান হচ্ছে কতগুলো ভ্যারিয়েবল, অপারেটর এবং মেথড বা ফাংশান কল এর মাধ্যমে একটি আউটপুট তৈরি করার জন্যে যে কোড লেখা হয়। উদাহরণ- @@ -74,7 +74,7 @@ -**ব্লকস** +**ব্লকস(Blocks)** একটি কারলি ব্রেস “{}” এর মাঝে শূণ্য অথবা একাধিক স্টেটমেন্ট থাকলে তাকে ব্লক বলা হয়। উদারহরণ- From 61c7c42e06381ac3a5e1a57a4ce49aaeb976a53a Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 27 Oct 2014 23:42:59 +0600 Subject: [PATCH 027/150] Updated 3.md --- 3.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/3.md b/3.md index 9eecbb2..8ee7469 100644 --- a/3.md +++ b/3.md @@ -4,13 +4,8 @@ * প্রিমিটিভ ডাটাটাইপ, ইন্টিজার, লং, ডাবল, ইন্টিজার, ফ্লোট এবং কার * রেপার ক্লাস * লিটারেল -* অ্যারেস!! -* নন-এক্সিসটেন্স টাইপ- নাল !! -* ইনামোরেশান!! -* বিভিন্ন রকম অপারেটর(ইউনারি, টারনারি, শিফট, এসাইনমেন্ট, রিলেশনাল, ইকুয়ালিটি, এন্ড, অর, এক্সক্লুসিভ এন্ড/ওর, লজিক্যাল এন্ড/ওর ইত্যাদি)!! -* সারসংক্ষেপ!! +* বিভিন্ন রকম অপারেটর -> বি:দ্র: !! মার্ক দেওয়া গুলো এখনো লেখা হয়নি **ভ্যারিয়েবল** From 315ecf8982bb136c1679425a9a9528b5977475c2 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 28 Oct 2014 00:03:29 +0600 Subject: [PATCH 028/150] Updated 3.md --- 3.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/3.md b/3.md index 8ee7469..fa5dd79 100644 --- a/3.md +++ b/3.md @@ -1,24 +1,24 @@ # পাঠ ৩: ডাটা টাইপস এবং অপারেটর -* ভ্যারিয়েবল +* ভেরিয়েবল * প্রিমিটিভ ডাটাটাইপ, ইন্টিজার, লং, ডাবল, ইন্টিজার, ফ্লোট এবং কার * রেপার ক্লাস * লিটারেল * বিভিন্ন রকম অপারেটর -**ভ্যারিয়েবল** +**ভেরিয়েবল** -ভ্যারিয়েবল হচ্ছে একটি নাম যা কম্পিউটারের একটি মেমোরি লোকেশান কে নির্দেশ করে। উদাহরণ- +ভেরিয়েবল হচ্ছে একটি নাম যা কম্পিউটারের একটি মেমোরি লোকেশান কে নির্দেশ করে। উদাহরণ- int cadence = 0; -একটি ভ্যারিয়েবল ডিক্লারেশন এর জন্যে একটি ডাটাটাইপ দরকার হয়, অর্থাৎ ভ্যারিয়েবল টি কি ধরণের ডাটা হোল্ড করতে তা বলে দিতে হবে। -উপরের উদাহরণটিতে আমরা একটি ভ্যারিয়েবল ডিক্লার করেছি যার নাম cadence এবং এটি ইন্টিজার টাইপ ডাটা হোল্ড করে। +একটি ভেরিয়েবল ডিক্লারেশন এর জন্যে একটি ডাটাটাইপ দরকার হয়, অর্থাৎ ভেরিয়েবল টি কি ধরণের ডাটা হোল্ড করতে তা বলে দিতে হবে। +উপরের উদাহরণটিতে আমরা একটি ভেরিয়েবল ডিক্লার করেছি যার নাম cadence এবং এটি ইন্টিজার টাইপ ডাটা হোল্ড করে। -যেহেতু জাভা একটি স্ট্যাটিক্যালি টাইপড ল্যাংগুয়েজ সুতরাং ভ্যারিয়েবল ডিক্লারেশন এর সময় ডাটাটাইপ উ্ল্লেখ করা অত্যাবশ্যক। +যেহেতু জাভা একটি স্ট্যাটিক্যালি টাইপড ল্যাংগুয়েজ সুতরাং ভেরিয়েবল ডিক্লারেশন এর সময় ডাটাটাইপ উ্ল্লেখ করা অত্যাবশ্যক। -জাভাতে আমরা চার ধরণের ভ্যারিয়েবল নিয়ে কাজ করে থাকি - +জাভাতে আমরা চার ধরণের ভেরিয়েবল নিয়ে কাজ করে থাকি - 1. Instance Variables (Non-static fields) 2. Class Variables (Static Fields) @@ -71,7 +71,7 @@ এখানে bike1 এবং bike2 দুটি সম্পূর্ণ আলাদা অবজেক্ট। -এখন bike1 এবং bike2 তে কিছু ভ্যারিয়েবল গুলোও আলাদা। অর্থাৎ আমরা যতগুলো অজেক্ট তৈরি করতেবা ঠিক ততোগুলো আলাদা ভ্যারিয়েবল থাকবে মেমোরিতে। এক্ষেত্রে মেমোরিতে ২টা cadence থাকবে, ২টা gear থাকবে এবং ২ speed ধাকবে। +এখন bike1 এবং bike2 তে কিছু ভেরিয়েবল গুলোও আলাদা। অর্থাৎ আমরা যতগুলো অজেক্ট তৈরি করতেবা ঠিক ততোগুলো আলাদা ভেরিয়েবল থাকবে মেমোরিতে। এক্ষেত্রে মেমোরিতে ২টা cadence থাকবে, ২টা gear থাকবে এবং ২ speed ধাকবে। এই ভ্যারিয়বল গুলোকে Instance Variables বা Non-static fields বলা হয়। এই ভ্যারিয়বল গুলো আগে static কিওয়ার্ডটি থাকে না। @@ -106,12 +106,12 @@ myByte = 127; myFloat = 199.99; -জাভা ভ্যারিয়েবল লেখার কিছু নিয়ম কানুন আছে- +জাভা ভেরিয়েবল লেখার কিছু নিয়ম কানুন আছে- -1. ভ্যারিয়বল গুলো কেইস সেনসিটিভ। অর্থাৎ money, Money,MONEY তিনটি আলাদা। +1. ভেরিয়েবল গুলো কেইস সেনসিটিভ। অর্থাৎ money, Money,MONEY তিনটি আলাদা। 2. ভ্যারিয়বল অবশ্যই যেকোন একটি লেটার দিয়ে শুরুকরতে হবে। তবে $ অথবা _ দিয়েও শুরু করা যায়। 3. ভ্যারিয়বল এর মাঝে নাম্বার কিংবা _ থাকতে পারে। -4. ভ্যারিয়েবল জাভার কোন reserved কিওয়ার্ড হতে পারবে না। +4. ভেরিয়েবল জাভার কোন reserved কিওয়ার্ড হতে পারবে না। **ডাটা টাইপ** @@ -169,7 +169,7 @@ boolean|false **লিটারেল-** -প্রোগ্রামিং ল্যাংগুয়েজ কিছু মজার মজার বিল্ট-ইন সুবিধা থাকে, তার মধ্যে লিটারেল একটি। আমরা জানি যে একটা ভ্যারিয়বল ডিক্লারেশান এর জন্য প্রথমে টাইপ লিখতে হয়, তারপর একটা নাম দিতে হয়, তারপর একে ইনিশিয়ালাইজেশান করতে হয়। ভ্যারিয়েবলটি যদি অবজেক্ট হয়, তাহলে ইনটেনশিয়েশান করতে হয়। +প্রোগ্রামিং ল্যাংগুয়েজ কিছু মজার মজার বিল্ট-ইন সুবিধা থাকে, তার মধ্যে লিটারেল একটি। আমরা জানি যে একটা ভ্যারিয়বল ডিক্লারেশান এর জন্য প্রথমে টাইপ লিখতে হয়, তারপর একটা নাম দিতে হয়, তারপর একে ইনিশিয়ালাইজেশান করতে হয়। ভেরিয়েবলটি যদি অবজেক্ট হয়, তাহলে ইনটেনশিয়েশান করতে হয়। উদাহরণ- @@ -181,7 +181,7 @@ boolean|false উপরের দুটি উদাহরণের মাঝে একটিতে আমরা new কিওয়ার্ড ব্যবহার করে নতুন অবজেক্ট তৈরি করেছি। কিন্তু পরের উদাহরণটিতে সেটি করতে হয় নি। আমরা সরাসরি একটি ভ্যালু এসাইন করেছি। এখানে 5 একটি ভ্যালু। এখানে 5 হচ্ছে লিটারেল। -এরকম অনেক ক্ষেত্রে আমরা new কিওয়ার্ড ব্যবহার না করেই ভ্যারিয়েবল initialize করতে পারি। +এরকম অনেক ক্ষেত্রে আমরা new কিওয়ার্ড ব্যবহার না করেই ভেরিয়েবল initialize করতে পারি। জাভাতে প্রিমিটিভ টাইপ সকল ডাটাটাইপ লিটারেল সাপোর্ট করে। যেমন - From ee6f66d671ae54570b2e8aa5d09d5b1f872867e8 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 28 Oct 2014 00:06:08 +0600 Subject: [PATCH 029/150] Updated 3.2.md --- 3.2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3.2.md b/3.2.md index 8f317fc..5dd9f72 100644 --- a/3.2.md +++ b/3.2.md @@ -55,7 +55,7 @@ এদেরকে এক্সপ্রেশনলাল স্টেটমেন্ট বলা হয়। ```java - // এটি এসানমেন্ট স্টেটমেন্ট + // এটি এসাইনমেন্ট স্টেটমেন্ট aValue = 8933.234; // এটি ইনক্রিমেন্ট স্টেটমেন্ট aValue++; From ca15e711b72fcb45b5c4ac4dc8a86e8e62974cf9 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 28 Oct 2014 01:19:45 +0600 Subject: [PATCH 030/150] Updated 4.md --- 4.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/4.md b/4.md index 385ddeb..9983fcd 100644 --- a/4.md +++ b/4.md @@ -10,3 +10,44 @@ * রিটার্ন স্ট্যাটমেন্ট * সারসংক্ষেপ + +আমাদের সোর্সকোডে -এ যেসব স্টেটমেন্ট থাকে তা সাধরারণত উপর থেকে নিচে যে অর্ডার এ দেওয়া থাকে সেই অর্ডারেই এক্সিকিউট হয়। কিন্তু কন্ট্রোল ফ্লো স্টেটমেন্ট এই অর্ডারকে ভেঙ্গে বিভিন্ন ডিসিশান মেকিং, লুপিং এবং ব্রাঞ্চিং এর মাধ্যমে একটি নির্দিষ্ট কোড ব্লক-কে এক্সিকিউট করে। + +কন্ট্রোল ফ্লো স্টেটমেন্ট গুলি হচ্ছে - + +- ডিসিশান-মেকিং স্টেটমেন্ট (if-then, if-then-else, switch)- +- লুপিং স্টেটমেন্ট (for, while, do-while) +- এবং ব্রাঞ্চিং স্টেটমেন্ট (break, continue, return) + +if-then স্টেটমেন্ট হচ্ছে সব চেয়ে বেসিক কন্ট্রোল ফ্লো স্টেটমেন্ট। + +আমরা যদি একটি প্রোগ্রাম এর একটি নির্দিষ্ট কোড ব্লক শুধু মাত্র একটি বিশেষ কন্ডিশান বা শর্ত সাপেক্ষেে এক্সিকিউট করতে চাই তাহলে আমরা if-then স্টেটমেন্ট ব্যবহার করি- + +উদাহরণ- + +```java + int x = 10; + + if( x < 20 ){ + System.out.print("This is if statement"); + } +``` + +উপরের কোড ব্লকটিতে আমরা শুধু মাত্র x এর মান 20 হলেই তা প্রিন্ট করতে চাই। + +if স্টেটমেন্ট এর পেরেনস্থেসিস “()” মাঝে একটি বুলিয়ান এক্সপ্রেশান থাকে। বুলিয়ান এক্সপ্রেশান হচ্ছে এক ধরণের এক্সপ্রেশান যার ফলাফল শুধুমাত্র true অথবা false হতে পারে। এই বুলিয়ান এক্সপ্রেশানটির মান যদি true হয় তাহলে এই if স্টেটমেন্ট এর ব্লকটি এক্সিকিউট হবে, নতুবা হবে না। + +তবে আমাদের প্রথম কন্ডিশান বা শর্ত বা বুলিয়ান এক্সপ্রেশান যদি সত্যি না হয়, এবং এক্ষেত্রে আমরা অন্য একটি ব্লক অব কোড এক্সিকিউট করতে চাই, তাহলে if-then-else স্টেটমেন্ট ব্যবহার করি। +উদাহরণ- + +```java + if( x < 20 ){ + System.out.print("This is if statement"); + }else{ + System.out.print("This is else statement"); + } +``` + + + +## চলবে ---- From 21a7a675c7872bf1143cbd8c75d8a08a6c8dacaa Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 28 Oct 2014 01:45:01 +0600 Subject: [PATCH 031/150] Updated 5.md --- 5.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/5.md b/5.md index 6f2ddca..6c92a03 100644 --- a/5.md +++ b/5.md @@ -11,3 +11,32 @@ * ইনকেপসুলেশান * সারসংক্ষেপ + +শুরুতে বস্তুর ধারণা নিয়ে একটি ছোট্ট ব্যাখ্যা দেই, পরবর্তীতে আমি এই কথাগুলো আরো ব্যাখ্যা করে বলবো। আমরা সবাই কম্পিউটার ব্যবহার করি, যারা একটু বেশি কৌতূহলী তারা নিশ্চয় কম্পিউটারের বক্স খুলে খুলে দেখেছে ফেলেছে যে, এর মধ্যে নানা রকম যন্ত্রাংশ থাকে, যেমন, র‍্যাম, হার্ডডিস্ক, মাদারবোর্ড, সিপিইউ, কুলিং ফ্যান ইত্যাদি। এইসব মিলেই কম্পিউটার। কিন্তু মজার ব্যপার হলো, এর সবই একটি কোম্পানি তৈরি করেনি। কেও র‍্যাম তৈরি করে, কেওবা মাদারবোর্ড, কেও বা আবার সিপিইউ। কিন্তু সবাই আলাদা আলাদা ভাবে সবকিছু তৈরি করলেও আমরা যখন পুরো কম্পিউটারটি এসেম্বল করি, কি সুন্দর ভাবে সব ঠিক ঠাক ভাবে লেগে যায়, কোন সমস্যা হয় না। একজন ম্যাকানিক-ও যার নাকি কম্পিউটার সায়েন্স এ ডিগ্রি নেই, সেও জানে কিভাবে সব কিছু এসেম্বল করতে হয়। র‍্যাম এর মধ্যে কি আছে সে সম্পর্কে তার কোনই ধারণা নেই, কিংবা সিপিইউ । অবজেক্ট ওরিয়েন্টেড কনসেপ্ট মূল ব্যাপারটি হলো এটি। একটা সিস্টেমে অনেক গুলো কম্পোনেন্ট থাকতে পারে, কিন্তু সব কম্পোনেন্ট গুলো কেও একা তৈরি করবে না এইটাই স্বাভাবিক, এবং এগুলো এমন ভাবে তৈরি করা হয় যাতে খুব সহজেই এদেরকে এসেম্বল করে পুরো সিস্টেম দাড় করানো যায়। + +অবজেক্ট ওরিয়েন্টেড কনসেপ্ট এর ধারণার সাথে পরিচিত হতে হলে শুরুতে আমাদের কিছু টার্ম বা শব্দের সাথে পরিচিত হতে হয়। আমি শুরুতে এনালজি বা উপমা দিয়ে বুঝানো চেষ্টা করবো, তারপর মূল বিষয়ে চলে আসবো। + +**অবজেক্ট (Object):** + +এর মানে হচ্ছে বস্তু। পৃথিবীতে যা কিছু দেখি, অনুভব করি, তার সবই বস্তু। যেমন- মোবাইল ফোন, চশমা, এমনকি আমি নিজেও একটি অবজেক্ট। আমরা যেহেতু প্রোগ্রামার, এখন একটু সেভাবে কথা বলি। প্রোগ্রামিং এ একটা ধারণাও অবজেক্ট। অবজেক্ট কে কিভাবে দেখা হচ্ছে তা নির্ভর করে যে দেখছে তার উপর। মনে করা যাক, একটি অফিসের বড়ো কর্তা (CEO) সে দেখবে, এমপ্লয়ি, বিল্ডিং, ডিভিশন, নোটপত্র, বেনিফিট প্যাকেজ, লাভ ক্ষতির হিসেব এগুলো অবজেক্ট। একজন আর্কিটেক্ট দেখবে, তার প্ল্যান, মডেল, এলেভেশান, ডোনেজ, ডেন্টিল, আর্মাচার ইত্যাদি। সেভাবে একজন সফটওয়্যার ইঞ্জিনিয়ারের অবজেক্ট হলো, স্ট্যাক, কিউ, উইন্ডো, চেক বক্স ইত্যাদি। +অবজেক্ট এর একটি স্টেট থাকে। স্টেট হলো কিছু তথ্য যা দিয়ে ওই অবজেক্টকে আলাদা করা যায়, এবং তার বর্তমান অবস্থান জানা যায়। যেমন একটি ব্যাংক একাউন্ট স্টেট হতে পারে কারেন্ট ব্যালেন্স। একটা অবজেক্ট এর মধ্যে আরেকটি অবজেক্ট থাকতে পারে, যা ওই অবজেক্ট এর স্টেট হতে পারে। + +অবজেক্ট সাধারণত কিছু কাজ করে থাকে যাকে বলে তার বিহেভিয়ার। যেমন ধরা যাক, সাইক্যালের চাকা, চাকার স্টেট হতে পারে এর ব্যাসার্ধ, পরিধি, গতি ইত্যাদি এবং চাকার বিহেভিয়ার হলো এটি ঘুরে। এখন যেহেতু আমরা সাইক্যাল এর চাকাকে কে আমরা প্রোগ্রামিং এর মাধ্যমে প্রকাশ করবো, সতুরাং এগুলোকে আমরা ভ্যারিয়েবল এ রাখবো। আর বিহেভিয়ার গুলোকে আমরা ফাংশন এর মাধ্যমে লিখি। আমরা এর আগে যাকে ফাংশন বলে এসেছি এখন থেকে আমরা ফাংশন কে ফাংশন বলবো না, আমরা এদেরকে মেথড বলবো। + +সুতরাং আমরা জানলাম, অবজেক্ট এর দুইটা জিনিস থাকে, স্টেট ( অর্থাৎ নিজের সম্পর্কে ধারণা) এবং মেথড (সে কি কি কাজ করতে পারে)। + +**ক্লাস(Class)** + +অবজেক্ট সম্পর্কে আমরা জানলাম। ক্লাস হলো সেই অবজেক্টটি তৈরি করার প্রক্রিয়ার একটি অংশ। মনে করি আমরা একটি কলম বানাতে চাই, শুরুতে আমরা কোন রকম চিন্তা ভাবনা না করে ফু দিয়ে একটা কিছু বানিয়ে ফেলতে পারি না। আমরা এর জন্যে পরিকল্পনা করি- কলমাটা দেখতে কেমন হবে, এটি লম্বা কতটুকু হবে, কলমটি কি কি কাজ করবে ইত্যাদি। এই পরিকল্পনা গুলো আমরা আমরা কোথাও লিখে রাখি। আমাদের এই লেখা ডকুমেন্টটি আসলে ক্লাস। সহজ একটি ব্যাপার। + +অবজেক্ট ওরিয়েন্ট কনসেপ্ট তিনটি ধারণার উপর প্রতিষ্ঠিত। + +এক, **_এনক্যাপসুলেশান-_** মানে হলো জিনিসপত্র ক্যাপসুলের মধ্যে ভরে রাখা। আমরা অনেকেই ক্যাপসুল মেডিসিন খেয়েছি, এটির বাইরে একটা আবরণ দিয়ে সব কিছু ভেতরে আটকানো থাকে । ব্যাপারটি এমনি। + +দুই,**_ইনহেরিট্যান্স-_** নাম থেকেই বুঝা যাচ্ছে যে এখানে বংশগতির একটা বিষয় চলে এসেছে। আসলেও তাই। ধরা যাক একটি একটা চাকা। নানা রকম চাকা হতে পারে, যেমন বাসের চাকা, সাইক্যাল এর চাকা, মটর সাইক্যাল এর চাকা ইত্যাদি। সব চাকার মধ্যেই কিন্তু কিছু কমন ব্যাপার আছে, এটির ব্যাসার্ধ আছে, পরিধি আছে এবং এটি ঘুরে। সুতরাং আমরা একটা চাকা নামের অবজেক্ট বানাতে পারি যা বাকি সব চাকা(বাস, সাইক্যাল এর) পূর্বপুরুষ। এতে আমাদের বেশি কিছু সুবিধা আছে, প্রধান সুবিধে হলো, কমন জিনিস গুলো নিয়ে আমাদের পূর্বপুরুষ তৈরি করার কাজ একবার করে ফেললেই হচ্ছে, উত্তরপুরুষ গুলোতে আপনা আপনি সেই বৈশিষ্ট্যগুলো চলে আসবে। + +তিন, _**পলিমরফিজম**_ – বহুরূপিতা। অর্থাৎ একি অঙ্গে নানা রূপ। একটা অবজেক্ট নানা সময় নানা রকম রূপ ধারণ করতে পারে। + + + +## চলবে ------- \ No newline at end of file From 7d718eb96c209b05837998e001cb9163aa72b1aa Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 28 Oct 2014 01:57:46 +0600 Subject: [PATCH 032/150] Updated 3.1.md --- 3.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3.1.md b/3.1.md index 5a2662e..5214af0 100644 --- a/3.1.md +++ b/3.1.md @@ -1,4 +1,4 @@ -## অ্যারে +## এরে (Array) ## এরে From a28094e4d64c736e71be9728b23e1c0fd7f7880a Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 28 Oct 2014 02:12:37 +0600 Subject: [PATCH 033/150] Updated 3.md --- 3.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/3.md b/3.md index fa5dd79..e0dac16 100644 --- a/3.md +++ b/3.md @@ -338,7 +338,41 @@ char এবং String ইউনিকোড ক্যারেক্টার ``` +**ইকুয়ালিটি (Equality) এবং রেশনার(Relational) অপারেটরস** +ইকুয়ালিটি (Equality) এবং রেশনার(Relational) অপারেটর গুলো নির্ধারণ করে একটি ভ্যালু অন্যটি থেকে বড় বা ছোট কিনা। + + == দুটি ভ্যালু সমান হলে এই এক্সপ্রেশান এর মান true হয় + != দুটি ভ্যালু সমান না হলে true হয় + > প্রথম ভ্যালু পরের ভ্যালু থেকে বড় হলে true হয় + >= প্রথম ভ্যালু পরের ভ্যালু থেকে বড় বা সমান হলে true হয় + < প্রথম ভ্যালু পরের ভ্যালু থেকে ছোট হলে true হয় + <= প্রথম ভ্যালু পরের ভ্যালু থেকে ছোট বা সমান হলে true হয় + + +উদাহরণ + +```java +‌‌‌‌ + class ComparisonDemo { + + public static void main(String[] args){ + int value1 = 1; + int value2 = 2; + if(value1 == value2) + System.out.println("value1 == value2"); + if(value1 != value2) + System.out.println("value1 != value2"); + if(value1 > value2) + System.out.println("value1 > value2"); + if(value1 < value2) + System.out.println("value1 < value2"); + if(value1 <= value2) + System.out.println("value1 <= value2"); + } + } + +``` ## চলবে -- From 338a703fe628dac5dc4fee7fd30e148bccdbe6d5 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 28 Oct 2014 02:14:03 +0600 Subject: [PATCH 034/150] Updated 3.md --- 3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3.md b/3.md index e0dac16..e36bf99 100644 --- a/3.md +++ b/3.md @@ -338,7 +338,7 @@ char এবং String ইউনিকোড ক্যারেক্টার ``` -**ইকুয়ালিটি (Equality) এবং রেশনার(Relational) অপারেটরস** +**ইকুয়ালিটি (Equality) এবং রেশনাল(Relational) অপারেটরস** ইকুয়ালিটি (Equality) এবং রেশনার(Relational) অপারেটর গুলো নির্ধারণ করে একটি ভ্যালু অন্যটি থেকে বড় বা ছোট কিনা। From c59912f79885f3695cd6f3a19c8bcfc34b1cb1d6 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 28 Oct 2014 02:17:45 +0600 Subject: [PATCH 035/150] Updated 3.md --- 3.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/3.md b/3.md index e36bf99..d2de959 100644 --- a/3.md +++ b/3.md @@ -373,7 +373,33 @@ char এবং String ইউনিকোড ক্যারেক্টার } ``` + কন্ডিশনাল( Conditional) অপারেটর + + && এবং || এই দু্ই অপারেটরকে কন্ডিশনাল অপারেটর বলে। + + && কন্ডিশনাল এন্ড (Conditional-AND) + || কন্ডিশনাল ওর ( Conditional-OR) + + + +উদাহরণ- + ```java + class ConditionalDemo1 { + + public static void main(String[] args){ + int value1 = 1; + int value2 = 2; + if((value1 == 1) && (value2 == 2)) + System.out.println("value1 is 1 AND value2 is 2"); + if((value1 == 1) || (value2 == 1)) + System.out.println("value1 is 1 OR value2 is 1"); + } + } + +``` + + ## চলবে -- From 77f7e7d9d684852dabb00a3c7ae27c6084d41676 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 28 Oct 2014 20:04:22 +0600 Subject: [PATCH 036/150] Updated 5.md --- 5.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/5.md b/5.md index 6c92a03..8584b71 100644 --- a/5.md +++ b/5.md @@ -38,5 +38,16 @@ তিন, _**পলিমরফিজম**_ – বহুরূপিতা। অর্থাৎ একি অঙ্গে নানা রূপ। একটা অবজেক্ট নানা সময় নানা রকম রূপ ধারণ করতে পারে। +তবে কেন এই অবজেক্ট ওরিয়েন্টেড কনসেপ্ট লাগবে সেটি নিয়ে প্রশ্ন হতে পারে। এবার তাহলে এই প্রশ্নের উত্তর ব্যাখ্যা করা যাক। + +আমাদের পরিচিত প্রথাগত বা প্রসিডিউরাল প্রোগ্রামিং ল্যাংগুয়েজ যেমন- সি এর কিছু অসুবিধা রয়েছে। আমরা চাইলেই সহজে পুনরায় ব্যবহারযোগ্য কম্পোনেন্ট তৈরি করতে পারি না। সবচেয়ে বড় অসুবিধা হলো আমরা চাইলেই একটি প্রোগ্রাম থেকে একটি ফাংশান কপি করে অন্য একটি প্রোগ্রামে ব্যবহার করতে পারি না কারণ ফাংশন গুলো সাধারণত কিছু গ্লোবাল ভেরিয়েবল এবং অন্যান্য ফাংশন এর উপর নির্ভর করে। +এই ল্যাংগুয়েজ গুলো হাই-লেভেল এবস্ট্রাকশান এর জন্যে মানানসই নয়। যেমন সি যে কম্পোনেন্ট গুলো ব্যবহার করে সেগুলো খুব লো-লেভেল-এর যা দিয়ে একটি বাস্তব জগতের সমস্যাকে খুব সহজে চিত্রায়ণ (portray) করা সম্ভব হয় না। কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট বা সিআরএম অথবা ফুটবল খেলাকে সহজে সি দিয়ে চিত্রায়ণ করা কঠিন। + +১৯৭০ সালের যুক্তরাষ্ট্রের প্রতিরক্ষা অদিদপ্তরের একটি টাস্কফোর্স তদন্ত করে বের করার চেষ্টা করে কেন আইটি(IT) বাজেট সবসময় নিয়ন্ত্রণ করা সম্ভব হয় না। সেগুলোর মধ্যে প্রধান গুলো এমন- +৮০% বাজেট শুধুমাত্র সফটওয়্যার এর জন্যে ব্যয় হয় আর বাকি ২০% ব্যয় হয় হার্ডওয়্যার এর জন্যে। এর মধ্যে ৮০% ব্যয় হয় শুধুমাত্র সফটওয়্যার মেইনটেইন করার জন্যে, বাকি ২০% তৈরি হয় সফটওয়্যার তৈরি করার জন্যে। হার্ডওয়্যার গুলো সহজেই রিইউজ বা পুনরায় ব্যবহার করা যায় এবং এতে এদের ইন্টিগ্রিটি নষ্ট হয় না, এবং একটি হার্ডওয়্যার একটি বিশেষ অংশ নষ্ট হয়ে গেলে তা সহজেই আলাদা করে ফেলা যায় এবং নতুন একটি দিয়ে রিপ্লেস করা যায়। কিন্তু সফটওয়্যার এর ক্ষেত্রে এমন সম্ভব হয় না, একটি প্রোগ্রাম এর সমস্যার জন্যে অন্য প্রোগ্রাম এর সমস্যা তৈরি হয় ইত্যাদি। + +এই সমস্যা সমাধান করার জন্যে এই টাস্কফোর্স পরিশেষে প্রস্তাব করে যে সফটওয়্যার-ও হার্ডওয়্যার এর মতো হওয়া উচিৎ। পরবর্তীতে তারা তাদের সিস্টেম এর ৪৫০ টি প্রোগ্রামিং ল্যাংগুয়েজ রিপ্লেস করে এডা (Ada) নামে একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে। + + ## চলবে ------- \ No newline at end of file From 24e48d917090811701180ea99f251ebf15364b87 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 28 Oct 2014 23:40:33 +0600 Subject: [PATCH 037/150] Updated 7.md --- 7.md | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/7.md b/7.md index c06e696..5814e46 100644 --- a/7.md +++ b/7.md @@ -10,3 +10,97 @@ * স্ট্রিং বিউল্ডার * সারসংক্ষেপ + + +জাভাতে স্ট্রিং ব্যাপকভাবে ব্যবহৃত একটি অবজেক্ট। স্ট্রিং হচ্ছে কতগুলো ক্যারেক্টার-এর সিকুয়েন্স বা অনুক্রম। +স্ট্রিং তৈরি করা খুব সহজ। +যেমন – + +‌ +```java + String greeting = "Hello world!"; + +``` + + +এখানে "Hello world!" হচ্ছে স্ট্রিং লিটারেল যা অকনেগুলো ক্যারেক্টার উদ্ধৃতি চিহ্নের (“”) মাঝে লিখতে হয়। + +জাভা কোডের মধ্যে কোন স্ট্রিং লিটারেল থাকলে কম্পাইলার সেটিকে String অবজেক্ট –এ পরিণত করে যার ভ্যালু হয় উদ্ধৃতি চিহ্নের (“”) মাঝের ক্যারেক্টার গুলো । + +তবে অন্যান্য অবজেক্ট এর মতো String ও new কিওয়ার্ড এবং কন্সট্রাকটর ব্যবহার করে তৈরি করতে পারি। String ক্লাসের ১৩ টি কনস্ট্রাকটর আছে। সুতরাং আমরা আরও ১৩ টি উপায়ে স্ট্রিং তৈরি করতে পারি। + +উদাহরণ – + +```java + String str = new String("Hello world!"); + char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.' }; + String helloString = new String(helloArray); + +``` + +**String Length** + +String ক্লাসের মধ্যে length() মেথড থাকে যা একটি স্ট্রিং এর মধ্যে কতগুলো ক্যারেক্টার থাকে তার সংখ্যা রিটার্ণ করে। +String loremIpsum ="Lorem ipsum dolor sit amet."; + +```java + int len = loremIpsum.length(); +``` + +**স্ট্রিং Concatenating** + + +আমরা বেশ কয়েকটি উপায়ে স্ট্রিং কনকেট করতে পারি - + +```java + string1.concat(string2); // concat()মেথড ব্যবহার করে + "My name is ".concat("Rumplestiltskin"); // লিটারেল ব্যবহার করে + "Hello," + " world" + "!" // + অপারেটর ব্যবহার করে +``` + +স্ট্রিং এর ভেতর বেশ কিছু মেথড আছৈ যেগুলো ব্যবহার করে আমরা স্ট্রিং মেনুপুলেট করতে পারি। + + +charAt() – এই মেথড ব্যবহার করে আমরা কোন ইনডেক্স এর ক্যারেক্টার আলাদা করতে পারি। উদাহরণ- + +```java + String hello = "Hello"; + char getCharOfIndex2 = hello.charAt(2); +``` + +substring() – এই মেথড ব্যবহার করে আমরা একটি স্ট্রিং থেকে এর সাব-স্ট্রিং বা কোন নির্দিষ্ট অংশ আলাদা করতে পারি। +উদাহরণ- + +```java + String str1 = "Hello world!"; + String hello =str1.substring(0,5); +``` + +toLowerCase() – লোওয়ারকেস লেটারে কনভার্ট করার জন্যে এই মেথড ব্যবহার করি। +toUpperCase() আপারকেস লেটারে কনভার্ট করার জন্যে এই মেথড ব্যবহার করি। + +উদাহরণ – + +```java + String hello = "Hello"; + hello.toUpperCase(); // HELLO + hello.toLowerCase(); // hello +``` + +নিচে আরও কিছু উদহরণ দেখানো হল- + +```java + String str2 = "Hello world!"; + int indexOfHaitch = str2.indexOf("H"); +``` + + + + + +## চলবে ...... + + + + + From 3cf4a16f033bc77334120741658532c5f0a7b19b Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 2 Nov 2014 08:00:33 +0600 Subject: [PATCH 038/150] Updated 5.md --- 5.md | 118 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 116 insertions(+), 2 deletions(-) diff --git a/5.md b/5.md index 8584b71..77928c4 100644 --- a/5.md +++ b/5.md @@ -31,9 +31,9 @@ অবজেক্ট ওরিয়েন্ট কনসেপ্ট তিনটি ধারণার উপর প্রতিষ্ঠিত। -এক, **_এনক্যাপসুলেশান-_** মানে হলো জিনিসপত্র ক্যাপসুলের মধ্যে ভরে রাখা। আমরা অনেকেই ক্যাপসুল মেডিসিন খেয়েছি, এটির বাইরে একটা আবরণ দিয়ে সব কিছু ভেতরে আটকানো থাকে । ব্যাপারটি এমনি। +এক, **_ইনহেরিট্যান্স-_** নাম থেকেই বুঝা যাচ্ছে যে এখানে বংশগতির একটা বিষয় চলে এসেছে। আসলেও তাই। ধরা যাক একটি একটা চাকা। নানা রকম চাকা হতে পারে, যেমন বাসের চাকা, সাইক্যাল এর চাকা, মটর সাইক্যাল এর চাকা ইত্যাদি। সব চাকার মধ্যেই কিন্তু কিছু কমন ব্যাপার আছে, এটির ব্যাসার্ধ আছে, পরিধি আছে এবং এটি ঘুরে। সুতরাং আমরা একটা চাকা নামের অবজেক্ট বানাতে পারি যা বাকি সব চাকা(বাস, সাইক্যাল এর) পূর্বপুরুষ। এতে আমাদের বেশি কিছু সুবিধা আছে, প্রধান সুবিধে হলো, কমন জিনিস গুলো নিয়ে আমাদের পূর্বপুরুষ তৈরি করার কাজ একবার করে ফেললেই হচ্ছে, উত্তরপুরুষ গুলোতে আপনা আপনি সেই বৈশিষ্ট্যগুলো চলে আসবে। -দুই,**_ইনহেরিট্যান্স-_** নাম থেকেই বুঝা যাচ্ছে যে এখানে বংশগতির একটা বিষয় চলে এসেছে। আসলেও তাই। ধরা যাক একটি একটা চাকা। নানা রকম চাকা হতে পারে, যেমন বাসের চাকা, সাইক্যাল এর চাকা, মটর সাইক্যাল এর চাকা ইত্যাদি। সব চাকার মধ্যেই কিন্তু কিছু কমন ব্যাপার আছে, এটির ব্যাসার্ধ আছে, পরিধি আছে এবং এটি ঘুরে। সুতরাং আমরা একটা চাকা নামের অবজেক্ট বানাতে পারি যা বাকি সব চাকা(বাস, সাইক্যাল এর) পূর্বপুরুষ। এতে আমাদের বেশি কিছু সুবিধা আছে, প্রধান সুবিধে হলো, কমন জিনিস গুলো নিয়ে আমাদের পূর্বপুরুষ তৈরি করার কাজ একবার করে ফেললেই হচ্ছে, উত্তরপুরুষ গুলোতে আপনা আপনি সেই বৈশিষ্ট্যগুলো চলে আসবে। +দুই, **_এনক্যাপসুলেশান-_** মানে হলো জিনিসপত্র ক্যাপসুলের মধ্যে ভরে রাখা। আমরা অনেকেই ক্যাপসুল মেডিসিন খেয়েছি, এটির বাইরে একটা আবরণ দিয়ে সব কিছু ভেতরে আটকানো থাকে । ব্যাপারটি এমনি। তিন, _**পলিমরফিজম**_ – বহুরূপিতা। অর্থাৎ একি অঙ্গে নানা রূপ। একটা অবজেক্ট নানা সময় নানা রকম রূপ ধারণ করতে পারে। @@ -49,5 +49,119 @@ এই সমস্যা সমাধান করার জন্যে এই টাস্কফোর্স পরিশেষে প্রস্তাব করে যে সফটওয়্যার-ও হার্ডওয়্যার এর মতো হওয়া উচিৎ। পরবর্তীতে তারা তাদের সিস্টেম এর ৪৫০ টি প্রোগ্রামিং ল্যাংগুয়েজ রিপ্লেস করে এডা (Ada) নামে একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে। +## ইনহেরিট্যান্স- + +এবার আমরা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট-এর আরও ভেতরে প্রবেশ করবো। শুরুতেই আমরা ইনহেরিটেন্স নিয়ো আলোচনা করি। + +ইনহেরিটেন্স নিয়ে কথা বলতে হলে এর সাথে আরেকটি বিষয় চলে আসে সেটি হলো অবজেক্ট কম্পোজিশান। এটি মোটামুটিভাবে একটু কঠিন অন্যান্য টপিক থেকে। তাই এই টপিকটি পড়ার সময় একটু ধৈর্য্য নিয়ে পড়তে হবে। + +তো শুরু করার যাক- + +প্রথমেই আমরা কথা বলবো Is - A এবং Has – A নিয়ে। + +যেহেতু আমরা জাভা প্রোগ্রামিং শুরু করেছি, তো আমরা যতই এর ভেতরে প্রবেশ করতে শুরু করবো, ততই বুঝতে শুরু করবো যে ক্লাস আসলে একটা স্ট্যান্ড এলোন কম্পোনেন্ট নয়, বরং এটি অন্যান্য ক্লাসের উপর নির্ভর করে। অর্থাৎ ক্লাস গুলো একটি রিলেশন মেইনটেইন করে চলে। +এই রিলেশন গুলো সাধারণত দুই ধরণের হয়- Is - A এবং Has – A। + +আমাদের বাস্তব জগৎ থেকে একটা এনালজি দেয়া যাক । যেমন একটি বিড়াল, কিংবা কার অথবা বাস। +বিড়াল হচ্ছে একটি প্রাণি। +কার এর থাকে চাকা এবং ইঞ্জিন। +বাস এরও থাকে চাকা এব ইঞ্জিন। +আবার কার এবং বাস দুটিই ভেহিকল বা যান। + +এখানে যে উদাহরণ গুলো দেয়া হয়েছে এর সবগুলো মূলত Is - A অথবা Has – A রিলেশনশিপ মেইনটেইন করে । যেমন - + +A cat is an Animal (বিড়াল একটি প্রাণি ।) +A car has wheels ( কার এর চাকা আছে ।) +A car has an engine ( কার এর একটি ইঞ্জিন আছে ।) + +তো ব্যপারটি একদম সহজ। ঠিক এই ব্যপারটিকে আমরা আমাদের অবজেক্ট ওরিয়েন্টেট কনসেপ্ট এর মাধ্যমে বলতে পারি। +যখন কোন অবজেক্ট এর মাঝে Is – A এই সম্পর্কটি দেখবো তাকে বলবো ইনহেরিটেন্স। আবার যখন কোন অবজেক্ট এর মাঝে Has – A এই সম্পর্কটি দেখবো তখন সেই ব্যপারটিকে বলবো অবজেক্ট কম্পোজিশান। + +ইনহেরিটেন্স মূলত একটি ট্রি-রিলেশানশিপ। অর্থাৎ এটি একটি অবজেক্ট থেকে ইনহেরিট করে আসে। + +আর যখন আমরা অনেকগুলো অবজেক্ট নিয়ে আরেকটি অবজেক্ট তৈরি করবো তখন সেই নতুন অবজেক্ট হলো মেইড-আপ বা নতুন তৈরি করা অবজেক্ট এই ঘটনাটি হলো কম্পোজিশান। + +এর সবই আসলে একটি কনসেপ্ট এবং আইডিয়া থেকে এসেছে, সেটি হলো কোড রিইউজ করা এবং সিম্পল করা। যেমন দুটি অবজেক্ট এর কোড এর কিছু অংশ যদি কমন থাকে তাহলে আমরা সেই অংশটিকে দুইটি ক্লাসের মধ্যে পুনরায় না লিখে বরং তাকে ব্যবহার করতে পারি। + +ধরা যাক, আমরা দুটি অবজেক্ট তৈরি করতে চাই- Animal এবং Cat + +আমরা জানি যে সব Animal খায়, ঘুমায়। সুতরাং আমরা এই ক্লাসে এই দুটি বৈশিষ্ট্য আমরা এই ক্লাসে লিখতে পারি। আবার যেহেতু আমরা জানি যে Cat হচ্ছে একটি Animal। সুতরাং আমরা যদি এমন ভাবে কোড লিখতে পারি, যাতে করে এই Cat ক্লাসের মধ্যে নতুন করে আর সেই দু্টি বৈশিষ্ট্যের কোড আর লিখতে হচ্ছে না, বরং আমর এই Animal ক্লাসটিকে রিইউজ করলাম, তাহলে যে ঘটনাটি ঘটবে তাকেই মূলত ইনহেরিটেন্স বলা হয়। + +এইভাবে আমরা আরও অন্যান্য Animal যেমন, Dog, Cow ইত্যাদি ক্লাস লিখতে পারি। + +কম্পোজিশান তুলনামূলক ভাবে একটু সহজ। + +যেমন আমরা একটি Car তৈরি করতে চাই। Car তৈরি করতে হলে আমাদের লাগবে Wheel এবং Engine. সুতরাং আমরা Wheel এবং Engine এই দুটি ক্লাসকে নিয়ে নতুন আরেকটি ক্লাস লিখবো। + + +এবার তাহলে একটি উদাহরণ দেখা যাক। + +‌ +```java + public class Bicycle { + + // the Bicycle class has three fields + public int cadence; + public int gear; + public int speed; + + // the Bicycle class has one constructor + public Bicycle(int startCadence, int startSpeed, int startGear) { + gear = startGear; + cadence = startCadence; + speed = startSpeed; + } + + // the Bicycle class has four methods + public void setCadence(int newValue) { + cadence = newValue; + } + + public void setGear(int newValue) { + gear = newValue; + } + + public void applyBrake(int decrement) { + speed -= decrement; + } + + public void speedUp(int increment) { + speed += increment; + } + } +``` + +উপরের Bicycle ক্লাসটিতে তিনটি ফিল্ড এবং চারটি মেথড আছে। এবার এই Bicycle থেকে আমরা এর একটি সাব-ক্লাস লিখবো- + +```java + public class MountainBike extends Bicycle { + + // the MountainBike subclass adds one field + public int seatHeight; + + // the MountainBike subclass has one constructor + public MountainBike(int startHeight, + int startCadence, + int startSpeed, + int startGear) { + super(startCadence, startSpeed, startGear); + seatHeight = startHeight; + } + + // the MountainBike subclass adds one method + public void setHeight(int newValue) { + seatHeight = newValue; + } + } + +``` + +এই MountainBike ক্লাসটি উপরে Bicycle এর সব ফিল্ড এবং মেথড গুলো ইনহেরিট করে এবং এতে নতুন করে শুধু একটি ফিল্ড এবং একটি মেথড লেখা হয়েছে। তাহলে আমাদের MountainBike ক্লাসটিতে Bicycle ক্লাসটির সব প্রোপ্রাটি এবং মেথড অটোম্যাটিক্যালি পেয়ে গেলো। + + + + + + ## চলবে ------- \ No newline at end of file From b34ef8f829a6c0ba493f55ce30adf30d69aa24d8 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 3 Nov 2014 05:25:30 +0600 Subject: [PATCH 039/150] Updated 5.md --- 5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/5.md b/5.md index 77928c4..9342152 100644 --- a/5.md +++ b/5.md @@ -12,7 +12,7 @@ * সারসংক্ষেপ -শুরুতে বস্তুর ধারণা নিয়ে একটি ছোট্ট ব্যাখ্যা দেই, পরবর্তীতে আমি এই কথাগুলো আরো ব্যাখ্যা করে বলবো। আমরা সবাই কম্পিউটার ব্যবহার করি, যারা একটু বেশি কৌতূহলী তারা নিশ্চয় কম্পিউটারের বক্স খুলে খুলে দেখেছে ফেলেছে যে, এর মধ্যে নানা রকম যন্ত্রাংশ থাকে, যেমন, র‍্যাম, হার্ডডিস্ক, মাদারবোর্ড, সিপিইউ, কুলিং ফ্যান ইত্যাদি। এইসব মিলেই কম্পিউটার। কিন্তু মজার ব্যপার হলো, এর সবই একটি কোম্পানি তৈরি করেনি। কেও র‍্যাম তৈরি করে, কেওবা মাদারবোর্ড, কেও বা আবার সিপিইউ। কিন্তু সবাই আলাদা আলাদা ভাবে সবকিছু তৈরি করলেও আমরা যখন পুরো কম্পিউটারটি এসেম্বল করি, কি সুন্দর ভাবে সব ঠিক ঠাক ভাবে লেগে যায়, কোন সমস্যা হয় না। একজন ম্যাকানিক-ও যার নাকি কম্পিউটার সায়েন্স এ ডিগ্রি নেই, সেও জানে কিভাবে সব কিছু এসেম্বল করতে হয়। র‍্যাম এর মধ্যে কি আছে সে সম্পর্কে তার কোনই ধারণা নেই, কিংবা সিপিইউ । অবজেক্ট ওরিয়েন্টেড কনসেপ্ট মূল ব্যাপারটি হলো এটি। একটা সিস্টেমে অনেক গুলো কম্পোনেন্ট থাকতে পারে, কিন্তু সব কম্পোনেন্ট গুলো কেও একা তৈরি করবে না এইটাই স্বাভাবিক, এবং এগুলো এমন ভাবে তৈরি করা হয় যাতে খুব সহজেই এদেরকে এসেম্বল করে পুরো সিস্টেম দাড় করানো যায়। +শুরুতে বস্তুর ধারণা নিয়ে একটি ছোট্ট ব্যাখ্যা দেই, পরবর্তীতে আমি এই কথাগুলো আরো ব্যাখ্যা করে বলবো। আমরা সবাই কম্পিউটার ব্যবহার করি, যারা একটু বেশি কৌতূহলী তারা নিশ্চয় কম্পিউটারের বক্স খুলে খুলে দেখে ফেলেছে যে, এর মধ্যে নানা রকম যন্ত্রাংশ থাকে, যেমন, র‍্যাম, হার্ডডিস্ক, মাদারবোর্ড, সিপিইউ, কুলিং ফ্যান ইত্যাদি। এইসব মিলেই কম্পিউটার। কিন্তু মজার ব্যপার হলো, এর সবই একটি কোম্পানি তৈরি করেনি। কেও র‍্যাম তৈরি করে, কেওবা মাদারবোর্ড, কেও বা আবার সিপিইউ। কিন্তু সবাই আলাদা আলাদা ভাবে সবকিছু তৈরি করলেও আমরা যখন পুরো কম্পিউটারটি এসেম্বল করি, কি সুন্দর ভাবে সব ঠিক ঠাক ভাবে লেগে যায়, কোন সমস্যা হয় না। একজন ম্যাকানিক-ও যার নাকি কম্পিউটার সায়েন্স এ ডিগ্রি নেই, সেও জানে কিভাবে সব কিছু এসেম্বল করতে হয়। র‍্যাম এর মধ্যে কি আছে সে সম্পর্কে তার কোনই ধারণা নেই, কিংবা সিপিইউ । অবজেক্ট ওরিয়েন্টেড কনসেপ্ট মূল ব্যাপারটি হলো এটি। একটা সিস্টেমে অনেক গুলো কম্পোনেন্ট থাকতে পারে, কিন্তু সব কম্পোনেন্ট গুলো কেও একা তৈরি করবে না এইটাই স্বাভাবিক, এবং এগুলো এমন ভাবে তৈরি করা হয় যাতে খুব সহজেই এদেরকে এসেম্বল করে পুরো সিস্টেম দাড় করানো যায়। অবজেক্ট ওরিয়েন্টেড কনসেপ্ট এর ধারণার সাথে পরিচিত হতে হলে শুরুতে আমাদের কিছু টার্ম বা শব্দের সাথে পরিচিত হতে হয়। আমি শুরুতে এনালজি বা উপমা দিয়ে বুঝানো চেষ্টা করবো, তারপর মূল বিষয়ে চলে আসবো। From b0e82947245356e1be4b1d20b78db04ad2f9878e Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 3 Nov 2014 05:27:50 +0600 Subject: [PATCH 040/150] Created 5.1.md --- 5.1.md | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 5.1.md diff --git a/5.1.md b/5.1.md new file mode 100644 index 0000000..373c587 --- /dev/null +++ b/5.1.md @@ -0,0 +1,108 @@ +## ইনহেরিট্যান্স- + +এবার আমরা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট-এর আরও ভেতরে প্রবেশ করবো। শুরুতেই আমরা ইনহেরিটেন্স নিয়ো আলোচনা করি। + +ইনহেরিটেন্স নিয়ে কথা বলতে হলে এর সাথে আরেকটি বিষয় চলে আসে সেটি হলো অবজেক্ট কম্পোজিশান। এটি মোটামুটিভাবে একটু কঠিন অন্যান্য টপিক থেকে। তাই এই টপিকটি পড়ার সময় একটু ধৈর্য্য নিয়ে পড়তে হবে। + +তো শুরু করার যাক- + +প্রথমেই আমরা কথা বলবো Is - A এবং Has – A নিয়ে। + +যেহেতু আমরা জাভা প্রোগ্রামিং শুরু করেছি, তো আমরা যতই এর ভেতরে প্রবেশ করতে শুরু করবো, ততই বুঝতে শুরু করবো যে ক্লাস আসলে একটা স্ট্যান্ড এলোন কম্পোনেন্ট নয়, বরং এটি অন্যান্য ক্লাসের উপর নির্ভর করে। অর্থাৎ ক্লাস গুলো একটি রিলেশন মেইনটেইন করে চলে। +এই রিলেশন গুলো সাধারণত দুই ধরণের হয়- Is - A এবং Has – A। + +আমাদের বাস্তব জগৎ থেকে একটা এনালজি দেয়া যাক । যেমন একটি বিড়াল, কিংবা কার অথবা বাস। +বিড়াল হচ্ছে একটি প্রাণি। +কার এর থাকে চাকা এবং ইঞ্জিন। +বাস এরও থাকে চাকা এব ইঞ্জিন। +আবার কার এবং বাস দুটিই ভেহিকল বা যান। + +এখানে যে উদাহরণ গুলো দেয়া হয়েছে এর সবগুলো মূলত Is - A অথবা Has – A রিলেশনশিপ মেইনটেইন করে । যেমন - + +A cat is an Animal (বিড়াল একটি প্রাণি ।) +A car has wheels ( কার এর চাকা আছে ।) +A car has an engine ( কার এর একটি ইঞ্জিন আছে ।) + +তো ব্যপারটি একদম সহজ। ঠিক এই ব্যপারটিকে আমরা আমাদের অবজেক্ট ওরিয়েন্টেট কনসেপ্ট এর মাধ্যমে বলতে পারি। +যখন কোন অবজেক্ট এর মাঝে Is – A এই সম্পর্কটি দেখবো তাকে বলবো ইনহেরিটেন্স। আবার যখন কোন অবজেক্ট এর মাঝে Has – A এই সম্পর্কটি দেখবো তখন সেই ব্যপারটিকে বলবো অবজেক্ট কম্পোজিশান। + +ইনহেরিটেন্স মূলত একটি ট্রি-রিলেশানশিপ। অর্থাৎ এটি একটি অবজেক্ট থেকে ইনহেরিট করে আসে। + +আর যখন আমরা অনেকগুলো অবজেক্ট নিয়ে আরেকটি অবজেক্ট তৈরি করবো তখন সেই নতুন অবজেক্ট হলো মেইড-আপ বা নতুন তৈরি করা অবজেক্ট এই ঘটনাটি হলো কম্পোজিশান। + +এর সবই আসলে একটি কনসেপ্ট এবং আইডিয়া থেকে এসেছে, সেটি হলো কোড রিইউজ করা এবং সিম্পল করা। যেমন দুটি অবজেক্ট এর কোড এর কিছু অংশ যদি কমন থাকে তাহলে আমরা সেই অংশটিকে দুইটি ক্লাসের মধ্যে পুনরায় না লিখে বরং তাকে ব্যবহার করতে পারি। + +ধরা যাক, আমরা দুটি অবজেক্ট তৈরি করতে চাই- Animal এবং Cat + +আমরা জানি যে সব Animal খায়, ঘুমায়। সুতরাং আমরা এই ক্লাসে এই দুটি বৈশিষ্ট্য আমরা এই ক্লাসে লিখতে পারি। আবার যেহেতু আমরা জানি যে Cat হচ্ছে একটি Animal। সুতরাং আমরা যদি এমন ভাবে কোড লিখতে পারি, যাতে করে এই Cat ক্লাসের মধ্যে নতুন করে আর সেই দু্টি বৈশিষ্ট্যের কোড আর লিখতে হচ্ছে না, বরং আমর এই Animal ক্লাসটিকে রিইউজ করলাম, তাহলে যে ঘটনাটি ঘটবে তাকেই মূলত ইনহেরিটেন্স বলা হয়। + +এইভাবে আমরা আরও অন্যান্য Animal যেমন, Dog, Cow ইত্যাদি ক্লাস লিখতে পারি। + +কম্পোজিশান তুলনামূলক ভাবে একটু সহজ। + +যেমন আমরা একটি Car তৈরি করতে চাই। Car তৈরি করতে হলে আমাদের লাগবে Wheel এবং Engine. সুতরাং আমরা Wheel এবং Engine এই দুটি ক্লাসকে নিয়ে নতুন আরেকটি ক্লাস লিখবো। + + +এবার তাহলে একটি উদাহরণ দেখা যাক। + +‌ +```java + public class Bicycle { + + // the Bicycle class has three fields + public int cadence; + public int gear; + public int speed; + + // the Bicycle class has one constructor + public Bicycle(int startCadence, int startSpeed, int startGear) { + gear = startGear; + cadence = startCadence; + speed = startSpeed; + } + + // the Bicycle class has four methods + public void setCadence(int newValue) { + cadence = newValue; + } + + public void setGear(int newValue) { + gear = newValue; + } + + public void applyBrake(int decrement) { + speed -= decrement; + } + + public void speedUp(int increment) { + speed += increment; + } + } +``` + +উপরের Bicycle ক্লাসটিতে তিনটি ফিল্ড এবং চারটি মেথড আছে। এবার এই Bicycle থেকে আমরা এর একটি সাব-ক্লাস লিখবো- + +```java + public class MountainBike extends Bicycle { + + // the MountainBike subclass adds one field + public int seatHeight; + + // the MountainBike subclass has one constructor + public MountainBike(int startHeight, + int startCadence, + int startSpeed, + int startGear) { + super(startCadence, startSpeed, startGear); + seatHeight = startHeight; + } + + // the MountainBike subclass adds one method + public void setHeight(int newValue) { + seatHeight = newValue; + } + } + +``` + +এই MountainBike ক্লাসটি উপরে Bicycle এর সব ফিল্ড এবং মেথড গুলো ইনহেরিট করে এবং এতে নতুন করে শুধু একটি ফিল্ড এবং একটি মেথড লেখা হয়েছে। তাহলে আমাদের MountainBike ক্লাসটিতে Bicycle ক্লাসটির সব প্রোপ্রাটি এবং মেথড অটোম্যাটিক্যালি পেয়ে গেলো। From 482356cf1870177274888445c0cb00776ce690a8 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 3 Nov 2014 05:27:54 +0600 Subject: [PATCH 041/150] Updated 5.md --- 5.md | 114 ----------------------------------------------------------- 1 file changed, 114 deletions(-) diff --git a/5.md b/5.md index 9342152..379da02 100644 --- a/5.md +++ b/5.md @@ -49,119 +49,5 @@ এই সমস্যা সমাধান করার জন্যে এই টাস্কফোর্স পরিশেষে প্রস্তাব করে যে সফটওয়্যার-ও হার্ডওয়্যার এর মতো হওয়া উচিৎ। পরবর্তীতে তারা তাদের সিস্টেম এর ৪৫০ টি প্রোগ্রামিং ল্যাংগুয়েজ রিপ্লেস করে এডা (Ada) নামে একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে। -## ইনহেরিট্যান্স- - -এবার আমরা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট-এর আরও ভেতরে প্রবেশ করবো। শুরুতেই আমরা ইনহেরিটেন্স নিয়ো আলোচনা করি। - -ইনহেরিটেন্স নিয়ে কথা বলতে হলে এর সাথে আরেকটি বিষয় চলে আসে সেটি হলো অবজেক্ট কম্পোজিশান। এটি মোটামুটিভাবে একটু কঠিন অন্যান্য টপিক থেকে। তাই এই টপিকটি পড়ার সময় একটু ধৈর্য্য নিয়ে পড়তে হবে। - -তো শুরু করার যাক- - -প্রথমেই আমরা কথা বলবো Is - A এবং Has – A নিয়ে। - -যেহেতু আমরা জাভা প্রোগ্রামিং শুরু করেছি, তো আমরা যতই এর ভেতরে প্রবেশ করতে শুরু করবো, ততই বুঝতে শুরু করবো যে ক্লাস আসলে একটা স্ট্যান্ড এলোন কম্পোনেন্ট নয়, বরং এটি অন্যান্য ক্লাসের উপর নির্ভর করে। অর্থাৎ ক্লাস গুলো একটি রিলেশন মেইনটেইন করে চলে। -এই রিলেশন গুলো সাধারণত দুই ধরণের হয়- Is - A এবং Has – A। - -আমাদের বাস্তব জগৎ থেকে একটা এনালজি দেয়া যাক । যেমন একটি বিড়াল, কিংবা কার অথবা বাস। -বিড়াল হচ্ছে একটি প্রাণি। -কার এর থাকে চাকা এবং ইঞ্জিন। -বাস এরও থাকে চাকা এব ইঞ্জিন। -আবার কার এবং বাস দুটিই ভেহিকল বা যান। - -এখানে যে উদাহরণ গুলো দেয়া হয়েছে এর সবগুলো মূলত Is - A অথবা Has – A রিলেশনশিপ মেইনটেইন করে । যেমন - - -A cat is an Animal (বিড়াল একটি প্রাণি ।) -A car has wheels ( কার এর চাকা আছে ।) -A car has an engine ( কার এর একটি ইঞ্জিন আছে ।) - -তো ব্যপারটি একদম সহজ। ঠিক এই ব্যপারটিকে আমরা আমাদের অবজেক্ট ওরিয়েন্টেট কনসেপ্ট এর মাধ্যমে বলতে পারি। -যখন কোন অবজেক্ট এর মাঝে Is – A এই সম্পর্কটি দেখবো তাকে বলবো ইনহেরিটেন্স। আবার যখন কোন অবজেক্ট এর মাঝে Has – A এই সম্পর্কটি দেখবো তখন সেই ব্যপারটিকে বলবো অবজেক্ট কম্পোজিশান। - -ইনহেরিটেন্স মূলত একটি ট্রি-রিলেশানশিপ। অর্থাৎ এটি একটি অবজেক্ট থেকে ইনহেরিট করে আসে। - -আর যখন আমরা অনেকগুলো অবজেক্ট নিয়ে আরেকটি অবজেক্ট তৈরি করবো তখন সেই নতুন অবজেক্ট হলো মেইড-আপ বা নতুন তৈরি করা অবজেক্ট এই ঘটনাটি হলো কম্পোজিশান। - -এর সবই আসলে একটি কনসেপ্ট এবং আইডিয়া থেকে এসেছে, সেটি হলো কোড রিইউজ করা এবং সিম্পল করা। যেমন দুটি অবজেক্ট এর কোড এর কিছু অংশ যদি কমন থাকে তাহলে আমরা সেই অংশটিকে দুইটি ক্লাসের মধ্যে পুনরায় না লিখে বরং তাকে ব্যবহার করতে পারি। - -ধরা যাক, আমরা দুটি অবজেক্ট তৈরি করতে চাই- Animal এবং Cat - -আমরা জানি যে সব Animal খায়, ঘুমায়। সুতরাং আমরা এই ক্লাসে এই দুটি বৈশিষ্ট্য আমরা এই ক্লাসে লিখতে পারি। আবার যেহেতু আমরা জানি যে Cat হচ্ছে একটি Animal। সুতরাং আমরা যদি এমন ভাবে কোড লিখতে পারি, যাতে করে এই Cat ক্লাসের মধ্যে নতুন করে আর সেই দু্টি বৈশিষ্ট্যের কোড আর লিখতে হচ্ছে না, বরং আমর এই Animal ক্লাসটিকে রিইউজ করলাম, তাহলে যে ঘটনাটি ঘটবে তাকেই মূলত ইনহেরিটেন্স বলা হয়। - -এইভাবে আমরা আরও অন্যান্য Animal যেমন, Dog, Cow ইত্যাদি ক্লাস লিখতে পারি। - -কম্পোজিশান তুলনামূলক ভাবে একটু সহজ। - -যেমন আমরা একটি Car তৈরি করতে চাই। Car তৈরি করতে হলে আমাদের লাগবে Wheel এবং Engine. সুতরাং আমরা Wheel এবং Engine এই দুটি ক্লাসকে নিয়ে নতুন আরেকটি ক্লাস লিখবো। - - -এবার তাহলে একটি উদাহরণ দেখা যাক। - -‌ -```java - public class Bicycle { - - // the Bicycle class has three fields - public int cadence; - public int gear; - public int speed; - - // the Bicycle class has one constructor - public Bicycle(int startCadence, int startSpeed, int startGear) { - gear = startGear; - cadence = startCadence; - speed = startSpeed; - } - - // the Bicycle class has four methods - public void setCadence(int newValue) { - cadence = newValue; - } - - public void setGear(int newValue) { - gear = newValue; - } - - public void applyBrake(int decrement) { - speed -= decrement; - } - - public void speedUp(int increment) { - speed += increment; - } - } -``` - -উপরের Bicycle ক্লাসটিতে তিনটি ফিল্ড এবং চারটি মেথড আছে। এবার এই Bicycle থেকে আমরা এর একটি সাব-ক্লাস লিখবো- - -```java - public class MountainBike extends Bicycle { - - // the MountainBike subclass adds one field - public int seatHeight; - - // the MountainBike subclass has one constructor - public MountainBike(int startHeight, - int startCadence, - int startSpeed, - int startGear) { - super(startCadence, startSpeed, startGear); - seatHeight = startHeight; - } - - // the MountainBike subclass adds one method - public void setHeight(int newValue) { - seatHeight = newValue; - } - } - -``` - -এই MountainBike ক্লাসটি উপরে Bicycle এর সব ফিল্ড এবং মেথড গুলো ইনহেরিট করে এবং এতে নতুন করে শুধু একটি ফিল্ড এবং একটি মেথড লেখা হয়েছে। তাহলে আমাদের MountainBike ক্লাসটিতে Bicycle ক্লাসটির সব প্রোপ্রাটি এবং মেথড অটোম্যাটিক্যালি পেয়ে গেলো। - - - - - - ## চলবে ------- \ No newline at end of file From 8f968722b5f1564452066cd6bef2668937345e71 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 3 Nov 2014 05:30:19 +0600 Subject: [PATCH 042/150] Updated SUMMARY.md --- SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/SUMMARY.md b/SUMMARY.md index 9b13370..078e4fc 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -9,6 +9,7 @@ * [ পাঠ ৩.২: এক্সপ্রেশান(Expressions), স্টেটমেন্ট (Statements) এবং ব্লক(Blocks)](3.2.md) * [পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং](4.md) * [পাঠ ৫: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-১](5.md) + * [পাঠ ৫.১: ইনহেরিট্যান্স](5.1.md) * [পাঠ ৬: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-২](6.md) * [পাঠ ৭: স্ট্রিং অপারেশান ](7.md) * [পাঠ ৮: জেনেরিকস](8.md) From 5e7a6958789ec10f03e8b480bd85a8060b7f3331 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 3 Nov 2014 05:30:27 +0600 Subject: [PATCH 043/150] Updated SUMMARY.md From 882c686565b2f2e4a7302a87aed37a844b86dd8d Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 3 Nov 2014 06:33:32 +0600 Subject: [PATCH 044/150] Created 5.2.md --- 5.2.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 5.2.md diff --git a/5.2.md b/5.2.md new file mode 100644 index 0000000..7262650 --- /dev/null +++ b/5.2.md @@ -0,0 +1,2 @@ +## পলিমরফিজম (Polymorphism) + From d9fc7c05d1c704aaafdf65e36541731484b62ca2 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 3 Nov 2014 06:36:02 +0600 Subject: [PATCH 045/150] Created 5.3.md --- 5.3.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 5.3.md diff --git a/5.3.md b/5.3.md new file mode 100644 index 0000000..3023540 --- /dev/null +++ b/5.3.md @@ -0,0 +1,2 @@ +## ইনক্যাপসুলেশান (Encapsulation) + From 7700975a4f83b257aea7d611b3d23db033e008eb Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 4 Nov 2014 05:57:49 +0600 Subject: [PATCH 046/150] Updated 5.1.md --- 5.1.md | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/5.1.md b/5.1.md index 373c587..3f55993 100644 --- a/5.1.md +++ b/5.1.md @@ -106,3 +106,111 @@ A car has an engine ( কার এর একটি ইঞ্জিন আছে ``` এই MountainBike ক্লাসটি উপরে Bicycle এর সব ফিল্ড এবং মেথড গুলো ইনহেরিট করে এবং এতে নতুন করে শুধু একটি ফিল্ড এবং একটি মেথড লেখা হয়েছে। তাহলে আমাদের MountainBike ক্লাসটিতে Bicycle ক্লাসটির সব প্রোপ্রাটি এবং মেথড অটোম্যাটিক্যালি পেয়ে গেলো। + +এখানে এ Bicycle হচ্ছে সুপার ক্লাস(Super Class) এবং MountainBike হচ্ছে সাব-ক্লাস(Sub Class) । অর্থাৎ যে ক্লাস থেকে ইনহেরিট করা হয় তাকে বলা হয় সুপার ক্লাস এবং যে ক্লাস সাব ক্লাস থেকে ইনহেরিট করে + +**মেথড অভাররাইডিং(Method Overriding)** + +যদিও সাব-ক্লাস সুপার-ক্লাসের সব গুলো প্রোপ্রার্টি এবং মেথড ইনহেরিটর করে, তবে সাব-ক্লাসে সুপার ক্লাসের যে কোন প্রোপ্রার্টি বা মেথড কে অভাররাইড করা যায়। + +একটি উদাহরণ দেখা যাক- + +```java + public class Circle { + double radius; + String color; + + public Circle(double radius, String color) { + this.radius = radius; + this.color = color; + } + + public Circle() { + radius = 1.0; + color = "RED"; + } + + public double getArea() { + return radius * radius * Math.PI; + } + } +``` + +এই ক্লাসটিতে `getArea()` মেথড একটি বৃত্তের ক্ষেত্রফল রিটার্ন করে। + +এখন আমরা এই ক্লাসটিকে এক্সটেন্ড(‌‌‌‌‌`extends`‌) করে নতুন আরেকটি ক্লাস লিখবো- + + ```java + public class Cylinder extends Circle { + double height; + + public Cylinder() { + this.height = 1.0; + } + + public Cylinder(double radius, String color, double height) { + super(radius, color); + this.height = height; + } + + @Override + public double getArea() { + return 2 * Math.PI * radius * height + 2 * super.getArea(); + } + } +``` + +এই ক্লাসটিতে `Circle` এর মেথডটি আমরা সাধারণ ভাবেই পেয়ে যাবো। `Cylinder` এর ক্ষেত্রফল নির্ধারণ করতে হলে `getArea()` কল করলেই হয়ে যাচ্ছে। কিন্তু আমরা জানি যে `Circle` এবং `Cylinder` এর ক্ষেত্রফল একভাবে নির্ধারণ করা যায় না। এক্ষেত্রে আমরা যদি `Circle` এর মেথডটি কে ব্যবহার করি তাহলে আমাদের ক্ষেত্রফলের মান ভুল আসবে। এই সমস্যা সমধাণ করার জন্যে আমরা আমাদের `Cylinder` ক্লাসটিতে `getArea()` মেথডটিকে পুনারায় লিখেছি। + +এখানে লক্ষ্য রাখতে হবে যে, দুটি মেথড এর সিগনেচার, রিটার্ন-টাইপ এবং প্যারামিটার লিস্ট একই রকম হতে হবে। + +এখন আমরা যদি `Cylinder` ক্লাস-এর `getArea()` মেথড কল করি, তাহলে অভারাইডেড মেথডটি কল হবে। + + +**অ্যনোটেশান(Annotation) @Override** + +`@Override` এই অ্যনোটেশানটি জাভা 1.5 ভার্সনে প্রথম নিয়ে আসা হয়। কোন মেথডকে যদি আমরা অভাররাইড করি তাহলে সেই মেথড এর উপরে `@Override` দেয়া হয়। এটি কম্পাইলারকে ইনফর্ম করে যে, এই মেথটি সুপার ক্লাসের অভাররাইডেড মেথড। + +তবে এটি অপশনাল হলেও অবশ্যই ভাল যদি ব্যবহার করা হয়। + + +**`super` কিওয়ার্ড** + +আমরা যদি সাব ক্লাস থেকে সুপার ক্লাসের কোন মেথড বা ভেরিয়েবল একসেস করতে চাই তাহলে আমরা এই কিওয়ার্ডটি ব্যবহার করি। কিন্তু আমরা জানি যে সাব ক্লাসে অটোমেটিক্যালি সুপার ক্লাসের সব প্রোপ্রার্টি চলে আসে তাহলে এর প্রয়োজনিয়তা নিয়ে প্রশ্ন হতে পারে। + +আমরা আবার উপরের Cylinder ক্লাসটি আবার দেখি। এই ক্লাসটিতে আমরা নতুন আরেকটি মেথড লিখতে চাই। + +```java + public double getVolume() { + return getArea() * height; + } +``` + +এই মেথডটি-তে `getArea() * height` এই স্ট্যাটমেন্টটি লক্ষ করি। +এখানে `getArea()` এই মেথটি কল করা হয়েছে। আমাদের এই `Cylinder` ক্লাসটিতে `getArea()` মেথডটিকে আমরা `Circle` ক্লাস এর `getArea()` মেথড-কে অভারাইড করেছি। সুতরাং আমরা যখন এই `Cylinder` ক্লাস থেকে `getArea()` মেথডটি কল করবো তখন আসলে `Cylinder` ক্লাস এর মেথডটি কল হবে। + +কিন্তু এক্ষেত্রে আমাদের একটি সমস্যা হচ্ছে যে - আমরা জানি সিলিন্ডারের আয়তন + + V = Pi * r^2 * h + = (Pi * r^2) * h + = Area of Circle * h + +সুতরাং Cylinder ক্লাসের ‌`getArea()` মেথডটি ব্যবহার করা যাচ্ছে না। কারণ সিলিন্ডারের ক্ষেত্রফল- + + A = (2 * Pi * r * h) + (2 * Pi * r^2) + +কিন্তু আমরা যদি `Circle` ক্লাস এর মেথডটি ব্যবহার করি তাহলে আমাদের সমস্যা সমাধান হয়ে যায়। +এখন যদি আমরা সুপার ক্লাস(Circle) এর মেথডটি কল করে এই মেথডটি লিখতে চাই তাহলে - + +```java + public double getVolume() { + return super.getArea() * height; + } +``` + +অর্থাৎ সাব ক্লাসে যদি মেথড অভাররাইড করা হয় এবং তারপরেও কোন কারণে যদি আমাদের সুপার ক্লাসের মেথড কে কল করার প্রয়োজন হয় তাহলে আমরা সুপার(`super`) কিওয়ার্ডটি ব্যবহার করি। + +ইনহেরিটিেন্স এর ক্ষেত্রে মনে রাখতে হবে – + +জাভা মাল্টিপল ইনহেরিটেন্স সাপোর্ট করে না। এর মানে হচ্ছে আমার একটি ক্লাস শুধুমাত্র একটি ক্লাসকেই ইনহেরিট করতে পারে। + From 4a600ab61c44f1118663772784125cf631f92c86 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 4 Nov 2014 06:07:02 +0600 Subject: [PATCH 047/150] Updated 5.1.md --- 5.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/5.1.md b/5.1.md index 3f55993..8515021 100644 --- a/5.1.md +++ b/5.1.md @@ -210,7 +210,7 @@ A car has an engine ( কার এর একটি ইঞ্জিন আছে অর্থাৎ সাব ক্লাসে যদি মেথড অভাররাইড করা হয় এবং তারপরেও কোন কারণে যদি আমাদের সুপার ক্লাসের মেথড কে কল করার প্রয়োজন হয় তাহলে আমরা সুপার(`super`) কিওয়ার্ডটি ব্যবহার করি। -ইনহেরিটিেন্স এর ক্ষেত্রে মনে রাখতে হবে – +ইনহেরিটেন্স এর ক্ষেত্রে মনে রাখতে হবে – জাভা মাল্টিপল ইনহেরিটেন্স সাপোর্ট করে না। এর মানে হচ্ছে আমার একটি ক্লাস শুধুমাত্র একটি ক্লাসকেই ইনহেরিট করতে পারে। From 10c421957702fc862dde12976e5c97edaeb23bfe Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 9 Nov 2014 21:55:51 +0600 Subject: [PATCH 048/150] Updated 5.2.md --- 5.2.md | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/5.2.md b/5.2.md index 7262650..bf4bab8 100644 --- a/5.2.md +++ b/5.2.md @@ -1,2 +1,114 @@ ## পলিমরফিজম (Polymorphism) +এবার আমরা কথা বলবো পলিমরফিজম নিয়ে। শব্দটির মধ্যেই একটি বিশেষ গাম্ভীর্য আছে যা কিনা একটি সাধারণ কথোপকথনকে অনেক গুরুত্বর্পূণ করে তুলতে পারে। তবে এটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর একটি বহুল ব্যবহৃত কৌশল । এই শব্দটির সহজ মানে হচ্ছে যার একাধিক রূপ আছে অর্থাৎ বহুরূপিতা। + +মনে করা যাক, +‌‌ +‌ +```java‌ + public class Liquid { + public void swirl(boolean clockwise) { + // Implement the default swirling behavior for liquids + System.out.println("Swirling Liquid"); + } + } +``` + +এখন এর একটি অবজেক্ট তৈরি করতে চাইলে – আমাদের new অপারেটর ব্যবহার করে তা একটি ভেরিয়েবল এ রাখতে হবে। +‌ +‌ +```java‌ + + Liquid myFavoriteBeverage = new Liquid (); +``` + +এখানে `myFavoriteBeverage` হচ্ছে আমাদের ভেরিয়েবল যা `Liquid` অবজেক্ট এর রেফারেন্স। +আমরা এখন পর্যন্ত যা যা শিখেছি সে অনুযায়ী এই স্টেন্টমেন্টটি যথার্থ। তবে আমরা এর আগের অধ্যায়ে `Is-A` সম্পর্কে জেনে এসেছি। + +আমাদের জাভা প্রোগ্রামিং পলিমরফিজম সাপোর্ট করায় আমরা `myFavoriteBeverage` এই রেফারেন্সের যায়গায় `Is-A` সম্পর্কিত যে কোন টাইপ রাখতে পারবো। যেমন – +‌ +‌ +```java‌ + + Liquid myFavoriteBeverage = new Coffee(); + Liquid myFavoriteBeverage = new Milk(); +``` + +এখানে `Coffee` এবং `Milk` হচ্ছে` Liquid `এর সাব- ক্লাস বা টাইপ এবং `Liquid` এদের সুপার ক্লাস বা টাইপ। + +কিন্তু এই ব্যবস্থায় কি সুবিধা তা জানতে হলে আমাদের আরও একটু জানতে হবে। +উপরের উদারহরণ গুলোতে দেখলাম যে সুপার ক্লাসের কোন রেফারেন্স-এ সাথে এর যে কোন সাব ক্লাস এর অবজেক্ট রাখতে পারি। পলিমরফিজম নিয়ে আরও একটু আশ্চর্য হতে চাইলে আমরা এখন একটি বিষয় জানবো যা দিয়ে আমরা কোন একটি অবজেক্ট এর কোন মেথড কল করবো তবে তা কোন ক্লাসের অবজেক্ট সেটি না জেনেই। আরেকটু পরিষ্কার করে বলি, আমরা যখন সুপার ক্লাসের এর রেফারেন্স ধরে কোন এর মেথড কল করবো তখন কিন্তু আমরা জানি না যে এটি আসলে কোন অবজেক্ট এর মেথড। যেমন- +‌ +‌ +```java‌ + + Liquid myFavoriteBeverage = // …. +``` + +এখানে আমাদের myFavoriteBeverage এই রেফারেন্স এ `Liquid`, `Coffee`, `Milk` এর যেকোন একটির অবজেক্ট হতে পারে। উদাহরণ - +‌ +‌ +```java‌ + + public class Coffee extends Liquid { + @Override + public void swirl(boolean clockwise) { + System.out.println("Swirling Coffee"); + } + } + + public class Milk extends Liquid{ + @Override + public void swirl(boolean clockwise) { + System.out.println("Swirling Milk"); + } + } + + public class CoffeeCup { + private Liquid innerLiquid; + + void addLiquid(Liquid liq) { + innerLiquid = liq; + // Swirl counterclockwise + innerLiquid.swirl(false); + } + } +``` + +আমরা এখানে একটি `CoffeeCup` ক্লাস লিখেছি যার মাঝে `addLiquid()` নামে একটি মেথড আছে যা কিনা একটি `Liquid` টাইপ parameter নেয়, এবং সেই `Liquid` এর `swirl()` মেথড-কে কল করে। + +কিন্তু আমরা একটি কফি-কাপ এ শুধুমাত্র কফি-ই এড করতে পারি তা নয়, আমরা চাইলে যে কোন ধরণের লিকুয়েড এড করতে পারি, সেটা মিল্ক ও হতে পারে। তাহলে এই `addLiquid` মেথড তো শুধুমাত্র `Liquid` টাইপ parameter নেয়, তাহলে আমাদের বাস্তব জগতের সাথে এই প্রোগ্রামিং মডেল এর সাদৃশ্য থাকলো কোথায় ? +তবে মজার ব্যপার এখানেই, আমাদের এই `CoffeeCu`p ক্লাসটি পলিমরফিজমের ম্যজিক ব্যাবহার করে সত্যিকার অর্থেই আমাদের সত্যিকারের জগতের `CoffeeCup` এর মতোই কাজ করে। +‌ +‌ +```java‌ + + public class MainApp { + public static void main(String[] args) { + // First you need a coffee cup + CoffeeCup myCup = new CoffeeCup(); + + // Next you need various kinds of liquid + Liquid genericLiquid = new Liquid(); + Coffee coffee = new Coffee(); + Milk milk = new Milk(); + + // Now you can add the different liquids to the cup + myCup.addLiquid(genericLiquid); + myCup.addLiquid(coffee); + myCup.addLiquid(milk); + } + } +``` + +উপরের কোড গুলোতে দেখা যাচ্ছে যে আমরা একটি `CoffeeCup` এর একটি অবজেক্ট তৈরি করে সেটি তে বিভিন্ন রকম `Liquid` এড করতে পারছি। + + + + + + + + + +## চলবে ..... \ No newline at end of file From 9194dae1f1138a69b5c5c56351ca766f0f02f7bc Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 9 Nov 2014 22:34:24 +0600 Subject: [PATCH 049/150] Updated 5.2.md --- 5.2.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/5.2.md b/5.2.md index bf4bab8..4825278 100644 --- a/5.2.md +++ b/5.2.md @@ -25,7 +25,7 @@ এখানে `myFavoriteBeverage` হচ্ছে আমাদের ভেরিয়েবল যা `Liquid` অবজেক্ট এর রেফারেন্স। আমরা এখন পর্যন্ত যা যা শিখেছি সে অনুযায়ী এই স্টেন্টমেন্টটি যথার্থ। তবে আমরা এর আগের অধ্যায়ে `Is-A` সম্পর্কে জেনে এসেছি। -আমাদের জাভা প্রোগ্রামিং পলিমরফিজম সাপোর্ট করায় আমরা `myFavoriteBeverage` এই রেফারেন্সের যায়গায় `Is-A` সম্পর্কিত যে কোন টাইপ রাখতে পারবো। যেমন – +আমাদের জাভা প্রোগ্রামিং পলিমরফিজম সাপোর্ট করায় আমরা `myFavoriteBeverage` এই রেফারেন্সের যায়গায় `Is-A` সম্পর্কিত যে কোন টাইপ রাখতে পারি। যেমন – ‌ ‌ ```java‌ @@ -36,8 +36,7 @@ এখানে `Coffee` এবং `Milk` হচ্ছে` Liquid `এর সাব- ক্লাস বা টাইপ এবং `Liquid` এদের সুপার ক্লাস বা টাইপ। -কিন্তু এই ব্যবস্থায় কি সুবিধা তা জানতে হলে আমাদের আরও একটু জানতে হবে। -উপরের উদারহরণ গুলোতে দেখলাম যে সুপার ক্লাসের কোন রেফারেন্স-এ সাথে এর যে কোন সাব ক্লাস এর অবজেক্ট রাখতে পারি। পলিমরফিজম নিয়ে আরও একটু আশ্চর্য হতে চাইলে আমরা এখন একটি বিষয় জানবো যা দিয়ে আমরা কোন একটি অবজেক্ট এর কোন মেথড কল করবো তবে তা কোন ক্লাসের অবজেক্ট সেটি না জেনেই। আরেকটু পরিষ্কার করে বলি, আমরা যখন সুপার ক্লাসের এর রেফারেন্স ধরে কোন এর মেথড কল করবো তখন কিন্তু আমরা জানি না যে এটি আসলে কোন অবজেক্ট এর মেথড। যেমন- +পলিমরফিজম নিয়ে আরও একটু আশ্চর্য হতে চাইলে আমরা এখন একটি বিষয় জানবো যা দিয়ে আমরা কোন একটি অবজেক্ট এর কোন মেথড কল করবো তবে তা কোন ক্লাসের অবজেক্ট সেটি না জেনেই। আরেকটু পরিষ্কার করে বলি, আমরা যখন সুপার ক্লাসের এর রেফারেন্স ধরে কোন এর মেথড কল করবো তখন কিন্তু আমরা জানি না যে এটি আসলে কোন অবজেক্ট এর মেথড। যেমন- ‌ ‌ ```java‌ @@ -77,10 +76,10 @@ আমরা এখানে একটি `CoffeeCup` ক্লাস লিখেছি যার মাঝে `addLiquid()` নামে একটি মেথড আছে যা কিনা একটি `Liquid` টাইপ parameter নেয়, এবং সেই `Liquid` এর `swirl()` মেথড-কে কল করে। -কিন্তু আমরা একটি কফি-কাপ এ শুধুমাত্র কফি-ই এড করতে পারি তা নয়, আমরা চাইলে যে কোন ধরণের লিকুয়েড এড করতে পারি, সেটা মিল্ক ও হতে পারে। তাহলে এই `addLiquid` মেথড তো শুধুমাত্র `Liquid` টাইপ parameter নেয়, তাহলে আমাদের বাস্তব জগতের সাথে এই প্রোগ্রামিং মডেল এর সাদৃশ্য থাকলো কোথায় ? +কিন্তু আমরা আমাদের সত্যিকারের জগতে একটি কফি-কাপ এ শুধুমাত্র কফি-ই এড করতে পারি তা নয়, আমরা চাইলে যে কোন ধরণের লিকুইড এড করতে পারি, সেটি মিল্ক ও হতে পারে। তাহলে এই `addLiquid` মেথড তো শুধুমাত্র `Liquid` টাইপ parameter নেয়, তাহলে আমাদের সত্যিকারের জগতের সাথে এই প্রোগ্রামিং মডেল এর সাদৃশ্য থাকলো কোথায় ? + তবে মজার ব্যপার এখানেই, আমাদের এই `CoffeeCu`p ক্লাসটি পলিমরফিজমের ম্যজিক ব্যাবহার করে সত্যিকার অর্থেই আমাদের সত্যিকারের জগতের `CoffeeCup` এর মতোই কাজ করে। ‌ -‌ ```java‌ public class MainApp { @@ -103,6 +102,17 @@ উপরের কোড গুলোতে দেখা যাচ্ছে যে আমরা একটি `CoffeeCup` এর একটি অবজেক্ট তৈরি করে সেটি তে বিভিন্ন রকম `Liquid` এড করতে পারছি। +আরেকটু লক্ষ্য করি, + +```java + void addLiquid(Liquid liq) { + innerLiquid = liq; + // Swirl counterclockwise + innerLiquid.swirl(false); + } +``` + +এই মেথডটিতে innerLiquid.swirl(false) যখন কল করি তখন কিন্তু আমরা জানি না যে এই innerLiquid আসলে কোন অবজেক্ট এর রেফারেন্স। এটি লিকুইড বা এর যে কোন সাব-টাইপ হতে পারে। From 612d6d6e4feb577a912f7051fbde4ca03812d201 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 9 Nov 2014 22:35:34 +0600 Subject: [PATCH 050/150] Updated SUMMARY.md --- SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/SUMMARY.md b/SUMMARY.md index 078e4fc..16ab3a0 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -10,6 +10,7 @@ * [পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং](4.md) * [পাঠ ৫: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-১](5.md) * [পাঠ ৫.১: ইনহেরিট্যান্স](5.1.md) + * [পাঠ ৫.২: পলিফরফিজম](5.2.md) * [পাঠ ৬: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-২](6.md) * [পাঠ ৭: স্ট্রিং অপারেশান ](7.md) * [পাঠ ৮: জেনেরিকস](8.md) From 94464d702755c2505636b4c2ba84a7be1a37f725 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 9 Nov 2014 23:01:18 +0600 Subject: [PATCH 051/150] Updated 5.2.md --- 5.2.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/5.2.md b/5.2.md index 4825278..4617e60 100644 --- a/5.2.md +++ b/5.2.md @@ -116,6 +116,32 @@ +কিছু প্রয়োজনীয় তথ্য- + +১. একটি সাব ক্লাস এর অবজেক্টকে আমরা এর সুপার ক্লাসের রেফারেন্স এ এসাইন করতে পারি। +২. সাব ক্লাসের অবজেক্টকে সুপার ক্লাসের রেফারেন্স-এ এসাইন করলে, মেথড কল করার সময় শুধু মাত্র সুপার ক্লাসের মেথড গুলোকেই কল করতে পারি। +৩. তবে সাব ক্লাস যদি সুপার ক্লাসের মেথড অভাররাইড করে, তাহলে যদিও আমরা সুপার ক্লাস এর রেফারেন্স ধরে মেথড কল করছি, কিন্তু রানটাইম-এ সাব ক্লাসের মেথডটি কল হবে। মনে রাখতে হবে এটি শুধুমাত্র মেথড অভাররাইড করা হলেই সত্য হবে। + + + + + +**আপ-কাস্টিং(Upcasting ) এবং ডাউনকাস্টিং (Downcasting)** + +```java + Liquid liquid = new Coffee (); +``` + +এখানে সাব ক্লাসের অবজেক্টকে সুপার ক্লাসের রেফারেন্স এ এসাইন করা হয়ছে। একে বলা হয় আপ-কাস্টিং। +এই কাস্টিং সবসময় সেইফ ধরা হয় কারণ আপকাস্টং এর ক্ষেত্রে সাব ক্লাস সবসময়ই সুপার ক্লাসের সবকিছু ইনহেরিট করে এবং কম্পাইলার কম্পাইল করার সময়-ই এ কাস্টিং করা সম্ভব কিনা তা চেক করে থাকে। + + +```java + Liquid liquid = new String(); +``` + +উপরের স্টেটমেন্টটি কম্পাইলার কম্পাইল করবে না, কারণ `String` মোটেই `Liquid` ক্লাসের সাব ক্লাস নয়। এক্ষেত্রে কম্পাইলার incompatible types ইরর দেখাবে। + From f9f45299c253e912aecd0ae561e92355ccd1d48c Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 9 Nov 2014 23:03:07 +0600 Subject: [PATCH 052/150] Updated README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index af12e23..0b07f3b 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ **কাদের জন্যে কোর্স:** এই কোর্স মূলত বিশ্ববিদ্যালয় এর প্রথম বর্ষের ছাত্র-ছাত্রীদের জন্যে যারা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট শুরুকরতে চায়। তবে যে কেও চাইলে এই কোর্সটি করতে পারে। ধরে নেওয়া হচ্ছে যে, শিক্ষার্থী অন্ত্যত যে কোন একটি প্রোগ্রামিং ল্যাংগুয়েজ (সি/সি++) সম্পর্কে আগে থেকেই ধারণা রাখে। > ## Statutory warning -> __This book may containt unexpected misspellings. Reader Feedback Requested.__ +> __This book may contain unexpected misspellings. Reader Feedback Requested.__ #### ওপেন সোর্স From bb45b604af97248b5e4df1d7de10747a1df14c5f Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Fri, 14 Nov 2014 17:39:16 +0600 Subject: [PATCH 053/150] Updated introduction.md --- introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/introduction.md b/introduction.md index cb31160..dc07c13 100644 --- a/introduction.md +++ b/introduction.md @@ -23,7 +23,7 @@ ঠিক সেই সময়েই National Center for Supercomputing Applications (NCSA) একটি কমার্শিয়াল ওয়েব ব্রাওজার বের করে এবং তাদের টিম ইন্টারনেট এর ভবিষ্যৎ নিয়ে ভাবেতে শুরু করে। তারা একটি নতুন ধারণা নিয়ে আসে সেটি হলো, একধরণের ছোট্ট প্রোগ্রাম যা কিনা ব্রাওজার এর মধ্যে চলবে - এর নাম দেয় অ্যাপলেট। অ্যাপলেট ধারণা থেকে তারা ঠিক করে এপলেট এর জন্যে কিছু স্ট্যাডার্ড – এটি হতে হবে ছোট্ট, খুব সিম্পল, এর স্ট্যাডার্ড এপিআই থাকতে হবে, এটি হবে প্লাটফর্ম ইন্ডিপেন্ডেন্ট, এবং আউট-অব-দ্যা বক্স নেটওয়ার্কিং প্রোগ্রামিং করা যাবে। তারা তখনকার সময়ের ইন্টারনেট বুমকে উদ্দ্যেশ্য করে নেক্সট জেনারেশান প্রোডাক্ট ডেভেলপ করতে চেয়েছিল। এই প্রজেক্ট এর কার্টুন নাম ছিল Duke ( যা কিনা এখন জাভা-এর মাস্কট হিসেবে চিনি)। কিন্তু সমস্যা হচ্ছে এর কোনটিই ঠিক মতো সি++ দিয়ে করা যাচ্ছিল না। সুতরাং পরবর্তীতে তারা সিন্ধান্ত নেয় যে এমবেডেড সিস্টেমের সমস্যার সমাধানটি তারা ওয়েব ব্রাওজার এর ক্ষেত্রেও ব্যবহার করবে । সেই সময়ে মানুষ ওয়েব ব্রাওজার এর শুধুমাত্র স্টেটিক পেইজ এ টেক্সট আর ইমেজ ছাড়া কিছু দেখতে পেত না। এই টেকনোলী ব্যবহার করায় ব্রাওজারে এনিমেশান থেকে শুরু করে ইন্টাএকটিভ এপলেট সকলের নজর কাড়ে যা কিনা জাভা প্রোগ্রামিং ল্যাংগুয়েজ এর সফলতার মূল কারণ। -জেমস গসলিং এর এই ভার্চুয়ার মেশিনর সল্যুশান ছিল সত্যিকার অর্থেই যুগান্তকারী এবং গ্রিন টিম এর রিলিজ দিতে প্রস্তুত। কিন্তু তখন-ই নতুন ঝামেলার সূচনা হয়, lawyers এসে তাদের জানায় এর নাম Oak দেওয়া যাবে না, কারণ এটি ইতিমধ্যেই Oak Technologies এর ট্রেড মার্ক। সুতরাং নাম পরিবর্তন করতে হবে। শুরু হয় ব্রেইনস্টর্মিং । কিন্তু কোন ভাবেই একটি ভাল নাম নির্বাচন করা যাচ্ছিল না। অনেকেই অনেক ধরণের নাম উপস্থাপন করে, যেমন - DNA, Silk , Ruby, yuck, Silk, Lyric, Pepper, NetProse, Neon, Java ইত্যাদি ইত্যাদি। এর সব গুলো লিগাল ডিপার্টমেন্ট এ সাবমিট করার পর মাত্র Java, DNA, and Silk এই তিনটি নাম ফিরে আসে যা কিনা ক্লিন। নাম নিয়ে ঘণ্টার পর ঘণ্টার মিটিং চলতে থাকে। এর মধ্যে Chris Warth প্রপোজ করে Java, কারণ তখন তার হাতে ছিল এক কাপ গরম Peet's Java (কফি)। +জেমস গসলিং এর এই ভার্চুয়াল মেশিন-এর সল্যুশান ছিল সত্যিকার অর্থেই যুগান্তকারী এবং `গ্রিন টিম` এর রিলিজ দিতে প্রস্তুত। কিন্তু তখন-ই নতুন ঝামেলার সূচনা হয়, lawyers এসে তাদের জানায় এর নাম Oak দেওয়া যাবে না, কারণ এটি ইতিমধ্যেই Oak Technologies এর ট্রেড মার্ক। সুতরাং নাম পরিবর্তন করতে হবে। শুরু হয় ব্রেইনস্টর্মিং । কিন্তু কোন ভাবেই একটি ভাল নাম নির্বাচন করা যাচ্ছিল না। অনেকেই অনেক ধরণের নাম উপস্থাপন করে, যেমন - DNA, Silk , Ruby, yuck, Silk, Lyric, Pepper, NetProse, Neon, Java ইত্যাদি ইত্যাদি। এর সব গুলো লিগাল ডিপার্টমেন্ট এ সাবমিট করার পর মাত্র Java, DNA, and Silk এই তিনটি নাম ফিরে আসে যা কিনা ক্লিন। নাম নিয়ে ঘণ্টার পর ঘণ্টার মিটিং চলতে থাকে। এর মধ্যে Chris Warth প্রপোজ করে Java, কারণ তখন তার হাতে ছিল এক কাপ গরম Peet's Java (কফি)। শেষ পর্যন্ত নাম ঠিক করা হয় Java কারণ একমাত্র এই নামেই সব থেকে পজিটিভ রিএকশান পাওয়া যাচ্ছিল। ‌১৯৯৫ সালের মে মাসে জাভা এর প্রথম পাবলিক ভার্সন রিলিজ হয়। From 6f831126073fdedfeee5b476f8d42b2edf3bdba3 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 16 Nov 2014 22:52:47 +0600 Subject: [PATCH 054/150] Updated 5.3.md --- 5.3.md | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) diff --git a/5.3.md b/5.3.md index 3023540..5aa78f5 100644 --- a/5.3.md +++ b/5.3.md @@ -1,2 +1,128 @@ ## ইনক্যাপসুলেশান (Encapsulation) +আমরা এতোক্ষনে জেনে ফেলেছি যে, একটি অবজেক্ট হলো কতগুলো ডাটা এবং মেথড এর সমষ্টি। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর আরেকটি খুবই গুরুত্বপূর্ণ বিষয় আছে, যা হচ্ছে, একটি ক্লাসের মধ্যে ডাটা গুলোকে লুকিয়ে রাখা এবং শুধুমাত্র মেথডের মাধ্যমে সেগুলোকে একসেস করতে দেওয়া। এর নাম হচ্ছে এনক্যাপসুলেশান(Encapsulation) । এর মাধ্যমে আমরা সব ডাটা গুলোকে ক্লাসের মধ্যে সিল করে একটা কেপসুলের মধ্যে রেখে দিই এবং সেগুলো শুধুমাত্র যেসব মেথড গুলোকে ট্রাস্ট করা যায়, তাদের মাধ্যমে একসেস করতে দিই। + +তবে এই এতো প্রোটেকশান এর কারণ কি হতে পারে তা যদি একটু জেনে নিই শুরুতে তাহলে আমার মনে খুব ভাল হয় – + +যারা অনেক লেখালেখি করে এমনকি যারা কোড লিখে তারাও জানে যে, একটা লেখা ততই ভাল হয় সেটাকে যত বেশি রি-রাইট করা হয়। আপনি যদি একটা কোড লিখে ফেলে রাখেন এবং কিছুদিন পরে আবার সেটি খুলে দেখেন- দেখা যাবে যে আপনি আরও একটি ভাল উপায় বের পেয়ে যাবেন সেই কোডটি লেখার। এটি সব সময়ই হয়। এই বার বার কোড চেঞ্জ করে নতুন করে লেখাকে বলা হয় রিফেক্টরিং(refactoring)। আমরা একটি কোডকে বার বার লিখে সেটাকে আরও বেশি কিভাবে সহজবোধ্য কোড লেখার চেষ্টা করি যাতে সেই কোডটি আরও ভালভাবে মেইনটেইন করা যায়। + +কিন্তু এখানে একটি চিন্তার বিষয় হচ্ছে। আমরা জানি যে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর মাধ্যমে আমরা যে সফটওয়্যার সিস্টেম তৈরি করি তাতে নানা রকম অসংখ্য অবজেক্ট থাকে যেখানে একটি অবজেক্ট আরেকটির সাথে তথ্য আদান প্রদান করে, একটি আরেকটির উপর নির্ভর করে কাজ করে থাকে। ধরা যাক, A একটি অবজেক্ট যার উপর B নির্ভর করে। ধরা যাক B এখানে কনজ্যুমার অবজেক্ট। এখন আমারা যদি A কে কোন রকম পরিবর্তন করতে চাই, তাহলে B আগের মতোই থাকতে চাইবে। এখানে দুটো অবজেক্ট হয়তো দুইজন ভিন্ন প্রোগ্রামার লিখে থাকতে পারে। সুতরাং একে অন্যের পরিবর্তন নিয়ে যাতে সমস্যায় পরতে না হয়, সেই ব্যবস্থা করতে হবে। +আমরা অনেক সময় নানা রকম লাইব্রেরি ব্যবহার করতে হয় বিভিন্ন প্রজেক্টে এবং এগুলোর উপর নির্ভর করে করে আমাদের প্রজেক্ট দাড়িয়ে যায়। এই লাইব্রেরি গুলোর মাঝেই মাঝেই ভার্সন পরিবর্তন হয়। কিন্তু মজার ব্যপার হলো এগুলো পরিবর্তন হলেও আমাদের কোড নতুন করে লিখতে হয় না। আবার অন্যদিকে লাইব্রেরি যারা তৈরি করে তাদেরও এই কোড পরিবর্তনের স্বাধীনতা থাকা চাই, কিন্তু সক্ষেত্রে যাতে আমাদের প্রজেক্ট এর কোন সমস্যা যাতে না হয় সেটাও মনে রাখতে হবে। + +তো এই সমস্যা সমাধানের একটি উপায় আছে। সেটি হলো- লাইব্রেরি কোড-এর যে মেথড গুলো আছে সেগুলো মোটেও রিমুভ করা যাবে না। কারণ আমরা যখন একটি লাইব্রেরির একটি নির্দিষ্ট ক্লাসের মেথড নিয়ে কাজ করবো, আমরা চাইবো না কোন ভাবেই আমাদের কোড ভেঙ্গে যাক। লাইব্রেরির প্রোগ্রামার সেই ক্লাস নিয়ে যা কিছু করতে পারবে, কিন্তু আমরা যে সব মেথড ব্যবহার করেছি সেগুলোকে মুছে ফেলতে পারবে না। তারপর ফিল্ড বা প্রোপ্রার্টিজ এর ক্ষেত্রেও লাইব্রেরি যে লিখেছে সে কিভাবে জানবে যে কোন ফিল্ড বা প্রোপ্রার্টিজ গুলো আমরা আমাদের প্রজেক্ট এর ক্ষেত্রে একসেস করেছি? কোন ভাবেই জানার উপায় নেই। কারণ আমারা আমাদের কোড কিভাবে করেছি যা লাইব্রেরি যে লিখেছে তার জানার কথা নয়। +কিন্তু যে প্রোগ্রামার লাইব্রেরি লিখেছে সে সবসময়ই চাইবে তার কোড এ নতুন কিছু এড করতে, আগের থেকে ভাল করা ইত্যাদি। +এ্ই সমস্যা সমাধানের জন্যে জাভা আমাদেরকে কতগুলো একেসেস স্পেসিফায়ার (access specifiers) দিয়ে থাকে, যার মাধ্যমে লাইব্রেরি প্রোগ্রামার ঠিক করতে পারে যে কোড এর কোন কোন অংশ গুলো আমরা যখন আমাদের প্রজেক্ট এ ব্যবহার করতে পারবো আর কোন কোন গুলো করতে পারবো না। এতে সুবিধা হচ্ছে, লাইব্রেরি প্রোগ্রামার সে সব অংশ গুলো আমাদেরকে ব্যবহার করতে দিচ্ছে, সেই অংশ গুলোতে ইচ্ছে মতো পরিবর্তন/পরিবর্ধন করতে পারবে কোন রকম চিন্তাভাবনা ছাড়া। + +আমারা যখন একটা বড় সিস্টেমে কাজ করি আমাদের নানা রকম অবজেক্ট লিখতে হয়। একটি অবজেক্ট আরেকটি অবজেক্ট কে ব্যবহার করে। এই একেসেস প্রটেকশানের মাধ্যমে আমরা নির্ধারণ করে দিতে পারি যে একটি নির্দিষ্ট অবজেক্ট এর কোন অংশ গুলো অন্য অবজেক্ট ব্যভহার করতে পারবে ,আর কোন গুলো পারবে না। +এতে উপরের সমস্যার সমাধান হয়ে যায়। এছাড়াও আরেকটি ব্যাপার হয়। +আমরা যখন কোন একটি ক্লাস নিয়ে কাজ করতে যাবো, সেই অবজেক্ট-এ হাজার লাইন কোড থাকে পারে। পুরটা একেবারে দেখতে গেলে আমরা হয়তো কনফিউজড হয়ে যাবো কিংবা খুব কমপ্লেক্স কোড হলে বুঝতে অসুবিধা হতে পারে। কিন্তু সেই কোড যদি এমন ভাবে করা থাকে যেখানে অল্প অংশ আমাদের ব্যবহারের জন্যে অপেন করা থাকে, বাকি গুলো হাইড করা যাকে তাহলে আমরা যে অংশটুকু হাইড করা সেই অংশ নিয়ে চিন্তা করতে হবে না। +এই কোড হাইড করার ঘটনাকে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ভাষায় এনক্যাপসুলেশান(Encapsulation) বলা হয়। + +জাভাতে তিনটি একেসে কন্ট্রোল করার জন্যে তিনটি কি ওয়ার্ড আছে। সেগুলো হলে- +‌`Public`, `protected` এবং `private` +  +এখন আমরা বিভিন্ন রকম একসেস কন্ট্রোল দেখবো- + + +### Default Access + +এর মানে হচ্ছে আমরা যদি কোন কি-ওয়ার্ড ব্যবহার না করি তাহলে সেটি Default Access আর মাঝে পরে। +কোন ক্লাস এর ভেরিয়েবল বা মেথড এর আগে যদি কোন একসেস মডিফায়ার না থাকে তাহলে সেই ক্লাসটি যে প্যাকেজের মধ্যে আছে সেই প্যাকেজ এর সব ক্লাস থেকে একসেস করা যাবে। + +```java +package bd.com.howtocode.java; + +import java.util.Random; + +public class HelloWorld { + String version = "2.56"; + + int getRandomInt() { + return new Random().nextInt(); + } +} +``` + +এই ক্লাসের ভেরিয়েবল version এবং getRandomInt() মেথড কে bd.com.howtocode.java এই প্যাকেজ এর সকল ক্লাস একসেস করতে পারবে। + + +### Private Access Modifier - `private`: + +কোন ক্লাসের মেথড, ভেরিয়েবল, কনস্ট্রাকটর এর আগে যদি private কিওয়ার্ড থাকে তাহলে সেগুলোকে সেই ক্লাস ছাড়া অন্য কোন ক্লাস একসেস করতে পারবে না। +উদাহরণ- + +```java  +package bd.com.howtocode.java; + +public class User { + private String name; + private String emailAddress; + +} +``` + +এই ক্লাসের এর ভেরিয়েবল name এবং emailAddress +কে কোন ভাবেই অন্য কোন ক্লাস থেকে একসেস করা যাবে না। কিন্তু আমরা যদি এদের কে একসেস করতে চাই তাহলে একসেসর মেথড এড করতে পারি। + +```java +package bd.com.howtocode.java; + +public class User { + private String name; + private String emailAddress; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmailAddress() { + return emailAddress; + } + + public void setEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + } +} +``` + +### Public Access Modifier - `public`: + +কোন ক্লাসের মেথড, ভেরিয়েবল, কনস্ট্রাকটর এর আগে যদি public কিওয়ার্ড থাকে তাহলে সেগুলোকে যে কোন ক্লাস থেকে একসেস করা যায়। + +```java +public class Milk{ + public void swirl(boolean clockwise) { + System.out.println("Swirling Milk"); + } +} +``` + +### Protected Access Modifier - `protected`: + + +কোন ক্লাসের মেথড, ভেরিয়েবল, কনস্ট্রাকটর এর আগে যদি protected কিওয়ার্ড থাকে তাহলে সেগুলোকে অন্য প্যাকেজ থেকে সেই ক্লাসের সাব ক্লাস একসেস করতে পারবে আর নিজের প্যাকেজ এর সবাই একসেস করতে পারবে। + +```java +class AudioPlayer { + protected boolean openSpeaker(Speaker sp) { + // implementation details + } +} +``` + + + +একসেস লেভেল একটি টেবলি - + + +|Modifier | Class | Package Subclass| World| +|------|-------|--------|---------| +|public| Y| Y |Y| Y| +|protected| Y| Y| Y| N| +|no modifier| Y| Y| N| N| +|private| Y| N |N| N| + From a39f0b62556f96e0033beb7bc907f4f66e07aced Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 16 Nov 2014 22:53:45 +0600 Subject: [PATCH 055/150] Updated SUMMARY.md --- SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/SUMMARY.md b/SUMMARY.md index 16ab3a0..23c56a8 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -11,6 +11,7 @@ * [পাঠ ৫: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-১](5.md) * [পাঠ ৫.১: ইনহেরিট্যান্স](5.1.md) * [পাঠ ৫.২: পলিফরফিজম](5.2.md) + * [পাঠ ৫.৩: এনক্যাপসুলেশান](5.3.md) * [পাঠ ৬: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-২](6.md) * [পাঠ ৭: স্ট্রিং অপারেশান ](7.md) * [পাঠ ৮: জেনেরিকস](8.md) From 32635df73676b3c4fad507b1520202cfaf5592df Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 16 Nov 2014 22:55:49 +0600 Subject: [PATCH 056/150] Updated 5.3.md --- 5.3.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/5.3.md b/5.3.md index 5aa78f5..5d6b114 100644 --- a/5.3.md +++ b/5.3.md @@ -61,8 +61,10 @@ public class User { } ``` -এই ক্লাসের এর ভেরিয়েবল name এবং emailAddress -কে কোন ভাবেই অন্য কোন ক্লাস থেকে একসেস করা যাবে না। কিন্তু আমরা যদি এদের কে একসেস করতে চাই তাহলে একসেসর মেথড এড করতে পারি। + +এই ক্লাসের এর ভেরিয়েবল `name` এবং `emailAddress` কে কোন ভাবেই অন্য কোন ক্লাস থেকে একসেস করা যাবে না। কিন্তু আমরা যদি এদের কে একসেস করতে চাই তাহলে একসেসর মেথড এড করতে পারি। + + ```java package bd.com.howtocode.java; From 2fb25fcedc14eba681b5b7f23d44c06fc622e4e5 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 16 Nov 2014 23:00:10 +0600 Subject: [PATCH 057/150] Updated 5.3.md --- 5.3.md | 62 +++++++++++++++++++++++++--------------------------------- 1 file changed, 27 insertions(+), 35 deletions(-) diff --git a/5.3.md b/5.3.md index 5d6b114..d09509c 100644 --- a/5.3.md +++ b/5.3.md @@ -29,6 +29,7 @@ এর মানে হচ্ছে আমরা যদি কোন কি-ওয়ার্ড ব্যবহার না করি তাহলে সেটি Default Access আর মাঝে পরে। কোন ক্লাস এর ভেরিয়েবল বা মেথড এর আগে যদি কোন একসেস মডিফায়ার না থাকে তাহলে সেই ক্লাসটি যে প্যাকেজের মধ্যে আছে সেই প্যাকেজ এর সব ক্লাস থেকে একসেস করা যাবে। + ```java package bd.com.howtocode.java; @@ -43,54 +44,45 @@ public class HelloWorld { } ``` + এই ক্লাসের ভেরিয়েবল version এবং getRandomInt() মেথড কে bd.com.howtocode.java এই প্যাকেজ এর সকল ক্লাস একসেস করতে পারবে। ### Private Access Modifier - `private`: কোন ক্লাসের মেথড, ভেরিয়েবল, কনস্ট্রাকটর এর আগে যদি private কিওয়ার্ড থাকে তাহলে সেগুলোকে সেই ক্লাস ছাড়া অন্য কোন ক্লাস একসেস করতে পারবে না। -উদাহরণ- - -```java  -package bd.com.howtocode.java; - -public class User { - private String name; - private String emailAddress; - -} -``` - - -এই ক্লাসের এর ভেরিয়েবল `name` এবং `emailAddress` কে কোন ভাবেই অন্য কোন ক্লাস থেকে একসেস করা যাবে না। কিন্তু আমরা যদি এদের কে একসেস করতে চাই তাহলে একসেসর মেথড এড করতে পারি। - +উদাহরণ- ```java -package bd.com.howtocode.java; - -public class User { - private String name; - private String emailAddress; - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; + package bd.com.howtocode.java; + + public class User { + private String name; + private String emailAddress; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmailAddress() { + return emailAddress; + } + + public void setEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + } } +``` - public String getEmailAddress() { - return emailAddress; - } - public void setEmailAddress(String emailAddress) { - this.emailAddress = emailAddress; - } -} -``` +এই ক্লাসের এর ভেরিয়েবল `name` এবং `emailAddress` কে কোন ভাবেই অন্য কোন ক্লাস থেকে একসেস করা যাবে না। কিন্তু আমরা যদি এদের কে একসেস করতে চাই তাহলে একসেসর মেথড ব্যাবহার করতে পারি। + ### Public Access Modifier - `public`: কোন ক্লাসের মেথড, ভেরিয়েবল, কনস্ট্রাকটর এর আগে যদি public কিওয়ার্ড থাকে তাহলে সেগুলোকে যে কোন ক্লাস থেকে একসেস করা যায়। From 5e0d9bc994626a02bfdf46ff26a446d9677b9b1b Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 16 Nov 2014 23:03:04 +0600 Subject: [PATCH 058/150] Updated 5.3.md --- 5.3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/5.3.md b/5.3.md index d09509c..25a211a 100644 --- a/5.3.md +++ b/5.3.md @@ -113,7 +113,7 @@ class AudioPlayer { একসেস লেভেল একটি টেবলি - -|Modifier | Class | Package Subclass| World| +|Modifier | Class | Package| Subclass| World| |------|-------|--------|---------| |public| Y| Y |Y| Y| |protected| Y| Y| Y| N| From a457293c12ecadb5e0574ceea37c2c392782bb65 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Thu, 8 Jan 2015 06:20:30 +0600 Subject: [PATCH 059/150] Updated 1.md --- 1.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1.md b/1.md index 99cbc44..fb0e2b3 100644 --- a/1.md +++ b/1.md @@ -14,11 +14,11 @@ **প্রোগ্রামিং ল্যাংগুয়েজ কি ?** -ওয়েল, প্রোগ্রামিং ল্যাংগুয়েজ হচ্ছে এক ধরণের কৃত্রিম ভাষা যা কিনা যন্ত্র বিশেষ করে কম্পিউটারের আচরণ নিয়ন্ত্রণ করার জন্যে ব্যবহার করা হয়। মানুষের ভাষার মতো এর কিছু সিনট্যাক্স এবং সেম্যান্টিক্‌স অর্থাৎ নিয়মকানুন ও অর্থ থাকে। এবং আমাদের এই বই এর উদ্দেশ্য হচ্ছে একটি বিশেষ ভাষার(জাভা) নিয়মকানুন গুলো জেনে নেওয়া। সুতরাং পড়তে থাকুন। +ওয়েল, প্রোগ্রামিং ল্যাংগুয়েজ হচ্ছে এক ধরণের কৃত্রিম ভাষা যা কিনা যন্ত্র বিশেষ করে কম্পিউটার-এর আচরণ নিয়ন্ত্রণ করার জন্যে ব্যবহার করা হয়। মানুষের ভাষার মতো এর কিছু সিনট্যাক্স এবং সেম্যান্টিক্‌স অর্থাৎ নিয়মকানুন ও অর্থ থাকে। এবং আমাদের এই বই এর উদ্দেশ্য হচ্ছে একটি বিশেষ ভাষার(জাভা) নিয়মকানুন গুলো জেনে নেওয়া। সুতরাং পড়তে থাকুন। **কেন জাভা?** -পৃথিবীতে এখন পর্যন্ত অনেক গুলো প্রোগ্রামিং ভাষা তৈরি করা হয়েছে। এদের উদ্দেশ্য এবং বিধেয় ভিন্ন ভিন্ন। http://en.wikipedia.org/wiki/List_of_programming_languages এখানে একটি প্রোগ্রামিং ল্যাংগুয়েজ এর একটি লিস্ট দেওয়া আছে- দেখে নেওয়া যেতে পারে। প্রত্যেকটি ল্যাংগুয়েজ এর কিছু সুবিধা অসুবিধা আছে, এবং ল্যাংগুয়েজ গুলো প্রতিনিয়ত বিকশিত হচ্ছে, এবং নতুন নতুন ল্যাংগুয়েজ তৈরি হচ্ছে। +পৃথিবীতে এখন পর্যন্ত অনেক গুলো প্রোগ্রামিং ভাষা তৈরি করা হয়েছে। এদের প্রত্যেকটির উদ্দেশ্য ভিন্ন ভিন্ন। http://en.wikipedia.org/wiki/List_of_programming_languages এখানে একটি প্রোগ্রামিং ল্যাংগুয়েজ এর একটি লিস্ট দেওয়া আছে- দেখে নেওয়া যেতে পারে। প্রত্যেকটি ল্যাংগুয়েজ এর কিছু সুবিধা অসুবিধা আছে, এবং ল্যাংগুয়েজ গুলো প্রতিনিয়ত উন্নত হচ্ছে, এবং নতুন নতুন ল্যাংগুয়েজ তৈরি হচ্ছে। যে যে কারণে জাভা শেখা যেতে পারে এখন সেগুলো নিয়ে আলোচনা করা যাক- From 4db0c67c6ad481f18d861929dd06bdaa89c8eadd Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sat, 10 Jan 2015 19:19:04 +0600 Subject: [PATCH 060/150] Updated 8.md --- 8.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/8.md b/8.md index 6451a7b..4051221 100644 --- a/8.md +++ b/8.md @@ -10,3 +10,14 @@ * জেনেরিক ওয়িল্ডকার্ড * সারসংক্ষেপ + + +### জেনেরিকস ইন জাভা (Generics in Java) + +আমরা জাভা-এর টাইপ সিস্টেম সর্ম্পকে জানি। আমরা জানি জাভাতে কোন প্রোগ্রাম লিখতে হলে আমাদের কে টাইপ বলে দিতে হয় । যেমন আমরা যদি একটি মেথড লিখি তাহলে মেথডটি কি টাইপ প্যারামিটার এক্সেপ্ট করবে তা বলে দিতে হয়। + +তবে জাভাতে একটি চমৎকার ফিচার আছে যাতে করে আমরা অনেক সময় টাইপ না বলে দিয়েই কোড লিখতে পারি। +আমরা জেনেরিকস শুরু করার আগে একটি গুরুত্বপূর্ণ তথ্য জেনে নিই- জাভা প্রোগ্রামিং ল্যাংগুয়েজ এ সব ক্লাস **java.lang.Object** ক্লাসটিকে ইনহেরিট করে। আমরা এটি নিয়ে অন্য কোন চ্যাপ্টারে আলোচনা করবো, তবে এখন আমাদের শুধু এই তথ্যটুকু মনে রাখলেই চলবে। + +কিছু উদাহরণ দেখা যাক- + From 8e287a293a39aa347a486db058fc379c723ca636 Mon Sep 17 00:00:00 2001 From: Nuhil Mehdy Date: Sun, 11 Jan 2015 04:35:33 +0600 Subject: [PATCH 061/150] Contributors list API added --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b07f3b..6ead39a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ # জাভা প্রোগ্রামিং -### [বজলুর রহমান রোকন](http://www.bazlur.com/) + + #### সংক্ষেপ From 9c7a1c3f0f12fa50a956800f0d6298b30ca56c33 Mon Sep 17 00:00:00 2001 From: Ujjal Suttra Dhar Date: Fri, 23 Jan 2015 23:44:30 +0600 Subject: [PATCH 062/150] minor spelling mistakes fix --- 1.md | 16 ++++++++-------- README.md | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/1.md b/1.md index 99cbc44..4e5d3bf 100644 --- a/1.md +++ b/1.md @@ -18,18 +18,18 @@ **কেন জাভা?** -পৃথিবীতে এখন পর্যন্ত অনেক গুলো প্রোগ্রামিং ভাষা তৈরি করা হয়েছে। এদের উদ্দেশ্য এবং বিধেয় ভিন্ন ভিন্ন। http://en.wikipedia.org/wiki/List_of_programming_languages এখানে একটি প্রোগ্রামিং ল্যাংগুয়েজ এর একটি লিস্ট দেওয়া আছে- দেখে নেওয়া যেতে পারে। প্রত্যেকটি ল্যাংগুয়েজ এর কিছু সুবিধা অসুবিধা আছে, এবং ল্যাংগুয়েজ গুলো প্রতিনিয়ত বিকশিত হচ্ছে, এবং নতুন নতুন ল্যাংগুয়েজ তৈরি হচ্ছে। +পৃথিবীতে এখন পর্যন্ত অনেক গুলো প্রোগ্রামিং ভাষা তৈরি করা হয়েছে। এদের উদ্দেশ্য এবং বিধেয় ভিন্ন ভিন্ন। http://en.wikipedia.org/wiki/List_of_programming_languages এখানে একটি প্রোগ্রামিং ল্যাংগুয়েজ এর একটি লিস্ট দেওয়া আছে- দেখে নেওয়া যেতে পারে। প্রত্যেকটি ল্যাংগুয়েজ এর কিছু সুবিধা অসুবিধা আছে, এবং ল্যাংগুয়েজ গুলো প্রতিনিয়ত বিকশিত হচ্ছে, এবং নতুন নতুন ল্যাংগুয়েজ তৈরি হচ্ছে। যে যে কারণে জাভা শেখা যেতে পারে এখন সেগুলো নিয়ে আলোচনা করা যাক- - এটি খুব-ই (Readable)পাঠযোগ্য। অন্য যে কোন প্রোগ্রামিং ব্যাকগ্রাউন্ড এর প্রোগ্রামার খুব সহজেই একটি জাভা-ফাইল দেখে বুঝতে পারবে আসলে কোড এ কি লেখা আছে। -- সি কিংবা সি++ এ কোড করার সময় আমাদের অনেক সময়-ই লিংকিং, অপটিমাইজেশান, মেমরি এলোকেশান, মেমরি ডি-এলোকেশান ইত্যাদি নানা রকম জিনিস নিয়ে ভাবতে হয়, কিন্তু জাভার ক্ষেত্রে এগুলোর কথা ভাবতেই হয় না। খুব বেশি চিন্তা না করে আমরা নিশ্চিতভাবে জাভা কম্পাইলার এর উপর সব কিছু ছেড়ে দিতে পারে। +- সি কিংবা সি++ এ কোড করার সময় আমাদের অনেক সময়-ই লিংকিং, অপটিমাইজেশান, মেমরি এলোকেশান, মেমরি ডি-এলোকেশান ইত্যাদি নানা রকম জিনিস নিয়ে ভাবতে হয়, কিন্তু জাভার ক্ষেত্রে এগুলোর কথা ভাবতেই হয় না। খুব বেশি চিন্তা না করে আমরা নিশ্চিতভাবে জাভা কম্পাইলার এর উপর সব কিছু ছেড়ে দিতে পারে। - জাভাতে অসংখ্য API আছে যেগুলো খুবই স্টেবল, খুব বেশি চিন্তাভাবনা না করেই এদের নিয়ে খুব সহজেই কাজ করে ফেলা যায়। - জাভা -র সব কিছুই ওপেন সোর্স। - জাভা ভার্চুয়াল মেশিন সম্ভবত সফটওয়্যার-এর দুনিয়া সব থেকে চমৎকার সৃষ্টি। জাভা-এর সাথে এর মাঝে আরও অনেকগুলো ল্যাংগুয়েজ নিয়ে কাজ করা যায়। - গত ১৫ বছরে চমৎকার অনেকগুলো ডেভেলপমেন্ট এনভায়রনমেন্ট তৈরি হয়েছে যেগুলো খুবই ইন্টেলিজেন্ট – যেমন- Eclipse, IntelliJ IDEA, netbeans etc. । এগুলো মাধ্যমে খুব আয়েশের সাথেই কোড করা যায়, ডিবাগ করা যায়। - এটি একটি অবজেক্ট ওরিয়েন্টেড- টাইপ সেইফ প্রোগ্রামিং ল্যাংগুয়েজ। -- এটি পোর্টেবল যে কোন প্লাটফর্মে চলে। একবার কোড লিখে সেটি যে কোন মেশিনে( ওয়িন্ডোজ , লিনাক্স , ম্যাক) চালানো যায়। +- এটি পোর্টেবল যে কোন প্লাটফর্মে চলে। একবার কোড লিখে সেটি যে কোন মেশিনে( উইন্ডোজ , লিনাক্স , ম্যাক) চালানো যায়। - অনেক বড় কমিউনিটি সাপোর্ট- সারা দুনিয়াতে মিলিয়নস অব জাভা প্রোগ্রামার ছড়িয়ে ছিটিয়ে আছে। - এটির পারফরমেন্স নিয়ে বলা চলে কোন সন্দেহ নেই। - ইন্ডাস্ট্রি গ্রেডেড, বড় বড় এন্ট্রারপ্রাইজ এপ গুলো সাধারণত জাভা দিয়ে লেখা হয়। @@ -42,26 +42,26 @@ ![how java works](images/how-java-works.png) -জাভা কোডকে কম্পাইল করলে সেটি একটি অন্তর্বর্তীকালীন ল্যাংগুয়েজ এ রূপান্তরিত হয়। এটি ঠিক হিওম্যান রিডএবল না আবার মেশিন রিডএবল ও না। একে আমরা বলি বাইট কোড। এই বাইটকোড শুধুমাত্র জাভা ভার্চুয়াল মেশিন(JVM) বুঝতে পারে। JVM বাইট কোড কে ইন্টারপ্রেট করে মেশিন ল্যাংগুয়েজ এ রূপান্তরিত করে। এর জন্যে JVM জাস্ট ইন টাইম(JIT) কম্পাইলার ব্যবহার করে। সুতরাং দেখা যাচ্ছে, জাভা কোডকে প্রথমে কম্পাইল করা হয়, তারপর সেই আউটপুট কে ইন্টারপ্রেট করা হয়। এক্ষেত্রে প্রশ্ন হতে পারে, জাভা আসলে কি? কম্পাইল্ড ল্যাংগুয়েজ নাকি ইন্টারপ্রেটেড ল্যাংগুয়েজ? উত্তর হচ্ছে জাভা একি সাথে দুটোই। +জাভা কোডকে কম্পাইল করলে সেটি একটি অন্তর্বর্তীকালীন ল্যাংগুয়েজ এ রূপান্তরিত হয়। এটি ঠিক হিওম্যান রিডএবল না আবার মেশিন রিডএবল ও না। একে আমরা বলি বাইট কোড। এই বাইটকোড শুধুমাত্র জাভা ভার্চুয়াল মেশিন(JVM) বুঝতে পারে। JVM বাইট কোড কে ইন্টারপ্রেট করে মেশিন ল্যাংগুয়েজ এ রূপান্তরিত করে। এর জন্যে JVM জাস্ট ইন টাইম(JIT) কম্পাইলার ব্যবহার করে। সুতরাং দেখা যাচ্ছে, জাভা কোডকে প্রথমে কম্পাইল করা হয়, তারপর সেই আউটপুট কে ইন্টারপ্রেট করা হয়। এক্ষেত্রে প্রশ্ন হতে পারে, জাভা আসলে কি? কম্পাইল্ড ল্যাংগুয়েজ নাকি ইন্টারপ্রেটেড ল্যাংগুয়েজ? উত্তর হচ্ছে জাভা একি সাথে দুটোই। উপরের বর্ণনা থেকে আমরা তিনটি জিনিস জানলাম - **১. বাইট কোড** – এটি হচ্ছে এক ধরণের ইস্ট্রাকশান সেট- যা কিনা শুধুমাত্র জাভা ভার্চুয়াল মেশিন বুঝতে পারে। জাভা কোড ( হিউম্যান রিডএবল) অর্থাৎ আমরা যে কোড গুলো লিখবো সেগুলো কে জাভা কম্পাইলার দ্বারা কম্পাইল্ড করলে বাইটকোড তৈরি হয়। এই বাইটকোড গুলো .class এক্সটেনশন যুক্ত বাইনারী ফাইলে স্টোর করা হয়। -**২. জাভা ভার্চুয়াল মেশিন(JVM)** - এটি মূলত একটা বাস্তব মেশিনের ভেতর একটা কাল্পনিক মেশিন। সহজ কথায়- এটি একটি সফ্টওয়্যার যা কিনা বাইট কোড পড়ে সেগুলো মেশিন এক্সিকিউটেবল কোড-এ রূপান্তরিত করতে পারে। JVM অনেকগুলা মেশিনের জন্যে লেখা হয়েছে- অর্থাৎ এটি উইন্ডোজ, ম্যাক OS, লিনাক্স, আইবিএম mainframes, সোলারিস ইত্যাদি অপারেটিং সিস্টেমের জন্যে আলাদা আলাদা করে লেখা হয়েছে। এর ফলে, আমরা যদি একবার কোন জাভা প্রোগ্রাম লিখি, সেটি যেকোন মেশনিে চালানো যাবে। এর কারণ আমরা এখন কোন নির্দিষ্ট মেশিনকে উদ্দ্যেশ্য না করে শুধু মাত্র JVM কে উদ্দ্যেশ্য করে কোড লিখি । যেহেতু সব মেশিনের জন্যেই JVM আছে, সুতরাং আমাদের কোড সব মেশিনেই চলবে। আর এভাবেই - **“Write once, run anywhere”** বা **WORA** সম্ভব হয়েছে। +**২. জাভা ভার্চুয়াল মেশিন(JVM)** - এটি মূলত একটা বাস্তব মেশিনের ভেতর একটা কাল্পনিক মেশিন। সহজ কথায়- এটি একটি সফ্টওয়্যার যা কিনা বাইট কোড পড়ে সেগুলো মেশিন এক্সিকিউটেবল কোড-এ রূপান্তরিত করতে পারে। JVM অনেকগুলা মেশিনের জন্যে লেখা হয়েছে- অর্থাৎ এটি উইন্ডোজ, ম্যাক OS, লিনাক্স, আইবিএম mainframes, সোলারিস ইত্যাদি অপারেটিং সিস্টেমের জন্যে আলাদা আলাদা করে লেখা হয়েছে। এর ফলে, আমরা যদি একবার কোন জাভা প্রোগ্রাম লিখি, সেটি যেকোন মেশিনে চালানো যাবে। এর কারণ আমরা এখন কোন নির্দিষ্ট মেশিনকে উদ্দেশ্য না করে শুধু মাত্র JVM কে উদ্দেশ্য করে কোড লিখি । যেহেতু সব মেশিনের জন্যেই JVM আছে, সুতরাং আমাদের কোড সব মেশিনেই চলবে। আর এভাবেই - **“Write once, run anywhere”** বা **WORA** সম্ভব হয়েছে। ৩. **জাস্ট ইন টাইম( JIT) কম্পাইলার** – এটি মূলত JVM এর একটি অংশ। আমরা যে জাভা কোড কম্পাইল করার সময় তৈরি করি সেগুলো মূলত JIT কম্পাইলার প্রসেস করে। একে dynamic translator ও বলা যায়- কারণ এটি রানটাইম-এ অর্থাৎ প্রোগ্রাম চলাকালিন সময়ে বাইটকোড প্রসেস করে। -এবার আমরা আরও কিছু টার্মিনোলোজি( পরিভাষা) এর সাথে পরিচিত হই। +এবার আমরা আরও কিছু টার্মিনোলোজি(পরিভাষা) এর সাথে পরিচিত হই। **জাভা রানটাইম এনভায়রনমেন্ট (JRE)** –এটি মূলত একটি জাভা প্রোগ্রাম রান করার জন্যে অন্তত:পক্ষে যে সব কম্পোনেন্ট লাগে তার একটি প্যাকেজ। এর মধ্যে থাকে JVM এবং কিছু স্ট্যান্ডার্ড এপিআই। -**জাভা ডেভেলপার কিট (JDK)** – এটি হচ্ছে JRE এবং জাভা কোড লেখার জন্যে যে সব টুল গুলো লাগে তার একটি সেট। জাভা প্রোগ্রাম লেখার জন্য শুধু মাত্র JDK থাকলেই চলে কারণ এর মাঝেই সব কিছু দেয়া থাকে। +**জাভা ডেভেলপার কিট (JDK)** – এটি হচ্ছে JRE এবং জাভা কোড লেখার জন্যে যে সব টুল গুলো লাগে তার একটি সেট। জাভা প্রোগ্রাম লেখার জন্য শুধু মাত্র JDK থাকলেই চলে কারণ এর মাঝেই সব কিছু দেয়া থাকে। জাভার তিনটি সাবসেট আছে সেগুলো হলো - **জাভা স্ট্যান্ডার্ড এডিশন (JSE)** -- ডেক্সটপ এবং স্ট্যান্ড-অ্যলোন সার্ভার এপ্লিকেশান তৈরি করার জন্যে যে সব টুল এবং এপিআই দরকার হয় সেগুলোকে আলাদা করে এর নাম দেওয়া হয়েছে জাভা স্ট্যান্ডার্ড এডিশন। +- ডেক্সটপ এবংস্ট্স্ট্যান্ড-অ্যলোন সার্ভার এপ্লিকেশান তৈরি করার জন্যে যে সব টুল এবং এপিআই দরকার হয় সেগুলোকে আলাদা করে এর নাম দেওয়া হয়েছে জাভা স্ট্যান্ডার্ড এডিশন। **জাভা এন্টারপ্রাইস এডিশন (JEE) ** – এটি JSE এর উপর তৈরি ওয়েব এবং অনেক বড় মাপের এন্টারপ্রাইজ এপ্লিকেশান তৈরি করার জন্যে যে সব কম্পোনেন্ট দরকার হয় সেগুলোকে আলাদা করে এর নাম দেওয়া হয়েছে জাভা এন্টারপ্রাইস এডিশন- উদারহরণসরূপ এর কম্পোনেন্ট গুলো হচ্ছে- diff --git a/README.md b/README.md index 0b07f3b..17103cc 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ #### সংক্ষেপ -**কোর্সের বর্ণনা:** জাভা বর্তমানে বহুল ব্যবহৃত একটি প্রোগ্রামিং ল্যাংগুয়েজ। এন্টারপ্রাইজ এপ্লিক্যাশান ডেভেলেপমেন্টে এখনো জাভার বিকল্প তৈরি হয়নি বলে ধরা হয়। জাভার জনপ্রিয়তার মুল কারণ এর portability, নিরাপত্তা, এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও ওয়েব প্রোগ্রামিং এর পরিপূর্ণ সাপোর্ট। এই কোর্সে জাভার অ আ ক খ থেকে শুরুকরে এর ব্যবহারিক প্রয়োগ এবং অন্যন্য বিষয় গুলো নিয়ে আলোচনা করা হবে। +**কোর্সের বর্ণনা:** জাভা বর্তমানে বহুল ব্যবহৃত একটি প্রোগ্রামিং ল্যাংগুয়েজ। এন্টারপ্রাইজ এপ্লিক্যাশান ডেভেলেপমেন্টে এখনো জাভার বিকল্প তৈরি হয়নি বলে ধরা হয়। জাভার জনপ্রিয়তার মুল কারণ এর portability, নিরাপত্তা, এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও ওয়েব প্রোগ্রামিং এর পরিপূর্ণ সাপোর্ট। এই কোর্সে জাভার অ আ ক খ থেকে শুরু করে এর ব্যবহারিক প্রয়োগ এবং অন্যন্য বিষয় গুলো নিয়ে আলোচনা করা হবে। -**কাদের জন্যে কোর্স:** এই কোর্স মূলত বিশ্ববিদ্যালয় এর প্রথম বর্ষের ছাত্র-ছাত্রীদের জন্যে যারা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট শুরুকরতে চায়। তবে যে কেও চাইলে এই কোর্সটি করতে পারে। ধরে নেওয়া হচ্ছে যে, শিক্ষার্থী অন্ত্যত যে কোন একটি প্রোগ্রামিং ল্যাংগুয়েজ (সি/সি++) সম্পর্কে আগে থেকেই ধারণা রাখে। +**কাদের জন্যে কোর্স:** এই কোর্স মূলত বিশ্ববিদ্যালয় এর প্রথম বর্ষের ছাত্র-ছাত্রীদের জন্যে যারা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট শুরু করতে চায়। তবে যে কেও চাইলে এই কোর্সটি করতে পারে। ধরে নেওয়া হচ্ছে যে, শিক্ষার্থী অন্ত্যত যে কোন একটি প্রোগ্রামিং ল্যাংগুয়েজ (সি/সি++) সম্পর্কে আগে থেকেই ধারণা রাখে। > ## Statutory warning > __This book may contain unexpected misspellings. Reader Feedback Requested.__ From a639dea7e5d19ef7e597c5dbe823e6fd06a46115 Mon Sep 17 00:00:00 2001 From: Nuhil Mehdy Date: Sat, 24 Jan 2015 22:56:03 +0600 Subject: [PATCH 063/150] Download link added --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6ead39a..e0581af 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -[কোর্স এর মুল পাতা](http://java.howtocode.com.bd/) | [HowToCode মুল সাইট](http://www.howtocode.com.bd/) | [সবার জন্য প্রোগ্রামিং ব্লগ](http://blog.howtocode.com.bd/) +[কোর্স এর মুল পাতা](http://java.howtocode.com.bd/) | [HowToCode মুল সাইট](http://www.howtocode.com.bd/) | [সবার জন্য প্রোগ্রামিং ব্লগ](http://blog.howtocode.com.bd/) | [পিডিএফ ডাউনলোড](https://www.gitbook.com/download/pdf/book/howtocode-com-bd/-java) # জাভা প্রোগ্রামিং From 22a421306e47e70bca51465523dbf0887da2c20f Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 3 Feb 2015 00:29:24 +0600 Subject: [PATCH 064/150] Updated 8.md --- 8.md | 388 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 375 insertions(+), 13 deletions(-) diff --git a/8.md b/8.md index 4051221..2f6ce9a 100644 --- a/8.md +++ b/8.md @@ -1,17 +1,5 @@ # পাঠ ৮: জেনেরিকস -* জেনেরিকস ভুমিকা -* জেনেরিক লিস্ট -* জেনেরিক সেট -* জেনেরিক ম্যাপ -* জেনেরিক ক্লাস -* জেনেরিক মেথড -* জেনেরিক ফর লুপ -* জেনেরিক ওয়িল্ডকার্ড -* সারসংক্ষেপ - - - ### জেনেরিকস ইন জাভা (Generics in Java) আমরা জাভা-এর টাইপ সিস্টেম সর্ম্পকে জানি। আমরা জানি জাভাতে কোন প্রোগ্রাম লিখতে হলে আমাদের কে টাইপ বলে দিতে হয় । যেমন আমরা যদি একটি মেথড লিখি তাহলে মেথডটি কি টাইপ প্যারামিটার এক্সেপ্ট করবে তা বলে দিতে হয়। @@ -19,5 +7,379 @@ তবে জাভাতে একটি চমৎকার ফিচার আছে যাতে করে আমরা অনেক সময় টাইপ না বলে দিয়েই কোড লিখতে পারি। আমরা জেনেরিকস শুরু করার আগে একটি গুরুত্বপূর্ণ তথ্য জেনে নিই- জাভা প্রোগ্রামিং ল্যাংগুয়েজ এ সব ক্লাস **java.lang.Object** ক্লাসটিকে ইনহেরিট করে। আমরা এটি নিয়ে অন্য কোন চ্যাপ্টারে আলোচনা করবো, তবে এখন আমাদের শুধু এই তথ্যটুকু মনে রাখলেই চলবে। -কিছু উদাহরণ দেখা যাক- +সহজ কথায় যদি বলি, তাহলে জেনেরিক দিয়ে আমরা যখন অবজেক্ট তৈরি করবো তখন টাইপ প্যারিমিটারাইজ করতে পারি। +অর্থাৎ আমরা যখন new অপারেটর দিয়ে অবজেক্ট তৈরি করবো তখন আসলে সিন্ধান্ত নেবো এটির টাইপ কি হবে। এর আগে আমরা এমন ভাবে একটা ক্লাস বা মেথড লিখে ফেলতে পারি যাতে করে এটি যে কোন টাইপ এর জন্যে কাজ করে। + +বরং একটা উদাহরণ দেখা যাক- + +```java + //একটি সিম্পল ক্লাস , এখানে T হচ্ছে টাইপ প্যারামিটার যা অবজেক্ট তৈরি করার সময় রিয়েল টাইপ দিয়ে রিপ্লেস হবে + public class Generic { + T obj; + // একটা টাইপ ভ্যারিয়বল ডিক্লেয়ার করা হলো + + + // কনস্ট্রাকটর – যে একটি রিয়েল অবজেক্ট আর্গুমেন্ট হিসেবে নেয় + public Generic(T obj) { + this.obj = obj; + } + + // অবজেক্টটি একসেস করার জন্যে একটি মেথড + public T getObj() { + return obj; + } + + // রানটাইমে অবজেক্ট-এর টাইপ আসলে কি , তা প্রিণ্ট করে দেখি + public void showType() { + System.out.println("Type of T is: " + obj.getClass().getName()); + } + + + public static void main(String[] args) { + + // একটি ইন্টিজার এর রেফারেন্স + Generic iObj; + + // অবজেক্ট তৈরি করি এবং iObj রেফারেন্স এ এসাইন করি এবং কনস্ট্রাকটর আর্গুমেন্ট হিসেবে 88 পাস করি + iObj = new Generic(88); + + // রানটাইম-এ তাহলে জেনেরিক ক্লাসটিতে T obj একটি ইন্টিজার হয়ে যাওয়ার কথা, প্রিন্ট করে দেখা যাক + iObj.showType(); + + + int v = iObj.getObj(); + // ইন্টিজার ভ্যালুটি এর ভ্যালু একসেস ককরে v তে রাখা হল + + System.out.println("value: " + v); + // প্রিন্ট করি, যেখা যাক, আমরা এর ভ্যালু ঠিক ঠাক মতো পাওয়া যায় কিনা + + + //এভাবে আমরা একটি স্ট্রিং টাইপ দিয়েও পরীক্ষা করতে পারি। + Generic strOb = new Generic("This is a Generics Test"); + strOb.showType(); + String str = strOb.getObj(); + System.out.println("value: " + str); + } + } +```` + +এই প্রোগ্রামটি যদি রান করা হয়, তাহলে নিচের আউটপুট গুলো দেখা যাবে - + +> Type of T is: java.lang.Integer +> value: 88 +> Type of T is: java.lang.String +> value: This is a Generics Test + +আউটপুট গুলো থেকে বুঝা যাচ্ছে যে , আমাদের প্রোগ্রামটি সঠিক ভাবে কাজ করছে এবং একটি জেনেরিক ক্লাসে একটি ইন্টিজার এবং একটি স্ট্রিং প্যারামিটারাইজড করতে পেরেছি। +এভাবে আমরা আরওঅন্যান্য টাইপ-ও প্যারামিটারাইজড করে পারি। + +এবার আরও ভালভাবে এই প্রোগ্রামটি খেয়াল করা যাক- + +```java + public class Generic { + } +```` + +এখানে` T` হচ্ছে টাইপ প্যারামিটার। এটি মূলত একটি প্লেস হোল্ডার। + +লক্ষ্য করুন – এর `T` কিন্তু `<>` এর মধ্যে থাকে। + +আমরা সাধারণত যেভাবে ভ্যারিয়েবল ডিক্লেয়ার করি, সেভাবেই আমরা জেনেরিক্স-এ ভ্যারিয়েবল ডিক্লেয়ার করতে পারি। এর জন্যে আলাদা কোন নিয়ম নেই। + +```java + T obj; +``` + +এখানে T অবজেক্ট তৈরি করার সময় একটি রিয়েল অবজেক্ট অর্থাৎ আমরা যে অবজেক্ট প্যারিমিটারাইড করবো তা দ্বারা প্রতিস্থাপিত(replaced) হবে । + +আমরা জানি যে জাভা একটি স্ট্যাটিক টাইপ অর্থাৎ টাইপ সেইফ ল্যাংগুয়েজ। অর্থাৎ জাভা কোড কম্পাইল করার সময় এর টাইপ ইনফরমেশন ঠিক ঠাক আছে কিনা তা চেক করে নেয়। + +অর্থাৎ - + +```java + Generic iObj; +``` + +এখানে `iObj` একটি ইন্টিজার প্যারমিটাইরজড অবজেক্ট রেফারেন্স । +```java + iObj = new Generic(88.0); // Error! +```` +এখন অবজেক্ট তৈরি করার সময় যদি ডাবল প্যারমিটাইরজড করি এবং iObj তে এসাইন করি, তাহলে + +```java +Error:(24, 16) java: incompatible types: Generic cannot be converted to Generic +```` + +কম্পাইল করার সময় উপরের ইররটি দেখতে পাবো। + +### জেনেরিকস শুধুমাত্র অজজেক্ট নিয়ে কাজ করে- + +আমারা জানি যে, জাভা দুই ধরণের টাইপ সাপোর্ট করে- PrimitiveType এবং ReferenceType। +জেনেরিকস শুধুমাত্র ReferenceType অর্থাৎ শুধু মাত্র অবজেক্ট নিয়ে কাজ রে। + +তাই- + +```java + Generic intObj = new Generic(50); +```` +এই স্ট্যাটমেন্ট টি ভ্যালিড নয়। অর্থাৎ প্রিমিটিভ টাই এর ক্ষেত্রে জেনেরিকস কাজ করবে না। + +জেনেরিক ক্লাস এর সিনট্যাক্স- + +```java +class class-name {} +```` + +জেনেরিক ক্লাস ইনসটেনসিয়েট করার সিনটেক্স- + +```java +class-name var-name = new class-name(cons-arg-list); +```` + +আমরা চাইলে একাধিক জেনেরিক টাইপ প্যারমিটাইরজড করতে পারি। + +এবার তাহলে দুটি টাইপ প্যারামিটার নিয়ে একটি উদাহরণ দেখা যাক- + +```java + public class Tuple { + private X x; + private Y y; + + public Tuple(X x, Y y) { + this.x = x; + this.y = y; + } + + public X getX() { + return x; + } + + public Y getY() { + return y; + } + + public void showTypes() { + System.out.println("Type of T is " + + x.getClass().getName() + " and Value: " + x); + System.out.println("Type of V is " + + y.getClass().getName() + " and Value: " + y); + } + + public static void main(String[] args) { + Tuple tuple = new Tuple("Hello", "world"); + tuple.showTypes(); + + Tuple person = new Tuple<>("Rahim", 45); + person.showTypes(); + } + } +``` + +এই প্রোগ্রামটি রান করলে নিচের আউটপুট-টি পাওয়া যাবে – + +> Type of T is java.lang.String and Value: Hello +> Type of V is java.lang.String and Value: world +> Type of T is java.lang.String and Value: Rahim +> Type of V is java.lang.Integer and Value: 45 + + +একটি টাপলের মধ্যে আমরা চাইলে আরেকটি টাপল রাখে পারি - নিচের উদাহরণটি চমৎকার- + +```java + Tuple> tupleInsideTuple = new Tuple>("Tuple", new Tuple(45, 89)); +``` + +তবে আমরা যদি জাভা ৭ অথবা ৮ ব্যবহার করি তাহলে উপরের লাইনটি সংক্ষিপ্তভাবে লিখতে পারি – + +```java + Tuple> tupleInsideTuple = new Tuple<>("Tuple", new Tuple<>(45, 89)); +```` + +জাভা ৭ এ একটি নতুন অপারেটর সংযুক্ত হয়েছে যাকে বলা হয় ডায়মন্ড অপারেটর। এটি ব্যবহার করে আমরা জেনেরকস এ verbosity কিছুটা কমানো যায়। অর্থাৎ + +```java + Map> anagrams = new HashMap>(); +``` + +এই স্ট্যাটমেন্ট-টি অনেকটাই বড়। এটি আমরা এভাবে লিখতে পারি – +```java + Map> anagrams = new HashMap<>(); +``` + +অর্থাৎ জেনেরিকস লেখার সময় বাম পাশে টাইপ প্যারামিটার ইনফরমেশন গুলো লিখলে ডান পাশে লিখতে হয় না । এটি অটোম্যাটিক্যালী ইনফার করতে পারে। + + + +### Bounded Types + +আমরা উপরে দুটি উদাহরণ দেখেছি যেগুলোতে আমরা যে কোন ধরণের টাইপ প্যারামিটারাইউজড করতে পারি। কিন্তু কখনো কখনো আমাদের টাইপ রেস্টট্রক্ট করতে হয়। যেমন- আমরা একটি জেনেরিক ক্লাস লিখতে চাইয় যা কিনা একটি এরেতে রাখা কতগুলো নাম্বার-এর গড়(average) রিটার্ন করবে এবং আমরা চাই, এই এরে তে যে কোন ধরণের নাম্বার থাকতে পারে, যেমন- ইন্টিজার, ফ্লোটিং পয়েন্ট,ডাবল ইত্যাদি। আমরা টাইপ প্যারামিটার দিয়ে বলে দিতে চাই কখন কোনটা থাকবে। উদারহরণ দেখা যাক- + +```java + public class Stats { + T[] nums; + + public Stats(T[] nums) { + this.nums = nums; + } + + // Return type double in all cases. + double average() { + double sum = 0.0; + for (T num : nums) { + sum += num.doubleValue(); // Error!!! + } + + return sum / nums.length; + } + } +```` + +এভারেজ ক্যালকুলেট করার জন্য আমাদের এভারেজ মেথড সবসময় এরে থেকে ডাবল ভ্যালু এক্সেপেক্ট করে। কিন্তু আমাদের এরে-এর টাইপ যেহেতু যে কোন রকম হতে পারে, সুতরাং সব অবজেক্ট থেকে ডাবল ভ্যালু পাওয়ার উপায় নেই। + +ইনফ্যাক্ট এই ক্লাসটি কিন্তু কম্পাইল হবে না। + +এই ক্লাসটিতে আমরা একটি রেস্ট্রকশন এড করতে পারি যাতে করে এই টাইপ প্যারামিটার শুধুমাত্র নাম্বার(ইন্টিজার, ফ্লোটিং পয়েন্ট,ডাবল) হবে, নতুবা এটি কাজ করবে না। + +আমরা জানি যে সব নিউমেরিক অবজেক্ট গুলোর সুপার ক্লাস হচ্ছে `Number`. এবং `Number` এ `doubleValue()` মেথড ডিফাইন করা আছে। সুতরাং আমাদের ক্লাসটিকে একটু পরিবর্তন করি। + + +```java + public class Stats { + T[] nums; + + public Stats(T[] nums) { + this.nums = nums; + } + + // Return type double in all cases. + double average() { + double sum = 0.0; + for (T num : nums) { + sum += num.doubleValue(); // Error!!! + } + + return sum / nums.length; + } + } +``` + + +একটু লক্ষ্য করুন- + +```java + public class Stats{ + } +``` + +আমরা ক্লাস ডেফিনেশনে আমাদের টাইপ প্লেসহোল্ডার T নাম্বারকে এক্সটেন্ড করে। এটি আমাদের টাইপ প্যারামিটার পাস করতে রেস্ট্রিক্ট করে । অর্থাৎ আমরা শুধু মাত্র সেসব টাইপ পাস করতে পারবো যারা Number এর সাব টাইপ। + +সুতরাং আমাদের এই `Stats` ক্লাস এখন `Integer`, `Double`, `Float`, `Long`, `Short`, `BigInteger`, `BigDecimal`, `Byte` ইত্যাদি অবজেক্ট এর জন্যে কাজ করবে। + +সুতরাং দেখা যাচ্ছে যে, জেনেরিকস এর সুবিধা ব্যবহার করে আমরা এই স্ট্যাট ক্লাসটি আলাদা আলাদা করে অনেকগুলো না লিখে একটি দিয়েই কাজ করে ফেলা সম্ভব হল। + + +### Wildcard Arguments + +নিচের উদাহরণটি লক্ষ্য করি- + +```java + ArrayList lst = new ArrayList(); +``` + +এটি যদি কম্পাইল করতে চেষ্টা করি, তাহলে কম্পাইলার incompatible types ইরর দেবে। +কিন্তু আমরা জানি যে, সকল অবজেক্ট এর সুপার ক্লাস Object। তাছাড়া আমরা polymorphism থেকে জানি যে +আমরা সাব ক্লাসের রেফারেন্স কে সুপার ক্লাসের রেফারেন্স এ এসাইন করতে পারি। সুতরাং উপরের স্ট্যাটমেন্ট-টি কাজ করার কথা। + +নিচের উদাহরণ দুটি লক্ষ্য করি - +```java + List strLst = new ArrayList(); // 1 + List objLst = strList; // 2 - Compilation Error +```` + +২ নাম্বার লাইনটি কাজ করছে না । যদিও বা এটি কাজ করে এবং আর্বিট্রারি কোন একটি অবজেক্ট যদি `objLst` এড করা হয় তাহলে কিন্তু `strList` করাপ্টেড হয়ে যাবে এবং সেটি আর স্ট্রিং থাকবে না। + + +ধরা যাক, আমরা একটা print মেথড লিখতে চাই যা কিনা একটি লিস্ট এর ইলিমেন্ট গুলো প্রিন্ট করে। +```java + public static void print(List lst) { // accept List of Objects only, + // not List of subclasses of object + for (Object o : lst) { + System.out.println(o); + } + } +``` + +এটি কিন্তু শুধুমাত্র `List ` একসেপ্ট করবে , `List` অথবা `List` করবে না। + +উদাহরণ- + +```java + public static void main(String[] args) { + List objLst = new ArrayList(); + objLst.add(new Integer(55)); + printList(objLst); // matches + + List strLst = new ArrayList(); + strLst.add("one"); + printList(strLst); // compilation error + } +``` + +এই সমস্যা দূর করার জন্যে জাভাতে একটি একটি অপারেটর ব্যবহার করা হয় – যার নাম wildcard (?)। + +আমরা যদি আমাদের print মেথডটি নিচের মতো করে লিখি, তাহলে কিন্তু আমাদের সমস্যা দূর হয়ে যাবে। + +```java + public static void print(List lst) { // accept List of Objects only, + // not List of subclasses of object + for (Object o : lst) { + System.out.println(o); + } + } +``` + +`List lst` এর মানে হচ্ছে আমরা এর টাইপ আমাদের জানা নেই, এটি যে কোন টাইপ হতে পারে। যেহেতু সব টাইপ এর সুপার ক্লাস Object সুতরাং এটি যেকোন টাইপ এর জন্যে কাজ করবে। + + + + + +Bounded Types এর মতো আমরা Wildcard Arguments কেও Bounded করে ফেলতে পারি । + +উদাহরণ - + +public static void process(List list) { /* ... */ } + +এটি শুধু মাত্রে Foo এর সাব ক্লাস গুলো কে প্রসেস করতে পারবে। একে Upper Bounded Wildcards +বলে । + +আমরা যদি এমন কোন মেথড লিখতে চাই যা শুধু মাত্র Integer, Number, and Object প্রসেস করবে অর্থাৎ Integerএবং এর সুপার ক্লাস প্রসেস করবে তাহলে - + +public static void addNumbers(List list) { +} + + +একে Lower Bounded Wildcards বলে। + + + +Generic Methods + +আমরা মূলত এতোক্ষণ জেনেরিক ক্লাস নিয়ে কথা বলেছি। আমরা একটি ক্লাসকে জেনেরিক না করে শুধুমাত্রে এর একটি বা একাধিক মেথড কে জেনেরিক করে লিখতে পারি। + + +উদহরণ- + +public class Util { + // Generic static method + public static boolean compare(Pair p1, Pair p2) { + return p1.getKey().equals(p2.getKey()) && + p1.getValue().equals(p2.getValue()); + } +} + +এটি একটি জেনেরিকম মেথড। + +জেনেরিক মেথড-এ রিটার্নটাইপ এর আগে টাইপ-প্লেস হোল্ডার <> লিখতে হয়। + From 2bc25fab3aee82955777fc844fe6b666ba8e40fb Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 3 Feb 2015 00:31:08 +0600 Subject: [PATCH 065/150] Updated 8.md --- 8.md | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/8.md b/8.md index 2f6ce9a..6172ab9 100644 --- a/8.md +++ b/8.md @@ -341,45 +341,46 @@ class-name var-name = new class-name(cons-arg-li `List lst` এর মানে হচ্ছে আমরা এর টাইপ আমাদের জানা নেই, এটি যে কোন টাইপ হতে পারে। যেহেতু সব টাইপ এর সুপার ক্লাস Object সুতরাং এটি যেকোন টাইপ এর জন্যে কাজ করবে। - - - Bounded Types এর মতো আমরা Wildcard Arguments কেও Bounded করে ফেলতে পারি । উদাহরণ - -public static void process(List list) { /* ... */ } +```java + public static void process(List list) { /* ... */ } +``` -এটি শুধু মাত্রে Foo এর সাব ক্লাস গুলো কে প্রসেস করতে পারবে। একে Upper Bounded Wildcards +এটি শুধু মাত্রে `Foo` এর সাব ক্লাস গুলো কে প্রসেস করতে পারবে। একে Upper Bounded Wildcards বলে । আমরা যদি এমন কোন মেথড লিখতে চাই যা শুধু মাত্র Integer, Number, and Object প্রসেস করবে অর্থাৎ Integerএবং এর সুপার ক্লাস প্রসেস করবে তাহলে - -public static void addNumbers(List list) { -} - +```java + public static void addNumbers(List list) { + } +``` একে Lower Bounded Wildcards বলে। - -Generic Methods +### Generic Methods আমরা মূলত এতোক্ষণ জেনেরিক ক্লাস নিয়ে কথা বলেছি। আমরা একটি ক্লাসকে জেনেরিক না করে শুধুমাত্রে এর একটি বা একাধিক মেথড কে জেনেরিক করে লিখতে পারি। উদহরণ- -public class Util { - // Generic static method - public static boolean compare(Pair p1, Pair p2) { - return p1.getKey().equals(p2.getKey()) && - p1.getValue().equals(p2.getValue()); +```java + public class Util { + // Generic static method + public static boolean compare(Pair p1, Pair p2) { + return p1.getKey().equals(p2.getKey()) && + p1.getValue().equals(p2.getValue()); + } } -} +``` এটি একটি জেনেরিকম মেথড। -জেনেরিক মেথড-এ রিটার্নটাইপ এর আগে টাইপ-প্লেস হোল্ডার <> লিখতে হয়। +জেনেরিক মেথড-এ রিটার্নটাইপ এর আগে টাইপ-প্লেস হোল্ডার `<>` লিখতে হয়। From c125ec3d684f7d09bf4035c856efe8113ce0eab7 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 3 Feb 2015 00:49:19 +0600 Subject: [PATCH 066/150] Updated 8.md --- 8.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/8.md b/8.md index 6172ab9..69a27ee 100644 --- a/8.md +++ b/8.md @@ -7,8 +7,8 @@ তবে জাভাতে একটি চমৎকার ফিচার আছে যাতে করে আমরা অনেক সময় টাইপ না বলে দিয়েই কোড লিখতে পারি। আমরা জেনেরিকস শুরু করার আগে একটি গুরুত্বপূর্ণ তথ্য জেনে নিই- জাভা প্রোগ্রামিং ল্যাংগুয়েজ এ সব ক্লাস **java.lang.Object** ক্লাসটিকে ইনহেরিট করে। আমরা এটি নিয়ে অন্য কোন চ্যাপ্টারে আলোচনা করবো, তবে এখন আমাদের শুধু এই তথ্যটুকু মনে রাখলেই চলবে। -সহজ কথায় যদি বলি, তাহলে জেনেরিক দিয়ে আমরা যখন অবজেক্ট তৈরি করবো তখন টাইপ প্যারিমিটারাইজ করতে পারি। -অর্থাৎ আমরা যখন new অপারেটর দিয়ে অবজেক্ট তৈরি করবো তখন আসলে সিন্ধান্ত নেবো এটির টাইপ কি হবে। এর আগে আমরা এমন ভাবে একটা ক্লাস বা মেথড লিখে ফেলতে পারি যাতে করে এটি যে কোন টাইপ এর জন্যে কাজ করে। +সহজ কথায় যদি বলি, তাহলে জেনেরিকস দিয়ে আমরা যখন অবজেক্ট তৈরি করবো তখন টাইপ প্যারিমিটারাইজ করতে পারি। +অর্থাৎ আমরা যখন `new` অপারেটর দিয়ে অবজেক্ট তৈরি করবো তখন আসলে সিন্ধান্ত নেবো এটির টাইপ কি হবে। এর আগে আমরা এমন ভাবে একটা ক্লাস বা মেথড লিখে ফেলতে পারি যাতে করে এটি যে কোন টাইপ এর জন্যে কাজ করে। বরং একটা উদাহরণ দেখা যাক- @@ -71,7 +71,8 @@ > value: This is a Generics Test আউটপুট গুলো থেকে বুঝা যাচ্ছে যে , আমাদের প্রোগ্রামটি সঠিক ভাবে কাজ করছে এবং একটি জেনেরিক ক্লাসে একটি ইন্টিজার এবং একটি স্ট্রিং প্যারামিটারাইজড করতে পেরেছি। -এভাবে আমরা আরওঅন্যান্য টাইপ-ও প্যারামিটারাইজড করে পারি। + +এভাবে আমরা আরও অন্যান্য টাইপ-ও প্যারামিটারাইজড করে পারি। এবার আরও ভালভাবে এই প্রোগ্রামটি খেয়াল করা যাক- @@ -104,7 +105,7 @@ ```java iObj = new Generic(88.0); // Error! ```` -এখন অবজেক্ট তৈরি করার সময় যদি ডাবল প্যারমিটাইরজড করি এবং iObj তে এসাইন করি, তাহলে +এখন অবজেক্ট তৈরি করার সময় যদি ডাবল প্যারমিটাইরজড করি এবং `iObj` তে এসাইন করি, তাহলে ```java Error:(24, 16) java: incompatible types: Generic cannot be converted to Generic @@ -114,7 +115,7 @@ Error:(24, 16) java: incompatible types: Generic cannot be con ### জেনেরিকস শুধুমাত্র অজজেক্ট নিয়ে কাজ করে- -আমারা জানি যে, জাভা দুই ধরণের টাইপ সাপোর্ট করে- PrimitiveType এবং ReferenceType। +আমারা জানি যে, জাভা দুই ধরণের টাইপ সাপোর্ট করে- `PrimitiveType` এবং `ReferenceType`। জেনেরিকস শুধুমাত্র ReferenceType অর্থাৎ শুধু মাত্র অবজেক্ট নিয়ে কাজ রে। তাই- @@ -195,7 +196,7 @@ class-name var-name = new class-name(cons-arg-li Tuple> tupleInsideTuple = new Tuple<>("Tuple", new Tuple<>(45, 89)); ```` -জাভা ৭ এ একটি নতুন অপারেটর সংযুক্ত হয়েছে যাকে বলা হয় ডায়মন্ড অপারেটর। এটি ব্যবহার করে আমরা জেনেরকস এ verbosity কিছুটা কমানো যায়। অর্থাৎ +`জাভা ৭` এ একটি নতুন অপারেটর সংযুক্ত হয়েছে যাকে বলা হয় ডায়মন্ড অপারেটর। এটি ব্যবহার করে আমরা জেনেরকস এ verbosity কিছুটা কমানো যায়। অর্থাৎ ```java Map> anagrams = new HashMap>(); @@ -209,10 +210,9 @@ class-name var-name = new class-name(cons-arg-li অর্থাৎ জেনেরিকস লেখার সময় বাম পাশে টাইপ প্যারামিটার ইনফরমেশন গুলো লিখলে ডান পাশে লিখতে হয় না । এটি অটোম্যাটিক্যালী ইনফার করতে পারে। - ### Bounded Types -আমরা উপরে দুটি উদাহরণ দেখেছি যেগুলোতে আমরা যে কোন ধরণের টাইপ প্যারামিটারাইউজড করতে পারি। কিন্তু কখনো কখনো আমাদের টাইপ রেস্টট্রক্ট করতে হয়। যেমন- আমরা একটি জেনেরিক ক্লাস লিখতে চাইয় যা কিনা একটি এরেতে রাখা কতগুলো নাম্বার-এর গড়(average) রিটার্ন করবে এবং আমরা চাই, এই এরে তে যে কোন ধরণের নাম্বার থাকতে পারে, যেমন- ইন্টিজার, ফ্লোটিং পয়েন্ট,ডাবল ইত্যাদি। আমরা টাইপ প্যারামিটার দিয়ে বলে দিতে চাই কখন কোনটা থাকবে। উদারহরণ দেখা যাক- +আমরা উপরে দুটি উদাহরণ দেখেছি যেগুলোতে আমরা যে কোন ধরণের টাইপ প্যারামিটারাইউজড করতে পারি। কিন্তু কখনো কখনো আমাদের টাইপ restrict করতে হয়। যেমন- আমরা একটি জেনেরিক ক্লাস লিখতে চাই যা কিনা একটি এরে-তে রাখা কতগুলো নাম্বার-এর গড়(average) রিটার্ন করবে এবং আমরা চাই, এই এরে তে যে কোন ধরণের নাম্বার থাকতে পারে, যেমন- ইন্টিজার, ফ্লোটিং পয়েন্ট, ডাবল ইত্যাদি। আমরা টাইপ প্যারামিটার দিয়ে বলে দিতে চাই কখন কোনটা থাকবে। উদারহরণ দেখা যাক- ```java public class Stats { @@ -238,7 +238,7 @@ class-name var-name = new class-name(cons-arg-li ইনফ্যাক্ট এই ক্লাসটি কিন্তু কম্পাইল হবে না। -এই ক্লাসটিতে আমরা একটি রেস্ট্রকশন এড করতে পারি যাতে করে এই টাইপ প্যারামিটার শুধুমাত্র নাম্বার(ইন্টিজার, ফ্লোটিং পয়েন্ট,ডাবল) হবে, নতুবা এটি কাজ করবে না। +এই ক্লাসটিতে আমরা একটি restriction এড করতে পারি যাতে করে এই টাইপ প্যারামিটার শুধুমাত্র নাম্বার(ইন্টিজার, ফ্লোটিং পয়েন্ট,ডাবল) হবে, নতুবা এটি কাজ করবে না। আমরা জানি যে সব নিউমেরিক অবজেক্ট গুলোর সুপার ক্লাস হচ্ছে `Number`. এবং `Number` এ `doubleValue()` মেথড ডিফাইন করা আছে। সুতরাং আমাদের ক্লাসটিকে একটু পরিবর্তন করি। @@ -271,7 +271,7 @@ class-name var-name = new class-name(cons-arg-li } ``` -আমরা ক্লাস ডেফিনেশনে আমাদের টাইপ প্লেসহোল্ডার T নাম্বারকে এক্সটেন্ড করে। এটি আমাদের টাইপ প্যারামিটার পাস করতে রেস্ট্রিক্ট করে । অর্থাৎ আমরা শুধু মাত্র সেসব টাইপ পাস করতে পারবো যারা Number এর সাব টাইপ। +আমরা ক্লাস ডেফিনেশনে আমাদের টাইপ প্লেসহোল্ডার `T` নাম্বারকে extend করে। এটি আমাদের টাইপ প্যারামিটার পাস করতে restrict করে । অর্থাৎ আমরা শুধু মাত্র সেসব টাইপ পাস করতে পারবো যারা `Number` এর সাব টাইপ। সুতরাং আমাদের এই `Stats` ক্লাস এখন `Integer`, `Double`, `Float`, `Long`, `Short`, `BigInteger`, `BigDecimal`, `Byte` ইত্যাদি অবজেক্ট এর জন্যে কাজ করবে। @@ -287,10 +287,11 @@ class-name var-name = new class-name(cons-arg-li ``` এটি যদি কম্পাইল করতে চেষ্টা করি, তাহলে কম্পাইলার incompatible types ইরর দেবে। -কিন্তু আমরা জানি যে, সকল অবজেক্ট এর সুপার ক্লাস Object। তাছাড়া আমরা polymorphism থেকে জানি যে +কিন্তু আমরা জানি যে, সকল অবজেক্ট এর সুপার ক্লাস `Object`। তাছাড়া আমরা polymorphism থেকে জানি যে আমরা সাব ক্লাসের রেফারেন্স কে সুপার ক্লাসের রেফারেন্স এ এসাইন করতে পারি। সুতরাং উপরের স্ট্যাটমেন্ট-টি কাজ করার কথা। নিচের উদাহরণ দুটি লক্ষ্য করি - + ```java List strLst = new ArrayList(); // 1 List objLst = strList; // 2 - Compilation Error From 70fab19a9349dd69b1d97d8951ee983c0e9e8309 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 3 Feb 2015 00:50:14 +0600 Subject: [PATCH 067/150] Updated 8.md --- 8.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/8.md b/8.md index 69a27ee..48c90c2 100644 --- a/8.md +++ b/8.md @@ -301,6 +301,7 @@ class-name var-name = new class-name(cons-arg-li ধরা যাক, আমরা একটা print মেথড লিখতে চাই যা কিনা একটি লিস্ট এর ইলিমেন্ট গুলো প্রিন্ট করে। + ```java public static void print(List lst) { // accept List of Objects only, // not List of subclasses of object @@ -328,7 +329,7 @@ class-name var-name = new class-name(cons-arg-li এই সমস্যা দূর করার জন্যে জাভাতে একটি একটি অপারেটর ব্যবহার করা হয় – যার নাম wildcard (?)। -আমরা যদি আমাদের print মেথডটি নিচের মতো করে লিখি, তাহলে কিন্তু আমাদের সমস্যা দূর হয়ে যাবে। +আমরা যদি আমাদের `print()` মেথডটি নিচের মতো করে লিখি, তাহলে কিন্তু আমাদের সমস্যা দূর হয়ে যাবে। ```java public static void print(List lst) { // accept List of Objects only, From 2f3dba55e327e2034dc99f1e4b2959a6d7c0f4b3 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 3 Feb 2015 15:14:18 +0600 Subject: [PATCH 068/150] Updated 6.md --- 6.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/6.md b/6.md index cfe9dff..662c4ca 100644 --- a/6.md +++ b/6.md @@ -17,3 +17,29 @@ * কিভাবে নিজস্ব এক্সেপশান লিখবো * সারসংক্ষেপ + +একটি উদাহরণ দেখা যাক- + +‌‌‌```java + + public class Main { + + public static void main(String[] args) { + int a = 1; + int b = 0; + + int result = divide(a, b); + System.out.println("Result: " + result); + } + + public static int divide(int a, int b) { + return a / b; + } + } +```` + + + + + + From 951a119a75632d0ccb6cb0b2770774aa3bf3878a Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Wed, 4 Feb 2015 13:14:27 +0600 Subject: [PATCH 069/150] Updated 6.md --- 6.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/6.md b/6.md index 662c4ca..120551c 100644 --- a/6.md +++ b/6.md @@ -39,6 +39,31 @@ ```` +```java +public class Main { + + public static void main(String[] args) { + int a = 1; + int b = 0; + + int result = 0; + try { + result = divide(a, b); + } catch (ArithmeticException e) { + System.out.println("You can't divide " + a + " by " + b); + } + + System.out.println("Result: " + result); + } + + + public static int divide(int a, int b) { + return a / b; + } +} +``` + + From 2bf7ad0ae07184642785376196a4416d128e82f7 Mon Sep 17 00:00:00 2001 From: Nuhil Mehdy Date: Wed, 4 Feb 2015 20:30:32 +0600 Subject: [PATCH 070/150] Updated the readme file --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9eb2ee7..9006e5b 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,8 @@ #### ওপেন সোর্স -এই বইটি মূলত স্বেচ্ছাশ্রমে লেখা এবং বইটি সম্পূর্ন ওপেন সোর্স । এখানে তাই আপনিও অবদান রাখতে পারেন লেখক হিসেবে । আপনার কন্ট্রিবিউশান গৃহীত হলে অবদানকারীদের তালিকায় আপনার নাম যোগ করে দেওয়া হবে । +এই বইটি মূলত স্বেচ্ছাশ্রমে লেখা এবং বইটি সম্পূর্ন ওপেন সোর্স । এখানে তাই আপনিও অবদান রাখতে পারেন লেখক হিসেবে । আপনার কন্ট্রিবিউশান গৃহীত হলে অবদানকারীদের তালিকায় আপনার নাম যোগ করে দেওয়া হবে । -এটি মূলত একটি [গিটহাব রিপোজিটোরি](https://github.com/howtocode-com-bd/java.howtocode.com.bd) যেখানে এই বইয়ের আর্টিকেল গুলো মার্কডাউন ফরম্যাটে লেখা হচ্ছে । রিপোজটরিটি ফর্ক করে পুল রিকুয়েস্ট পাঠানোর মাধ্যমে আপনারাও অবদান রাখতে পারেন । +এটি মূলত একটি [গিটহাব রিপোজিটোরি](https://github.com/howtocode-com-bd/java.howtocode.com.bd) যেখানে এই বইয়ের আর্টিকেল গুলো মার্কডাউন ফরম্যাটে লেখা হচ্ছে । রিপোজটরিটি ফর্ক করে পুল রিকুয়েস্ট পাঠানোর মাধ্যমে আপনারাও অবদান রাখতে পারেন । বিস্তারিত দেখতে পারেন এই ভিডিওতে [Video](http://blog.howtcode.com.bd/?p=32) From ef8c8bae5b5dc5500888a473f641ee18b926f08d Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Fri, 6 Feb 2015 03:40:20 +0600 Subject: [PATCH 071/150] Updated 1.md --- 1.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/1.md b/1.md index 63c37e8..910c8bd 100644 --- a/1.md +++ b/1.md @@ -18,11 +18,7 @@ **কেন জাভা?** -<<<<<<< HEAD পৃথিবীতে এখন পর্যন্ত অনেক গুলো প্রোগ্রামিং ভাষা তৈরি করা হয়েছে। এদের প্রত্যেকটির উদ্দেশ্য ভিন্ন ভিন্ন। http://en.wikipedia.org/wiki/List_of_programming_languages এখানে একটি প্রোগ্রামিং ল্যাংগুয়েজ এর একটি লিস্ট দেওয়া আছে- দেখে নেওয়া যেতে পারে। প্রত্যেকটি ল্যাংগুয়েজ এর কিছু সুবিধা অসুবিধা আছে, এবং ল্যাংগুয়েজ গুলো প্রতিনিয়ত উন্নত হচ্ছে, এবং নতুন নতুন ল্যাংগুয়েজ তৈরি হচ্ছে। -======= -পৃথিবীতে এখন পর্যন্ত অনেক গুলো প্রোগ্রামিং ভাষা তৈরি করা হয়েছে। এদের উদ্দেশ্য এবং বিধেয় ভিন্ন ভিন্ন। http://en.wikipedia.org/wiki/List_of_programming_languages এখানে একটি প্রোগ্রামিং ল্যাংগুয়েজ এর একটি লিস্ট দেওয়া আছে- দেখে নেওয়া যেতে পারে। প্রত্যেকটি ল্যাংগুয়েজ এর কিছু সুবিধা অসুবিধা আছে, এবং ল্যাংগুয়েজ গুলো প্রতিনিয়ত বিকশিত হচ্ছে, এবং নতুন নতুন ল্যাংগুয়েজ তৈরি হচ্ছে। ->>>>>>> 9c7a1c3f0f12fa50a956800f0d6298b30ca56c33 যে যে কারণে জাভা শেখা যেতে পারে এখন সেগুলো নিয়ে আলোচনা করা যাক- From 466f5056b763d9b654ca6ac81a2473117664611a Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sat, 7 Feb 2015 20:28:48 +0600 Subject: [PATCH 072/150] Add generic linked list example --- 8.md | 237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 237 insertions(+) diff --git a/8.md b/8.md index 48c90c2..533d848 100644 --- a/8.md +++ b/8.md @@ -385,4 +385,241 @@ Bounded Types এর মতো আমরা Wildcard Arguments কেও Bou জেনেরিক মেথড-এ রিটার্নটাইপ এর আগে টাইপ-প্লেস হোল্ডার `<>` লিখতে হয়। +আমরা এবার চেষ্টা করবো কিভাবে আমরা একটি জেনেরিক সিংগলি লিংকলিস্ট লিখতে পারি -- + +‌ +```java + + /** + * @author Bazlur Rahman Rokon + * @date 2/4/15. + */ + public class SinglyLinkedList { + private long size; + + private Node head; + private Node tail; + + public void addFirst(Type value) { + addFirst(new Node<>(value)); + } + + public void addLast(Type value) { + addLast(new Node<>(value)); + } + + private void addLast(Node node) { + if (size == 0) { + head = node; + } else { + tail.setNext(node); + } + tail = node; + size++; + } + + public void addFirst(Node node) { + Node temp = head; + head = node; + head.setNext(temp); + + size++; + + if (size == 1) { + tail = head; + } + } + + public Node getHead() { + return head; + } + + public Node getTail() { + return tail; + } + + public void removeFirst() { + if (size != 0) { + head = head.getNext(); + size--; + } + + if (size == 0) { + tail = null; + } + } + + public void removeLast() { + if (size != 0) { + if (size == 1) { + head = null; + tail = null; + } else { + Node current = head; + + while (current.getNext() != tail) { + current = current.getNext(); + } + current.setNext(null); + tail = current; + + } + size--; + } + } + + public Type getFirst() { + + return getHead().getValue(); + } + + // four scenario + // 1. empty list- do nothing + // 2. single node : ( previous is null) + // 3. Many nodes + // a. node to remove is first node + // b. node to remove is the middle or last + + public boolean remove(Type type) { + Node prev = null; + Node current = head; + + while (current != null) { + if (current.getValue().equals(type)) { + if (prev != null) { + + // just skip the current node. it works fine + prev.setNext(current.getNext()); + + if (current.getNext() == null) { + tail = prev; + } + + size--; + } else { + removeFirst(); + } + + return true; + } + + prev = current; + current = current.getNext(); + } + + return false; + } + + + public long getSize() { + + return size; + } + + public void print() { + System.out.print("Total elements : " + size + " -> "); + Node node = head; + while (node != null) { + System.out.print(node.getValue().toString() + " ,"); + node = node.getNext(); + } + System.out.println(); + } + + public void clear() { + for (Node x = head; x != null; ) { + Node next = x.next; + x.next = null; + x.value = null; + x = next; + } + + head = tail = null; + size = 0; + } + + + private class Node { + private Type value; + private Node next; + + public Node(Type value) { + this.value = value; + } + + public Type getValue() { + return value; + } + + public void setValue(Type value) { + this.value = value; + } + + public Node getNext() { + return next; + } + + public void setNext(Node next) { + this.next = next; + } + } + } +``` + +এবার আমরা এটিকে রান করে দেখি- + +```java + /** + * @author Bazlur Rahman Rokon + * @date 2/4/15. + */ + public class LinkedListDemo { + public static void main(String[] args) { + SinglyLinkedList integers = new SinglyLinkedList<>(); + integers.addFirst(4); + integers.addFirst(3); + integers.addFirst(2); + integers.addFirst(1); + + integers.print(); + + System.out.println("Remove first and last elements.."); + integers.removeFirst(); + integers.removeLast(); + integers.print(); + + System.out.println("add elements at last "); + integers.addLast(5); + integers.addLast(6); + integers.addLast(7); + integers.print(); + + SinglyLinkedList stringLinkedList = new SinglyLinkedList<>(); + stringLinkedList.addFirst("abcd"); + stringLinkedList.addFirst("efgh"); + stringLinkedList.addFirst("ijkl"); + stringLinkedList.addFirst("mnop"); + stringLinkedList.addFirst("qrst"); + stringLinkedList.print(); + } + } +``` + +Output: + +> Total elements : 4 - 1 ,2 ,3 ,4 , +> Remove first and last elements.. +> Total elements : 2 - 2 ,3 , +> add elements at last +> Total elements : 5 - 2 ,3 ,5 ,6 ,7 , +> Total elements : 5 - qrst ,mnop ,ijkl ,efgh ,abcd , + + + + + + + + + From ddd758bf414bd24ecf96ca663368ad907f8b7b6c Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 15 Feb 2015 20:59:51 +0600 Subject: [PATCH 073/150] Updated 3.2.md --- 3.2.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/3.2.md b/3.2.md index 5dd9f72..9310e79 100644 --- a/3.2.md +++ b/3.2.md @@ -24,7 +24,7 @@ 1 + 2 একটি এক্সপ্রেশান যা “+” অপারেটর এর মাধ্যমে দুটি সংখ্যা যোগ হয় এবং “=” অপারেটর এর মাধ্যমে result ভ্যারিয়েবল এ এসাইন হয়। সুতরাং এখানে দুইটা এক্সপ্রেশান। জাভা প্রোগ্রামিং ল্যাংগুয়েজ কম্পাউন্ড এক্সপ্রেশান সাপোর্ট করে। এর মানে হচ্ছে অনেকগুলো ছোট ছোট এক্সপ্রেশান নিয়ে আমরা একটি বড় এক্সপ্রেশান তৈরি করতে পারি। -একটি এক্সপ্রেশন মূলত একটি নির্দিষ্ট ডাটাটাইপ এর ভ্যালু প্রদান করে, সুতরাং কম্পাউন্ড এক্সপ্রেশান এর ক্ষেত্রে সব এক্সপ্রেশান এর ফলাফল একি ডাটাটাইপ এর হতে হবে। +একটি এক্সপ্রেশান মূলত একটি নির্দিষ্ট ডাটাটাইপ এর ভ্যালু প্রদান করে, সুতরাং কম্পাউন্ড এক্সপ্রেশান এর ক্ষেত্রে সব এক্সপ্রেশান এর ফলাফল একি ডাটাটাইপ এর হতে হবে। 1 * 2 * 3 @@ -46,14 +46,14 @@ **স্টেটমেন্টস(Statements)** স্টেটমেন্টস হচ্ছে অনেকটা একটা পূর্ণাঙ্গ বা সার্থক বাংলা বাক্যেের মতো। -তবে প্রোগ্রামিং এর ভাষায় এটি হচ্ছে- একটি ছোট ইউনিট অব কোড যা কিনা এক্সিকিউশান করা যায়। কতগুলো এক্সপ্রেশন শেষে সেমিকোলন (;) দিয়ে শেষ করলে স্টেটমেন্ট হয়ে যায়। যেমন- +তবে প্রোগ্রামিং এর ভাষায় এটি হচ্ছে- একটি ছোট ইউনিট অব কোড যা কিনা এক্সিকিউশান করা যায়। কতগুলো এক্সপ্রেশান শেষে সেমিকোলন (;) দিয়ে শেষ করলে স্টেটমেন্ট হয়ে যায়। যেমন- - এসাইনমেন্ট এক্সপ্রেশান - ++ অথবা-- এর ব্যবহার - মেথড/ফাংশান কল - নতুন অবজেক্ট তৈরি করা, ইত্যাদি । -এদেরকে এক্সপ্রেশনলাল স্টেটমেন্ট বলা হয়। +এদেরকে এক্সপ্রেশানাল স্টেটমেন্ট বলা হয়। ```java // এটি এসাইনমেন্ট স্টেটমেন্ট aValue = 8933.234; From a426091e28b8c8200ea11e0abea2b3f796935b76 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Tue, 17 Feb 2015 20:35:05 +0600 Subject: [PATCH 074/150] Updated 7.md --- 7.md | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/7.md b/7.md index 5814e46..a7deae5 100644 --- a/7.md +++ b/7.md @@ -95,6 +95,37 @@ toUpperCase() আপারকেস লেটারে কনভার্ট ক ``` +###বি:দ্র: + + +জাভাতে স্ট্রিং ক্লাস **immutable**, এর মানে হচ্ছে, একবার কোন স্ট্রিং অবজেক্ট তৈরি করলে তাকে আর পরিবর্তন করা যাবে না। আমরা অনেক ক্লাস লিখি, তারপর এর মাঝে বিভিন্ন ভ্যারিয়েবল রাখি, অবজেক্ট তৈরি করার পর সেই অবজেক্টর এর ভেতরের ভ্যারিয়েবল গুলো বিভিন্ন সময় পরিবতর্তন করতে পারি। কিন্তু স্ট্রিং এর ক্ষেত্রে এটি সম্ভব নয়। অর্থাৎ আমরা যদি কোন একটি ভ্যালু দিয়ে একবার একটি স্ট্রিং অবজেক্ট তৈরি করি তাহলে সেটি আর পরিবর্তন করা যাবে না। + +কিন্তু আমরা অনেকসময়ই স্ট্রিং কনকেট করি, সেক্ষেত্রে যা হয়, মনে করি- + +```java +‌‌‌‌‌‌‌‌‌ + String str = "Hello "; + str = str + "world"; + +```` + +এখানে যদিও মনে হচ্ছে আমরা স্ট্রিং এর ভ্যালু পরিবর্তন করে ফেলেছি। কিন্তু আসলে যা হচ্ছে তা হলো, আমরা প্রথমে একটি অবজেক্ট তৈরি করেছি, তারপর সেই অবেজক্টএর ভ্যালু এবং নতুন একটি ভ্যালু নিয়ে নতুন একটি অবজেক্ট তৈরি করেছি, এবং যা str এখন নতন সেই অবজেক্টকে রেফার করছে। আগের অবজেক্টটিকে গার্বেজ কালেক্টর নিয়ে চলে যাবে। + +এখন প্রশ্ন হচ্ছে, কেন এই **immutability** দরকার হয়। + +স্ট্রিং পুল (**Stirng Pool**) সম্পর্কে হয়তো অনেকেই জানি। এটি একটি জাভা হিপ এর একটি স্পেশাল এরিয়া । আমাদের যদি নতুন একটি স্ট্রিং তৈরি করতে হয়, সেই স্ট্রিং যদি আগে থেকেই স্ট্রিং পুল এ থেকে থাকে, তাহলে নতুন করে আর তৈরি না করে আগের অবজেক্টটির রেফারেন্স দেওয়া হয়। এতে করে আমাদের মেমরি ফ্রুটপ্রিন্ট অনেক কমে যাচ্ছে। +```java +String string1 = "abcd"; +String string2 = "abcd"; +```` + +আমরা যদি এই দুটি লাইন লিখি, তাহলে আসলে জাভা হিপ এ একটি স্ট্রিং অবজেক্ট-ই থাকবে, দুটি তৈরি হবে না। যদি স্ট্রিং immutable না হয়, তাহলে একটি স্ট্রিং যদি পরিবর্তন করি, তাহলে আসলে অন্যান্য রেফারেন্স গুলোও পরিবর্তন হয়ে যাবে। + +এছাড়াও, আমরা জানি যে স্ট্রিং এর **hashcode** খুব বেশি ব্যবহার করা হয়। যেমন **HashMap**। স্ট্রিং **immutable** হওয়ায় এটা গ্যারান্টিড যে, সবসময় **hashcode** এক-ই হবে, সুতরাং আমরা প্রতিবার **hashcode** ক্যালকুলেট না করে নির্ধিদ্বায় ক্যাশিং করতে পারি। + +আমরা স্ট্রিং প্যারামিটার হিসেব অনেক বেশি ব্যবহার করে থাকি, যেমন, নেটওয়ার্ক কানেকশান, ফাইল অপেনিং ইত্যাদির ক্ষে্ত্রে। সুতরাং এটি **immutable** না হলে পরিবর্তন করে ফেলা সম্ভব যা কিনা একটি সিরিয়াস রকম সিকিউরিটি থ্রেড হতে পারে। কিন্তু যেহেতু স্ট্রিং **immutable**, সুতরাং সেই সম্ভবনা নেই। + +তাছাড়া স্ট্রিং **immutable** হওয়ায় এটি ন্যাচারালি থ্রেড সেইফ, এবং স্বাধীনভাবে যে কেন থ্রেড একসেস করে পারে আমাদেরকে কষ্ট করে এর থ্রেড সেইফটি নিয়ে চিন্তা করতে হয় না। From a85966af06a51aa0dfdf233a654a22ace4976bec Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sat, 21 Feb 2015 06:39:39 +0600 Subject: [PATCH 075/150] Updated 4.md --- 4.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/4.md b/4.md index 9983fcd..161af24 100644 --- a/4.md +++ b/4.md @@ -19,9 +19,9 @@ - লুপিং স্টেটমেন্ট (for, while, do-while) - এবং ব্রাঞ্চিং স্টেটমেন্ট (break, continue, return) -if-then স্টেটমেন্ট হচ্ছে সব চেয়ে বেসিক কন্ট্রোল ফ্লো স্টেটমেন্ট। +`if-then` স্টেটমেন্ট হচ্ছে সব চেয়ে বেসিক কন্ট্রোল ফ্লো স্টেটমেন্ট। -আমরা যদি একটি প্রোগ্রাম এর একটি নির্দিষ্ট কোড ব্লক শুধু মাত্র একটি বিশেষ কন্ডিশান বা শর্ত সাপেক্ষেে এক্সিকিউট করতে চাই তাহলে আমরা if-then স্টেটমেন্ট ব্যবহার করি- +আমরা যদি একটি প্রোগ্রাম এর একটি নির্দিষ্ট কোড ব্লক শুধু মাত্র একটি বিশেষ কন্ডিশান বা শর্ত সাপেক্ষেে এক্সিকিউট করতে চাই তাহলে আমরা `if-then` স্টেটমেন্ট ব্যবহার করি- উদাহরণ- @@ -35,9 +35,9 @@ if-then স্টেটমেন্ট হচ্ছে সব চেয়ে ব উপরের কোড ব্লকটিতে আমরা শুধু মাত্র x এর মান 20 হলেই তা প্রিন্ট করতে চাই। -if স্টেটমেন্ট এর পেরেনস্থেসিস “()” মাঝে একটি বুলিয়ান এক্সপ্রেশান থাকে। বুলিয়ান এক্সপ্রেশান হচ্ছে এক ধরণের এক্সপ্রেশান যার ফলাফল শুধুমাত্র true অথবা false হতে পারে। এই বুলিয়ান এক্সপ্রেশানটির মান যদি true হয় তাহলে এই if স্টেটমেন্ট এর ব্লকটি এক্সিকিউট হবে, নতুবা হবে না। +`if` স্টেটমেন্ট এর পেরেনস্থেসিস “()” মাঝে একটি বুলিয়ান এক্সপ্রেশান থাকে। বুলিয়ান এক্সপ্রেশান হচ্ছে এক ধরণের এক্সপ্রেশান যার ফলাফল শুধুমাত্র `true` অথবা `false` হতে পারে। এই বুলিয়ান এক্সপ্রেশানটির মান যদি `true` হয় তাহলে এই if স্টেটমেন্ট এর ব্লকটি এক্সিকিউট হবে, নতুবা হবে না। -তবে আমাদের প্রথম কন্ডিশান বা শর্ত বা বুলিয়ান এক্সপ্রেশান যদি সত্যি না হয়, এবং এক্ষেত্রে আমরা অন্য একটি ব্লক অব কোড এক্সিকিউট করতে চাই, তাহলে if-then-else স্টেটমেন্ট ব্যবহার করি। +তবে আমাদের প্রথম কন্ডিশান বা শর্ত বা বুলিয়ান এক্সপ্রেশান যদি সত্যি না হয়, এবং এক্ষেত্রে আমরা অন্য একটি ব্লক অব কোড এক্সিকিউট করতে চাই, তাহলে `if-then-else` স্টেটমেন্ট ব্যবহার করি। উদাহরণ- ```java From e2bda383f737901af93cf024b91334a3753b9170 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sat, 21 Feb 2015 06:54:04 +0600 Subject: [PATCH 076/150] Updated 4.md --- 4.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/4.md b/4.md index 161af24..53de3be 100644 --- a/4.md +++ b/4.md @@ -48,6 +48,30 @@ } ``` +উপরের উদাহরণটি-তে একটি কন্ডিশান বা বুলিয়ান এক্সপ্রেশান ছিল, কিন্তু আমাদের মাঝে মাঝে একাধিক কন্ডিশান থাকতে পারে। তাহলে আরেকটি উদাহরণ দেখা যাক- + +```java + int score = 76; + char grade; + + if (score >= 90) { + grade = 'A'; + } else if (score >= 80) { + grade = 'B'; + } else if (score >= 70) { + grade = 'C'; + } else if (score >= 60) { + grade = 'D'; + } else { + grade = 'F'; + } + + System.out.println("Grade = " + grade); +``` +উপরের উদাহরণটি যদি আমরা রান করি তাহলে output হবে - + + Grade = C + ## চলবে ---- From 7aaa2b64784c88b2c02fbafd6345cf155fa6988c Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sat, 21 Feb 2015 07:21:25 +0600 Subject: [PATCH 077/150] Updated 4.md --- 4.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/4.md b/4.md index 53de3be..ae865e0 100644 --- a/4.md +++ b/4.md @@ -71,7 +71,16 @@ উপরের উদাহরণটি যদি আমরা রান করি তাহলে output হবে - Grade = C + +এখানে প্রথম বুলিয়ান এক্সপ্রেশানটি যদি`‌true` হয, তাহলে ‌` grade = 'A';` কোড ব্লকটি এক্সিকিউট হবে, আর ‌`true` না হয়, তাহলে পরের কোড ব্লক, অর্থাৎ ‌‌`else if (score >= 80)` এক্সপ্রেশানটি ই্ভালুয়েট করা হবে, এবং এটি যদি `true` হয় তাহলে এর কার্লি ব্রেস {} এর মাঝের কোড ব্লকটি এক্সিকিউট হবে। অর্থাৎ আমাদের যদি অনেকগুলো কন্ডিশান থাকে তাহলে আমরা ‌`if` কন্ডিশান এর সাথে `else if` দিয়ে সেগুলো-কে এড করতে পারি। এই কন্ডিশান গুলোর মধ্যে যে কোন একটি এক্সপ্রেশান যদি `true` হয় তাহলে সেই ব্লক এর কোডটি এক্সিকিউট হবে । +এখানে লক্ষ্য রাখতে হবে যে, প্রথম এক্সপ্রেশানটি যদি true হয়, তাহলে কিন্তু বাকি কন্ডিশান গুলো আর ইভালুয়েট হবে না। অর্থাৎ রান টাইমে এই কোড ব্লক গুলো একদম প্রথম if কন্ডিশান থেকে যতক্ষন পর্যন্ত কোন true এক্সপ্রেশান না পাওয়া যায়, ঠিক ততক্ষণ পর্যন্ত এক্সপ্রেশন গুলো ইভালুয়েট হবে। আমাদের উদাহরণটিতে - প্রথম, দ্বিতীয় এবং তৃতীয় এই তিনটি এক্সপ্রেশান ইভালুয়েটেড হয়েছে, এবং তৃতীয়টিতে `true` এক্সপ্রেশান পাওয়া গেছে, এবং ‌`grade = 'C';`এই কোড ব্লকটি এক্সিকিউট হয়েছে। +এভাবে আমাদের যদি একাধিক কন্ডিশান এর জন্য আমরা if-then-else দিয়ে কোড লিখতে পারি। + + +## Switch + +আমরা `if-then` এবং `if-then-else` এর মতো `switch` স্টেটমেন্ট ও অনেকগুলো ## চলবে ---- From 05980fb6c76b3e2094f743b14ff99d7925373e94 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sat, 21 Feb 2015 07:24:11 +0600 Subject: [PATCH 078/150] Updated 4.md --- 4.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/4.md b/4.md index ae865e0..6ca3804 100644 --- a/4.md +++ b/4.md @@ -72,11 +72,11 @@ Grade = C -এখানে প্রথম বুলিয়ান এক্সপ্রেশানটি যদি`‌true` হয, তাহলে ‌` grade = 'A';` কোড ব্লকটি এক্সিকিউট হবে, আর ‌`true` না হয়, তাহলে পরের কোড ব্লক, অর্থাৎ ‌‌`else if (score >= 80)` এক্সপ্রেশানটি ই্ভালুয়েট করা হবে, এবং এটি যদি `true` হয় তাহলে এর কার্লি ব্রেস {} এর মাঝের কোড ব্লকটি এক্সিকিউট হবে। অর্থাৎ আমাদের যদি অনেকগুলো কন্ডিশান থাকে তাহলে আমরা ‌`if` কন্ডিশান এর সাথে `else if` দিয়ে সেগুলো-কে এড করতে পারি। এই কন্ডিশান গুলোর মধ্যে যে কোন একটি এক্সপ্রেশান যদি `true` হয় তাহলে সেই ব্লক এর কোডটি এক্সিকিউট হবে । +এখানে প্রথম বুলিয়ান এক্সপ্রেশানটি যদি`‌true` হয, তাহলে ‌` grade = 'A';` কোড ব্লকটি এক্সিকিউট হবে, আর ‌`true` না হয়, তাহলে পরের কোড ব্লক, অর্থাৎ ‌‌`else if (score >= 80)` এক্সপ্রেশানটি ই্ভালুয়েট করা হবে, এবং এটি যদি `true` হয় তাহলে এর কার্লি ব্রেস `{}` এর মাঝের কোড ব্লকটি এক্সিকিউট হবে। অর্থাৎ আমাদের যদি অনেকগুলো কন্ডিশান থাকে তাহলে আমরা ‌`if` কন্ডিশান এর সাথে `else if` দিয়ে সেগুলো-কে এড করতে পারি। এই কন্ডিশান গুলোর মধ্যে যে কোন একটি এক্সপ্রেশান যদি `true` হয় তাহলে সেই ব্লক এর কোডটি এক্সিকিউট হবে । -এখানে লক্ষ্য রাখতে হবে যে, প্রথম এক্সপ্রেশানটি যদি true হয়, তাহলে কিন্তু বাকি কন্ডিশান গুলো আর ইভালুয়েট হবে না। অর্থাৎ রান টাইমে এই কোড ব্লক গুলো একদম প্রথম if কন্ডিশান থেকে যতক্ষন পর্যন্ত কোন true এক্সপ্রেশান না পাওয়া যায়, ঠিক ততক্ষণ পর্যন্ত এক্সপ্রেশন গুলো ইভালুয়েট হবে। আমাদের উদাহরণটিতে - প্রথম, দ্বিতীয় এবং তৃতীয় এই তিনটি এক্সপ্রেশান ইভালুয়েটেড হয়েছে, এবং তৃতীয়টিতে `true` এক্সপ্রেশান পাওয়া গেছে, এবং ‌`grade = 'C';`এই কোড ব্লকটি এক্সিকিউট হয়েছে। +এখানে লক্ষ্য রাখতে হবে যে, প্রথম এক্সপ্রেশানটি যদি ‌`true` হয়, তাহলে কিন্তু বাকি কন্ডিশান গুলো আর ইভালুয়েট হবে না। অর্থাৎ রান টাইমে এই কোড ব্লক গুলো একদম প্রথম ‌`‌if` কন্ডিশান থেকে যতক্ষন পর্যন্ত কোন `true` এক্সপ্রেশান না পাওয়া যায়, ঠিক ততক্ষণ পর্যন্ত এক্সপ্রেশন গুলো ইভালুয়েট হবে। আমাদের উদাহরণটিতে - প্রথম, দ্বিতীয় এবং তৃতীয় এই তিনটি এক্সপ্রেশান ইভালুয়েটেড হয়েছে, এবং তৃতীয়টিতে `true` এক্সপ্রেশান পাওয়া গেছে, এবং ‌`grade = 'C';`এই কোড ব্লকটি এক্সিকিউট হয়েছে। -এভাবে আমাদের যদি একাধিক কন্ডিশান এর জন্য আমরা if-then-else দিয়ে কোড লিখতে পারি। +এভাবে আমাদের যদি একাধিক কন্ডিশান এর জন্য আমরা `if-then-else` ব্যবহার করে কোড লিখতে পারি। ## Switch From 14ae21b86c2923ca65f9330162f008fca259e993 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sat, 21 Feb 2015 07:38:28 +0600 Subject: [PATCH 079/150] Updated 4.md --- 4.md | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/4.md b/4.md index 6ca3804..0244661 100644 --- a/4.md +++ b/4.md @@ -76,11 +76,67 @@ এখানে লক্ষ্য রাখতে হবে যে, প্রথম এক্সপ্রেশানটি যদি ‌`true` হয়, তাহলে কিন্তু বাকি কন্ডিশান গুলো আর ইভালুয়েট হবে না। অর্থাৎ রান টাইমে এই কোড ব্লক গুলো একদম প্রথম ‌`‌if` কন্ডিশান থেকে যতক্ষন পর্যন্ত কোন `true` এক্সপ্রেশান না পাওয়া যায়, ঠিক ততক্ষণ পর্যন্ত এক্সপ্রেশন গুলো ইভালুয়েট হবে। আমাদের উদাহরণটিতে - প্রথম, দ্বিতীয় এবং তৃতীয় এই তিনটি এক্সপ্রেশান ইভালুয়েটেড হয়েছে, এবং তৃতীয়টিতে `true` এক্সপ্রেশান পাওয়া গেছে, এবং ‌`grade = 'C';`এই কোড ব্লকটি এক্সিকিউট হয়েছে। -এভাবে আমাদের যদি একাধিক কন্ডিশান এর জন্য আমরা `if-then-else` ব্যবহার করে কোড লিখতে পারি। +এভাবে আমাদের যদি একাধিক কন্ডিশান এর জন্য আমরা `if-then-else` ব্যবহার করে কোড লিখতে পারি। যদি একাধিক ## Switch -আমরা `if-then` এবং `if-then-else` এর মতো `switch` স্টেটমেন্ট ও অনেকগুলো +আমাদের কোড এ যদি একাধিক এক্সিকিউশান পাথ থাকে তাহলে, আমরা `if-then` এবং `if-then-else` ব্যবহার করে কোড লিখতে পারি। তবে এর পরিবর্তে `switch` স্ট্যাটমেন্ট ও ব্যবহার করতে পারি। +উদাহরণ- + +```java +public static String getMonth(int month) { + String monthString; + + switch (month) { + case 1: + monthString = "January"; + break; + case 2: + monthString = "February"; + break; + case 3: + monthString = "March"; + break; + case 4: + monthString = "April"; + break; + case 5: + monthString = "May"; + break; + case 6: + monthString = "June"; + break; + case 7: + monthString = "July"; + break; + case 8: + monthString = "August"; + break; + case 9: + monthString = "September"; + break; + case 10: + monthString = "October"; + break; + case 11: + monthString = "November"; + break; + case 12: + monthString = "December"; + break; + default: + monthString = "Invalid month"; + break; + } + return monthString; + } + +``` + + + + + ## চলবে ---- From 42d63cd5d5d62f20c9246ffce401df1eaeae33a9 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 22 Feb 2015 18:58:09 +0600 Subject: [PATCH 080/150] Updated 1.md --- 1.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/1.md b/1.md index 910c8bd..c264b7b 100644 --- a/1.md +++ b/1.md @@ -14,7 +14,7 @@ **প্রোগ্রামিং ল্যাংগুয়েজ কি ?** -ওয়েল, প্রোগ্রামিং ল্যাংগুয়েজ হচ্ছে এক ধরণের কৃত্রিম ভাষা যা কিনা যন্ত্র বিশেষ করে কম্পিউটার-এর আচরণ নিয়ন্ত্রণ করার জন্যে ব্যবহার করা হয়। মানুষের ভাষার মতো এর কিছু সিনট্যাক্স এবং সেম্যান্টিক্‌স অর্থাৎ নিয়মকানুন ও অর্থ থাকে। এবং আমাদের এই বই এর উদ্দেশ্য হচ্ছে একটি বিশেষ ভাষার(জাভা) নিয়মকানুন গুলো জেনে নেওয়া। সুতরাং পড়তে থাকুন। +প্রোগ্রামিং ল্যাংগুয়েজ হচ্ছে এক ধরণের কৃত্রিম ভাষা যা কিনা যন্ত্র বিশেষ করে কম্পিউটার-এর আচরণ নিয়ন্ত্রণ করার জন্যে ব্যবহার করা হয়। মানুষের ভাষার মতো এর কিছু সিনট্যাক্স এবং সেম্যান্টিক্‌স অর্থাৎ নিয়মকানুন ও অর্থ থাকে। আমাদের এই বই এর উদ্দেশ্য হচ্ছে একটি বিশেষ ভাষার(জাভা) নিয়মকানুন গুলো জেনে নেওয়া। সুতরাং পড়তে থাকুন। **কেন জাভা?** @@ -22,11 +22,11 @@ যে যে কারণে জাভা শেখা যেতে পারে এখন সেগুলো নিয়ে আলোচনা করা যাক- -- এটি খুব-ই (Readable)পাঠযোগ্য। অন্য যে কোন প্রোগ্রামিং ব্যাকগ্রাউন্ড এর প্রোগ্রামার খুব সহজেই একটি জাভা-ফাইল দেখে বুঝতে পারবে আসলে কোড এ কি লেখা আছে। -- সি কিংবা সি++ এ কোড করার সময় আমাদের অনেক সময়-ই লিংকিং, অপটিমাইজেশান, মেমরি এলোকেশান, মেমরি ডি-এলোকেশান ইত্যাদি নানা রকম জিনিস নিয়ে ভাবতে হয়, কিন্তু জাভার ক্ষেত্রে এগুলোর কথা ভাবতেই হয় না। খুব বেশি চিন্তা না করে আমরা নিশ্চিতভাবে জাভা কম্পাইলার এর উপর সব কিছু ছেড়ে দিতে পারে। +- এটি খুব-ই (Readable)পাঠযোগ্য, সহজে বুঝা যায়। অন্য যে কোন প্রোগ্রামিং ব্যাকগ্রাউন্ড এর প্রোগ্রামার খুব সহজেই একটি জাভা-ফাইল দেখে বুঝতে পারবে আসলে কোড এ কি লেখা আছে। +- সি কিংবা সি++ এ কোড করার সময় আমাদের অনেক সময়-ই লিংকিং, অপটিমাইজেশান, মেমরি এলোকেশান, মেমরি ডি-এলোকেশান, পয়েন্টার ডিরেফারেন্সিং ইত্যাদি নানা রকম জিনিস নিয়ে ভাবতে হয়, কিন্তু জাভার ক্ষেত্রে এগুলোর কথা ভাবতেই হয় না। খুব বেশি চিন্তা না করে আমরা নিশ্চিতভাবে জাভা কম্পাইলার এর উপর সব কিছু ছেড়ে দিতে পারে। - জাভাতে অসংখ্য API আছে যেগুলো খুবই স্টেবল, খুব বেশি চিন্তাভাবনা না করেই এদের নিয়ে খুব সহজেই কাজ করে ফেলা যায়। - জাভা -র সব কিছুই ওপেন সোর্স। -- জাভা ভার্চুয়াল মেশিন সম্ভবত সফটওয়্যার-এর দুনিয়া সব থেকে চমৎকার সৃষ্টি। জাভা-এর সাথে এর মাঝে আরও অনেকগুলো ল্যাংগুয়েজ নিয়ে কাজ করা যায়। +- জাভা ভার্চুয়াল মেশিন সম্ভবত সফটওয়্যার- জগতে সব থেকে চমৎকার সৃষ্টি। জাভা-এর সাথে এর আরও অনেকগুলো ল্যাংগুয়েজ যেমন- গ্রুভি, স্ক্যালা ইত্যাদি নিয়ে কাজ করা যায়। - গত ১৫ বছরে চমৎকার অনেকগুলো ডেভেলপমেন্ট এনভায়রনমেন্ট তৈরি হয়েছে যেগুলো খুবই ইন্টেলিজেন্ট – যেমন- Eclipse, IntelliJ IDEA, netbeans etc. । এগুলো মাধ্যমে খুব আয়েশের সাথেই কোড করা যায়, ডিবাগ করা যায়। - এটি একটি অবজেক্ট ওরিয়েন্টেড- টাইপ সেইফ প্রোগ্রামিং ল্যাংগুয়েজ। - এটি পোর্টেবল যে কোন প্লাটফর্মে চলে। একবার কোড লিখে সেটি যে কোন মেশিনে( উইন্ডোজ , লিনাক্স , ম্যাক) চালানো যায়। From ab901222dad0318938966f1ff8a2ef38db39b68e Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Sun, 22 Feb 2015 19:02:09 +0600 Subject: [PATCH 081/150] Updated 7.md --- 7.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/7.md b/7.md index a7deae5..eb4fed9 100644 --- a/7.md +++ b/7.md @@ -95,7 +95,7 @@ toUpperCase() আপারকেস লেটারে কনভার্ট ক ``` -###বি:দ্র: +###বিশেষভাবে লক্ষণীয় জাভাতে স্ট্রিং ক্লাস **immutable**, এর মানে হচ্ছে, একবার কোন স্ট্রিং অবজেক্ট তৈরি করলে তাকে আর পরিবর্তন করা যাবে না। আমরা অনেক ক্লাস লিখি, তারপর এর মাঝে বিভিন্ন ভ্যারিয়েবল রাখি, অবজেক্ট তৈরি করার পর সেই অবজেক্টর এর ভেতরের ভ্যারিয়েবল গুলো বিভিন্ন সময় পরিবতর্তন করতে পারি। কিন্তু স্ট্রিং এর ক্ষেত্রে এটি সম্ভব নয়। অর্থাৎ আমরা যদি কোন একটি ভ্যালু দিয়ে একবার একটি স্ট্রিং অবজেক্ট তৈরি করি তাহলে সেটি আর পরিবর্তন করা যাবে না। From 0321e450a5ae289d637fc9cd64971be80a54dabd Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman Rokon" Date: Mon, 23 Feb 2015 19:24:11 +0600 Subject: [PATCH 082/150] Updated 6.md --- 6.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/6.md b/6.md index 120551c..668dbc5 100644 --- a/6.md +++ b/6.md @@ -17,10 +17,13 @@ * কিভাবে নিজস্ব এক্সেপশান লিখবো * সারসংক্ষেপ +আমরা একটি প্রোগ্রাম লিখি যার একটি নরমাল ফ্লো থাকে, তবে কোন কারণে যদি এই ফ্লো ব্যাহত হয় তাহলে জাভা রানটাইম একটি ইভেন্ট ফায়ার করে, একে এক্সেপশান বলা হয়। +সহজ কথায় এক্সেপশন হচ্ছে এক ধরণের ইরর যা কিনা প্রোগ্রাম চলাকালীন সময়ে দেখা দিতে পারে । + একটি উদাহরণ দেখা যাক- -‌‌‌```java +‌‌‌‌‌````java public class Main { From 43e5479a1f511d4c31c32a32c46dbcb97b6ac430 Mon Sep 17 00:00:00 2001 From: Shabnam Date: Tue, 3 Mar 2015 11:28:11 +0600 Subject: [PATCH 083/150] corrected some spelling at introduction.md --- introduction.md | 12 ++++++------ introduction.md~ | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 introduction.md~ diff --git a/introduction.md b/introduction.md index dc07c13..7c13551 100644 --- a/introduction.md +++ b/introduction.md @@ -2,7 +2,7 @@ ১৯৯৫ সালের ২৩ শে মে। ঝকঝকে ঝলমলে চমৎকার একটি দিন। জন গেইজ, ডিরেক্টর অব সান মাইক্রোসিস্টেম সাথে Marc Andreesen, কো ফাওন্ডার এবং ভাইস প্রেসিডেন্ট অব নেটস্কেপ ঘোষণা দেন যে, জাভা টেকনোলজি মোটেই কোন উপকথা নয়, বরং এটিই বাস্তবতা এবং তারা এটি Netscape Navigator এর সংযুক্ত হতে যাচ্ছে। -সে সময় জাভাতে কাজ করে এমন লোকের সংখ্যা ত্রিশেরও কম। তারা কখনোই চিন্তা করে নি, তাদের এই টিম ভবিষ্যৎ পৃথিবীর প্রধানতম টেকনলজি নির্ধারণ করতে যাচ্ছে। ২০০৪ সালের ৩ জানুয়ারী Mars Exploration Rover মঙ্গল গ্রহের মানটিতে পা রাখে যার কন্ট্রোল সিস্টেম থেকে শুরু করে পৃথিবীর অধিকাংশ কনজুমার ইলেকট্রনিক্স - (ক্যাবল সেট-টব বক্স, ভিসিআর, টোস্টার, পিডিএ, স্মার্টফোন) ৯৭% এন্টাপ্রাইজ ডেস্কটপ ৮৯% ডেস্কটপ অব ইউএসএ, ৩ বিলিওন মোবাইল ফোন, ৫ বিলিওন জাভা কার্ড, ১২৫ মিলিওন টিভি ডিভাইস, ১০০% ব্লু-রে ডিস্ক প্লেয়ার … এই লিস্ট লম্বা হতেই থাকবে) জাভা রান করে। +সে সময় জাভাতে কাজ করে এমন লোকের সংখ্যা ত্রিশেরও কম। তারা কখনোই চিন্তা করে নি, তাদের এই টিম ভবিষ্যৎ পৃথিবীর প্রধানতম টেকনোলজি নির্ধারণ করতে যাচ্ছে। ২০০৪ সালের ৩ জানুয়ারী Mars Exploration Rover মঙ্গল গ্রহের মানটিতে পা রাখে যার কন্ট্রোল সিস্টেম থেকে শুরু করে পৃথিবীর অধিকাংশ কনজুমার ইলেকট্রনিক্স - (ক্যাবল সেট-টব বক্স, ভিসিআর, টোস্টার, পিডিএ, স্মার্টফোন) ৯৭% এন্টাপ্রাইজ ডেস্কটপ ৮৯% ডেস্কটপ অব ইউএসএ, ৩ বিলিওন মোবাইল ফোন, ৫ বিলিওন জাভা কার্ড, ১২৫ মিলিওন টিভি ডিভাইস, ১০০% ব্লু-রে ডিস্ক প্লেয়ার … এই লিস্ট লম্বা হতেই থাকবে) জাভা রান করে। নিচের ভিডিও টি চমৎকার। একবার দেখে নেওয়া যেতে পারে। @@ -13,19 +13,19 @@ তখন সি-প্লাস প্লাস এর একচ্ছত্রাধিপত্য। -সান মাইক্রাসিস্টেম- মূলত হার্ডওয়্যার কম্পানি। ১৯৭২ থেকে ১৯৯১ সালে কম্পিউটারের হার্ডওয়্যারের এক রিভ্যুলিশান হয়। দ্রুত এবং উচ্চ ক্ষমতা সম্পন্ন হার্ডওয়্যার অল্প দামে পাওয়া যাচ্ছে এবং সেই সাথে কমপ্লেক্স সফটওয়্যারের চাহিদা দ্রুতই বেড়ে যাচ্ছে। ১৯৭২ Dennis Ritchie সি প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করেন যা প্রোগ্রামারদের মধ্যে সব থেকে জনপ্রিয়। কিন্তু ততদিনে প্রোগ্রামারদের কাছে সি -এর স্ট্রাকচার্ড প্রোগ্রামিং কিছুটা ক্লান্তিকর মনে হতে শুরু করেছে। এর ফলশ্রুতিতে Bjarne Stroustrup 1979 সালে ডেভেলপ করে সি প্লাস প্লাস যা কিনা সি এর এন্হান্সেমেন্ট । এটি সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ধারণাকে পরিচিত করে তুলে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবিধে হচ্ছে প্রোগ্রামার পুনর্ব্যবহারযোগ্য(reusable) কোড লিখতে পারে যা কিনা পরে অন্য কাজে পুনারায় ব্যবহার করা যায়। +সান মাইক্রাসিস্টেম- মূলত হার্ডওয়্যার কম্পানি। ১৯৭২ থেকে ১৯৯১ সালে কম্পিউটারের হার্ডওয়্যারের এক রেভ্যুলেশান হয়। দ্রুত এবং উচ্চ ক্ষমতা সম্পন্ন হার্ডওয়্যার অল্প দামে পাওয়া যাচ্ছে এবং সেই সাথে কমপ্লেক্স সফটওয়্যারের চাহিদা দ্রুতই বেড়ে যাচ্ছে। ১৯৭২ Dennis Ritchie সি প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করেন যা প্রোগ্রামারদের মধ্যে সব থেকে জনপ্রিয়। কিন্তু ততদিনে প্রোগ্রামারদের কাছে সি -এর স্ট্রাকচার্ড প্রোগ্রামিং কিছুটা ক্লান্তিকর মনে হতে শুরু করেছে। এর ফলশ্রুতিতে Bjarne Stroustrup 1979 সালে ডেভেলপ করে সি প্লাস প্লাস যা কিনা সি এর এনহান্সমেন্ট । এটি সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ধারণাকে পরিচিত করে তুলে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবিধে হচ্ছে প্রোগ্রামার পুনর্ব্যবহারযোগ্য(reusable) কোড লিখতে পারে যা কিনা পরে অন্য কাজে পুনরায় ব্যবহার করা যায়। -১৯৯০ সাল। সান মাইক্রাসিস্টেম -এ সি প্লাস প্লাস এর আধিপাত্যে সি-তে লেখা টুল এবং এপিআই গুলো প্রায় অবস্যুলেট হতে শুরু করেছে। Patrick Naughton, ইন্জিনিয়ার অব সান মাইক্রাসিস্টেম, মোটামুটি হতাশ এবং এক ধরণের অকওয়্যার্ড পরিস্থিতির স্বীকার। ততদিনে স্টিভ জব অ্যাপল কম্পিউটার থেকে বিতাড়িত হয়ে NeXT Computer, Inc প্রতিষ্ঠা করে ফেলেছেন( যা কিনা সফটওয়্যার ইনড্রাস্টিতে বৈপ্লবিক পরিবর্তন আনতে যাচ্ছে এবং যার ফলশ্রতিতে তৈরি হয়েছে আজকের ম্যাক-ওস) এবং NeXTSTEP নামে একটি অপারেটিং সিস্টেম তৈরি করেন। এতে কিছু অসাধারণ ব্যপার ছিল যার মধ্যে অবজেক্ট ওরিয়েন্টেড এপ্লিক্যশান লেয়ার এর ধারণাটি ছিল অসাধারণ যাতে কিনা অবজেক্ট ধরে ধরে কাস্টমাইজ সফটওয়্যার তৈরি করে ফেলা যায়। Patrick Naughton ইতিমধ্যে NeXT এর দিকে যাওয়ার জন্য মনস্থির করে ফেলেছেন কিন্তু তখন একবার তাকে শেষ সুযোগ হিসেবে একটি অতি গোপন প্রজেক্টের অনুমোদন দেওয়া হয় যার কথা কেও জানতো না। কিছুদিন পরেই তার সাথে যুক্ত হয় James Gosling এবং Mike Sheridan । তখন এর নাম দেওয়া হয় _গ্রিন প্রজেক্ট_। সময়ের সাথে _গ্রিন প্রজেক্ট_ এর দন্তোদ্গম হয় এবং তারা কম্পিউটার ছাড়াও বিভিন্ন ডিভাই নিয়ে নার্চার করতে থাকে। +১৯৯০ সাল। সান মাইক্রাসিস্টেম -এ সি প্লাস প্লাস এর আধিপত্যে সি-তে লেখা টুল এবং এপিআই গুলো প্রায় অবস্যুলেট হতে শুরু করেছে। Patrick Naughton,ইঞ্জিনিয়ার অব সান মাইক্রাসিস্টেম, মোটামুটি হতাশ এবং এক ধরণের অকওয়্যার্ড পরিস্থিতির স্বীকার। ততদিনে স্টিভ জব অ্যাপল কম্পিউটার থেকে বিতাড়িত হয়ে NeXT Computer, Inc প্রতিষ্ঠা করে ফেলেছেন( যা কিনা সফটওয়্যার ইন্ডাস্ট্রিতে বৈপ্লবিক পরিবর্তন আনতে যাচ্ছে এবং যার ফলশ্রুতিতে তৈরি হয়েছে আজকের ম্যাক-ওস) এবং NeXTSTEP নামে একটি অপারেটিং সিস্টেম তৈরি করেন। এতে কিছু অসাধারণ ব্যাপার ছিল যার মধ্যে অবজেক্ট ওরিয়েন্টেড এপ্লিক্যশান লেয়ার এর ধারণাটি ছিল অসাধারণ যাতে কিনা অবজেক্ট ধরে ধরে কাস্টমাইজড সফটওয়্যার তৈরি করে ফেলা যায়। Patrick Naughton ইতিমধ্যে NeXT এর দিকে যাওয়ার জন্য মনস্থির করে ফেলেছেন কিন্তু তখন একবার তাকে শেষ সুযোগ হিসেবে একটি অতি গোপন প্রজেক্টের অনুমোদন দেওয়া হয় যার কথা কেউ জানতো না। কিছুদিন পরেই তার সাথে যুক্ত হয় James Gosling এবং Mike Sheridan । তখন এর নাম দেওয়া হয় _গ্রিন প্রজেক্ট_। সময়ের সাথে _গ্রিন প্রজেক্ট_ এর দন্তোদ্গম হয় এবং তারা কম্পিউটার ছাড়াও বিভিন্ন ডিভাইস নিয়ে নার্চার করতে থাকে। -এর মধ্যে ১৩ জন স্টাফ এই গ্রিন টিম ক্যালিফোর্নিয়ার মেনলো পার্কের সেন্ড হিল রোড এর একটি ছোট্ট অফিসে কাজ করতে থাকে। তাদের প্রধান উদ্দেশ্য সি প্লাস প্লাস এর একটি ভাল ভার্সন তৈরি করা যা কিনা হবে অনেক দ্রুতগামী এবং রেস্পন্সিভ। সেই সময়ে কম্পিউটার ছাড়াও কনজুমার ইলেকট্রনিক্স যেমন -পিডিএ, Cable-Set Top Box ইত্যাদির চাহিদা বেড়ে গেছে। একদল ইঞ্জিয়ার এক সাথে থাকলে যা হয়, তারা নানারকম জিনিস নিয়ে চিন্তা করতে থাকে, নানা রকম আইডিয়া তৈরি হয়, তা থেকে প্রোটোটাইপ তৈরি করতে থাকে। এর মধ্যে জেমস গসলিং তার সি প্লাস প্লাস এন্হান্সেমেন্ট চালিয়ে যেতে থাকেন। তিনি এর নাম দেন সি প্লাস প্লাস প্লাস প্লাস মাইনাস মাইনাস (C++ ++ - -) । এখানে বাড়তি ++ মানে হচ্ছে নতুন জিনিস যোগ করা এবং - - মানে হচ্ছে কিছু জিনিস ফেলে দেওয়া। জেমস গসলিং এর জানালা দিয়ে একটি ওক গাছ দেখা যায়। একদিন তিনি অফিস থেকে বের হয়ে ঐ গাছটির নিচে দাড়ান এবং সাথে সাথে C++ ++ - - নাম পরিবর্তন করার সিন্ধান্ত নেন এবং নতুন নাম দেন ওক। +এর মধ্যে ১৩ জন স্টাফ এই গ্রিন টিম ক্যালিফোর্নিয়ার মেনলো পার্কের সেন্ড হিল রোড এর একটি ছোট্ট অফিসে কাজ করতে থাকে। তাদের প্রধান উদ্দেশ্য সি প্লাস প্লাস এর একটি ভাল ভার্সন তৈরি করা যা কিনা হবে অনেক দ্রুতগামী এবং রেস্পন্সিভ। সেই সময়ে কম্পিউটার ছাড়াও কনজুমার ইলেকট্রনিক্স যেমন -পিডিএ, Cable-Set Top Box ইত্যাদির চাহিদা বেড়ে গেছে। একদল ইঞ্জিনিয়ার এক সাথে থাকলে যা হয়, তারা নানারকম জিনিস নিয়ে চিন্তা করতে থাকে, নানা রকম আইডিয়া তৈরি হয়, তা থেকে প্রোটোটাইপ তৈরি করতে থাকে। এর মধ্যে জেমস গসলিং তার সি প্লাস প্লাস এনহান্সমেন্ট চালিয়ে যেতে থাকেন। তিনি এর নাম দেন সি প্লাস প্লাস প্লাস প্লাস মাইনাস মাইনাস (C++ ++ - -) । এখানে বাড়তি ++ মানে হচ্ছে নতুন জিনিস যোগ করা এবং - - মানে হচ্ছে কিছু জিনিস ফেলে দেওয়া। জেমস গসলিং এর জানালা দিয়ে একটি ওক গাছ দেখা যায়। একদিন তিনি অফিস থেকে বের হয়ে ঐ গাছটির নিচে দাড়ান এবং সাথে সাথে C++ ++ - - নাম পরিবর্তন করার সিন্ধান্ত নেন এবং নতুন নাম দেন ওক। এর মধ্যে ইঞ্জিয়াররা মিলে এম্বেডেড সিস্টেম নিয়ে নার্চার করতে থাকা অবস্থায় নানা রকম সমস্যার সম্মুখীন হন। এম্বেডেড সিস্টেম এ মেমরি কম থাকে, প্রসেসিং পাওয়ার ও কম থাকে। এই সিস্টেমে সি++ (যা কিনা কম্পিউটার এর মতো বড় ফ্রুটিপ্রিন্টের হার্ডওয়্যারের জন্যে ডিজাইন করা) চালাতে গিয়ে তারা অদ্ভুত অদ্ভুত সমস্যার সম্মুখীন হতে থাকে। এইসব সমস্যার সমাধান করার জন্যে _গ্রিন টিম_ নানা রকম চিন্তা ভাবনা করতে থাকে। এই সময়ে মানুষ পিডিএ, Cable-Set Top Box গুলোর মরণদশা দেখতে শুরু করে। কারণ যদিও ওক নিয়ে যথেষ্ট এগিয়েছে কিন্তু এটি কোনভাবেই এদেরকে সাহায্য করতে পারছিল না। একমাত্র একটি অলৌকিক ঘটনায় পারে এই প্রজেক্ট সফল করতে। ঠিক তখনি সেই প্রতীক্ষিত প্রত্যাশা আলোর মুখ দেখে। জেমস জেমস গসলিং _আউট অব দ্যা বক্স_ একটা যুগান্তকারী ধারণা নিয়ে আসে। সেটি হলো ভার্চুয়াল মেশিন। অর্থাৎ আমরা একটাি কাল্পনিক মেশিনের জন্যে কোড লিখবো যা কিনা কম্পাইল হয়ে একটি অন্তর্বর্তীকালীন কোড তৈরি করবে। এবং জাভা ভার্চুয়াল মেশিন সেই অন্তর্বর্তীকালীন কোডকে রান টাইম-এ রিয়েল ডিভাইসের জন্যে প্রয়োজন অনুযায়ী মেশিন কোড তৈরি করবে। -ঠিক সেই সময়েই National Center for Supercomputing Applications (NCSA) একটি কমার্শিয়াল ওয়েব ব্রাওজার বের করে এবং তাদের টিম ইন্টারনেট এর ভবিষ্যৎ নিয়ে ভাবেতে শুরু করে। তারা একটি নতুন ধারণা নিয়ে আসে সেটি হলো, একধরণের ছোট্ট প্রোগ্রাম যা কিনা ব্রাওজার এর মধ্যে চলবে - এর নাম দেয় অ্যাপলেট। অ্যাপলেট ধারণা থেকে তারা ঠিক করে এপলেট এর জন্যে কিছু স্ট্যাডার্ড – এটি হতে হবে ছোট্ট, খুব সিম্পল, এর স্ট্যাডার্ড এপিআই থাকতে হবে, এটি হবে প্লাটফর্ম ইন্ডিপেন্ডেন্ট, এবং আউট-অব-দ্যা বক্স নেটওয়ার্কিং প্রোগ্রামিং করা যাবে। তারা তখনকার সময়ের ইন্টারনেট বুমকে উদ্দ্যেশ্য করে নেক্সট জেনারেশান প্রোডাক্ট ডেভেলপ করতে চেয়েছিল। এই প্রজেক্ট এর কার্টুন নাম ছিল Duke ( যা কিনা এখন জাভা-এর মাস্কট হিসেবে চিনি)। কিন্তু সমস্যা হচ্ছে এর কোনটিই ঠিক মতো সি++ দিয়ে করা যাচ্ছিল না। সুতরাং পরবর্তীতে তারা সিন্ধান্ত নেয় যে এমবেডেড সিস্টেমের সমস্যার সমাধানটি তারা ওয়েব ব্রাওজার এর ক্ষেত্রেও ব্যবহার করবে । সেই সময়ে মানুষ ওয়েব ব্রাওজার এর শুধুমাত্র স্টেটিক পেইজ এ টেক্সট আর ইমেজ ছাড়া কিছু দেখতে পেত না। এই টেকনোলী ব্যবহার করায় ব্রাওজারে এনিমেশান থেকে শুরু করে ইন্টাএকটিভ এপলেট সকলের নজর কাড়ে যা কিনা জাভা প্রোগ্রামিং ল্যাংগুয়েজ এর সফলতার মূল কারণ। +ঠিক সেই সময়েই National Center for Supercomputing Applications (NCSA) একটি কমার্শিয়াল ওয়েব ব্রাউজার বের করে এবং তাদের টিম ইন্টারনেট এর ভবিষ্যৎ নিয়ে ভাবতে শুরু করে। তারা একটি নতুন ধারণা নিয়ে আসে সেটি হলো, একধরণের ছোট্ট প্রোগ্রাম যা কিনা ব্রাউজার এর মধ্যে চলবে - এর নাম দেয় অ্যাপলেট। অ্যাপলেট ধারণা থেকে তারা ঠিক করে অ্যাপলেট এর জন্যে কিছু স্ট্যাডার্ড – এটি হতে হবে ছোট্ট, খুব সিম্পল, এর স্ট্যাডার্ড এপিআই থাকতে হবে, এটি হবে প্লাটফর্ম ইন্ডিপেন্ডেন্ট, এবং আউট-অব-দ্যা বক্স নেটওয়ার্কিং প্রোগ্রামিং করা যাবে। তারা তখনকার সময়ের ইন্টারনেট বুমকে উদ্দ্যেশ্য করে নেক্সট জেনারেশান প্রোডাক্ট ডেভেলপ করতে চেয়েছিল। এই প্রজেক্ট এর কার্টুন নাম ছিল Duke ( যা কিনা এখন জাভা-এর মাস্কট হিসেবে চিনি)। কিন্তু সমস্যা হচ্ছে এর কোনটিই ঠিক মতো সি++ দিয়ে করা যাচ্ছিল না। সুতরাং পরবর্তীতে তারা সিন্ধান্ত নেয় যে এমবেডেড সিস্টেমের সমস্যার সমাধানটি তারা ওয়েব ব্রাউজার এর ক্ষেত্রেও ব্যবহার করবে । সেই সময়ে মানুষ ওয়েব ব্রাউজার এর শুধুমাত্র স্ট্যাটিক পেইজ এ টেক্সট আর ইমেজ ছাড়া কিছু দেখতে পেত না। এই টেকনোলজি ব্যবহার করায় ব্রাউজার এনিমেশান থেকে শুরু করে ইন্টারেকটিভ অ্যাপলেট সকলের নজর কাড়ে যা কিনা জাভা প্রোগ্রামিং ল্যাংগুয়েজ এর সফলতার মূল কারণ। জেমস গসলিং এর এই ভার্চুয়াল মেশিন-এর সল্যুশান ছিল সত্যিকার অর্থেই যুগান্তকারী এবং `গ্রিন টিম` এর রিলিজ দিতে প্রস্তুত। কিন্তু তখন-ই নতুন ঝামেলার সূচনা হয়, lawyers এসে তাদের জানায় এর নাম Oak দেওয়া যাবে না, কারণ এটি ইতিমধ্যেই Oak Technologies এর ট্রেড মার্ক। সুতরাং নাম পরিবর্তন করতে হবে। শুরু হয় ব্রেইনস্টর্মিং । কিন্তু কোন ভাবেই একটি ভাল নাম নির্বাচন করা যাচ্ছিল না। অনেকেই অনেক ধরণের নাম উপস্থাপন করে, যেমন - DNA, Silk , Ruby, yuck, Silk, Lyric, Pepper, NetProse, Neon, Java ইত্যাদি ইত্যাদি। এর সব গুলো লিগাল ডিপার্টমেন্ট এ সাবমিট করার পর মাত্র Java, DNA, and Silk এই তিনটি নাম ফিরে আসে যা কিনা ক্লিন। নাম নিয়ে ঘণ্টার পর ঘণ্টার মিটিং চলতে থাকে। এর মধ্যে Chris Warth প্রপোজ করে Java, কারণ তখন তার হাতে ছিল এক কাপ গরম Peet's Java (কফি)। শেষ পর্যন্ত নাম ঠিক করা হয় Java কারণ একমাত্র এই নামেই সব থেকে পজিটিভ রিএকশান পাওয়া যাচ্ছিল। ‌১৯৯৫ সালের মে মাসে জাভা এর প্রথম পাবলিক ভার্সন রিলিজ হয়। -এর পরের ইতিহাস আমরা সবাই জানি। জাভা হচ্ছে এই গ্রহের সবচেয়ে সফল প্রোগ্রামিং ভাষা। \ No newline at end of file +এর পরের ইতিহাস আমরা সবাই জানি। জাভা হচ্ছে এই গ্রহের সবচেয়ে সফল প্রোগ্রামিং ভাষা। diff --git a/introduction.md~ b/introduction.md~ new file mode 100644 index 0000000..dc07c13 --- /dev/null +++ b/introduction.md~ @@ -0,0 +1,31 @@ +### উপক্রমণিকা + +১৯৯৫ সালের ২৩ শে মে। ঝকঝকে ঝলমলে চমৎকার একটি দিন। জন গেইজ, ডিরেক্টর অব সান মাইক্রোসিস্টেম সাথে Marc Andreesen, কো ফাওন্ডার এবং ভাইস প্রেসিডেন্ট অব নেটস্কেপ ঘোষণা দেন যে, জাভা টেকনোলজি মোটেই কোন উপকথা নয়, বরং এটিই বাস্তবতা এবং তারা এটি Netscape Navigator এর সংযুক্ত হতে যাচ্ছে। + +সে সময় জাভাতে কাজ করে এমন লোকের সংখ্যা ত্রিশেরও কম। তারা কখনোই চিন্তা করে নি, তাদের এই টিম ভবিষ্যৎ পৃথিবীর প্রধানতম টেকনলজি নির্ধারণ করতে যাচ্ছে। ২০০৪ সালের ৩ জানুয়ারী Mars Exploration Rover মঙ্গল গ্রহের মানটিতে পা রাখে যার কন্ট্রোল সিস্টেম থেকে শুরু করে পৃথিবীর অধিকাংশ কনজুমার ইলেকট্রনিক্স - (ক্যাবল সেট-টব বক্স, ভিসিআর, টোস্টার, পিডিএ, স্মার্টফোন) ৯৭% এন্টাপ্রাইজ ডেস্কটপ ৮৯% ডেস্কটপ অব ইউএসএ, ৩ বিলিওন মোবাইল ফোন, ৫ বিলিওন জাভা কার্ড, ১২৫ মিলিওন টিভি ডিভাইস, ১০০% ব্লু-রে ডিস্ক প্লেয়ার … এই লিস্ট লম্বা হতেই থাকবে) জাভা রান করে। + +নিচের ভিডিও টি চমৎকার। একবার দেখে নেওয়া যেতে পারে। + + + + +চলুন একটু পেছনের ইতিহাস জেনে নেই। + +তখন সি-প্লাস প্লাস এর একচ্ছত্রাধিপত্য। + +সান মাইক্রাসিস্টেম- মূলত হার্ডওয়্যার কম্পানি। ১৯৭২ থেকে ১৯৯১ সালে কম্পিউটারের হার্ডওয়্যারের এক রিভ্যুলিশান হয়। দ্রুত এবং উচ্চ ক্ষমতা সম্পন্ন হার্ডওয়্যার অল্প দামে পাওয়া যাচ্ছে এবং সেই সাথে কমপ্লেক্স সফটওয়্যারের চাহিদা দ্রুতই বেড়ে যাচ্ছে। ১৯৭২ Dennis Ritchie সি প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করেন যা প্রোগ্রামারদের মধ্যে সব থেকে জনপ্রিয়। কিন্তু ততদিনে প্রোগ্রামারদের কাছে সি -এর স্ট্রাকচার্ড প্রোগ্রামিং কিছুটা ক্লান্তিকর মনে হতে শুরু করেছে। এর ফলশ্রুতিতে Bjarne Stroustrup 1979 সালে ডেভেলপ করে সি প্লাস প্লাস যা কিনা সি এর এন্হান্সেমেন্ট । এটি সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ধারণাকে পরিচিত করে তুলে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবিধে হচ্ছে প্রোগ্রামার পুনর্ব্যবহারযোগ্য(reusable) কোড লিখতে পারে যা কিনা পরে অন্য কাজে পুনারায় ব্যবহার করা যায়। + +১৯৯০ সাল। সান মাইক্রাসিস্টেম -এ সি প্লাস প্লাস এর আধিপাত্যে সি-তে লেখা টুল এবং এপিআই গুলো প্রায় অবস্যুলেট হতে শুরু করেছে। Patrick Naughton, ইন্জিনিয়ার অব সান মাইক্রাসিস্টেম, মোটামুটি হতাশ এবং এক ধরণের অকওয়্যার্ড পরিস্থিতির স্বীকার। ততদিনে স্টিভ জব অ্যাপল কম্পিউটার থেকে বিতাড়িত হয়ে NeXT Computer, Inc প্রতিষ্ঠা করে ফেলেছেন( যা কিনা সফটওয়্যার ইনড্রাস্টিতে বৈপ্লবিক পরিবর্তন আনতে যাচ্ছে এবং যার ফলশ্রতিতে তৈরি হয়েছে আজকের ম্যাক-ওস) এবং NeXTSTEP নামে একটি অপারেটিং সিস্টেম তৈরি করেন। এতে কিছু অসাধারণ ব্যপার ছিল যার মধ্যে অবজেক্ট ওরিয়েন্টেড এপ্লিক্যশান লেয়ার এর ধারণাটি ছিল অসাধারণ যাতে কিনা অবজেক্ট ধরে ধরে কাস্টমাইজ সফটওয়্যার তৈরি করে ফেলা যায়। Patrick Naughton ইতিমধ্যে NeXT এর দিকে যাওয়ার জন্য মনস্থির করে ফেলেছেন কিন্তু তখন একবার তাকে শেষ সুযোগ হিসেবে একটি অতি গোপন প্রজেক্টের অনুমোদন দেওয়া হয় যার কথা কেও জানতো না। কিছুদিন পরেই তার সাথে যুক্ত হয় James Gosling এবং Mike Sheridan । তখন এর নাম দেওয়া হয় _গ্রিন প্রজেক্ট_। সময়ের সাথে _গ্রিন প্রজেক্ট_ এর দন্তোদ্গম হয় এবং তারা কম্পিউটার ছাড়াও বিভিন্ন ডিভাই নিয়ে নার্চার করতে থাকে। + +এর মধ্যে ১৩ জন স্টাফ এই গ্রিন টিম ক্যালিফোর্নিয়ার মেনলো পার্কের সেন্ড হিল রোড এর একটি ছোট্ট অফিসে কাজ করতে থাকে। তাদের প্রধান উদ্দেশ্য সি প্লাস প্লাস এর একটি ভাল ভার্সন তৈরি করা যা কিনা হবে অনেক দ্রুতগামী এবং রেস্পন্সিভ। সেই সময়ে কম্পিউটার ছাড়াও কনজুমার ইলেকট্রনিক্স যেমন -পিডিএ, Cable-Set Top Box ইত্যাদির চাহিদা বেড়ে গেছে। একদল ইঞ্জিয়ার এক সাথে থাকলে যা হয়, তারা নানারকম জিনিস নিয়ে চিন্তা করতে থাকে, নানা রকম আইডিয়া তৈরি হয়, তা থেকে প্রোটোটাইপ তৈরি করতে থাকে। এর মধ্যে জেমস গসলিং তার সি প্লাস প্লাস এন্হান্সেমেন্ট চালিয়ে যেতে থাকেন। তিনি এর নাম দেন সি প্লাস প্লাস প্লাস প্লাস মাইনাস মাইনাস (C++ ++ - -) । এখানে বাড়তি ++ মানে হচ্ছে নতুন জিনিস যোগ করা এবং - - মানে হচ্ছে কিছু জিনিস ফেলে দেওয়া। জেমস গসলিং এর জানালা দিয়ে একটি ওক গাছ দেখা যায়। একদিন তিনি অফিস থেকে বের হয়ে ঐ গাছটির নিচে দাড়ান এবং সাথে সাথে C++ ++ - - নাম পরিবর্তন করার সিন্ধান্ত নেন এবং নতুন নাম দেন ওক। + +এর মধ্যে ইঞ্জিয়াররা মিলে এম্বেডেড সিস্টেম নিয়ে নার্চার করতে থাকা অবস্থায় নানা রকম সমস্যার সম্মুখীন হন। এম্বেডেড সিস্টেম এ মেমরি কম থাকে, প্রসেসিং পাওয়ার ও কম থাকে। এই সিস্টেমে সি++ (যা কিনা কম্পিউটার এর মতো বড় ফ্রুটিপ্রিন্টের হার্ডওয়্যারের জন্যে ডিজাইন করা) চালাতে গিয়ে তারা অদ্ভুত অদ্ভুত সমস্যার সম্মুখীন হতে থাকে। এইসব সমস্যার সমাধান করার জন্যে _গ্রিন টিম_ নানা রকম চিন্তা ভাবনা করতে থাকে। এই সময়ে মানুষ পিডিএ, Cable-Set Top Box গুলোর মরণদশা দেখতে শুরু করে। কারণ যদিও ওক নিয়ে যথেষ্ট এগিয়েছে কিন্তু এটি কোনভাবেই এদেরকে সাহায্য করতে পারছিল না। একমাত্র একটি অলৌকিক ঘটনায় পারে এই প্রজেক্ট সফল করতে। ঠিক তখনি সেই প্রতীক্ষিত প্রত্যাশা আলোর মুখ দেখে। জেমস জেমস গসলিং _আউট অব দ্যা বক্স_ একটা যুগান্তকারী ধারণা নিয়ে আসে। সেটি হলো ভার্চুয়াল মেশিন। অর্থাৎ আমরা একটাি কাল্পনিক মেশিনের জন্যে কোড লিখবো যা কিনা কম্পাইল হয়ে একটি অন্তর্বর্তীকালীন কোড তৈরি করবে। এবং জাভা ভার্চুয়াল মেশিন সেই অন্তর্বর্তীকালীন কোডকে রান টাইম-এ রিয়েল ডিভাইসের জন্যে প্রয়োজন অনুযায়ী মেশিন কোড তৈরি করবে। + +ঠিক সেই সময়েই National Center for Supercomputing Applications (NCSA) একটি কমার্শিয়াল ওয়েব ব্রাওজার বের করে এবং তাদের টিম ইন্টারনেট এর ভবিষ্যৎ নিয়ে ভাবেতে শুরু করে। তারা একটি নতুন ধারণা নিয়ে আসে সেটি হলো, একধরণের ছোট্ট প্রোগ্রাম যা কিনা ব্রাওজার এর মধ্যে চলবে - এর নাম দেয় অ্যাপলেট। অ্যাপলেট ধারণা থেকে তারা ঠিক করে এপলেট এর জন্যে কিছু স্ট্যাডার্ড – এটি হতে হবে ছোট্ট, খুব সিম্পল, এর স্ট্যাডার্ড এপিআই থাকতে হবে, এটি হবে প্লাটফর্ম ইন্ডিপেন্ডেন্ট, এবং আউট-অব-দ্যা বক্স নেটওয়ার্কিং প্রোগ্রামিং করা যাবে। তারা তখনকার সময়ের ইন্টারনেট বুমকে উদ্দ্যেশ্য করে নেক্সট জেনারেশান প্রোডাক্ট ডেভেলপ করতে চেয়েছিল। এই প্রজেক্ট এর কার্টুন নাম ছিল Duke ( যা কিনা এখন জাভা-এর মাস্কট হিসেবে চিনি)। কিন্তু সমস্যা হচ্ছে এর কোনটিই ঠিক মতো সি++ দিয়ে করা যাচ্ছিল না। সুতরাং পরবর্তীতে তারা সিন্ধান্ত নেয় যে এমবেডেড সিস্টেমের সমস্যার সমাধানটি তারা ওয়েব ব্রাওজার এর ক্ষেত্রেও ব্যবহার করবে । সেই সময়ে মানুষ ওয়েব ব্রাওজার এর শুধুমাত্র স্টেটিক পেইজ এ টেক্সট আর ইমেজ ছাড়া কিছু দেখতে পেত না। এই টেকনোলী ব্যবহার করায় ব্রাওজারে এনিমেশান থেকে শুরু করে ইন্টাএকটিভ এপলেট সকলের নজর কাড়ে যা কিনা জাভা প্রোগ্রামিং ল্যাংগুয়েজ এর সফলতার মূল কারণ। + +জেমস গসলিং এর এই ভার্চুয়াল মেশিন-এর সল্যুশান ছিল সত্যিকার অর্থেই যুগান্তকারী এবং `গ্রিন টিম` এর রিলিজ দিতে প্রস্তুত। কিন্তু তখন-ই নতুন ঝামেলার সূচনা হয়, lawyers এসে তাদের জানায় এর নাম Oak দেওয়া যাবে না, কারণ এটি ইতিমধ্যেই Oak Technologies এর ট্রেড মার্ক। সুতরাং নাম পরিবর্তন করতে হবে। শুরু হয় ব্রেইনস্টর্মিং । কিন্তু কোন ভাবেই একটি ভাল নাম নির্বাচন করা যাচ্ছিল না। অনেকেই অনেক ধরণের নাম উপস্থাপন করে, যেমন - DNA, Silk , Ruby, yuck, Silk, Lyric, Pepper, NetProse, Neon, Java ইত্যাদি ইত্যাদি। এর সব গুলো লিগাল ডিপার্টমেন্ট এ সাবমিট করার পর মাত্র Java, DNA, and Silk এই তিনটি নাম ফিরে আসে যা কিনা ক্লিন। নাম নিয়ে ঘণ্টার পর ঘণ্টার মিটিং চলতে থাকে। এর মধ্যে Chris Warth প্রপোজ করে Java, কারণ তখন তার হাতে ছিল এক কাপ গরম Peet's Java (কফি)। +শেষ পর্যন্ত নাম ঠিক করা হয় Java কারণ একমাত্র এই নামেই সব থেকে পজিটিভ রিএকশান পাওয়া যাচ্ছিল। + +‌১৯৯৫ সালের মে মাসে জাভা এর প্রথম পাবলিক ভার্সন রিলিজ হয়। + +এর পরের ইতিহাস আমরা সবাই জানি। জাভা হচ্ছে এই গ্রহের সবচেয়ে সফল প্রোগ্রামিং ভাষা। \ No newline at end of file From c3a3d3551cc4e38bcb116081ec13e1637b8df555 Mon Sep 17 00:00:00 2001 From: Shabnam Date: Wed, 4 Mar 2015 00:27:47 +0600 Subject: [PATCH 084/150] corrected spellings --- 1.md | 18 +-- 1.md~ | 148 +++++++++++++++++ 2.md | 18 +-- 2.md~ | 298 ++++++++++++++++++++++++++++++++++ 3.md | 30 ++-- 3.md~ | 406 +++++++++++++++++++++++++++++++++++++++++++++++ introduction.md | 2 +- introduction.md~ | 12 +- 8 files changed, 892 insertions(+), 40 deletions(-) create mode 100644 1.md~ create mode 100644 2.md~ create mode 100644 3.md~ diff --git a/1.md b/1.md index c264b7b..2730261 100644 --- a/1.md +++ b/1.md @@ -32,8 +32,8 @@ - এটি পোর্টেবল যে কোন প্লাটফর্মে চলে। একবার কোড লিখে সেটি যে কোন মেশিনে( উইন্ডোজ , লিনাক্স , ম্যাক) চালানো যায়। - অনেক বড় কমিউনিটি সাপোর্ট- সারা দুনিয়াতে মিলিয়নস অব জাভা প্রোগ্রামার ছড়িয়ে ছিটিয়ে আছে। - এটির পারফরমেন্স নিয়ে বলা চলে কোন সন্দেহ নেই। -- ইন্ডাস্ট্রি গ্রেডেড, বড় বড় এন্ট্রারপ্রাইজ এপ গুলো সাধারণত জাভা দিয়ে লেখা হয়। -- এটি পৃথিবীতে দ্বিতীয়তম জনপ্রিয় ল্যাংগুয়েজ- http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html +- ইন্ডাস্ট্রি গ্রেডেড, বড় বড় এন্টারপ্রাইজ অ্যাপ গুলো সাধারণত জাভা দিয়ে লেখা হয়। +- এটি পৃথিবীতে দ্বিতীয় জনপ্রিয় ল্যাংগুয়েজ- http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html এই লিস্ট এখানেই থামিয়ে দেই- কারণ এটি শেষ হতে চাইবে না কখনোই। @@ -42,11 +42,11 @@ ![how java works](images/how-java-works.png) -জাভা কোডকে কম্পাইল করলে সেটি একটি অন্তর্বর্তীকালীন ল্যাংগুয়েজ এ রূপান্তরিত হয়। এটি ঠিক হিওম্যান রিডএবল না আবার মেশিন রিডএবল ও না। একে আমরা বলি বাইট কোড। এই বাইটকোড শুধুমাত্র জাভা ভার্চুয়াল মেশিন(JVM) বুঝতে পারে। JVM বাইট কোড কে ইন্টারপ্রেট করে মেশিন ল্যাংগুয়েজ এ রূপান্তরিত করে। এর জন্যে JVM জাস্ট ইন টাইম(JIT) কম্পাইলার ব্যবহার করে। সুতরাং দেখা যাচ্ছে, জাভা কোডকে প্রথমে কম্পাইল করা হয়, তারপর সেই আউটপুট কে ইন্টারপ্রেট করা হয়। এক্ষেত্রে প্রশ্ন হতে পারে, জাভা আসলে কি? কম্পাইল্ড ল্যাংগুয়েজ নাকি ইন্টারপ্রেটেড ল্যাংগুয়েজ? উত্তর হচ্ছে জাভা একি সাথে দুটোই। +জাভা কোডকে কম্পাইল করলে সেটি একটি অন্তর্বর্তীকালীন ল্যাংগুয়েজ এ রূপান্তরিত হয়। এটি ঠিক হিউম্যান রিডএবল না আবার মেশিন রিডএবল ও না। একে আমরা বলি বাইট কোড। এই বাইটকোড শুধুমাত্র জাভা ভার্চুয়াল মেশিন(JVM) বুঝতে পারে। JVM বাইট কোড কে ইন্টারপ্রেট করে মেশিন ল্যাংগুয়েজ এ রূপান্তরিত করে। এর জন্যে JVM জাস্ট ইন টাইম(JIT) কম্পাইলার ব্যবহার করে। সুতরাং দেখা যাচ্ছে, জাভা কোডকে প্রথমে কম্পাইল করা হয়, তারপর সেই আউটপুট কে ইন্টারপ্রেট করা হয়। এক্ষেত্রে প্রশ্ন হতে পারে, জাভা আসলে কি? কম্পাইল্ড ল্যাংগুয়েজ নাকি ইন্টারপ্রেটেড ল্যাংগুয়েজ? উত্তর হচ্ছে জাভা একি সাথে দুটোই। উপরের বর্ণনা থেকে আমরা তিনটি জিনিস জানলাম - -**১. বাইট কোড** – এটি হচ্ছে এক ধরণের ইস্ট্রাকশান সেট- যা কিনা শুধুমাত্র জাভা ভার্চুয়াল মেশিন বুঝতে পারে। জাভা কোড ( হিউম্যান রিডএবল) অর্থাৎ আমরা যে কোড গুলো লিখবো সেগুলো কে জাভা কম্পাইলার দ্বারা কম্পাইল্ড করলে বাইটকোড তৈরি হয়। এই বাইটকোড গুলো .class এক্সটেনশন যুক্ত বাইনারী ফাইলে স্টোর করা হয়। +**১. বাইট কোড** – এটি হচ্ছে এক ধরণের ইস্ট্রাকশান সেট- যা কিনা শুধুমাত্র জাভা ভার্চুয়াল মেশিন বুঝতে পারে। জাভা কোড ( হিউম্যান রিডএবল) অর্থাৎ আমরা যে কোড গুলো লিখবো সেগুলো কে জাভা কম্পাইলার দ্বারা কম্পাইল করলে বাইটকোড তৈরি হয়। এই বাইটকোড গুলো .class এক্সটেনশন যুক্ত বাইনারী ফাইলে স্টোর করা হয়। **২. জাভা ভার্চুয়াল মেশিন(JVM)** - এটি মূলত একটা বাস্তব মেশিনের ভেতর একটা কাল্পনিক মেশিন। সহজ কথায়- এটি একটি সফ্টওয়্যার যা কিনা বাইট কোড পড়ে সেগুলো মেশিন এক্সিকিউটেবল কোড-এ রূপান্তরিত করতে পারে। JVM অনেকগুলা মেশিনের জন্যে লেখা হয়েছে- অর্থাৎ এটি উইন্ডোজ, ম্যাক OS, লিনাক্স, আইবিএম mainframes, সোলারিস ইত্যাদি অপারেটিং সিস্টেমের জন্যে আলাদা আলাদা করে লেখা হয়েছে। এর ফলে, আমরা যদি একবার কোন জাভা প্রোগ্রাম লিখি, সেটি যেকোন মেশিনে চালানো যাবে। এর কারণ আমরা এখন কোন নির্দিষ্ট মেশিনকে উদ্দেশ্য না করে শুধু মাত্র JVM কে উদ্দেশ্য করে কোড লিখি । যেহেতু সব মেশিনের জন্যেই JVM আছে, সুতরাং আমাদের কোড সব মেশিনেই চলবে। আর এভাবেই - **“Write once, run anywhere”** বা **WORA** সম্ভব হয়েছে। @@ -76,7 +76,7 @@ **জাভা মাইক্রো এডিশন (JME)** -- এটি মূলত জাভা স্ট্যান্ডার্ড এডিশন এর সংক্ষিপ্ত এডিশন। ইন্টারনেট অব থিংস, এমবেড ডিভাইস, মোবাইল ডিভাইস, মাইক্রো কন্ট্রোলার, সেন্সর, গেটওয়ে, মোবাইল ফোন, ব্যক্তিগত ডিজিটাল সহায়ক (পিডিএ), টিভি সেট টপ বক্স, প্রিন্টার ইত্যাদি জন্যে তৈরি জাভার এই সংক্ষিপ্ত এডিশন কে বলা হ্য় - জাভা মাইক্রো এডিশন । +- এটি মূলত জাভা স্ট্যান্ডার্ড এডিশন এর সংক্ষিপ্ত এডিশন। ইন্টারনেট অব থিংস, এমবেড ডিভাইস, মোবাইল ডিভাইস, মাইক্রোকন্ট্রোলার, সেন্সর, গেটওয়ে, মোবাইল ফোন, ব্যক্তিগত ডিজিটাল সহায়ক (পিডিএ), টিভি সেট টপ বক্স, প্রিন্টার ইত্যাদি জন্যে তৈরি জাভার এই সংক্ষিপ্ত এডিশন কে বলা হ্য় - জাভা মাইক্রো এডিশন । এবার তাহলে জাভা চলুন জাভা ইন্সটল করে ফেলি-- @@ -112,7 +112,7 @@ source .bashrc -- ধাপ ৭: এবার পরিক্ষা করে দেখা যাক জাভা ইনস্টল হয়েছে কিনা। আবার টার্মিনাল ওপেন করুন এবং নিচের লাইনটি টাইপ করুন। +- ধাপ ৭: এবার পরীক্ষা করে দেখা যাক জাভা ইনস্টল হয়েছে কিনা। আবার টার্মিনাল ওপেন করুন এবং নিচের লাইনটি টাইপ করুন। java -version @@ -123,11 +123,11 @@ Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode) -আর উইন্ডোজ মেশিনের ক্ষেত্রে এটি আরো সহজ। এর জন্যে শুধুমাত্র JDK টি ডাওনলোড করে ডাবল-ক্লিক করেই এটি ইনস্টল করা যাবে। +আর উইন্ডোজ মেশিনের ক্ষেত্রে এটি আরো সহজ। এর জন্যে শুধুমাত্র JDK টি ডাউনলোড করে ডাবল-ক্লিক করেই এটি ইনস্টল করা যাবে। **IDE-** -এক্ষেত্রে আমি দুটি আইডিই কথা বলতে পারি- +এক্ষেত্রে আমি দুটি আইডিইর কথা বলতে পারি- - ১. Eclipse - https://www.eclipse.org/downloads/ - ২. IntelliJ IDEA - http://www.jetbrains.com/idea/download/ @@ -145,4 +145,4 @@ } ``` -![hello world program](images/hello-world-java.gif) \ No newline at end of file +![hello world program](images/hello-world-java.gif) diff --git a/1.md~ b/1.md~ new file mode 100644 index 0000000..70d8418 --- /dev/null +++ b/1.md~ @@ -0,0 +1,148 @@ +# তোমার প্রথম জাভা প্রোগ্রাম + +আমরা এই চ্যাপ্টার এ যে যে বিষয়গুলো দেখবো সেগুলো হলো- + +* প্রোগ্রামিং ল্যাংগুয়েজ কি এবং কেন +* কেন জাভা +* জাভা কিভাবে কাজ করে, ভেতরের বৃত্তান্ত +* জাভা একটি কম্পাইল্ড ল্যাংগুয়েজ না ইন্টারপ্রেটেড ল্যাংগুয়েজ +* জাভা ভার্চুয়াল মেশিন কি এবং কিভাবে কাজ করে +* জাভা রানটাইম +* জাভা ডেভেলপমেন্ট কিট এবং আইডিই +* জেডিকে ইনস্টলেশন +* একটি হ্যালো ওয়ার্ল্ড প্রোগ্রাম + +**প্রোগ্রামিং ল্যাংগুয়েজ কি ?** + +প্রোগ্রামিং ল্যাংগুয়েজ হচ্ছে এক ধরণের কৃত্রিম ভাষা যা কিনা যন্ত্র বিশেষ করে কম্পিউটার-এর আচরণ নিয়ন্ত্রণ করার জন্যে ব্যবহার করা হয়। মানুষের ভাষার মতো এর কিছু সিনট্যাক্স এবং সেম্যান্টিক্‌স অর্থাৎ নিয়মকানুন ও অর্থ থাকে। আমাদের এই বই এর উদ্দেশ্য হচ্ছে একটি বিশেষ ভাষার(জাভা) নিয়মকানুন গুলো জেনে নেওয়া। সুতরাং পড়তে থাকুন। + +**কেন জাভা?** + +পৃথিবীতে এখন পর্যন্ত অনেক গুলো প্রোগ্রামিং ভাষা তৈরি করা হয়েছে। এদের প্রত্যেকটির উদ্দেশ্য ভিন্ন ভিন্ন। http://en.wikipedia.org/wiki/List_of_programming_languages এখানে একটি প্রোগ্রামিং ল্যাংগুয়েজ এর একটি লিস্ট দেওয়া আছে- দেখে নেওয়া যেতে পারে। প্রত্যেকটি ল্যাংগুয়েজ এর কিছু সুবিধা অসুবিধা আছে, এবং ল্যাংগুয়েজ গুলো প্রতিনিয়ত উন্নত হচ্ছে, এবং নতুন নতুন ল্যাংগুয়েজ তৈরি হচ্ছে। + +যে যে কারণে জাভা শেখা যেতে পারে এখন সেগুলো নিয়ে আলোচনা করা যাক- + +- এটি খুব-ই (Readable)পাঠযোগ্য, সহজে বুঝা যায়। অন্য যে কোন প্রোগ্রামিং ব্যাকগ্রাউন্ড এর প্রোগ্রামার খুব সহজেই একটি জাভা-ফাইল দেখে বুঝতে পারবে আসলে কোড এ কি লেখা আছে। +- সি কিংবা সি++ এ কোড করার সময় আমাদের অনেক সময়-ই লিংকিং, অপটিমাইজেশান, মেমরি এলোকেশান, মেমরি ডি-এলোকেশান, পয়েন্টার ডিরেফারেন্সিং ইত্যাদি নানা রকম জিনিস নিয়ে ভাবতে হয়, কিন্তু জাভার ক্ষেত্রে এগুলোর কথা ভাবতেই হয় না। খুব বেশি চিন্তা না করে আমরা নিশ্চিতভাবে জাভা কম্পাইলার এর উপর সব কিছু ছেড়ে দিতে পারে। +- জাভাতে অসংখ্য API আছে যেগুলো খুবই স্টেবল, খুব বেশি চিন্তাভাবনা না করেই এদের নিয়ে খুব সহজেই কাজ করে ফেলা যায়। +- জাভা -র সব কিছুই ওপেন সোর্স। +- জাভা ভার্চুয়াল মেশিন সম্ভবত সফটওয়্যার- জগতে সব থেকে চমৎকার সৃষ্টি। জাভা-এর সাথে এর আরও অনেকগুলো ল্যাংগুয়েজ যেমন- গ্রুভি, স্ক্যালা ইত্যাদি নিয়ে কাজ করা যায়। +- গত ১৫ বছরে চমৎকার অনেকগুলো ডেভেলপমেন্ট এনভায়রনমেন্ট তৈরি হয়েছে যেগুলো খুবই ইন্টেলিজেন্ট – যেমন- Eclipse, IntelliJ IDEA, netbeans etc. । এগুলো মাধ্যমে খুব আয়েশের সাথেই কোড করা যায়, ডিবাগ করা যায়। +- এটি একটি অবজেক্ট ওরিয়েন্টেড- টাইপ সেইফ প্রোগ্রামিং ল্যাংগুয়েজ। +- এটি পোর্টেবল যে কোন প্লাটফর্মে চলে। একবার কোড লিখে সেটি যে কোন মেশিনে( উইন্ডোজ , লিনাক্স , ম্যাক) চালানো যায়। +- অনেক বড় কমিউনিটি সাপোর্ট- সারা দুনিয়াতে মিলিয়নস অব জাভা প্রোগ্রামার ছড়িয়ে ছিটিয়ে আছে। +- এটির পারফরমেন্স নিয়ে বলা চলে কোন সন্দেহ নেই। +- ইন্ডাস্ট্রি গ্রেডেড, বড় বড় এন্টারপ্রাইজ অ্যাপ গুলো সাধারণত জাভা দিয়ে লেখা হয়। +- এটি পৃথিবীতে দ্বিতীয় জনপ্রিয় ল্যাংগুয়েজ- http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html + + +এই লিস্ট এখানেই থামিয়ে দেই- কারণ এটি শেষ হতে চাইবে না কখনোই। + +**জাভা কিভাবে কাজ করে ?** + +![how java works](images/how-java-works.png) + +জাভা কোডকে কম্পাইল করলে সেটি একটি অন্তর্বর্তীকালীন ল্যাংগুয়েজ এ রূপান্তরিত হয়। এটি ঠিক হিউম্যান রিডএবল না আবার মেশিন রিডএবল ও না। একে আমরা বলি বাইট কোড। এই বাইটকোড শুধুমাত্র জাভা ভার্চুয়াল মেশিন(JVM) বুঝতে পারে। JVM বাইট কোড কে ইন্টারপ্রেট করে মেশিন ল্যাংগুয়েজ এ রূপান্তরিত করে। এর জন্যে JVM জাস্ট ইন টাইম(JIT) কম্পাইলার ব্যবহার করে। সুতরাং দেখা যাচ্ছে, জাভা কোডকে প্রথমে কম্পাইল করা হয়, তারপর সেই আউটপুট কে ইন্টারপ্রেট করা হয়। এক্ষেত্রে প্রশ্ন হতে পারে, জাভা আসলে কি? কম্পাইল্ড ল্যাংগুয়েজ নাকি ইন্টারপ্রেটেড ল্যাংগুয়েজ? উত্তর হচ্ছে জাভা একি সাথে দুটোই। + +উপরের বর্ণনা থেকে আমরা তিনটি জিনিস জানলাম - + +**১. বাইট কোড** – এটি হচ্ছে এক ধরণের ইস্ট্রাকশান সেট- যা কিনা শুধুমাত্র জাভা ভার্চুয়াল মেশিন বুঝতে পারে। জাভা কোড ( হিউম্যান রিডএবল) অর্থাৎ আমরা যে কোড গুলো লিখবো সেগুলো কে জাভা কম্পাইলার দ্বারা কম্পাইল করলে বাইটকোড তৈরি হয়। এই বাইটকোড গুলো .class এক্সটেনশন যুক্ত বাইনারী ফাইলে স্টোর করা হয়। + +**২. জাভা ভার্চুয়াল মেশিন(JVM)** - এটি মূলত একটা বাস্তব মেশিনের ভেতর একটা কাল্পনিক মেশিন। সহজ কথায়- এটি একটি সফ্টওয়্যার যা কিনা বাইট কোড পড়ে সেগুলো মেশিন এক্সিকিউটেবল কোড-এ রূপান্তরিত করতে পারে। JVM অনেকগুলা মেশিনের জন্যে লেখা হয়েছে- অর্থাৎ এটি উইন্ডোজ, ম্যাক OS, লিনাক্স, আইবিএম mainframes, সোলারিস ইত্যাদি অপারেটিং সিস্টেমের জন্যে আলাদা আলাদা করে লেখা হয়েছে। এর ফলে, আমরা যদি একবার কোন জাভা প্রোগ্রাম লিখি, সেটি যেকোন মেশিনে চালানো যাবে। এর কারণ আমরা এখন কোন নির্দিষ্ট মেশিনকে উদ্দেশ্য না করে শুধু মাত্র JVM কে উদ্দেশ্য করে কোড লিখি । যেহেতু সব মেশিনের জন্যেই JVM আছে, সুতরাং আমাদের কোড সব মেশিনেই চলবে। আর এভাবেই - **“Write once, run anywhere”** বা **WORA** সম্ভব হয়েছে। + +৩. **জাস্ট ইন টাইম( JIT) কম্পাইলার** – এটি মূলত JVM এর একটি অংশ। আমরা যে জাভা কোড কম্পাইল করার সময় তৈরি করি সেগুলো মূলত JIT কম্পাইলার প্রসেস করে। একে dynamic translator ও বলা যায়- কারণ এটি রানটাইম-এ অর্থাৎ প্রোগ্রাম চলাকালিন সময়ে বাইটকোড প্রসেস করে। + +এবার আমরা আরও কিছু টার্মিনোলোজি(পরিভাষা) এর সাথে পরিচিত হই। + +**জাভা রানটাইম এনভায়রনমেন্ট (JRE)** –এটি মূলত একটি জাভা প্রোগ্রাম রান করার জন্যে অন্তত:পক্ষে যে সব কম্পোনেন্ট লাগে তার একটি প্যাকেজ। এর মধ্যে থাকে JVM এবং কিছু স্ট্যান্ডার্ড এপিআই। + +**জাভা ডেভেলপার কিট (JDK)** – এটি হচ্ছে JRE এবং জাভা কোড লেখার জন্যে যে সব টুল গুলো লাগে তার একটি সেট। জাভা প্রোগ্রাম লেখার জন্য শুধু মাত্র JDK থাকলেই চলে কারণ এর মাঝেই সব কিছু দেয়া থাকে। + +জাভার তিনটি সাবসেট আছে সেগুলো হলো - + +**জাভা স্ট্যান্ডার্ড এডিশন (JSE)** +- ডেক্সটপ এবংস্ট্স্ট্যান্ড-অ্যলোন সার্ভার এপ্লিকেশান তৈরি করার জন্যে যে সব টুল এবং এপিআই দরকার হয় সেগুলোকে আলাদা করে এর নাম দেওয়া হয়েছে জাভা স্ট্যান্ডার্ড এডিশন। + +**জাভা এন্টারপ্রাইস এডিশন (JEE) ** +– এটি JSE এর উপর তৈরি ওয়েব এবং অনেক বড় মাপের এন্টারপ্রাইজ এপ্লিকেশান তৈরি করার জন্যে যে সব কম্পোনেন্ট দরকার হয় সেগুলোকে আলাদা করে এর নাম দেওয়া হয়েছে জাভা এন্টারপ্রাইস এডিশন- উদারহরণসরূপ এর কম্পোনেন্ট গুলো হচ্ছে- + +- Servlets +- Java Server Pages (JSP) +- Java Server Faces (JSF) +- Enterprise Java Beans (EJB) +- Two-phase commit transactions +- Java Message Service message queue API's (JMS) +- etc. + +**জাভা মাইক্রো এডিশন (JME)** + +- এটি মূলত জাভা স্ট্যান্ডার্ড এডিশন এর সংক্ষিপ্ত এডিশন। ইন্টারনেট অব থিংস, এমবেড ডিভাইস, মোবাইল ডিভাইস, মাইক্রো কন্ট্রোলার, সেন্সর, গেটওয়ে, মোবাইল ফোন, ব্যক্তিগত ডিজিটাল সহায়ক (পিডিএ), টিভি সেট টপ বক্স, প্রিন্টার ইত্যাদি জন্যে তৈরি জাভার এই সংক্ষিপ্ত এডিশন কে বলা হ্য় - জাভা মাইক্রো এডিশন । + +এবার তাহলে জাভা চলুন জাভা ইন্সটল করে ফেলি-- + +লিনাক্স মেশিনে জাভা ইনস্টল করতে নিচের ধাপ গুলো apply করতে হবে- + +- ধাপ ১: নিচের লিংক থেকে জাভা ডাউনলোড করে নিন। + + [Oracle JDK 7 Download Link](http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html) + +- ধাপ ২: এরপর টার্মিনাল থেকে যেখানে জাভা ডাউনলোড হয়েছে সেখানে যান- + + cd ~/Download + +- ধাপ ৩: এবার JDK ইনস্টল করি- + + sudo tar -xzvf jdk-7u21-linux-i586.tar.gz --directory=/usr/local/ + + sudo ln -s /usr/local/[jdk_folder_name]/ /usr/local/jdk + + jdk_folder_name - আপনার পছন্দমত একটি নাম দিন। + +- ধাপ ৪: আবার টার্মিনালে ফিরে যান- .bashrc অপেন করুন। + + sudo gedit .bashrc + +- ধাপ ৫ : .bashrc ফাইল-এ নিচের লাইনটি এড করুন। + + export JAVA_HOME=/usr/local/jdk + + Save and close .bashrc file. + +- ধাপ ৬: কম্পাইল .bashrc ফাইল + + source .bashrc + +- ধাপ ৭: এবার পরীক্ষা করে দেখা যাক জাভা ইনস্টল হয়েছে কিনা। আবার টার্মিনাল ওপেন করুন এবং নিচের লাইনটি টাইপ করুন। + + java -version + +যদি সবকিছু ঠিকঠাক থাকে তাহলে আপনি নিচের তথ্য গুলো দেখতে পারবেন- + + java version "1.7.0_65" + Java(TM) SE Runtime Environment (build 1.7.0_65-b17) + Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode) + + +আর উইন্ডোজ মেশিনের ক্ষেত্রে এটি আরো সহজ। এর জন্যে শুধুমাত্র JDK টি ডাউনলোড করে ডাবল-ক্লিক করেই এটি ইনস্টল করা যাবে। + +**IDE-** + +এক্ষেত্রে আমি দুটি আইডিইর কথা বলতে পারি- +- ১. Eclipse - https://www.eclipse.org/downloads/ +- ২. IntelliJ IDEA - http://www.jetbrains.com/idea/download/ + +তবে এই টিউটোরিয়ালে আমরা Eclipse ব্যবহার করবো। + +তো চলুন- এবার তাহলে আমাদের প্রথম Hello world প্রোগ্রামটি লিখে ফেলি। + ```java + package bd.com.howtocode.java.helloworld; + + public class HelloWorld { + + public static void main(String[] args) { + System.out.println("Hello, world!"); + } + } +``` + +![hello world program](images/hello-world-java.gif) diff --git a/2.md b/2.md index ad1ecb7..60b82bf 100644 --- a/2.md +++ b/2.md @@ -12,9 +12,9 @@ **অবজেক্ট** -যেহেতু জাভা একটি অবজেক্ট ওরিয়েন্টেড ল্যাংগুয়েজ, সুতরাং শুরুতে জানতে হবে অবজেক্ট কি। অবজেক্ট এর মানে আমারা যা জানি, সেটা হচ্ছে আমাদের জড়জগতের কোন বস্তু, যাকে ঠিক স্পর্শ করা যায়। তবে যেহেতু আমরা কল্পনা করতে পারি, আমরা অনেক কিছু ধরে নিতে পারি, মনে করুন - একটি বাইসাইকেল। বাইসাইকেল বলতেই আমদের মাথায় একটি চিত্র চলে আসে। আমরা এর বৈশিষ্টগুলো জানি, যেমন এটির দুইটি চাকা থাকে, একটি বসার সিট থাকে, এর ব্রেক আছে। তারপর এও জানি যে এটি কি করে, অর্থাৎ সাইক্যাল এর কাজ গুলোও আমরা জানি- যেমন এটি চলে। দেখা যাচ্ছে যে আমরা একটি বাইসাইকেল এর অবস্থা ও আচরণ সম্পর্কে জানি। এই অবস্থা ও আচরণ গুলো নিয়েই বাইসাইকেল একটি অবজেক্ট। +যেহেতু জাভা একটি অবজেক্ট ওরিয়েন্টেড ল্যাংগুয়েজ, সুতরাং শুরুতে জানতে হবে অবজেক্ট কি। অবজেক্ট এর মানে আমারা যা জানি, সেটা হচ্ছে আমাদের জড়জগতের কোন বস্তু, যাকে ঠিক স্পর্শ করা যায়। তবে যেহেতু আমরা কল্পনা করতে পারি, আমরা অনেক কিছু ধরে নিতে পারি, মনে করুন - একটি বাইসাইকেল। বাইসাইকেল বলতেই আমদের মাথায় একটি চিত্র চলে আসে। আমরা এর বৈশিষ্টগুলো জানি, যেমন এটির দুইটি চাকা থাকে, একটি বসার সিট থাকে, এর ব্রেক আছে। তারপর এও জানি যে এটি কি করে, অর্থাৎ সাইকেল এর কাজ গুলোও আমরা জানি- যেমন এটি চলে। দেখা যাচ্ছে যে আমরা একটি বাইসাইকেল এর অবস্থা ও আচরণ সম্পর্কে জানি। এই অবস্থা ও আচরণ গুলো নিয়েই বাইসাইকেল একটি অবজেক্ট। -আমরা যদি আমাদের কল্পনাটুকু আরেকটু বাড়িয়ে নিয়ে বলি, সাইক্যাল হচ্ছে একটি সফটওয়্যার কম্পোনেন্ট যা কিনা কম্পিউটারে চলে, আমার মনে হয় কারো আপত্তি থাকার কথা নয়। +আমরা যদি আমাদের কল্পনাটুকু আরেকটু বাড়িয়ে নিয়ে বলি, সাইকেল হচ্ছে একটি সফটওয়্যার কম্পোনেন্ট যা কিনা কম্পিউটারে চলে, আমার মনে হয় কারো আপত্তি থাকার কথা নয়। যেহেতু আমারা প্রোগ্রামিং নিয়ে আলোচনা করছি, সুতরাং এভাবে বলি, আমরা যদি একটা প্রোগ্রাম লিখি, সেই প্রোগ্রামের ছোট্ট একটি অংশ যার আমাদের এই বাইসাইকেল এর মতো বৈশিষ্ট্য থাকে, এবং একটি কিছু কাজ সম্পাদন করতে পারে, তাহলে সেই ছোট্ট অংশটিকে অবজেক্ট বলতে পারি। @@ -22,7 +22,7 @@ মনে করি আমরা একটা বাড়ি বানাতে চাই। প্রথমে আমরা চিন্তা করি বাড়িটা আসলে কিভাবে বানাবো। আমরা জায়গা নির্বাচন করি। তারপর চিন্তা করি বাড়িটি কত-তলা হবে, কয়টা এপার্টমেন্ট হবে, এপার্টমেন্ট গুলো কত স্কয়ারফিটের হবে। তারপর চিন্তা করি, একটা এপার্টমেন্ট এ কয়টি রুম হবে, ড্রয়িং রুমের দৈর্ঘ্য কত হবে, কয়টা বাথ থাকবে, বেলকনি কোথায় থাকবে, রান্না ঘর কোথায় হবে ইত্যাদি ইত্যাদি। আচ্ছা এগুলো ঠিক হয়ে গেল, এখন আমরা চিন্তা করবো আরও জটিল কাজ নিয়ে। ওয়্যারিং নিয়ে, প্রত্যেক রুমে কয়টা পয়েন্ট থাকবে, পানির লাইন কিভাবে নেব। তারপরে বাথরুমে কি ধরণের টাইল ব্যবহার করবো, ফ্লোরে কোন গুলো। -অর্থাৎ বাড়িটি বানানোর আগেই আমরা সব কিছু নির্ধারণ করে ফেলছি এবং আমরা এই বিষয়গুলো সব লিপিবদ্ধ করে রাখি। তারপর এই লিপিবদ্ধ লেখাগুলোকে নানাভাবে পরিক্ষা করে ক্রস চেক করে চূড়ান্ত করি। এর একটি গলাভরা নাম আছে, সেটা হচ্ছে- blueprint. +অর্থাৎ বাড়িটি বানানোর আগেই আমরা সব কিছু নির্ধারণ করে ফেলছি এবং আমরা এই বিষয়গুলো সব লিপিবদ্ধ করে রাখি। তারপর এই লিপিবদ্ধ লেখাগুলোকে নানাভাবে পরীক্ষা করে ক্রস চেক করে চূড়ান্ত করি। এর একটি গলাভরা নাম আছে, সেটা হচ্ছে- blueprint. আমাদের এক্ষেত্র বাড়টি হচ্ছে অবজেক্ট। এই অবজেক্ট বানানোর আগে আমাদের blueprint এর দরকার হয়। আর এই blueprint কেই আমরা বলি ক্লাস। @@ -40,7 +40,7 @@ - ফিল্ডস - মেথডস -উপরের নামগুলো নিয়ে ধন্দ লাগলে সমস্যা নেই, এক্ষণি সেগুলো নিয়ে আলোচনা করছি, তবে তার আগে একটি জাভা প্রোগ্রাম দেখে নিই। +উপরের নামগুলো নিয়ে দ্বন্দ্ব লাগলে সমস্যা নেই, এক্ষণি সেগুলো নিয়ে আলোচনা করছি, তবে তার আগে একটি জাভা প্রোগ্রাম দেখে নিই। ```java package bd.com.howtocode.java.tutotorial.syntax; @@ -70,7 +70,7 @@ package bd.com.howtocode.java.tutotorial.syntax; -তারপর আমাদের প্রোগ্রামের দ্বিতীয় লাইনটি হলো - ইম্পোর্ট স্টেটমেন্টস। অন্য কোন প্যাকেজের ক্লাস যদি আমাদের প্রোগ্রামে দরকর হয় তাহলে আমারা সেটিকে এভাবে ইম্পোর্ট করতে পারি। এটি সি প্রোগ্রামিং এর ইনক্লুড স্টেটমেন্টস এর মতো। +তারপর আমাদের প্রোগ্রামের দ্বিতীয় লাইনটি হলো - ইম্পোর্ট স্টেটমেন্টস। অন্য কোন প্যাকেজের ক্লাস যদি আমাদের প্রোগ্রামে দরকার হয় তাহলে আমারা সেটিকে এভাবে ইম্পোর্ট করতে পারি। এটি সি প্রোগ্রামিং এর ইনক্লুড স্টেটমেন্টস এর মতো। import java.util.HashMap; @@ -80,7 +80,7 @@ এখানে অতিরিক্ত একটি public কিওয়ার্ড দেখা যাচ্ছে। এই মুহুর্তে শুধু মনে রাখুন ক্লাস এর শুরুতে এটি লিখতে হয়। পরে এটি নিয়ে আলোচনা করা হবে। -এর পরেই আমরা যা দেখছি তাকে বলা হয় ফিল্ড ডিক্লারেশন। অর্থাৎ আমরা যে বিভিন্ন রকম ভ্যারিয়্যবল ডিক্ল্যার করি, সেগুলো। +এর পরেই আমরা যা দেখছি তাকে বলা হয় ফিল্ড ডিক্লারেশন। অর্থাৎ আমরা যে বিভিন্ন রকম ভ্যারিয়বল ডিক্ল্যার করি, সেগুলো। protected final String hello = "value"; @@ -95,7 +95,7 @@ এটি হচ্ছে মেইন মেথড। জাভা প্রোগ্রামকে রান করতে হলে অবশ্যই কোন ক্লাসে একটি মেইন মেথড থাকতে হবে। এবার আমরা কিছু জিনিস প্রিন্ট করার চেষ্টা করি- -জাভাতে কনসলে কিছু প্রিন্ট করার জন্যে System.out.println() অথবা System.out.print() ব্যবহার কর হয়। +জাভাতে কনসলে কিছু প্রিন্ট করার জন্যে System.out.println() অথবা System.out.print() ব্যবহার করা হয়। আমরা যদি নিচের প্রোগ্রমটি রান করি- @@ -226,7 +226,7 @@ ** কনস্ট্রাকটর ** -কনস্ট্রাকটর অন্যান্য মেথড বা ফাংশনের মতই একটি মেথড বা ফাংশনে। তবে এটির কোন রিটার্ন টাইপ নেই। একটি ক্লাসকে একটি অবজেক্ট-এ তৈরি করতে যে প্রয়োজনীয় কাজ গুলো করতে হয়, কনস্ট্রাকটর সেই কাজ গুলো করে থাকে। তবে মজার ব্যপার হচ্চে সেই প্রয়োজনীয় কাজ গুলো জন্যে আমাদের কোড লিখতে হয় না। +কনস্ট্রাকটর অন্যান্য মেথড বা ফাংশনের মতই একটি মেথড বা ফাংশনে। তবে এটির কোন রিটার্ন টাইপ নেই। একটি ক্লাসকে একটি অবজেক্ট-এ তৈরি করতে যে প্রয়োজনীয় কাজ গুলো করতে হয়, কনস্ট্রাকটর সেই কাজ গুলো করে থাকে। তবে মজার ব্যপার হচ্ছে সেই প্রয়োজনীয় কাজ গুলো জন্যে আমাদের কোড লিখতে হয় না। আমাদের উপরের ক্লাসটিতে আমরা কোন কনস্ট্রাকটর লিখি নি। তাহলে এর অবজেক্ট তৈরি হলো কিভাবে? উত্তরটি হচ্ছে আমরা যদি কোন কনস্ট্রাকটর না লিখি তাহলে জাভা কম্পাইলার নিজে থেকেই একটি কনস্ট্রাকটর লিখে কম্পাইল করে, যাকে আমরা বলি ডিফল্ট কনস্ট্রাকটর। তবে আমরা চাইলে নিজের একটি লিখতে পারি। @@ -285,7 +285,7 @@ **অনুশীলন:** -নিচের প্যটার্নগুলো প্রিন্ট করতে চেষ্টা করুণ- +নিচের প্যাটার্নগুলো প্রিন্ট করতে চেষ্টা করুন - * * * * * * * * * * * * * * * * * * * * * * * * diff --git a/2.md~ b/2.md~ new file mode 100644 index 0000000..c420716 --- /dev/null +++ b/2.md~ @@ -0,0 +1,298 @@ +# পাঠ ২: সিনট্যাক্স + +* প্যাকেজ ডিক্লেয়ারেশান +* ইম্পোর্ট +* ক্লাস +* ফিল্ডস +* মেথডস +* কন্সট্রাকটরস +* কমেন্টস + +এই চ্যাপ্টারে আমি একটি জাভা প্রোগ্রাম এর মৌলিক কিছু ওভারভিউ দেয়ার চেষ্টা করবো। তবে শুরুতে সুবিধার্থে আমাদের কিছু টার্মস সম্পর্কে জেনে নেওয়া জরুরি। + + **অবজেক্ট** + +যেহেতু জাভা একটি অবজেক্ট ওরিয়েন্টেড ল্যাংগুয়েজ, সুতরাং শুরুতে জানতে হবে অবজেক্ট কি। অবজেক্ট এর মানে আমারা যা জানি, সেটা হচ্ছে আমাদের জড়জগতের কোন বস্তু, যাকে ঠিক স্পর্শ করা যায়। তবে যেহেতু আমরা কল্পনা করতে পারি, আমরা অনেক কিছু ধরে নিতে পারি, মনে করুন - একটি বাইসাইকেল। বাইসাইকেল বলতেই আমদের মাথায় একটি চিত্র চলে আসে। আমরা এর বৈশিষ্টগুলো জানি, যেমন এটির দুইটি চাকা থাকে, একটি বসার সিট থাকে, এর ব্রেক আছে। তারপর এও জানি যে এটি কি করে, অর্থাৎ সাইকেল এর কাজ গুলোও আমরা জানি- যেমন এটি চলে। দেখা যাচ্ছে যে আমরা একটি বাইসাইকেল এর অবস্থা ও আচরণ সম্পর্কে জানি। এই অবস্থা ও আচরণ গুলো নিয়েই বাইসাইকেল একটি অবজেক্ট। + +আমরা যদি আমাদের কল্পনাটুকু আরেকটু বাড়িয়ে নিয়ে বলি, সাইকেল হচ্ছে একটি সফটওয়্যার কম্পোনেন্ট যা কিনা কম্পিউটারে চলে, আমার মনে হয় কারো আপত্তি থাকার কথা নয়। + +যেহেতু আমারা প্রোগ্রামিং নিয়ে আলোচনা করছি, সুতরাং এভাবে বলি, আমরা যদি একটা প্রোগ্রাম লিখি, সেই প্রোগ্রামের ছোট্ট একটি অংশ যার আমাদের এই বাইসাইকেল এর মতো বৈশিষ্ট্য থাকে, এবং একটি কিছু কাজ সম্পাদন করতে পারে, তাহলে সেই ছোট্ট অংশটিকে অবজেক্ট বলতে পারি। + +**ক্লাস** + +মনে করি আমরা একটা বাড়ি বানাতে চাই। প্রথমে আমরা চিন্তা করি বাড়িটা আসলে কিভাবে বানাবো। আমরা জায়গা নির্বাচন করি। তারপর চিন্তা করি বাড়িটি কত-তলা হবে, কয়টা এপার্টমেন্ট হবে, এপার্টমেন্ট গুলো কত স্কয়ারফিটের হবে। তারপর চিন্তা করি, একটা এপার্টমেন্ট এ কয়টি রুম হবে, ড্রয়িং রুমের দৈর্ঘ্য কত হবে, কয়টা বাথ থাকবে, বেলকনি কোথায় থাকবে, রান্না ঘর কোথায় হবে ইত্যাদি ইত্যাদি। আচ্ছা এগুলো ঠিক হয়ে গেল, এখন আমরা চিন্তা করবো আরও জটিল কাজ নিয়ে। ওয়্যারিং নিয়ে, প্রত্যেক রুমে কয়টা পয়েন্ট থাকবে, পানির লাইন কিভাবে নেব। তারপরে বাথরুমে কি ধরণের টাইল ব্যবহার করবো, ফ্লোরে কোন গুলো। + +অর্থাৎ বাড়িটি বানানোর আগেই আমরা সব কিছু নির্ধারণ করে ফেলছি এবং আমরা এই বিষয়গুলো সব লিপিবদ্ধ করে রাখি। তারপর এই লিপিবদ্ধ লেখাগুলোকে নানাভাবে পরীক্ষা করে ক্রস চেক করে চূড়ান্ত করি। এর একটি গলাভরা নাম আছে, সেটা হচ্ছে- blueprint. + +আমাদের এক্ষেত্র বাড়টি হচ্ছে অবজেক্ট। এই অবজেক্ট বানানোর আগে আমাদের blueprint এর দরকার হয়। আর এই blueprint কেই আমরা বলি ক্লাস। + +আমরা তাহলে এখন অবজেক্ট এবং ক্লাস এর ধারণা জানি। এবার তাহলে আমাদের মূল বিষয় সিনট্যক্স নিয়ে কথা বলি- + +আমরা যারা সি কিংবা অন্য কোন প্রোগ্রামিং ল্যাংগুয়েজ আগে থেকেই জানি, একটি প্রোগ্রামে দুটি জিনিস অবশ্যই কমন থাকে - সেগুলো হলো - ফাংশান এবং ডেটা । + +একটি জাভা প্রোগ্রাম লিখতে হলে আমাদেরকে অবশ্যএই একটি ফাইল তৈরি করতে হবে যার এক্সটেনশন হবে .java. +উদাহরণসরূপ- HelloWorld.java +এবার আমরা লক্ষ্য করি একটি জাভা প্রোগ্রামে কি কি থাকে- + +- প্যাকেজ ডিক্লারেশন +- ইম্পোর্ট স্টেটমেন্টস +- টাইপ ডিক্লারেশন + - ফিল্ডস + - মেথডস + +উপরের নামগুলো নিয়ে দ্বন্দ্ব লাগলে সমস্যা নেই, এক্ষণি সেগুলো নিয়ে আলোচনা করছি, তবে তার আগে একটি জাভা প্রোগ্রাম দেখে নিই। + + ```java + package bd.com.howtocode.java.tutotorial.syntax; + + import java.util.HashMap; + + public class HelloWorld { + protected final String hello = "value"; + + public static void main(String[] args) { + } + } +``` + +এই কোডটির শুরুতেই আছে প্যাকেজ ডিক্লারেশন। আমরা আমাদের কম্পিউটারে নানা ধরণের ফাইল বিভিন্ন ফোল্ডারে সাজিয়ে রাখি। যেমন- মুভি ফোল্ডারে হয়তো আমরা শুধুই মুভি রাখি, সেখানে অন্য ফাইল রাখি না। আবার মুভি ফোল্ডারে এর মধ্যে আরো সাব-ফোল্ডার তৈরি করি আরো আলাদা করার জন্যে, যেমন – বাংলা মুভি, ইংরেজি মুভি ইত্যাদি। জাভাতে প্যাকেজ বলতে এই ধারণটিই বুঝায়। একটি জাভা প্রোগ্রামিং ভাষায় লেখা সফ্টওয়্যার এ শত শত বা হাজার হাজার পৃথক ক্লাস থাকতে পারে। এজন্যে প্যাকেজ ডিক্লারেশন এর মাধ্যমে আমরা একি রকম ক্লাস গুলো একটি প্যাকেজের মধ্যে আলাদা করে রাখি। + + +উদাহরণসরূপ এখানে প্যাকেজ স্ট্রাকচার এর একটি স্ক্রিনশট দেওয়া হল- + +![package declamation](images/package_structure.png) + +প্যাকেজ নাম গুলােকে লোয়ার কেস অক্ষরে-এ লিখতে হয়। + +কোম্পানি গুলো তাদের ইন্টারনেট ডোমেইন নেইম কে উল্টো করে তাদের প্যাকেজের নাম লিখে। যেমন - example.com এর একটি প্রোগ্রামার একটি প্যাকেজের নাম লিখবে এইভাবে- com.example.package. + +আমাদের ক্ষেত্রে- + + package bd.com.howtocode.java.tutotorial.syntax; + +তারপর আমাদের প্রোগ্রামের দ্বিতীয় লাইনটি হলো - ইম্পোর্ট স্টেটমেন্টস। অন্য কোন প্যাকেজের ক্লাস যদি আমাদের প্রোগ্রামে দরকার হয় তাহলে আমারা সেটিকে এভাবে ইম্পোর্ট করতে পারি। এটি সি প্রোগ্রামিং এর ইনক্লুড স্টেটমেন্টস এর মতো। + + import java.util.HashMap; + +এর পরের লাইনটি হলো টাইপ ডিক্লারেশন। জাভাতে একটি টাইপ একটা ক্লাস অথবা ইন্টারফেইস অথবা এনাম হতে পারে(ইন্টারফেইস এবং এনাম নিয়ে পরে আলোচনা করা হবে)। ক্লাস ক্ষেত্রে শুরুতে class কিওয়ার্ড লিখেতে হয় তারপর কার্লি ব্রেস { শুরু এবং শেষ } করতে হয়। আমাদের পরবর্তি প্রতিটা লাইন কোড এই কার্লি ব্রেস { } এর ভেতরে লিখতে হবে। + + public class HelloWorld { } + +এখানে অতিরিক্ত একটি public কিওয়ার্ড দেখা যাচ্ছে। এই মুহুর্তে শুধু মনে রাখুন ক্লাস এর শুরুতে এটি লিখতে হয়। পরে এটি নিয়ে আলোচনা করা হবে। + +এর পরেই আমরা যা দেখছি তাকে বলা হয় ফিল্ড ডিক্লারেশন। অর্থাৎ আমরা যে বিভিন্ন রকম ভ্যারিয়বল ডিক্ল্যার করি, সেগুলো। + + protected final String hello = "value"; + +এবং এর পরেই থাকে মেথড। সি কিংবা অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজ এ যাকে আমরা ফাংশন কিংবা সাবরুটিন বলে থাকে, এখানে আমরা সেগুলোকে মেথড বলি। + +এক্ষেত্রে আমাদের মেথড হচ্ছে - + + public static void main(String[] args) { + } + + +এটি হচ্ছে মেইন মেথড। জাভা প্রোগ্রামকে রান করতে হলে অবশ্যই কোন ক্লাসে একটি মেইন মেথড থাকতে হবে। +এবার আমরা কিছু জিনিস প্রিন্ট করার চেষ্টা করি- + +জাভাতে কনসলে কিছু প্রিন্ট করার জন্যে System.out.println() অথবা System.out.print() ব্যবহার করা হয়। + + +আমরা যদি নিচের প্রোগ্রমটি রান করি- + + ```java + package bd.com.howtocode.java.tutotorial.syntax; + + public class HelloWorld { + public static void main(String[] args) { + System.out.println("Hello, world!"); // Advance the cursor to the beginning of next line after printing + System.out.println(); // Print a empty line + System.out.print("Hello, world!"); // Cursor stayed after the printed string + System.out.println("Hello,"); + System.out.print(" "); // Print a space + System.out.print("world!"); + System.out.println("Hello, world!"); + } + } +``` + +তাহলে কনসলে নিচের লাইন গুলো প্রিন্ট হবে- + + Hello, world! + + Hello, world!Hello, + world!Hello, world! + + +আমরা ইতিমধ্যে জানি ক্লাস কি- তাহলে এবার একটি ক্লাস লিখে ফেলা যাক- + + ```java + package bd.com.howtocode.java.tutotorial.syntax; + + /** + * @author Bazlur Rahman Rokon + * @since 9/20/14. + */ + public class Bicycle { + int cadence = 0; + int speed = 0; + int gear = 1; + + void changeCadence(int newValue) { + cadence = newValue; + } + + void changeGear(int newValue) { + gear = newValue; + } + + void speedUp(int increment) { + speed = speed + increment; + } + + void applyBrakes(int decrement) { + speed = speed - decrement; + } + + void printStates() { + System.out.println("cadence:" + + cadence + " speed:" + + speed + " gear:" + gear); + } + } +``` + +আমরা ক্লাস এবং অবজেক্ট কি জানি, কিন্তু কিভাবে ক্লাস থেকে অবজেক্ট তৈরি করতে হয় সেটি এবার দেখা যাক- + + ```java + package bd.com.howtocode.java.tutotorial.syntax; + + /** + * @author Bazlur Rahman Rokon + * @since 9/20/14. + */ + + public class BicycleDemo { + public static void main(String[] args) { + // Create two different + // Bicycle objects + + Bicycle bike1 = new Bicycle(); + Bicycle bike2 = new Bicycle(); + + // Invoke methods on + // those objects + bike1.changeCadence(50); + bike1.speedUp(10); + bike1.changeGear(2); + bike1.printStates(); + + bike2.changeCadence(50); + bike2.speedUp(10); + bike2.changeGear(2); + bike2.changeCadence(40); + bike2.speedUp(10); + bike2.changeGear(3); + bike2.printStates(); + } + } +``` +আমরা জানি যে জাভা প্রোগ্রাম চালু করতে হলে একটি মেইন মেথড দরকার হয়। উপরের প্রোগ্রামটিতে একটি মেইন মেথড আছে। এবং এর ভেতরে শুরুতে আমরা দুইটি অবজেক্ট তৈরি করেছি। + + Bicycle bike1 = new Bicycle(); + Bicycle bike2 = new Bicycle(); + +জাভাতে অবজক্ট তৈরি করা খুব সহজ। এর জন্যে আমাদের তিনটি স্টেপ দরকার হয়- + +- ডিক্লারেশন +- ইনসটেনশিয়েশান +- ইনিশিয়ালাইজেশান + + +**Bicycle bike1** = new Bicycle(); +‌‌‌‌‌‌ + +উপরের বোল্ড অক্ষরে লেখাটুকু হচ্ছে ডিক্লারেশন, তারপর সমান চিহ্ন এর পর new কিওয়ার্ড পর্যন্ত হচ্ছে ইনসটেনশিয়েশান এবং এর পরের অংশটুকুকে ইনিশিয়ালাইজেশান বলা হয়। ইনিশিয়ালাইজেশান এর জন্যে আমাদের ক্লাসটির কনস্ট্রাকটরকে কল করতে হয়। কনস্ট্রাকটর নিয়ে একটু পরেই কথা বলছি। + +এখানে ডিক্লারেশন টাইপ ডিক্লারেশন এর মতোই। ভ্যারিয়বল চ্যাপ্টারে আমরা আরো ডিটেইলস দেখবো। + +তারপর অবজেক্টটি ধরে ডট অপারেটর ব্যবহার করে সেই ক্লাসের মেথড গুলো কল করা হয়ছে। +‌‌‌ +এই প্রোগ্রামটি রান করলে আউটপুট আসবে- + + cadence:50 speed:10 gear:2 + cadence:40 speed:20 gear:3 + + +** কনস্ট্রাকটর ** + +কনস্ট্রাকটর অন্যান্য মেথড বা ফাংশনের মতই একটি মেথড বা ফাংশনে। তবে এটির কোন রিটার্ন টাইপ নেই। একটি ক্লাসকে একটি অবজেক্ট-এ তৈরি করতে যে প্রয়োজনীয় কাজ গুলো করতে হয়, কনস্ট্রাকটর সেই কাজ গুলো করে থাকে। তবে মজার ব্যপার হচ্চে সেই প্রয়োজনীয় কাজ গুলো জন্যে আমাদের কোড লিখতে হয় না। + +আমাদের উপরের ক্লাসটিতে আমরা কোন কনস্ট্রাকটর লিখি নি। তাহলে এর অবজেক্ট তৈরি হলো কিভাবে? +উত্তরটি হচ্ছে আমরা যদি কোন কনস্ট্রাকটর না লিখি তাহলে জাভা কম্পাইলার নিজে থেকেই একটি কনস্ট্রাকটর লিখে কম্পাইল করে, যাকে আমরা বলি ডিফল্ট কনস্ট্রাকটর। তবে আমরা চাইলে নিজের একটি লিখতে পারি। + + public class Bicycle { + int cadence = 0; + int speed = 0; + int gear = 1; + + public Bicycle() { + } + } + + +এবার আমরা দেখবো কিভাবে জাভাতে কমেন্ট লিখতে হয়- + +জাভা তিন ধরণের কমেন্ট সাপোর্ট করে- + + Comment | Description + /* text */ | জাভা কম্পাইলার /* থেকে */ পর্যন্ত সব কিছু উপেক্ষা করে যাবে + // text | জাভা কম্পাইলার // থেকে লাইনের শেষ পর্যন্ত উপেক্ষা করে যাবে + /** documentation */ | এটি হচ্ছে ডকুমেন্টাশান কমে্নট । একে doc comment বলা হয়। + + + +উদাহরণ- + + ```java + + package bd.com.howtocode.java.tutotorial.syntax; + + /** + * The HelloWorld program implements an application that + * simply displays "Hello World!" to the standard output. + * + * @author Bazlur Rahman Rokon + * @since 9/20/14. + */ + public class HelloWorld { + public static void main(String[] args) { + // Prints Hello, World! on standard output. + System.out.println("Hello, world!"); + + /* + for (int i = 0; i < 100; i++) { + System.out.println(i); + }*/ + } + } + +``` +আরও কিছু নিয়ম: + +- জাভাতে প্রত্যেকটি স্টেটমেন্ট এর পর সেমিকোলন (;) দিয়ে স্টেটমেন্ট শেষ করতে হয়। +- জাভা একটি কেইস সেনসিটিভ ল্যাংগুয়েজ- অর্থাৎ hello এবং Hello দুটি আলাদা শব্দ । + +**অনুশীলন:** + +নিচের প্যটার্নগুলো প্রিন্ট করতে চেষ্টা করুণ- + + * * * * * * * * * * * * * * * + * * * * * * * * * + * * * * * * * * * + * * * * * * * * * + * * * * * * * * * * * + (a) (b) (c) + + + diff --git a/3.md b/3.md index d2de959..91aa1b6 100644 --- a/3.md +++ b/3.md @@ -7,16 +7,16 @@ * বিভিন্ন রকম অপারেটর -**ভেরিয়েবল** +**ভ্যারিয়বল** -ভেরিয়েবল হচ্ছে একটি নাম যা কম্পিউটারের একটি মেমোরি লোকেশান কে নির্দেশ করে। উদাহরণ- +ভ্যারিয়বল হচ্ছে একটি নাম যা কম্পিউটারের একটি মেমোরি লোকেশান কে নির্দেশ করে। উদাহরণ- int cadence = 0; -একটি ভেরিয়েবল ডিক্লারেশন এর জন্যে একটি ডাটাটাইপ দরকার হয়, অর্থাৎ ভেরিয়েবল টি কি ধরণের ডাটা হোল্ড করতে তা বলে দিতে হবে। -উপরের উদাহরণটিতে আমরা একটি ভেরিয়েবল ডিক্লার করেছি যার নাম cadence এবং এটি ইন্টিজার টাইপ ডাটা হোল্ড করে। +একটি ভ্যারিয়বল ডিক্লারেশন এর জন্যে একটি ডাটাটাইপ দরকার হয়, অর্থাৎ ভ্যারিয়বল টি কি ধরণের ডাটা হোল্ড করতে তা বলে দিতে হবে। +উপরের উদাহরণটিতে আমরা একটিভ্যারিয়বল ডিক্লার করেছি যার নাম cadence এবং এটি ইন্টিজার টাইপ ডাটা হোল্ড করে। -যেহেতু জাভা একটি স্ট্যাটিক্যালি টাইপড ল্যাংগুয়েজ সুতরাং ভেরিয়েবল ডিক্লারেশন এর সময় ডাটাটাইপ উ্ল্লেখ করা অত্যাবশ্যক। +যেহেতু জাভা একটি স্ট্যাটিক্যালি টাইপড ল্যাংগুয়েজ সুতরাং ভ্যারিয়বল ডিক্লারেশন এর সময় ডাটাটাইপ উ্ল্লেখ করা অত্যাবশ্যক। জাভাতে আমরা চার ধরণের ভেরিয়েবল নিয়ে কাজ করে থাকি - @@ -71,7 +71,7 @@ এখানে bike1 এবং bike2 দুটি সম্পূর্ণ আলাদা অবজেক্ট। -এখন bike1 এবং bike2 তে কিছু ভেরিয়েবল গুলোও আলাদা। অর্থাৎ আমরা যতগুলো অজেক্ট তৈরি করতেবা ঠিক ততোগুলো আলাদা ভেরিয়েবল থাকবে মেমোরিতে। এক্ষেত্রে মেমোরিতে ২টা cadence থাকবে, ২টা gear থাকবে এবং ২ speed ধাকবে। +এখন bike1 এবং bike2 তে কিছু ভ্যারিয়বল গুলোও আলাদা। অর্থাৎ আমরা যতগুলো অজেক্ট তৈরি করতেবা ঠিক ততোগুলো আলাদা ভ্যারিয়বল থাকবে মেমোরিতে। এক্ষেত্রে মেমোরিতে ২টা cadence থাকবে, ২টা gear থাকবে এবং ২ speed ধাকবে। এই ভ্যারিয়বল গুলোকে Instance Variables বা Non-static fields বলা হয়। এই ভ্যারিয়বল গুলো আগে static কিওয়ার্ডটি থাকে না। @@ -106,12 +106,12 @@ myByte = 127; myFloat = 199.99; -জাভা ভেরিয়েবল লেখার কিছু নিয়ম কানুন আছে- +জাভা ভ্যারিয়বল লেখার কিছু নিয়ম কানুন আছে- -1. ভেরিয়েবল গুলো কেইস সেনসিটিভ। অর্থাৎ money, Money,MONEY তিনটি আলাদা। +1. ভ্যারিয়বল গুলো কেইস সেনসিটিভ। অর্থাৎ money, Money,MONEY তিনটি আলাদা। 2. ভ্যারিয়বল অবশ্যই যেকোন একটি লেটার দিয়ে শুরুকরতে হবে। তবে $ অথবা _ দিয়েও শুরু করা যায়। 3. ভ্যারিয়বল এর মাঝে নাম্বার কিংবা _ থাকতে পারে। -4. ভেরিয়েবল জাভার কোন reserved কিওয়ার্ড হতে পারবে না। +4. ভ্যারিয়বল জাভার কোন reserved কিওয়ার্ড হতে পারবে না। **ডাটা টাইপ** @@ -145,7 +145,7 @@ Long | 64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372. Float | 32 bit floating point value Double | 64 bit floating point value -এগুলোকে প্রিমিটিভ টাইপ এর রেপার রেপার ক্লাস বলা হয়। লক্ষ্য করুণ, এগুলোর সবগুলোর নাম ক্যাপিটাল অক্ষার দিয়ে শুরু হয়েছে। +এগুলোকে প্রিমিটিভ টাইপ এর রেপার রেপার ক্লাস বলা হয়। লক্ষ্য করুণ, এগুলোর সবগুলোর নাম ক্যাপিটাল অক্ষর দিয়ে শুরু হয়েছে। তবে আমরা চাইলে অবজেক্ট ডাটাটাইপ এবং প্রিমটিভ ডাটাটাইপ একে অপরের পরিপূরক হিসাবে ব্যবহার করতে পারি। @@ -153,7 +153,7 @@ Double | 64 bit floating point value int b = 9; a = b; -তবে প্রিমিটিভ ভ্যালু গুলো ডিফল্টভ্যালু থাকে। অর্থাৎ আমরা যদি ভ্যালু এসাইন না করি, তাহলে এদের মধ্যে বাইডিফল্ট ভ্যালু থাকে। যেমন - +তবে প্রিমিটিভ ভ্যালু গুলো ডিফল্ট ভ্যালু থাকে। অর্থাৎ আমরা যদি ভ্যালু এসাইন না করি, তাহলে এদের মধ্যে বাইডিফল্ট ভ্যালু থাকে। যেমন - Data Type |Default Value (for fields) -----------|------------------------ @@ -234,7 +234,7 @@ char এবং String ইউনিকোড ক্যারেক্টার int gear = 1; ``` -এই ভেরিয়েবল গুলোর ডান পাশে সমান সমান চিহ্নের পর আমরা একটা ভ্যালু বা মান বসিয়েছি। এভাবে আমরা একটি ভেরিয়েবল এর মাঝে ভ্যালু এসাইন করতে পারি। +এই ভ্যারিয়বল গুলোর ডান পাশে সমান সমান চিহ্নের পর আমরা একটা ভ্যালু বা মান বসিয়েছি। এভাবে আমরা একটি ভ্যারিয়বল এর মাঝে ভ্যালু এসাইন করতে পারি। **এরিথমেটিক অপারেটর(Arithmetic Operator)** @@ -301,7 +301,7 @@ char এবং String ইউনিকোড ক্যারেক্টার **ইউনারি (Unary) অপারেটর** -উপরের সব অপারেটর এর জন্যে আমাদের দইটি করে অপারেন্ড দরকার হতো, তবে এই অপারেটর এর লাগে একটি। +উপরের সব অপারেটর এর জন্যে আমাদের দুটি করে অপারেন্ড দরকার হতো, তবে এই অপারেটর এর লাগে একটি। এগুলো বিভিন্ন ধরণের কাজ করে থাকে যেমন – এক করে ইনক্রিমেন্টিং/ডিক্রিমেন্টিং বা একটা এক্সপ্রেশান নেগেট করা বা একটা বুলিয়ান-কে ইনভার্ট করা । এগুলো হল - +, -, ++, –-, ‍! @@ -340,7 +340,7 @@ char এবং String ইউনিকোড ক্যারেক্টার **ইকুয়ালিটি (Equality) এবং রেশনাল(Relational) অপারেটরস** -ইকুয়ালিটি (Equality) এবং রেশনার(Relational) অপারেটর গুলো নির্ধারণ করে একটি ভ্যালু অন্যটি থেকে বড় বা ছোট কিনা। +ইকুয়ালিটি (Equality) এবং রেশনাল(Relational) অপারেটর গুলো নির্ধারণ করে একটি ভ্যালু অন্যটি থেকে বড় বা ছোট কিনা। == দুটি ভ্যালু সমান হলে এই এক্সপ্রেশান এর মান true হয় != দুটি ভ্যালু সমান না হলে true হয় @@ -377,7 +377,7 @@ char এবং String ইউনিকোড ক্যারেক্টার && এবং || এই দু্ই অপারেটরকে কন্ডিশনাল অপারেটর বলে। - && কন্ডিশনাল এন্ড (Conditional-AND) + && কন্ডিশনাল অ্যান্ড (Conditional-AND) || কন্ডিশনাল ওর ( Conditional-OR) diff --git a/3.md~ b/3.md~ new file mode 100644 index 0000000..9e206ba --- /dev/null +++ b/3.md~ @@ -0,0 +1,406 @@ +# পাঠ ৩: ডাটা টাইপস এবং অপারেটর + +* ভেরিয়েবল +* প্রিমিটিভ ডাটাটাইপ, ইন্টিজার, লং, ডাবল, ইন্টিজার, ফ্লোট এবং কার +* রেপার ক্লাস +* লিটারেল +* বিভিন্ন রকম অপারেটর + + +**ভ্যারিয়বল** + +ভ্যারিয়বল হচ্ছে একটি নাম যা কম্পিউটারের একটি মেমোরি লোকেশান কে নির্দেশ করে। উদাহরণ- + + int cadence = 0; + +একটি ভ্যারিয়বল ডিক্লারেশন এর জন্যে একটি ডাটাটাইপ দরকার হয়, অর্থাৎ ভ্যারিয়বল টি কি ধরণের ডাটা হোল্ড করতে তা বলে দিতে হবে। +উপরের উদাহরণটিতে আমরা একটিভ্যারিয়বল ডিক্লার করেছি যার নাম cadence এবং এটি ইন্টিজার টাইপ ডাটা হোল্ড করে। + +যেহেতু জাভা একটি স্ট্যাটিক্যালি টাইপড ল্যাংগুয়েজ সুতরাং ভ্যারিয়বল ডিক্লারেশন এর সময় ডাটাটাইপ উ্ল্লেখ করা অত্যাবশ্যক। + +জাভাতে আমরা চার ধরণের ভেরিয়েবল নিয়ে কাজ করে থাকি - + +1. Instance Variables (Non-static fields) +2. Class Variables (Static Fields) +3. Local variables +4. Parameters variables + +জাভাতে ভ্যারিয়বল এবং ফিল্ড দুই শব্দই ব্যবহার করা হয়, তবে এর কিছু টেকনিকাল পার্থক্য আছে। সেগুলো নিয়েই আলোচনা করা হবে – + +আমরা আবার একটি উদাহরণ দেখি – + +```java + public class Bicycle { + static int numGears = 6; + + int cadence = 0; + int speed = 0; + int gear = 1; + + public Bicycle() { + } + + void changeCadence(int newValue) { + cadence = newValue; + } + + void changeGear(int newValue) { + gear = newValue; + } + + void speedUp(int increment) { + speed = speed + increment; + } + + void applyBrakes(int decrement) { + speed = speed - decrement; + } + + void printStates() { + System.out.println("cadence:" + + cadence + " speed:" + + speed + " gear:" + gear); + } + } +``` + +আমরা জানি যে একটি ক্লাস থেকে আমরা অবজেক্ট তৈরি করি। আমরা একটা ক্লাস থেকে অনেকগুলো অবজেক্ট তৈরি করতে পারি। এবং প্রত্যেক অবজেক্ট-ই আলাদা আলাদা। যেমন - + + Bicycle bike1 = new Bicycle(); + Bicycle bike2 = new Bicycle(); + +এখানে bike1 এবং bike2 দুটি সম্পূর্ণ আলাদা অবজেক্ট। + +এখন bike1 এবং bike2 তে কিছু ভ্যারিয়বল গুলোও আলাদা। অর্থাৎ আমরা যতগুলো অজেক্ট তৈরি করতেবা ঠিক ততোগুলো আলাদা ভ্যারিয়বল থাকবে মেমোরিতে। এক্ষেত্রে মেমোরিতে ২টা cadence থাকবে, ২টা gear থাকবে এবং ২ speed ধাকবে। + +এই ভ্যারিয়বল গুলোকে Instance Variables বা Non-static fields বলা হয়। এই ভ্যারিয়বল গুলো আগে static কিওয়ার্ডটি থাকে না। + + static int numGears = 6; + +উপরের উদাহরণটিতে **numGears** নামে একটি ভ্যারিয়বল আছে, এটির আগে একটি **static** কিওয়ার্ডটি আছে। এ ধরণের ভ্যারিয়বল কে Class Variables বা Static Fields বলা হয়। static কিওয়ার্ডটি কম্পাইলারকে বলে যে numGears নামে একটি মাত্র ভ্যারিয়বল থাকবে মেমোরিতে, অবজেক্ট এর সংখ্যা যতই হোক। + +লোকাল ভ্যারিয়বল হলো সেসব ভ্যারিয়বল যে গুলো কোন মেথডের মাঝে ডিক্লার করা হয়। একটি লোকাল ভ্যারিয়বল শুধু মাত্র সেই মেথডের ভেতর থেকেই একসেস করা যাবে। + +আর Parameters variables হলো সেই ভ্যারিয়বল গুলো যেগুলো মেথড কল করার সময় পাস করা হয়। এ গুলোও শুধুমাত্র মেথডের ভেতর থেকেই একসেস করা যায়। + +আমরা Instance Variables এবং Class Variables গুলোকে ফিল্ড বলি। + +এখানে কিছু ভ্যারিয়বল ডিক্লারাশেনের উদাহরণ দেওয়া হলো - + + byte myByte; + short myShort; + char myChar; + int myInt; + long myLong; + float myFloat; + double myDouble; + +শুরুতে আগে টাইপ লিখতে হবে, তারপর একটি নাম, তারপর সেমিকোলন দিয়ে শেষ করতে হবে। তবে আমরা চাইলে ভ্যারিয়বল কে ইনিশিয়ালাইজেশান করতে পারি। যেমন - + + int cadence = 0; + +অর্থাৎ শুরুতে আমরা cadence এর ভ্যালু 0 এসাইন করালাম। + +এরপর যদি আমরা কোন ভ্যারিয়বলে ভ্যালু এসাইন করতে চাই তাহলে - + + myByte = 127; + myFloat = 199.99; + +জাভা ভ্যারিয়বল লেখার কিছু নিয়ম কানুন আছে- + +1. ভ্যারিয়বল গুলো কেইস সেনসিটিভ। অর্থাৎ money, Money,MONEY তিনটি আলাদা। +2. ভ্যারিয়বল অবশ্যই যেকোন একটি লেটার দিয়ে শুরুকরতে হবে। তবে $ অথবা _ দিয়েও শুরু করা যায়। +3. ভ্যারিয়বল এর মাঝে নাম্বার কিংবা _ থাকতে পারে। +4. ভ্যারিয়বল জাভার কোন reserved কিওয়ার্ড হতে পারবে না। + + +**ডাটা টাইপ** + +জাভা তে আট ধরণের প্রিমিটিভ ডাটা টাইপ আছে । + +Data type|Description +----------|-------------- +byte|8 bit signed value, values from -128 to 127 +short|16 bit signed value, values from -32.768 to 32.767 +char|16 bit Unicode character +int|32 bit signed value, values from -2.147.483.648 to 2.147.483.647 +long|64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808 +float|32 bit floating point value +double|64 bit floating point value + + +এগুলো প্রমিটিভ , এর মানে হচ্ছে এগুলো অবজেক্ট নয়। এরা মেমোরিতে সরাসরি ভ্যালু রাখে। + +**রেপার ক্লাস** + +তবে জাভাতে কিছু ডাটা টাইপ আছে যেগুলো অবজেক্ট। + +Data type| Description +---------|------------ +Byte| 8 bit signed value, values from -128 to 127 +Short | 16 bit signed value, values from -32.768 to 32.767 +Character |16 bit Unicode character +Integer| 32 bit signed value, values from -2.147.483.648 to 2.147.483.647 +Long | 64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808 +Float | 32 bit floating point value +Double | 64 bit floating point value + +এগুলোকে প্রিমিটিভ টাইপ এর রেপার রেপার ক্লাস বলা হয়। লক্ষ্য করুণ, এগুলোর সবগুলোর নাম ক্যাপিটাল অক্ষর দিয়ে শুরু হয়েছে। + +তবে আমরা চাইলে অবজেক্ট ডাটাটাইপ এবং প্রিমটিভ ডাটাটাইপ একে অপরের পরিপূরক হিসাবে ব্যবহার করতে পারি। + + Integer a; + int b = 9; + a = b; + +তবে প্রিমিটিভ ভ্যালু গুলো ডিফল্ট ভ্যালু থাকে। অর্থাৎ আমরা যদি ভ্যালু এসাইন না করি, তাহলে এদের মধ্যে বাইডিফল্ট ভ্যালু থাকে। যেমন - + +Data Type |Default Value (for fields) +-----------|------------------------ +byte |0 +short|0 +int|0 +long|0L +float|0.0f +double|0.0d +char|'\u0000' +boolean|false + + +**লিটারেল-** + +প্রোগ্রামিং ল্যাংগুয়েজ কিছু মজার মজার বিল্ট-ইন সুবিধা থাকে, তার মধ্যে লিটারেল একটি। আমরা জানি যে একটা ভ্যারিয়বল ডিক্লারেশান এর জন্য প্রথমে টাইপ লিখতে হয়, তারপর একটা নাম দিতে হয়, তারপর একে ইনিশিয়ালাইজেশান করতে হয়। ভেরিয়েবলটি যদি অবজেক্ট হয়, তাহলে ইনটেনশিয়েশান করতে হয়। + +উদাহরণ- + + List list = new ArrayList(); + + or + + Int x = 5; + +উপরের দুটি উদাহরণের মাঝে একটিতে আমরা new কিওয়ার্ড ব্যবহার করে নতুন অবজেক্ট তৈরি করেছি। কিন্তু পরের উদাহরণটিতে সেটি করতে হয় নি। আমরা সরাসরি একটি ভ্যালু এসাইন করেছি। এখানে 5 একটি ভ্যালু। এখানে 5 হচ্ছে লিটারেল। + +এরকম অনেক ক্ষেত্রে আমরা new কিওয়ার্ড ব্যবহার না করেই ভেরিয়েবল initialize করতে পারি। + +জাভাতে প্রিমিটিভ টাইপ সকল ডাটাটাইপ লিটারেল সাপোর্ট করে। যেমন - + + boolean result = true; + char capitalC = 'C'; + byte b = 100; + short s = 10000; + int i = 100000; + +নিচে আরো কিছু উদাহরণ দেওয়া হলো – + +**ইন্টিজার লিটারেল-** + + // এখানে 26 হচ্ছে ডেসিমাল নাম্বার + int decVal = 26; + // এখানে 26 সংখ্যাটি হেক্সাডেসিমেল এ দেখানো হয়েছে + int hexVal = 0x1a; + // এখানে 26 সংখ্যাটি বাইনারি-তে এ দেখানো হয়েছে + int binVal = 0b11010; + +**ফ্লােটিং পয়েন্ট লিটারেল-** + + double d1 = 123.4; + // একি ভ্যালু বৈজ্ঞানিক উপায়ে লেখা হয়েছে + double d2 = 1.234e2; + float f1 = 123.4f; + ক্যারেক্টার এন্ড স্ট্রিং লিটারেল-- + +char এবং String উদ্ধৃতি চিহ্নের ভেতরে লেখা হয়। char ক্ষেত্রে একক উদ্ধৃতি চিহ্ন String এর জন্যে ডবল উদ্ধৃতি চিহ্ন ব্যবহার করতে হয়- +যেমন- + + char chr = 'A'; // ক্যারেক্টার লিটারেল + String name = "Bazlur"; // স্ট্রিং লিটারের + +char এবং String ইউনিকোড ক্যারেক্টার হতে পারে। + + +আমরা জানি কিভাবে ভেরিয়েবল ইনিশিয়ালাইজ করতে হয় জানি, এবার তাহলে এই ভ্যারিয়বল গুলো দিয়ে কি কাজ করা যায় সেগুলো দেখি। + +কোন কাজ করতে হলে একজন কার্যকারী বা অপারেটর লাগে। অপারেটর কিছু অপারেন্ড নিয়ে কাজ করে থাকে তারপর ফলাফল রিটার্ন করে। জাভা প্রোগ্রামিং ল্যাংগুয়েজ এ বেশ কিছু অপারেটর আছে- সেগুলো দেখা যাক- + +**এসাইনমেন্ট অপারেটর (Assignment Operator)** + +“=” এটি হচ্ছে এসাইনমেন্ট অপারেটর বাংলায় যাকে বলে সমান সমান চিহ্ন। আমরা একটি Bicycle +ক্লাস দেখেছি, এর মাঝে কিছু ভেরিয়েবল দেখেছি- + +```java + int cadence = 0; + int speed = 0; + int gear = 1; +``` + +এই ভ্যারিয়বল গুলোর ডান পাশে সমান সমান চিহ্নের পর আমরা একটা ভ্যালু বা মান বসিয়েছি। এভাবে আমরা একটি ভ্যারিয়বল এর মাঝে ভ্যালু এসাইন করতে পারি। + +**এরিথমেটিক অপারেটর(Arithmetic Operator)** + +জাভা প্রোগ্রামিং ল্যাংগুয়েজ-এ যোগ, বিয়োগ, গুন, ভাগ করার জন্যে কিছু অপারেটর আছে। এগুলো আমরা যখন বেসিক গণিত শিখি তখন থেকেই জানি। শুধু একটি অপারেটর নতুন মনে হতে পারে, যা হলো “%”। এটিকে অনেকেই পারসেন্টেজ বা শতকরা চিহ্ণ হিসেবে ভুল করতে পারে, কিন্তু এটি আসলে তা নয় । এটি মূলত একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে। + + + | অপারেটর | এর কাজ | +|--- |---- | +| + | আডিটিভ(Additive) অপারেটর, যা দুটি সংখ্যা বা স্ট্রিং যোগ করার জন্যে ব্যবহার করা হয়। | +| - | সাবস্ট্রাকশান (Subtraction) অপরেটর যা একটি সংখ্যা থেকে আরেকটি সংখ্যা বিয়োগ করার জন্যে ব্যবহার করা হয়।| +| `*` | মাল্টিপ্লিকেশান (Multiplication)অপারেটর যা দুটি সংখ্যাকে গুন করে। | +| / | ডিভিশান(Division) অপারেটর , যা দিয়ে একটি সংখ্যাকে আরেকটি সংখ্যাকে ভাগ করা যায়। | +| % | রিমাইন্ডার (Remainder) অপারেটর যা একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে। | + + +```java + + class ArithmeticDemo { + + public static void main (String[] args) { + + int result = 1 + 2; + // এখানে result এর মান হচ্ছে 3 + System.out.println("1 + 2 = " + result); + int original_result = result; + + result = result - 1; + //এখানে result থেকে ১ সাবস্ট্রাক্ট করায় এর মান ২ + System.out.println(original_result + " - 1 = " + result); + original_result = result; + + result = result * 2; + // এখানে result এর সাথে ২ মাল্টিপ্লাই করার ফলে এর মান 4 + System.out.println(original_result + " * 2 = " + result); + original_result = result; + + result = result / 2; + //আবার result ডিভাইড করার ফলে এর মান হয়ে গেল 2 + System.out.println(original_result + " / 2 = " + result); + original_result = result; + + result = result + 8; + // ৮ যোগ করার ফলে এর result হলো 10 + System.out.println(original_result + " + 8 = " + result); + original_result = result; + + result = result % 7; + // result এর সাথে ৭ রিমাইন্ডার অপারেটর ব্যবহার করার ফলে এর মান হয়ে গেল 3, কারণ এটি শুধু মাত্র রিমানইন্ডার বা ভাগশেষ রিটার্ন করে + System.out.println(original_result + " % 7 = " + result); + } + } + +``` +এই প্রোগ্রামটি রান করলে নিচের ফলাফল প্রকাশিত হবে। + + 1 + 2 = 3 + 3 - 1 = 2 + 2 * 2 = 4 + 4 / 2 = 2 + 2 + 8 = 10 + 10 % 7 = 3 + + + +**ইউনারি (Unary) অপারেটর** + +উপরের সব অপারেটর এর জন্যে আমাদের দুটি করে অপারেন্ড দরকার হতো, তবে এই অপারেটর এর লাগে একটি। + +এগুলো বিভিন্ন ধরণের কাজ করে থাকে যেমন – এক করে ইনক্রিমেন্টিং/ডিক্রিমেন্টিং বা একটা এক্সপ্রেশান নেগেট করা বা একটা বুলিয়ান-কে ইনভার্ট করা । +এগুলো হল - +, -, ++, –-, ‍! +উহাহরণ - + +```java + class UnaryDemo { + + public static void main(String[] args) { + + int result = +1; + // এটি এক করে ইনক্রিমেন্ট করে, সুতরাং এখানে result এর মান 1 + System.out.println(result); + + result--; + // এটি এক করে ডিক্রিমেন্ট করে, সুতরাং এখানে result এর মান 0 + System.out.println(result); + + result++; + // এটিও এক করে ইনক্রিমেন্ট করে, সুতরাং এখানে result এর মান আবার ১ + System.out.println(result); + + result = -result; + // এখানে result কে নেগেট করে, সুতরাং এর মান এখন -1 + System.out.println(result); + + boolean success = false; + // এখানে বুলিয়ানের মান হচ্ছে false + System.out.println(success); + // কিন্তু এর আগে একটি নেগেট অপারেটর এড করলে এটি হয়ে যায় + System.out.println(!success); + } +} + +``` + +**ইকুয়ালিটি (Equality) এবং রেশনাল(Relational) অপারেটরস** + +ইকুয়ালিটি (Equality) এবং রেশনাল(Relational) অপারেটর গুলো নির্ধারণ করে একটি ভ্যালু অন্যটি থেকে বড় বা ছোট কিনা। + + == দুটি ভ্যালু সমান হলে এই এক্সপ্রেশান এর মান true হয় + != দুটি ভ্যালু সমান না হলে true হয় + > প্রথম ভ্যালু পরের ভ্যালু থেকে বড় হলে true হয় + >= প্রথম ভ্যালু পরের ভ্যালু থেকে বড় বা সমান হলে true হয় + < প্রথম ভ্যালু পরের ভ্যালু থেকে ছোট হলে true হয় + <= প্রথম ভ্যালু পরের ভ্যালু থেকে ছোট বা সমান হলে true হয় + + +উদাহরণ + +```java +‌‌‌‌ + class ComparisonDemo { + + public static void main(String[] args){ + int value1 = 1; + int value2 = 2; + if(value1 == value2) + System.out.println("value1 == value2"); + if(value1 != value2) + System.out.println("value1 != value2"); + if(value1 > value2) + System.out.println("value1 > value2"); + if(value1 < value2) + System.out.println("value1 < value2"); + if(value1 <= value2) + System.out.println("value1 <= value2"); + } + } + +``` + কন্ডিশনাল( Conditional) অপারেটর + + && এবং || এই দু্ই অপারেটরকে কন্ডিশনাল অপারেটর বলে। + + && কন্ডিশনাল এন্ড (Conditional-AND) + || কন্ডিশনাল ওর ( Conditional-OR) + + + +উদাহরণ- + + ```java + class ConditionalDemo1 { + + public static void main(String[] args){ + int value1 = 1; + int value2 = 2; + if((value1 == 1) && (value2 == 2)) + System.out.println("value1 is 1 AND value2 is 2"); + if((value1 == 1) || (value2 == 1)) + System.out.println("value1 is 1 OR value2 is 1"); + } + } + +``` + + + +## চলবে -- + + diff --git a/introduction.md b/introduction.md index 7c13551..3c533c0 100644 --- a/introduction.md +++ b/introduction.md @@ -26,6 +26,6 @@ জেমস গসলিং এর এই ভার্চুয়াল মেশিন-এর সল্যুশান ছিল সত্যিকার অর্থেই যুগান্তকারী এবং `গ্রিন টিম` এর রিলিজ দিতে প্রস্তুত। কিন্তু তখন-ই নতুন ঝামেলার সূচনা হয়, lawyers এসে তাদের জানায় এর নাম Oak দেওয়া যাবে না, কারণ এটি ইতিমধ্যেই Oak Technologies এর ট্রেড মার্ক। সুতরাং নাম পরিবর্তন করতে হবে। শুরু হয় ব্রেইনস্টর্মিং । কিন্তু কোন ভাবেই একটি ভাল নাম নির্বাচন করা যাচ্ছিল না। অনেকেই অনেক ধরণের নাম উপস্থাপন করে, যেমন - DNA, Silk , Ruby, yuck, Silk, Lyric, Pepper, NetProse, Neon, Java ইত্যাদি ইত্যাদি। এর সব গুলো লিগাল ডিপার্টমেন্ট এ সাবমিট করার পর মাত্র Java, DNA, and Silk এই তিনটি নাম ফিরে আসে যা কিনা ক্লিন। নাম নিয়ে ঘণ্টার পর ঘণ্টার মিটিং চলতে থাকে। এর মধ্যে Chris Warth প্রপোজ করে Java, কারণ তখন তার হাতে ছিল এক কাপ গরম Peet's Java (কফি)। শেষ পর্যন্ত নাম ঠিক করা হয় Java কারণ একমাত্র এই নামেই সব থেকে পজিটিভ রিএকশান পাওয়া যাচ্ছিল। -‌১৯৯৫ সালের মে মাসে জাভা এর প্রথম পাবলিক ভার্সন রিলিজ হয়। +‌১৯৯৫ সালের মে মাসে জাভা এর প্রথম পাবলিক ভার্সন রিলিজ হয়। এর পরের ইতিহাস আমরা সবাই জানি। জাভা হচ্ছে এই গ্রহের সবচেয়ে সফল প্রোগ্রামিং ভাষা। diff --git a/introduction.md~ b/introduction.md~ index dc07c13..7c13551 100644 --- a/introduction.md~ +++ b/introduction.md~ @@ -2,7 +2,7 @@ ১৯৯৫ সালের ২৩ শে মে। ঝকঝকে ঝলমলে চমৎকার একটি দিন। জন গেইজ, ডিরেক্টর অব সান মাইক্রোসিস্টেম সাথে Marc Andreesen, কো ফাওন্ডার এবং ভাইস প্রেসিডেন্ট অব নেটস্কেপ ঘোষণা দেন যে, জাভা টেকনোলজি মোটেই কোন উপকথা নয়, বরং এটিই বাস্তবতা এবং তারা এটি Netscape Navigator এর সংযুক্ত হতে যাচ্ছে। -সে সময় জাভাতে কাজ করে এমন লোকের সংখ্যা ত্রিশেরও কম। তারা কখনোই চিন্তা করে নি, তাদের এই টিম ভবিষ্যৎ পৃথিবীর প্রধানতম টেকনলজি নির্ধারণ করতে যাচ্ছে। ২০০৪ সালের ৩ জানুয়ারী Mars Exploration Rover মঙ্গল গ্রহের মানটিতে পা রাখে যার কন্ট্রোল সিস্টেম থেকে শুরু করে পৃথিবীর অধিকাংশ কনজুমার ইলেকট্রনিক্স - (ক্যাবল সেট-টব বক্স, ভিসিআর, টোস্টার, পিডিএ, স্মার্টফোন) ৯৭% এন্টাপ্রাইজ ডেস্কটপ ৮৯% ডেস্কটপ অব ইউএসএ, ৩ বিলিওন মোবাইল ফোন, ৫ বিলিওন জাভা কার্ড, ১২৫ মিলিওন টিভি ডিভাইস, ১০০% ব্লু-রে ডিস্ক প্লেয়ার … এই লিস্ট লম্বা হতেই থাকবে) জাভা রান করে। +সে সময় জাভাতে কাজ করে এমন লোকের সংখ্যা ত্রিশেরও কম। তারা কখনোই চিন্তা করে নি, তাদের এই টিম ভবিষ্যৎ পৃথিবীর প্রধানতম টেকনোলজি নির্ধারণ করতে যাচ্ছে। ২০০৪ সালের ৩ জানুয়ারী Mars Exploration Rover মঙ্গল গ্রহের মানটিতে পা রাখে যার কন্ট্রোল সিস্টেম থেকে শুরু করে পৃথিবীর অধিকাংশ কনজুমার ইলেকট্রনিক্স - (ক্যাবল সেট-টব বক্স, ভিসিআর, টোস্টার, পিডিএ, স্মার্টফোন) ৯৭% এন্টাপ্রাইজ ডেস্কটপ ৮৯% ডেস্কটপ অব ইউএসএ, ৩ বিলিওন মোবাইল ফোন, ৫ বিলিওন জাভা কার্ড, ১২৫ মিলিওন টিভি ডিভাইস, ১০০% ব্লু-রে ডিস্ক প্লেয়ার … এই লিস্ট লম্বা হতেই থাকবে) জাভা রান করে। নিচের ভিডিও টি চমৎকার। একবার দেখে নেওয়া যেতে পারে। @@ -13,19 +13,19 @@ তখন সি-প্লাস প্লাস এর একচ্ছত্রাধিপত্য। -সান মাইক্রাসিস্টেম- মূলত হার্ডওয়্যার কম্পানি। ১৯৭২ থেকে ১৯৯১ সালে কম্পিউটারের হার্ডওয়্যারের এক রিভ্যুলিশান হয়। দ্রুত এবং উচ্চ ক্ষমতা সম্পন্ন হার্ডওয়্যার অল্প দামে পাওয়া যাচ্ছে এবং সেই সাথে কমপ্লেক্স সফটওয়্যারের চাহিদা দ্রুতই বেড়ে যাচ্ছে। ১৯৭২ Dennis Ritchie সি প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করেন যা প্রোগ্রামারদের মধ্যে সব থেকে জনপ্রিয়। কিন্তু ততদিনে প্রোগ্রামারদের কাছে সি -এর স্ট্রাকচার্ড প্রোগ্রামিং কিছুটা ক্লান্তিকর মনে হতে শুরু করেছে। এর ফলশ্রুতিতে Bjarne Stroustrup 1979 সালে ডেভেলপ করে সি প্লাস প্লাস যা কিনা সি এর এন্হান্সেমেন্ট । এটি সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ধারণাকে পরিচিত করে তুলে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবিধে হচ্ছে প্রোগ্রামার পুনর্ব্যবহারযোগ্য(reusable) কোড লিখতে পারে যা কিনা পরে অন্য কাজে পুনারায় ব্যবহার করা যায়। +সান মাইক্রাসিস্টেম- মূলত হার্ডওয়্যার কম্পানি। ১৯৭২ থেকে ১৯৯১ সালে কম্পিউটারের হার্ডওয়্যারের এক রেভ্যুলেশান হয়। দ্রুত এবং উচ্চ ক্ষমতা সম্পন্ন হার্ডওয়্যার অল্প দামে পাওয়া যাচ্ছে এবং সেই সাথে কমপ্লেক্স সফটওয়্যারের চাহিদা দ্রুতই বেড়ে যাচ্ছে। ১৯৭২ Dennis Ritchie সি প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করেন যা প্রোগ্রামারদের মধ্যে সব থেকে জনপ্রিয়। কিন্তু ততদিনে প্রোগ্রামারদের কাছে সি -এর স্ট্রাকচার্ড প্রোগ্রামিং কিছুটা ক্লান্তিকর মনে হতে শুরু করেছে। এর ফলশ্রুতিতে Bjarne Stroustrup 1979 সালে ডেভেলপ করে সি প্লাস প্লাস যা কিনা সি এর এনহান্সমেন্ট । এটি সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ধারণাকে পরিচিত করে তুলে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবিধে হচ্ছে প্রোগ্রামার পুনর্ব্যবহারযোগ্য(reusable) কোড লিখতে পারে যা কিনা পরে অন্য কাজে পুনরায় ব্যবহার করা যায়। -১৯৯০ সাল। সান মাইক্রাসিস্টেম -এ সি প্লাস প্লাস এর আধিপাত্যে সি-তে লেখা টুল এবং এপিআই গুলো প্রায় অবস্যুলেট হতে শুরু করেছে। Patrick Naughton, ইন্জিনিয়ার অব সান মাইক্রাসিস্টেম, মোটামুটি হতাশ এবং এক ধরণের অকওয়্যার্ড পরিস্থিতির স্বীকার। ততদিনে স্টিভ জব অ্যাপল কম্পিউটার থেকে বিতাড়িত হয়ে NeXT Computer, Inc প্রতিষ্ঠা করে ফেলেছেন( যা কিনা সফটওয়্যার ইনড্রাস্টিতে বৈপ্লবিক পরিবর্তন আনতে যাচ্ছে এবং যার ফলশ্রতিতে তৈরি হয়েছে আজকের ম্যাক-ওস) এবং NeXTSTEP নামে একটি অপারেটিং সিস্টেম তৈরি করেন। এতে কিছু অসাধারণ ব্যপার ছিল যার মধ্যে অবজেক্ট ওরিয়েন্টেড এপ্লিক্যশান লেয়ার এর ধারণাটি ছিল অসাধারণ যাতে কিনা অবজেক্ট ধরে ধরে কাস্টমাইজ সফটওয়্যার তৈরি করে ফেলা যায়। Patrick Naughton ইতিমধ্যে NeXT এর দিকে যাওয়ার জন্য মনস্থির করে ফেলেছেন কিন্তু তখন একবার তাকে শেষ সুযোগ হিসেবে একটি অতি গোপন প্রজেক্টের অনুমোদন দেওয়া হয় যার কথা কেও জানতো না। কিছুদিন পরেই তার সাথে যুক্ত হয় James Gosling এবং Mike Sheridan । তখন এর নাম দেওয়া হয় _গ্রিন প্রজেক্ট_। সময়ের সাথে _গ্রিন প্রজেক্ট_ এর দন্তোদ্গম হয় এবং তারা কম্পিউটার ছাড়াও বিভিন্ন ডিভাই নিয়ে নার্চার করতে থাকে। +১৯৯০ সাল। সান মাইক্রাসিস্টেম -এ সি প্লাস প্লাস এর আধিপত্যে সি-তে লেখা টুল এবং এপিআই গুলো প্রায় অবস্যুলেট হতে শুরু করেছে। Patrick Naughton,ইঞ্জিনিয়ার অব সান মাইক্রাসিস্টেম, মোটামুটি হতাশ এবং এক ধরণের অকওয়্যার্ড পরিস্থিতির স্বীকার। ততদিনে স্টিভ জব অ্যাপল কম্পিউটার থেকে বিতাড়িত হয়ে NeXT Computer, Inc প্রতিষ্ঠা করে ফেলেছেন( যা কিনা সফটওয়্যার ইন্ডাস্ট্রিতে বৈপ্লবিক পরিবর্তন আনতে যাচ্ছে এবং যার ফলশ্রুতিতে তৈরি হয়েছে আজকের ম্যাক-ওস) এবং NeXTSTEP নামে একটি অপারেটিং সিস্টেম তৈরি করেন। এতে কিছু অসাধারণ ব্যাপার ছিল যার মধ্যে অবজেক্ট ওরিয়েন্টেড এপ্লিক্যশান লেয়ার এর ধারণাটি ছিল অসাধারণ যাতে কিনা অবজেক্ট ধরে ধরে কাস্টমাইজড সফটওয়্যার তৈরি করে ফেলা যায়। Patrick Naughton ইতিমধ্যে NeXT এর দিকে যাওয়ার জন্য মনস্থির করে ফেলেছেন কিন্তু তখন একবার তাকে শেষ সুযোগ হিসেবে একটি অতি গোপন প্রজেক্টের অনুমোদন দেওয়া হয় যার কথা কেউ জানতো না। কিছুদিন পরেই তার সাথে যুক্ত হয় James Gosling এবং Mike Sheridan । তখন এর নাম দেওয়া হয় _গ্রিন প্রজেক্ট_। সময়ের সাথে _গ্রিন প্রজেক্ট_ এর দন্তোদ্গম হয় এবং তারা কম্পিউটার ছাড়াও বিভিন্ন ডিভাইস নিয়ে নার্চার করতে থাকে। -এর মধ্যে ১৩ জন স্টাফ এই গ্রিন টিম ক্যালিফোর্নিয়ার মেনলো পার্কের সেন্ড হিল রোড এর একটি ছোট্ট অফিসে কাজ করতে থাকে। তাদের প্রধান উদ্দেশ্য সি প্লাস প্লাস এর একটি ভাল ভার্সন তৈরি করা যা কিনা হবে অনেক দ্রুতগামী এবং রেস্পন্সিভ। সেই সময়ে কম্পিউটার ছাড়াও কনজুমার ইলেকট্রনিক্স যেমন -পিডিএ, Cable-Set Top Box ইত্যাদির চাহিদা বেড়ে গেছে। একদল ইঞ্জিয়ার এক সাথে থাকলে যা হয়, তারা নানারকম জিনিস নিয়ে চিন্তা করতে থাকে, নানা রকম আইডিয়া তৈরি হয়, তা থেকে প্রোটোটাইপ তৈরি করতে থাকে। এর মধ্যে জেমস গসলিং তার সি প্লাস প্লাস এন্হান্সেমেন্ট চালিয়ে যেতে থাকেন। তিনি এর নাম দেন সি প্লাস প্লাস প্লাস প্লাস মাইনাস মাইনাস (C++ ++ - -) । এখানে বাড়তি ++ মানে হচ্ছে নতুন জিনিস যোগ করা এবং - - মানে হচ্ছে কিছু জিনিস ফেলে দেওয়া। জেমস গসলিং এর জানালা দিয়ে একটি ওক গাছ দেখা যায়। একদিন তিনি অফিস থেকে বের হয়ে ঐ গাছটির নিচে দাড়ান এবং সাথে সাথে C++ ++ - - নাম পরিবর্তন করার সিন্ধান্ত নেন এবং নতুন নাম দেন ওক। +এর মধ্যে ১৩ জন স্টাফ এই গ্রিন টিম ক্যালিফোর্নিয়ার মেনলো পার্কের সেন্ড হিল রোড এর একটি ছোট্ট অফিসে কাজ করতে থাকে। তাদের প্রধান উদ্দেশ্য সি প্লাস প্লাস এর একটি ভাল ভার্সন তৈরি করা যা কিনা হবে অনেক দ্রুতগামী এবং রেস্পন্সিভ। সেই সময়ে কম্পিউটার ছাড়াও কনজুমার ইলেকট্রনিক্স যেমন -পিডিএ, Cable-Set Top Box ইত্যাদির চাহিদা বেড়ে গেছে। একদল ইঞ্জিনিয়ার এক সাথে থাকলে যা হয়, তারা নানারকম জিনিস নিয়ে চিন্তা করতে থাকে, নানা রকম আইডিয়া তৈরি হয়, তা থেকে প্রোটোটাইপ তৈরি করতে থাকে। এর মধ্যে জেমস গসলিং তার সি প্লাস প্লাস এনহান্সমেন্ট চালিয়ে যেতে থাকেন। তিনি এর নাম দেন সি প্লাস প্লাস প্লাস প্লাস মাইনাস মাইনাস (C++ ++ - -) । এখানে বাড়তি ++ মানে হচ্ছে নতুন জিনিস যোগ করা এবং - - মানে হচ্ছে কিছু জিনিস ফেলে দেওয়া। জেমস গসলিং এর জানালা দিয়ে একটি ওক গাছ দেখা যায়। একদিন তিনি অফিস থেকে বের হয়ে ঐ গাছটির নিচে দাড়ান এবং সাথে সাথে C++ ++ - - নাম পরিবর্তন করার সিন্ধান্ত নেন এবং নতুন নাম দেন ওক। এর মধ্যে ইঞ্জিয়াররা মিলে এম্বেডেড সিস্টেম নিয়ে নার্চার করতে থাকা অবস্থায় নানা রকম সমস্যার সম্মুখীন হন। এম্বেডেড সিস্টেম এ মেমরি কম থাকে, প্রসেসিং পাওয়ার ও কম থাকে। এই সিস্টেমে সি++ (যা কিনা কম্পিউটার এর মতো বড় ফ্রুটিপ্রিন্টের হার্ডওয়্যারের জন্যে ডিজাইন করা) চালাতে গিয়ে তারা অদ্ভুত অদ্ভুত সমস্যার সম্মুখীন হতে থাকে। এইসব সমস্যার সমাধান করার জন্যে _গ্রিন টিম_ নানা রকম চিন্তা ভাবনা করতে থাকে। এই সময়ে মানুষ পিডিএ, Cable-Set Top Box গুলোর মরণদশা দেখতে শুরু করে। কারণ যদিও ওক নিয়ে যথেষ্ট এগিয়েছে কিন্তু এটি কোনভাবেই এদেরকে সাহায্য করতে পারছিল না। একমাত্র একটি অলৌকিক ঘটনায় পারে এই প্রজেক্ট সফল করতে। ঠিক তখনি সেই প্রতীক্ষিত প্রত্যাশা আলোর মুখ দেখে। জেমস জেমস গসলিং _আউট অব দ্যা বক্স_ একটা যুগান্তকারী ধারণা নিয়ে আসে। সেটি হলো ভার্চুয়াল মেশিন। অর্থাৎ আমরা একটাি কাল্পনিক মেশিনের জন্যে কোড লিখবো যা কিনা কম্পাইল হয়ে একটি অন্তর্বর্তীকালীন কোড তৈরি করবে। এবং জাভা ভার্চুয়াল মেশিন সেই অন্তর্বর্তীকালীন কোডকে রান টাইম-এ রিয়েল ডিভাইসের জন্যে প্রয়োজন অনুযায়ী মেশিন কোড তৈরি করবে। -ঠিক সেই সময়েই National Center for Supercomputing Applications (NCSA) একটি কমার্শিয়াল ওয়েব ব্রাওজার বের করে এবং তাদের টিম ইন্টারনেট এর ভবিষ্যৎ নিয়ে ভাবেতে শুরু করে। তারা একটি নতুন ধারণা নিয়ে আসে সেটি হলো, একধরণের ছোট্ট প্রোগ্রাম যা কিনা ব্রাওজার এর মধ্যে চলবে - এর নাম দেয় অ্যাপলেট। অ্যাপলেট ধারণা থেকে তারা ঠিক করে এপলেট এর জন্যে কিছু স্ট্যাডার্ড – এটি হতে হবে ছোট্ট, খুব সিম্পল, এর স্ট্যাডার্ড এপিআই থাকতে হবে, এটি হবে প্লাটফর্ম ইন্ডিপেন্ডেন্ট, এবং আউট-অব-দ্যা বক্স নেটওয়ার্কিং প্রোগ্রামিং করা যাবে। তারা তখনকার সময়ের ইন্টারনেট বুমকে উদ্দ্যেশ্য করে নেক্সট জেনারেশান প্রোডাক্ট ডেভেলপ করতে চেয়েছিল। এই প্রজেক্ট এর কার্টুন নাম ছিল Duke ( যা কিনা এখন জাভা-এর মাস্কট হিসেবে চিনি)। কিন্তু সমস্যা হচ্ছে এর কোনটিই ঠিক মতো সি++ দিয়ে করা যাচ্ছিল না। সুতরাং পরবর্তীতে তারা সিন্ধান্ত নেয় যে এমবেডেড সিস্টেমের সমস্যার সমাধানটি তারা ওয়েব ব্রাওজার এর ক্ষেত্রেও ব্যবহার করবে । সেই সময়ে মানুষ ওয়েব ব্রাওজার এর শুধুমাত্র স্টেটিক পেইজ এ টেক্সট আর ইমেজ ছাড়া কিছু দেখতে পেত না। এই টেকনোলী ব্যবহার করায় ব্রাওজারে এনিমেশান থেকে শুরু করে ইন্টাএকটিভ এপলেট সকলের নজর কাড়ে যা কিনা জাভা প্রোগ্রামিং ল্যাংগুয়েজ এর সফলতার মূল কারণ। +ঠিক সেই সময়েই National Center for Supercomputing Applications (NCSA) একটি কমার্শিয়াল ওয়েব ব্রাউজার বের করে এবং তাদের টিম ইন্টারনেট এর ভবিষ্যৎ নিয়ে ভাবতে শুরু করে। তারা একটি নতুন ধারণা নিয়ে আসে সেটি হলো, একধরণের ছোট্ট প্রোগ্রাম যা কিনা ব্রাউজার এর মধ্যে চলবে - এর নাম দেয় অ্যাপলেট। অ্যাপলেট ধারণা থেকে তারা ঠিক করে অ্যাপলেট এর জন্যে কিছু স্ট্যাডার্ড – এটি হতে হবে ছোট্ট, খুব সিম্পল, এর স্ট্যাডার্ড এপিআই থাকতে হবে, এটি হবে প্লাটফর্ম ইন্ডিপেন্ডেন্ট, এবং আউট-অব-দ্যা বক্স নেটওয়ার্কিং প্রোগ্রামিং করা যাবে। তারা তখনকার সময়ের ইন্টারনেট বুমকে উদ্দ্যেশ্য করে নেক্সট জেনারেশান প্রোডাক্ট ডেভেলপ করতে চেয়েছিল। এই প্রজেক্ট এর কার্টুন নাম ছিল Duke ( যা কিনা এখন জাভা-এর মাস্কট হিসেবে চিনি)। কিন্তু সমস্যা হচ্ছে এর কোনটিই ঠিক মতো সি++ দিয়ে করা যাচ্ছিল না। সুতরাং পরবর্তীতে তারা সিন্ধান্ত নেয় যে এমবেডেড সিস্টেমের সমস্যার সমাধানটি তারা ওয়েব ব্রাউজার এর ক্ষেত্রেও ব্যবহার করবে । সেই সময়ে মানুষ ওয়েব ব্রাউজার এর শুধুমাত্র স্ট্যাটিক পেইজ এ টেক্সট আর ইমেজ ছাড়া কিছু দেখতে পেত না। এই টেকনোলজি ব্যবহার করায় ব্রাউজার এনিমেশান থেকে শুরু করে ইন্টারেকটিভ অ্যাপলেট সকলের নজর কাড়ে যা কিনা জাভা প্রোগ্রামিং ল্যাংগুয়েজ এর সফলতার মূল কারণ। জেমস গসলিং এর এই ভার্চুয়াল মেশিন-এর সল্যুশান ছিল সত্যিকার অর্থেই যুগান্তকারী এবং `গ্রিন টিম` এর রিলিজ দিতে প্রস্তুত। কিন্তু তখন-ই নতুন ঝামেলার সূচনা হয়, lawyers এসে তাদের জানায় এর নাম Oak দেওয়া যাবে না, কারণ এটি ইতিমধ্যেই Oak Technologies এর ট্রেড মার্ক। সুতরাং নাম পরিবর্তন করতে হবে। শুরু হয় ব্রেইনস্টর্মিং । কিন্তু কোন ভাবেই একটি ভাল নাম নির্বাচন করা যাচ্ছিল না। অনেকেই অনেক ধরণের নাম উপস্থাপন করে, যেমন - DNA, Silk , Ruby, yuck, Silk, Lyric, Pepper, NetProse, Neon, Java ইত্যাদি ইত্যাদি। এর সব গুলো লিগাল ডিপার্টমেন্ট এ সাবমিট করার পর মাত্র Java, DNA, and Silk এই তিনটি নাম ফিরে আসে যা কিনা ক্লিন। নাম নিয়ে ঘণ্টার পর ঘণ্টার মিটিং চলতে থাকে। এর মধ্যে Chris Warth প্রপোজ করে Java, কারণ তখন তার হাতে ছিল এক কাপ গরম Peet's Java (কফি)। শেষ পর্যন্ত নাম ঠিক করা হয় Java কারণ একমাত্র এই নামেই সব থেকে পজিটিভ রিএকশান পাওয়া যাচ্ছিল। ‌১৯৯৫ সালের মে মাসে জাভা এর প্রথম পাবলিক ভার্সন রিলিজ হয়। -এর পরের ইতিহাস আমরা সবাই জানি। জাভা হচ্ছে এই গ্রহের সবচেয়ে সফল প্রোগ্রামিং ভাষা। \ No newline at end of file +এর পরের ইতিহাস আমরা সবাই জানি। জাভা হচ্ছে এই গ্রহের সবচেয়ে সফল প্রোগ্রামিং ভাষা। From b2a29108a9545e7f98c5182201b4cc134caec078 Mon Sep 17 00:00:00 2001 From: The Gitter Badger Date: Sun, 8 Mar 2015 20:08:44 +0000 Subject: [PATCH 085/150] Added Gitter badge --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 9006e5b..ec59e68 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ # জাভা প্রোগ্রামিং +[![Join the chat at https://gitter.im/howtocode-com-bd/java.howtocode.com.bd](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/howtocode-com-bd/java.howtocode.com.bd?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + From f87eaa4ee7f076801a01907beeed7c809ed83420 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Tue, 10 Mar 2015 15:33:49 +0600 Subject: [PATCH 086/150] Updated 5.2.md --- 5.2.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/5.2.md b/5.2.md index 4617e60..8598d8a 100644 --- a/5.2.md +++ b/5.2.md @@ -15,10 +15,8 @@ ``` এখন এর একটি অবজেক্ট তৈরি করতে চাইলে – আমাদের new অপারেটর ব্যবহার করে তা একটি ভেরিয়েবল এ রাখতে হবে। -‌ -‌ -```java‌ +```java‌ Liquid myFavoriteBeverage = new Liquid (); ``` @@ -46,9 +44,9 @@ এখানে আমাদের myFavoriteBeverage এই রেফারেন্স এ `Liquid`, `Coffee`, `Milk` এর যেকোন একটির অবজেক্ট হতে পারে। উদাহরণ - ‌ -‌ -```java‌ + +```java‌ public class Coffee extends Liquid { @Override public void swirl(boolean clockwise) { @@ -74,6 +72,7 @@ } ``` + আমরা এখানে একটি `CoffeeCup` ক্লাস লিখেছি যার মাঝে `addLiquid()` নামে একটি মেথড আছে যা কিনা একটি `Liquid` টাইপ parameter নেয়, এবং সেই `Liquid` এর `swirl()` মেথড-কে কল করে। কিন্তু আমরা আমাদের সত্যিকারের জগতে একটি কফি-কাপ এ শুধুমাত্র কফি-ই এড করতে পারি তা নয়, আমরা চাইলে যে কোন ধরণের লিকুইড এড করতে পারি, সেটি মিল্ক ও হতে পারে। তাহলে এই `addLiquid` মেথড তো শুধুমাত্র `Liquid` টাইপ parameter নেয়, তাহলে আমাদের সত্যিকারের জগতের সাথে এই প্রোগ্রামিং মডেল এর সাদৃশ্য থাকলো কোথায় ? From 80d1e233dbc5f9160000c39337ecd113b6987670 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 15 Mar 2015 04:35:07 +0600 Subject: [PATCH 087/150] Updated 6.md --- 6.md | 64 +++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 24 deletions(-) diff --git a/6.md b/6.md index 668dbc5..ff444d6 100644 --- a/6.md +++ b/6.md @@ -1,12 +1,5 @@ -# পাঠ ৬: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-২ - -* ইনহেরিট্যান্স -* পলিমরফিজম -* ইনকেপসুলেশান -* পাস বাই ভ্যালু, পাস বাই রেফারেন্স -* একটি সম্পূর্ণ কোড উদাহরণ -* সারসংক্ষেপ -* পাঠ ৭: এক্সেপশান হ্যান্ডেলিং +# পাঠ ৬: জাভা এক্সেপশান হ্যান্ডেলিং + * এক্সেপশান বেসিকস * ট্রাই ক্যাচ- ফাইনালি * চেকড-একসেপশান @@ -23,23 +16,46 @@ একটি উদাহরণ দেখা যাক- -‌‌‌‌‌````java +‌‌ +```java +public class Main { - public class Main { - - public static void main(String[] args) { - int a = 1; - int b = 0; - - int result = divide(a, b); - System.out.println("Result: " + result); - } - - public static int divide(int a, int b) { - return a / b; - } + public static void main(String[] args) { + int a = 1; + int b = 0; + + int result = divide(a, b); // ‌1 + System.out.println("Result: " + result); // 2 + } + + public static int divide(int a, int b) { + return a / b; } -```` +} + +``` + +১. এখানে `divide()` মেথডটিতে a এবং b আর্গুমেন্ট পাস করা হলে মেথডটি প্রথম আর্গুমেন্টকে দ্বিতীয় আর্গুমেন্ট দিয়ে ভাগ করে ফলাফল ‌`result` ভ্যারিয়েবল-টিতে এসাইন করবে। + +২. এখানে `result` এর মান প্রিন্ট করা হবে। + +আমরা যদি এই প্রোগ্রামটি রান করি তাহলে console এ নিচের আউটপুট-টি পাবো- + +```java +Exception in thread "main" java.lang.ArithmeticException: / by zero + at com.bazlur.exception.Main.divide(Main.java:18) + at com.bazlur.exception.Main.main(Main.java:13) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:483) + at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) +‌ +``` + +এই আউটপুট থেকে আমরা বুঝতে পারি যে, আমাদের প্রোগ্রামটি-তে এক ধরণের সমস্যা হয়েছে, আর তা হলো আমরা একটি সংখ্যাকে শূণ্য দিয়ে ভাগ করতে চেয়েছি। + + ```java From e38226d8a9218bb11877fdfcf32fb8daeb5f15f6 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 15 Mar 2015 05:02:06 +0600 Subject: [PATCH 088/150] Updated 6.md --- 6.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/6.md b/6.md index ff444d6..99da8b5 100644 --- a/6.md +++ b/6.md @@ -53,10 +53,10 @@ Exception in thread "main" java.lang.ArithmeticException: / by zero ‌ ``` -এই আউটপুট থেকে আমরা বুঝতে পারি যে, আমাদের প্রোগ্রামটি-তে এক ধরণের সমস্যা হয়েছে, আর তা হলো আমরা একটি সংখ্যাকে শূণ্য দিয়ে ভাগ করতে চেয়েছি। - +এই আউটপুট থেকে আমরা বুঝতে পারি যে, আমাদের প্রোগ্রামটি-তে একটি সমস্যা হয়েছে এবং প্রোগ্রামটি এখানেই থেমে গেছে, `System.out.println("Result: " + result); ` এই লাইনটি এক্সিকিউট হয় নি। +এবার আমরা নিচের প্রোগ্রামটি রান করি- ```java public class Main { @@ -82,6 +82,11 @@ public class Main { } ``` +এবার console এ নিচের আউটপুটটি দেখবো - + +> You can't divide 1 by 0 + +> Result: 0 From 61d009959706ceed4f78f3df4d782aaae7c33a09 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 15 Mar 2015 05:08:12 +0600 Subject: [PATCH 089/150] Updated 6.md From 4e9eb84e368681d83a6d159c7966555250501345 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 15 Mar 2015 05:08:58 +0600 Subject: [PATCH 090/150] Updated SUMMARY.md --- SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SUMMARY.md b/SUMMARY.md index 23c56a8..7bf9e3b 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -12,7 +12,7 @@ * [পাঠ ৫.১: ইনহেরিট্যান্স](5.1.md) * [পাঠ ৫.২: পলিফরফিজম](5.2.md) * [পাঠ ৫.৩: এনক্যাপসুলেশান](5.3.md) -* [পাঠ ৬: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-২](6.md) +* [পাঠ ৬: জাভা এক্সেপশান হ্যান্ডেলিং](6.md) * [পাঠ ৭: স্ট্রিং অপারেশান ](7.md) * [পাঠ ৮: জেনেরিকস](8.md) * [পাঠ ৯: জাভা আই/ও](9.md) From d313e991291539b8a463e7a7a349d994fa1d955a Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 15 Mar 2015 05:51:56 +0600 Subject: [PATCH 091/150] Updated 6.md --- 6.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/6.md b/6.md index 99da8b5..7efdf74 100644 --- a/6.md +++ b/6.md @@ -82,12 +82,21 @@ public class Main { } ``` -এবার console এ নিচের আউটপুটটি দেখবো - +এবার **console** এ নিচের আউটপুটটি দেখবো - > You can't divide 1 by 0 > Result: 0 +এবার লক্ষ্য করুন। প্রোগ্রামটি কিন্তু থেমে যাই নি, বরং শুণ্য দিয়ে যে কোন সংখ্যাকে ভাগ করা যাবে না, তার জন্য একটি মেসেস প্রিন্ট করেছে এবং শেষ পর্যন্ত প্রত্যেকটি লাইন এক্সিকিউট হয়েছে। + +এই প্রোগ্রামটিতে আমরা নতুন কিওয়ার্ড ব্যবহার করেছি, সেগুলো হলো- try, catch +এবং এগুলো দিয়ে আমাদের যে কোড ব্লকটিতে ইরর হওয়ার সম্ভবনা ছিল, সেই অংগটুকুকে wrap করেছি। এতে করে এই কোড ব্লক-এ যদি কোন ধরণের ইরর হয় তাহলে প্রোগ্রামটি catch ব্লক-এ চলে যায়, এবং এই ব্লক এর ইন্সট্রাকশন গুলো এক্সিকিউট করে এরপর নিচের কোড ব্লক এ চলে যায়। + +আর এই প্রক্রিয়াকে আমরা এক্সেপশন হ্যান্ডেলিং বলি, অর্থাৎ প্রোগ্রাম এর কোন অংশে যদি কোন ধরণের এক্সেপশন বা ইরর হয় তাহলে আমাদের প্রোগ্রামটি যাতে বন্ধ না হয় যায় বরং সেইসব অবস্থায় ইউজারকে যাতে করে অর্থপূর্ণ মেসেস দেওয়াকে এক্সেপশন হ্যান্ডেলিং বলে। + + + From 22f20b4f7101d912be8bff6304c4506a33913947 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 15 Mar 2015 06:12:19 +0600 Subject: [PATCH 092/150] Updated 6.md --- 6.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/6.md b/6.md index 7efdf74..a684403 100644 --- a/6.md +++ b/6.md @@ -95,6 +95,48 @@ public class Main { আর এই প্রক্রিয়াকে আমরা এক্সেপশন হ্যান্ডেলিং বলি, অর্থাৎ প্রোগ্রাম এর কোন অংশে যদি কোন ধরণের এক্সেপশন বা ইরর হয় তাহলে আমাদের প্রোগ্রামটি যাতে বন্ধ না হয় যায় বরং সেইসব অবস্থায় ইউজারকে যাতে করে অর্থপূর্ণ মেসেস দেওয়াকে এক্সেপশন হ্যান্ডেলিং বলে। +**The try Block** + +যদি কোন কোড ব্লক -এ যদি ইরর হওয়ার সম্ভবনা থাকে তাহলে আমরা সেই কেড ব্লক-কে `try` ব্লক দিয়ে ইনক্লােজ করতে হয়। +উদাহরণ- + +```java +try { + code +} +catch and finally blocks . . . + +``` +এই `try` ব্লক এর মাঝে এক বা একাধিক লাইন কোড থাকতে পারে। catch এবং finally ব্লক পরের সেকশনে দেখানো হবে। + +একটি উদাহরণ দেখা যাক- + +```java +private List list; + private static final int SIZE = 10; + + public void writeList() { + PrintWriter out = null; + try { + System.out.println("Entered try statement"); + out = new PrintWriter(new FileWriter("file.txt")); + for (int i = 0; i < SIZE; i++) { + out.write(i); + } + + } catch (IOException e) { + } + } + +``` +উপরের প্রোগ্রামটিতে একটি মেথড আছে - writeList() যা কিনা একটি ফাইল এ একটি লিস্ট থেকে ভ্যালু পড়ে তা রাইট করে। এই মেথড-টি তে একাধিক এক্সেপশান বা ইরর হতে পারে। যেমন - +`out = new PrintWriter(new FileWriter("file.txt"));` এই লাইনটিতে আমরা একটি ফাইল অপেন করার চেষ্টা করেছি। কিন্তু এই ফাইলটি সিস্টেমে নাও থাকতে পারে, কিংবা থাকলেও সেটি অপেন করা যাচ্ছে না ইত্যাদি। সেক্ষেত্রে আমাদরে সিস্টেম `IOException` থ্রু করবে এবং প্রোগ্রামটি বন্ধ হয়ে যাবে। এছাড়াও আমরা একটি ফর লুপ ব্যবহার করেছি, এক্ষেত্রে ফাইল এ রাইট করার সময়ও ইরর বা এক্সেপশন হতে পারে। তাই এইসব ইরর বা এক্সেপশন কে হ্যান্ডেল করার জন্যে আমরা কোড ব্লকটিকে `try` ব্লক এর ভেতরে রেখেছি। +এখন প্রোগ্রামটি চলার সময় যদি কোন ইরর বা একসেপশন হয় তাহলে প্রোগ্রাম এক্সিকিশান সেখান থেকেই `catch` ব্লক এ চলে যাবে। + + + + + From f286d7210815676f3e66e31866561cb552a219bf Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 15 Mar 2015 06:23:02 +0600 Subject: [PATCH 093/150] Updated 6.md --- 6.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/6.md b/6.md index a684403..e1deb4e 100644 --- a/6.md +++ b/6.md @@ -134,6 +134,27 @@ private List list; এখন প্রোগ্রামটি চলার সময় যদি কোন ইরর বা একসেপশন হয় তাহলে প্রোগ্রাম এক্সিকিশান সেখান থেকেই `catch` ব্লক এ চলে যাবে। +**The catch Blocks** + +try ব্লক এর সাথেই catch ব্লক লিখতে হয়। তবে আমরা একটি try ব্লকের সাথে একাধিক catch ব্লক লিখতে পারি। উদাহরণ- + +```java +try { + +} catch (ExceptionType name) { +// catch blog # 1 +} catch (ExceptionType name) { +// catch blog # 1 +} +``` +`catch` কিওয়ার্ড এর সাথে প্যারেন্থেসিস এর মাঝে আমরা আর্গুমেন্ট দিতে হয় যা কি টাইপ এক্সেপশন হ্যাল্ডেল করা হচ্ছে তা নির্দেশ করে। +এখানে ExceptionType একটি প্লেস হোল্ডার । এখানে যে কোন ক্লাস যা কিনা Throwable ক্লাস কে ইনহেরিট করে তা বসতে পারে। + +try ব্লক এর কোন কোড-এ যদি কোন এরর বা এক্সিসেপশন হয় তাহলে প্রেগ্রামের এক্সিকিউশান পয়েন্ট `catch` ব্লকে চলে আসে এবং শুধুমাত্র তখনি `catch` ব্লক এর কোড এক্সিকিউট হয়। + +যদি একাধিক `catch` ব্লক থাকে তাহলে এক্সেপশন এর টাইপ অনুযায়ী ‌`catch` ব্লক সিলেকটেড হয়। + + From ebd6bbbfd7a4a75df8900dc039306cc435af2acd Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 15 Mar 2015 06:25:36 +0600 Subject: [PATCH 094/150] Updated 6.md --- 6.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/6.md b/6.md index e1deb4e..62675e7 100644 --- a/6.md +++ b/6.md @@ -154,10 +154,17 @@ try ব্লক এর কোন কোড-এ যদি কোন এ যদি একাধিক `catch` ব্লক থাকে তাহলে এক্সেপশন এর টাইপ অনুযায়ী ‌`catch` ব্লক সিলেকটেড হয়। +‌‌ +```java +try { - - - +} catch (IndexOutOfBoundsException e) { + System.err.println("IndexOutOfBoundsException: " + e.getMessage()); +} catch (IOException e) { + System.err.println("Caught IOException: " + e.getMessage()); +} +``` +এখানে `try` ব্লকে যদি `IndexOutOfBoundsException` হয় তাহলে প্রথম `catch` ব্লকটি এক্সিকিউট হবে । আর যদি IOException হয় তাহলে পরের `catch` ব্লকটি এক্সিকিউট হবে। From cdc71190fada137e4548e344f369bad88be19299 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 15 Mar 2015 06:42:44 +0600 Subject: [PATCH 095/150] Updated 6.md --- 6.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/6.md b/6.md index 62675e7..b7784a8 100644 --- a/6.md +++ b/6.md @@ -166,6 +166,50 @@ try { ``` এখানে `try` ব্লকে যদি `IndexOutOfBoundsException` হয় তাহলে প্রথম `catch` ব্লকটি এক্সিকিউট হবে । আর যদি IOException হয় তাহলে পরের `catch` ব্লকটি এক্সিকিউট হবে। +জাভা ৭ এবং পরবর্তি ভার্সন গুলোর জন্যে একটি নতুন ফিচার আছে যাতে করে একটি `catch` ব্লক দিয়ে অনেকগুলো এক্সেপশন হ্যান্ডেল করা যায়। উহারহণ - + + +```java +catch (IOException|SQLException ex) { + logger.log(ex); +} +``` +এখানে catch ক্লজ-এ একাধিক এক্সেপশান একটি ভার্টিকেল বার (|) দিয়ে আলাদা করা হয়। + +**The finally Block** + +উপরের উদাহরণ গুলো থেকে দেখলাম যে , `try` ব্লক এর কোড -এ এক্সেসেপশন হলে শুধুমাত্র ‌`catch` ব্লকের কোড গুলো এক্সিকিউট হয়। তবে আমাদের এমন কোন সিচুয়েশন থাকতে পারে যখন আমরা চাই ইরর হোক বা না হোক, একটি কোড ব্লক আমরা সবসমই এক্সিকিউট করতে চাই , তাহলে আমরা finally ব্যবহার করি। + +```java +public void openFile() { + FileReader reader = null; + try { + reader = new FileReader("someFile"); + int i = 0; + while (i != -1) { + i = reader.read(); + System.out.println((char) i); + } + } catch (IOException e) { + //do something clever with the exception + } finally { + if (reader != null) { + try { + reader.close(); + } catch (IOException e) { + //do something clever with the exception + } + } + System.out.println("--- File End ---"); + } + } +``` +উপরের প্রোগ্রামটি তে আমরা একটি ফাইল অপেন করছি এবং কিছু কাজ করেছি। এজন্যে একটি FileReader ক্লাসের অবজেক্ট তৈরি করেছি। আমরা চাই এই FileReader অবজেক্টি কাজ শেষ হয়ে গেলে ক্লোজ করতে। এক্ষেত্রে আমরা finally ব্লক এ আমাদের একই ক্লোজিং এর কোডটি লিখেছি। এতে করে এই সুবিধা হচ্ছে যে, আমাদের এই ট্রাই ব্লক-এর কোড কাজ করুক আর না করুক, শেষে আমাদের FileReader এর অবজেক্টটি ক্লোজ হয়ে যাচ্ছে। + +অর্থাৎ আমরা শুধুমাত্রে তখনি ফাইনালী ব্লক ব্যবহার করি যখন আমরা নো ম্যাটার হুয়াট, একটি কোড ব্লক সবসময়ই এক্সিকউট করতে চাই। + + + From cbeec0e019093ecfdf4a96ad6c2f236489401ade Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 15 Mar 2015 06:46:40 +0600 Subject: [PATCH 096/150] Updated 6.md --- 6.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/6.md b/6.md index b7784a8..4f1b25d 100644 --- a/6.md +++ b/6.md @@ -207,6 +207,34 @@ public void openFile() { উপরের প্রোগ্রামটি তে আমরা একটি ফাইল অপেন করছি এবং কিছু কাজ করেছি। এজন্যে একটি FileReader ক্লাসের অবজেক্ট তৈরি করেছি। আমরা চাই এই FileReader অবজেক্টি কাজ শেষ হয়ে গেলে ক্লোজ করতে। এক্ষেত্রে আমরা finally ব্লক এ আমাদের একই ক্লোজিং এর কোডটি লিখেছি। এতে করে এই সুবিধা হচ্ছে যে, আমাদের এই ট্রাই ব্লক-এর কোড কাজ করুক আর না করুক, শেষে আমাদের FileReader এর অবজেক্টটি ক্লোজ হয়ে যাচ্ছে। অর্থাৎ আমরা শুধুমাত্রে তখনি ফাইনালী ব্লক ব্যবহার করি যখন আমরা নো ম্যাটার হুয়াট, একটি কোড ব্লক সবসময়ই এক্সিকউট করতে চাই। + + +**Checked or Unchecked Exceptions** + +জাভাতে দুই ধরণের এক্সেপশন আছে। চেক্ড এক্সেপশন এবং আনচেক্ড এক্সেপশান। এদের মধ্যে পার্থক্য হল- + + + + + + + + + + + + + + + + + + + + + + + From ef968980ab1529c5787445a5604cf13c619191db Mon Sep 17 00:00:00 2001 From: Nuhil Mehdy Date: Sun, 15 Mar 2015 22:36:06 +0600 Subject: [PATCH 097/150] =?UTF-8?q?=E0=A6=95=E0=A6=BF=E0=A6=9B=E0=A7=81=20?= =?UTF-8?q?=E0=A6=9C=E0=A6=BE=E0=A7=9F=E0=A6=97=E0=A6=BE=E0=A7=9F=20?= =?UTF-8?q?=E0=A6=B8=E0=A6=BE=E0=A6=A7=E0=A6=BE=E0=A6=B0=E0=A6=A3=20?= =?UTF-8?q?=E0=A6=9F=E0=A7=87=E0=A6=95=E0=A7=8D=E0=A6=B8=E0=A6=9F=20?= =?UTF-8?q?=E0=A6=97=E0=A7=81=E0=A6=B2=E0=A7=8B=20=E0=A6=95=E0=A7=8B?= =?UTF-8?q?=E0=A6=A1=20=E0=A6=AC=E0=A7=8D=E0=A6=B2=E0=A6=95=E0=A7=87?= =?UTF-8?q?=E0=A6=B0=20=E0=A6=AE=E0=A6=A7=E0=A7=8D=E0=A6=AF=E0=A7=87=20?= =?UTF-8?q?=E0=A6=9B=E0=A6=BF=E0=A6=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit যেমন, JDK ডাউনলোডের লিঙ্কটা লিঙ্ক না হয়ে কোড স্নিপেট এর মত ছিল। Save and close .bashrc file. এই কথাটাও কোডের হাইলাইটারের মধ্যে ছিল। এরকম --- 1.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/1.md b/1.md index 2730261..d1b39b5 100644 --- a/1.md +++ b/1.md @@ -84,44 +84,45 @@ - ধাপ ১: নিচের লিংক থেকে জাভা ডাউনলোড করে নিন। - [Oracle JDK 7 Download Link](http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html) +[Oracle JDK 7 Download Link](http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html) - ধাপ ২: এরপর টার্মিনাল থেকে যেখানে জাভা ডাউনলোড হয়েছে সেখানে যান- - cd ~/Download +```cd ~/Download``` - ধাপ ৩: এবার JDK ইনস্টল করি- - sudo tar -xzvf jdk-7u21-linux-i586.tar.gz --directory=/usr/local/ +```sudo tar -xzvf jdk-7u21-linux-i586.tar.gz --directory=/usr/local/``` - sudo ln -s /usr/local/[jdk_folder_name]/ /usr/local/jdk +```sudo ln -s /usr/local/[jdk_folder_name]/ /usr/local/jdk``` - jdk_folder_name - আপনার পছন্দমত একটি নাম দিন। +jdk_folder_name - আপনার পছন্দমত একটি নাম দিন। - ধাপ ৪: আবার টার্মিনালে ফিরে যান- .bashrc অপেন করুন। - sudo gedit .bashrc +```sudo gedit .bashrc``` - ধাপ ৫ : .bashrc ফাইল-এ নিচের লাইনটি এড করুন। - export JAVA_HOME=/usr/local/jdk +```export JAVA_HOME=/usr/local/jdk``` - Save and close .bashrc file. +Save and close .bashrc file. - ধাপ ৬: কম্পাইল .bashrc ফাইল - source .bashrc +```source .bashrc``` - ধাপ ৭: এবার পরীক্ষা করে দেখা যাক জাভা ইনস্টল হয়েছে কিনা। আবার টার্মিনাল ওপেন করুন এবং নিচের লাইনটি টাইপ করুন। - java -version +```java -version``` যদি সবকিছু ঠিকঠাক থাকে তাহলে আপনি নিচের তথ্য গুলো দেখতে পারবেন- +``` java version "1.7.0_65" Java(TM) SE Runtime Environment (build 1.7.0_65-b17) Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode) - +``` আর উইন্ডোজ মেশিনের ক্ষেত্রে এটি আরো সহজ। এর জন্যে শুধুমাত্র JDK টি ডাউনলোড করে ডাবল-ক্লিক করেই এটি ইনস্টল করা যাবে। From 760411970370c790671ea79a4ce2caea9c86d1ee Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Tue, 17 Mar 2015 08:24:39 +0600 Subject: [PATCH 098/150] Updated 6.md --- 6.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/6.md b/6.md index 4f1b25d..c57d693 100644 --- a/6.md +++ b/6.md @@ -211,7 +211,10 @@ public void openFile() { **Checked or Unchecked Exceptions** -জাভাতে দুই ধরণের এক্সেপশন আছে। চেক্ড এক্সেপশন এবং আনচেক্ড এক্সেপশান। এদের মধ্যে পার্থক্য হল- +জাভাতে সব এক্সেপশান গুলো Throwable ক্লাসকে ইনহেরিট করে তৈরি। অর্থাৎ এক্সেপশান হাইআরকি এর একদপ উপরে এই Throwable ক্লাস এর অব্স্থান। এর ঠিক নিচেই দুটি সাব ক্লাস হলে - Exception এবং অন্যটি হলো RuntimeException । এবং এই দুটি ক্লাস দুটি আলাদা শ্রেণীবিভাগের সূচনা করেছে। তবে এই শ্রেণীবিভাগের আরেকটি শাখা আছে, সেটি হলো - Error +তবে এগুলো প্রোগ্রাম চলাকালিন সময়ে সাধারণত ধরা হয় না। এগুলো মূলত জাভা রানটাইম সিস্টেম নিজে থেকে হ্যান্ডেল করে এবং এটি আমাদের এই বইয়ের আলোচনার বাইরে। + + From 6b056943363b23b8496324339d58cc958f499b35 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman" Date: Tue, 17 Mar 2015 08:39:51 +0600 Subject: [PATCH 099/150] Add Throwable.png --- images/Throwable.png | Bin 0 -> 7872 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/Throwable.png diff --git a/images/Throwable.png b/images/Throwable.png new file mode 100644 index 0000000000000000000000000000000000000000..d74b4447aceb8ee2b8ddfc69421904d06e6408be GIT binary patch literal 7872 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 Date: Tue, 17 Mar 2015 08:42:20 +0600 Subject: [PATCH 100/150] Updated 6.md --- 6.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6.md b/6.md index c57d693..e0e9a33 100644 --- a/6.md +++ b/6.md @@ -214,7 +214,7 @@ public void openFile() { জাভাতে সব এক্সেপশান গুলো Throwable ক্লাসকে ইনহেরিট করে তৈরি। অর্থাৎ এক্সেপশান হাইআরকি এর একদপ উপরে এই Throwable ক্লাস এর অব্স্থান। এর ঠিক নিচেই দুটি সাব ক্লাস হলে - Exception এবং অন্যটি হলো RuntimeException । এবং এই দুটি ক্লাস দুটি আলাদা শ্রেণীবিভাগের সূচনা করেছে। তবে এই শ্রেণীবিভাগের আরেকটি শাখা আছে, সেটি হলো - Error তবে এগুলো প্রোগ্রাম চলাকালিন সময়ে সাধারণত ধরা হয় না। এগুলো মূলত জাভা রানটাইম সিস্টেম নিজে থেকে হ্যান্ডেল করে এবং এটি আমাদের এই বইয়ের আলোচনার বাইরে। - +![Throwable](images/Throwable.png) From 23e2658d71c26e21ca34857a23a951568e834d22 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Tue, 17 Mar 2015 08:45:06 +0600 Subject: [PATCH 101/150] Updated 6.md From ef7bfab0cb2f0aa786457d084829548a69e300e1 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Tue, 17 Mar 2015 10:22:33 +0600 Subject: [PATCH 102/150] Updated 6.md --- 6.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/6.md b/6.md index e0e9a33..e8d56a5 100644 --- a/6.md +++ b/6.md @@ -218,11 +218,66 @@ public void openFile() { +```java +public class ExceptionDemo5 { + + public void fetchData(String url) { + try { + String data = fetchDataFromUrl(url); + } catch (CheckedException e) { + e.printStackTrace(); + } + } + + public String fetchDataFromUrl(String url) throws CheckedException { + if (url == null) { + throw new CheckedException("Url Not found"); + } + String data = null; + //read lots of data over HTTP and return + //it as a String instance. + return data; + } +} +``` +```java +public class ExceptionDemo6 { + public void fetchData(String url) { + String data = fetchDataFromUrl(url); + } + + public String fetchDataFromUrl(String url) { + if (url == null) { + throw new UncheckedException("Url Not found"); + } + String data = null; + //read lots of data over HTTP and return + //it as a String instance. + return data; + } +} +``` + +```java +public class CheckedException extends Exception { + public CheckedException(String message) { + super(message); + } +} +``` + +```java +public class UncheckedException extends RuntimeException { + public UncheckedException(String message) { + super(message); + } +} +``` From ceb0e101332a71a526dd5f6bcbc6f45642933b56 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 14 Jun 2015 03:26:38 +0600 Subject: [PATCH 103/150] Updated 9.md --- 9.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/9.md b/9.md index bcac51f..ea15567 100644 --- a/9.md +++ b/9.md @@ -13,3 +13,24 @@ * রাইটিং এ টেক্সট ফাইল * সারসংক্ষেপ +ইনপুট আউটপুট সংক্ষেপে যাকে আমারা বলি আই/ও (I/O) যে কোন কম্পিউটার সিস্টেম বা প্রোগ্রামিং ল্যাংগুজের একটি মৌলিক বিষয়। যে কোন প্রোগ্রাম লিখতে গেলেই আসলে আমাদের আই/ও দরকার হয়। তবে এই বিষয়টি ঠিক ততটা মজার না যতটা অন্যান্য বিষয় গুলো। খানিকটা ইলেক্ট্রিসিটিরর মতো। আমরা জানি প্রত্যেকটি বাড়িতেই এটি আছে, দরজা দিয়ে প্রবেশ করেই আমাদের হাত সুইচবোর্ডের দিকে চলে যায়, আমার সইচ টিপ দিই, এবং লাইট জ্বলে উঠে। এর পেছনের ব্যপারগুলো নিয়ে যেমন ইলেক্ট্রিসিটি কোথা থেকে এলো, কিভাবে কাজ করে এসব নিয়ে আমাদের চিন্তা করতে হয় না। এগুলো নেপথ্যে থেকে ঠিক ঠাক মতো কাজ করে। আই/ও অনেকটা এরকম। + +তবে একজন জাভা প্রোগ্রামার এর কাছে আই/ও অনেক গুলো কারণেই গুরুত্বপূর্ণ হতে পারে। জাভাতে অনেক গুলো আই/ও ক্লাস এর কোর এপিআই এর সাথেই থাকে যার বেশির ভাগ – java.io প্যাকেজ-এ। তবে জাভাতে অধিকাংশ ক্ষেত্রেই আই/ও দুই ভাগে ভাগ করা হয়েছে। একটি হলো বাইট ভিত্তিক আই/ও যা input stream এবং output stream দিয়ে হ্যান্ডেল করা হয়, এবং অন্যটি হলো ক্যারেকটার ভিত্তিক যা readers এবং writers দিয়ে হ্যান্ডেল করা হয়। তবে দুই টাইপ-এ অ্যাবস্ট্রাকশন সরবরাহ করে যা দিয়ে সোর্সের সঠিক টাইপ না জেনেও পড়তে বা লিখতে পারি। এতে করে আমরা একি মেথড দিয়ে কনসোল থেকে ডাটা পড়তে পারছি আবার সেই মেথড দিয়ে আমরা নেটওয়ার্ক কানেকশন থেকেও পড়তে পারছি। + +এতো গেলো টিপ অব দি আইসবার্গ। একবার আমরা অ্যাবস্ট্রাকশন এ অভ্যস্ত হয়ে গেলে যে কোন সোর্স থেকে ডাটা পড়তে পারবো, আমাদের আসলে খুব একটা কেয়ার করতে হবে না কিভাবে বা কোন সোর্স থেকে ডাটা আসছে বা যাচ্ছে। এখানে একটা গুরুত্বপূর্ণ কথা বলে রাখি, সেটা হলো, জাভা প্রোগ্রামারদের সব থেকে পছন্দের বিষয় হচ্ছে অ্যাবস্ট্রাকশন। + +অনেক ইন্ট্রোডাকশন হলো, এবার তাহলে আরো ভেতরে প্রবেশ করা যাক। + +শুরুতেই আমরা জেনে নিই, স্ট্রিম কি ? + +## স্ট্রিম + +স্ট্রিম হচ্ছে অনেকটা পানির ধারার মতো, একটি উৎস থেকে অবিরাম ভাবে প্রবাহ হচ্ছে এমন কিন্তু আমরা ঠিক ভাবে উৎসে কতটুকু পানি আছে জানি না। + +অর্থাৎ কনসেপচুয়ালি একটি অবিরাম ডাটা প্রবাহ। আমরা এই প্রবাহ থেকে ডাটা পড়তে বা লিখতে পারি। যে কোন স্ট্রিম একটি উৎস বা গন্তব্যস্থলের সাথে সংযুক্ত। স্ট্রিম দুই প্রকার হতে পারে- +1. বাইট স্ট্রিম +2. ক্যারেকটার স্ট্রিম। + + + + From efc47ca144987497288f9b04065f85c471c1350b Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 14 Jun 2015 03:43:02 +0600 Subject: [PATCH 104/150] Updated 9.md --- 9.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/9.md b/9.md index ea15567..13bd195 100644 --- a/9.md +++ b/9.md @@ -17,7 +17,7 @@ তবে একজন জাভা প্রোগ্রামার এর কাছে আই/ও অনেক গুলো কারণেই গুরুত্বপূর্ণ হতে পারে। জাভাতে অনেক গুলো আই/ও ক্লাস এর কোর এপিআই এর সাথেই থাকে যার বেশির ভাগ – java.io প্যাকেজ-এ। তবে জাভাতে অধিকাংশ ক্ষেত্রেই আই/ও দুই ভাগে ভাগ করা হয়েছে। একটি হলো বাইট ভিত্তিক আই/ও যা input stream এবং output stream দিয়ে হ্যান্ডেল করা হয়, এবং অন্যটি হলো ক্যারেকটার ভিত্তিক যা readers এবং writers দিয়ে হ্যান্ডেল করা হয়। তবে দুই টাইপ-এ অ্যাবস্ট্রাকশন সরবরাহ করে যা দিয়ে সোর্সের সঠিক টাইপ না জেনেও পড়তে বা লিখতে পারি। এতে করে আমরা একি মেথড দিয়ে কনসোল থেকে ডাটা পড়তে পারছি আবার সেই মেথড দিয়ে আমরা নেটওয়ার্ক কানেকশন থেকেও পড়তে পারছি। -এতো গেলো টিপ অব দি আইসবার্গ। একবার আমরা অ্যাবস্ট্রাকশন এ অভ্যস্ত হয়ে গেলে যে কোন সোর্স থেকে ডাটা পড়তে পারবো, আমাদের আসলে খুব একটা কেয়ার করতে হবে না কিভাবে বা কোন সোর্স থেকে ডাটা আসছে বা যাচ্ছে। এখানে একটা গুরুত্বপূর্ণ কথা বলে রাখি, সেটা হলো, জাভা প্রোগ্রামারদের সব থেকে পছন্দের বিষয় হচ্ছে অ্যাবস্ট্রাকশন। +এতো হল টিপ অব দি আইসবার্গ। একবার আমরা অ্যাবস্ট্রাকশন এ অভ্যস্ত হয়ে গেলে যে কোন সোর্স থেকে ডাটা পড়তে পারবো, আমাদের আসলে খুব একটা কেয়ার করতে হবে না কিভাবে বা কোন সোর্স থেকে ডাটা আসছে বা যাচ্ছে। এখানে একটা গুরুত্বপূর্ণ কথা বলে রাখি, সেটা হলো, জাভা প্রোগ্রামারদের সব থেকে পছন্দের বিষয় হচ্ছে অ্যাবস্ট্রাকশন। অনেক ইন্ট্রোডাকশন হলো, এবার তাহলে আরো ভেতরে প্রবেশ করা যাক। @@ -25,12 +25,15 @@ ## স্ট্রিম -স্ট্রিম হচ্ছে অনেকটা পানির ধারার মতো, একটি উৎস থেকে অবিরাম ভাবে প্রবাহ হচ্ছে এমন কিন্তু আমরা ঠিক ভাবে উৎসে কতটুকু পানি আছে জানি না। +স্ট্রিম হচ্ছে অনেকটা পানির ধারার মতো, একটি উৎস থেকে অবিরাম ভাবে প্রবাহ হচ্ছে এমন কিন্তু আমরা ঠিক ভাবে উৎসে কতটুকু পানি আছে জানি না। অর্থাৎ কনসেপচুয়ালি একটি অবিরাম ডাটা প্রবাহ। আমরা এই প্রবাহ থেকে ডাটা পড়তে বা লিখতে পারি। যে কোন স্ট্রিম একটি উৎস বা গন্তব্যস্থলের সাথে সংযুক্ত। -অর্থাৎ কনসেপচুয়ালি একটি অবিরাম ডাটা প্রবাহ। আমরা এই প্রবাহ থেকে ডাটা পড়তে বা লিখতে পারি। যে কোন স্ট্রিম একটি উৎস বা গন্তব্যস্থলের সাথে সংযুক্ত। স্ট্রিম দুই প্রকার হতে পারে- +স্ট্রিম দুই প্রকার হতে পারে- 1. বাইট স্ট্রিম 2. ক্যারেকটার স্ট্রিম। +## বাইট স্ট্রিম + + From 9b1018e7ce0dc5441d533ac7e748b9e32fcb91a1 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 14 Jun 2015 04:21:48 +0600 Subject: [PATCH 105/150] Updated 9.md --- 9.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/9.md b/9.md index 13bd195..992b0dd 100644 --- a/9.md +++ b/9.md @@ -34,6 +34,11 @@ ## বাইট স্ট্রিম +বাইট ভিত্তিক আই/ও নিয়ে কাজ করার জন্যে বাইট স্ট্রিম-এ বেশ সমৃদ্ধ ক্লাস আছে। সাধারণত বাইট স্ট্রিম যে কোন টাইপ অবজেক্ট ( যেমন বাইনারী ডাটা) তে ব্যবহার করা যায়। +সব বাইট স্ট্রিম এর ক্লাস গুলো InputStream এবং OutputStream এর সাব ক্লাস। যদিও আরও অনেক বাইট স্ট্রিম ক্লাস আছে, কিন্তু যেহেতু এই দুটি ক্লাস সবার উপরে, আমরা শুরুতেই এই দুটি ক্লাস নিয়েই কথা বলবো। + + + From 89cbe7da7f262c4c0180bc5199422a4f92ceb18c Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 14 Jun 2015 05:02:31 +0600 Subject: [PATCH 106/150] Updated 9.md --- 9.md | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/9.md b/9.md index 992b0dd..2d5c585 100644 --- a/9.md +++ b/9.md @@ -39,6 +39,76 @@ + java.io.InputStream এটি একটি অ্যাবস্ট্রাক্ট ক্লাস এবং সকল ইনপুট স্ট্রিম এর সুপার ক্লাস। এতে তিনটি বেসিক মেথড আছে যা কিনা কিভাবে ডাটা স্ট্রিম থেকে পড়তে হয় তা নিয়ে ডিল করে। এছাড়াও স্ট্রিম ক্লোস করা, ফ্লাস করা, এবং কতগুলো বাইট আরও পড়তে হবে ইত্যাদি নিয়ে কিছু মেথড আছে। এগুলো নিয়ে একটি ডিটেইল ব্যাংখ্যা করা যাক। +read() মেথড: + +```java +public abstract int read() throws IOException +``` + +এই মেথডটি ১ বাইট unsigned ডাটা পড়ে এবং এর ইন্টিজার ভ্যালু রিটার্ন করে যা কি না ০ থেকে 255 এর মধ্যে । যদি কোন বাইট না পাওয়া যায় তাহলে এটি -‌1 রিটার্ন করে এবং এতে করে আমরা বুঝতে পারি স্ট্রিম এর ডাটা শেষ হয় গেছে। আমরা একটি উদহারণ দেখি। + +যেহেতু ইনপুট স্ট্রিম একটি অ্যাবস্ট্রাক্ট ক্লাস এবং এর বেশ কিছু সাব ক্লাস আছে, উদাহরণ দেওয়ার সুবিধার্থে আমরা একটি ফাইল ইনপুট স্ট্রিম ব্যবহার করি যা কিনা কোন একটি লোকেশানে রাখা একটি টেক্সট ফাইল পড়তে পারবে । + +প্রথমে আমরা একটি টেক্টট ফাইল তৈরি করে কোন একটি লোকেশানে রাখি। সাধারণত প্রজেক্ট এর একটি ফোল্টার তৈরি করে তাতেও রাখা যেতে পারে। + +এর পর এই ফাইল এ যে কোন একটি স্ট্রিং লিখি। এখানে আমার ফাইল এর নাম input.txt এতে নিচের লাইটি লিখেছি - +`The quick brown fox jumps over the lazy dog.` + +এবার নিচের কোডটি রান করি। + +```java +package com.company; + +import java.io.FileInputStream; +import java.io.IOException; + +public class Main { + + public static void main(String[] args) { + FileInputStream in = null; + + try { + in = new FileInputStream("input.txt"); + int c; + + while ((c = in.read()) != -1) { + System.out.print(c + ","); + } + + } catch (IOException e) { + System.err.println("Could not read file"); + } finally { + if (in != null) { + try { + in.close(); + } catch (IOException e1) { + System.err.println("Could close input stream"); + } + } + } + } +} +``` + + +উপরের কোডটি যদি রান করি তাহলে কনসোলে আমরা নিচের আউটপুটটি দেখতে পাবো- +``` +84,104,101,32,113,117,105,99,107,32,98,114,111,119,110,32,102,111,120,32,106,117,109,112,115,32,111,118,101,114,32,116,104,101,32,108,97,122,121,32,100,111,103,46, +``` + +এর কারণ হচ্ছে `read()` মেথডটি এক সাথে একটি বাইট পড়ে এবং এর ইন্টিজার রিপ্রেজেন্টেশান রিটার্ণ করে। আমরা যদি একে ঠিক আমাদের `input.txt` এর স্ট্রিং এর মতো করে প্রিণ্ট করতে চাই তাহলে ইন্টিজারকে ক্যারেকটার এ কাস্ট করতে হবে। + +```java +System.out.print((char)c); +``` + + + + + + + From 5b075f067092318a84c1842e55c199cee23fa393 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 14 Jun 2015 05:11:01 +0600 Subject: [PATCH 107/150] Updated 9.md --- 9.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/9.md b/9.md index 2d5c585..0055197 100644 --- a/9.md +++ b/9.md @@ -91,8 +91,13 @@ public class Main { } ``` +আমরা এখানে শুরুতে একটি FileInputStream ক্লাস এর ইনস্টেন্স ক্রিয়েট করেছি তারপর আর্গুমেন্ট হিসেবে আমাদের টেক্সট ফাইলটির লোকেশান দিয়েছি। +তারপর একটা int c ডিক্লেয়ার করেছি । +এর হুয়াইল লুপটিতে আমারা প্রতিবার একটি করে বাইট রিড করে c তে এসাইন করছি এবং তা প্রিন্ট আউট করছি। এই লুপটি ততক্ষণ পর্যন্ত চলবে যতক্ষণ পর্যন্ত `read()` মেথডটি` -1` রিটার্ণ না করে। ফাইল টি পড়া শেষ হয়ে গেলে এটি -1 রিরার্ণ করবে। +কোডটি একটি ট্রাই ক্যাচ ব্লক এর মধ্যে কারণ আমার জানি যে আই/ও আছে খুব লো লেভেল থেকে কাজ করে । এর মাঝে কোন একটি সমস্য হতেই পারে এবং তা হলে জাবা `IOException` থ্রু করবে এবং তা যাতে আমরা হ্যান্ডেল করতে পারি। +এছাড়াও একটি ফাইনালি ব্লক আছে যেখানে আমরা স্ট্রিমটি বন্ধ করেছি। আমাদের খেয়াল রাখতে হবে যে, যখনি একটি স্ট্রিম এর কাজ শেষ হয়ে যাবে তখনি তা বন্ধ করে দিতে হবে। এটি অনেকটা আমাদের ওয়াশরুমের পানির টেপ এর মতো। কাজ শেষ হলে আমরা অফ করে দিই যাতে করে রিসোর্স নষ্ট না হয়। -উপরের কোডটি যদি রান করি তাহলে কনসোলে আমরা নিচের আউটপুটটি দেখতে পাবো- +এখন উপরের কোডটি যদি রান করি তাহলে কনসোলে আমরা নিচের আউটপুটটি দেখতে পাবো- ``` 84,104,101,32,113,117,105,99,107,32,98,114,111,119,110,32,102,111,120,32,106,117,109,112,115,32,111,118,101,114,32,116,104,101,32,108,97,122,121,32,100,111,103,46, ``` From be69ccf93dc5bbc2e8243bef5ccb437a34948ded Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 14 Jun 2015 05:12:09 +0600 Subject: [PATCH 108/150] Updated 9.md --- 9.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/9.md b/9.md index 0055197..6620cbb 100644 --- a/9.md +++ b/9.md @@ -112,8 +112,7 @@ System.out.print((char)c); - - +## চলবে .... From 7418da76e9842cf892a8783309303ec40edd1240 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sun, 14 Jun 2015 18:37:57 +0600 Subject: [PATCH 109/150] Updated 9.md --- 9.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/9.md b/9.md index 6620cbb..db27c19 100644 --- a/9.md +++ b/9.md @@ -91,9 +91,9 @@ public class Main { } ``` -আমরা এখানে শুরুতে একটি FileInputStream ক্লাস এর ইনস্টেন্স ক্রিয়েট করেছি তারপর আর্গুমেন্ট হিসেবে আমাদের টেক্সট ফাইলটির লোকেশান দিয়েছি। -তারপর একটা int c ডিক্লেয়ার করেছি । -এর হুয়াইল লুপটিতে আমারা প্রতিবার একটি করে বাইট রিড করে c তে এসাইন করছি এবং তা প্রিন্ট আউট করছি। এই লুপটি ততক্ষণ পর্যন্ত চলবে যতক্ষণ পর্যন্ত `read()` মেথডটি` -1` রিটার্ণ না করে। ফাইল টি পড়া শেষ হয়ে গেলে এটি -1 রিরার্ণ করবে। +আমরা এখানে শুরুতে একটি `FileInputStream` ক্লাস এর ইনস্টেন্স ক্রিয়েট করেছি তারপর আর্গুমেন্ট হিসেবে আমাদের টেক্সট ফাইলটির লোকেশান দিয়েছি। +তারপর একটা `int c` ডিক্লেয়ার করেছি । +এর হুয়াইল লুপটিতে আমারা প্রতিবার একটি করে বাইট রিড করে `c` তে এসাইন করছি এবং তা প্রিন্ট আউট করছি। এই লুপটি ততক্ষণ পর্যন্ত চলবে যতক্ষণ পর্যন্ত `read()` মেথডটি` -1` রিটার্ণ না করে। ফাইল টি পড়া শেষ হয়ে গেলে এটি `-1` রিরার্ণ করবে। কোডটি একটি ট্রাই ক্যাচ ব্লক এর মধ্যে কারণ আমার জানি যে আই/ও আছে খুব লো লেভেল থেকে কাজ করে । এর মাঝে কোন একটি সমস্য হতেই পারে এবং তা হলে জাবা `IOException` থ্রু করবে এবং তা যাতে আমরা হ্যান্ডেল করতে পারি। এছাড়াও একটি ফাইনালি ব্লক আছে যেখানে আমরা স্ট্রিমটি বন্ধ করেছি। আমাদের খেয়াল রাখতে হবে যে, যখনি একটি স্ট্রিম এর কাজ শেষ হয়ে যাবে তখনি তা বন্ধ করে দিতে হবে। এটি অনেকটা আমাদের ওয়াশরুমের পানির টেপ এর মতো। কাজ শেষ হলে আমরা অফ করে দিই যাতে করে রিসোর্স নষ্ট না হয়। @@ -112,7 +112,4 @@ System.out.print((char)c); -## চলবে .... - - - +## চলবে .... From d34f746a0f76f79533b1e6425fbf9fb2f66a85bc Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Fri, 19 Jun 2015 21:33:28 +0600 Subject: [PATCH 110/150] Created exercises.md --- exercises.md | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 exercises.md diff --git a/exercises.md b/exercises.md new file mode 100644 index 0000000..f0c205a --- /dev/null +++ b/exercises.md @@ -0,0 +1,74 @@ +## অনুশীলন # ১ + +Design a class named Point which will model a 2D point with `X` and `Y` coordinates. + +1. Two instance variable variables `X` (`int`) and `X` (`int`) +2. A "_no-argument_" (or "_no-arg_") constructor that construct a point at `(0, 0)`. +3. A constructor that constructs a point with the given `x` and `y` coordinates. +4. Getter and setter for the instance variables `x` and y. +5. A method `setXY()` to set both x and y. +6. A `toString()` method that returns a string description of the instance in the format `"(x, +y)"`. +7. A method called `distance(int x, int y)` that returns the distance from this point to +another point at the given `(x, y)` coordinates. +8. An overloaded `distance(Point another)` that returns the distance from this point to +the given `Point` instance another. + +For example - +```java +package bd.com.howtocode.java; + +/** + * @author Bazlur Rahman Rokon + * @date 6/19/15. + */ + +public class Point { + private int x; + private int y; + + public Point() { + x = 0; + y = 0; + } + + public Point(int x, int y) { + this.x = x; + this.y = y; + } + + public int getX() { + return x; + } + + public void setX(int x) { + this.x = x; + } + + public int getY() { + return y; + } + + public void setY(int y) { + this.y = y; + } + + public double distance(int x, int y) { + int xDiff = this.x - x; + int yDiff = this.y - y; + return Math.sqrt(xDiff * xDiff + yDiff * yDiff); + } + + public double distance(Point p2) { + return distance(p2.getX(), p2.getY()); + } + + @Override + public String toString() { + return "(" + x + ", " + ")"; + } +} +``` + +Now write a program that allocates 10 points in an array of `Point`, and initializes to (1, 1), (2, +2), ... (10, 10). \ No newline at end of file From c726f20e47aa77bef80832c8e775f53c340f225e Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Fri, 19 Jun 2015 21:34:27 +0600 Subject: [PATCH 111/150] Updated SUMMARY.md --- SUMMARY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SUMMARY.md b/SUMMARY.md index 7bf9e3b..0acb173 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -28,4 +28,4 @@ * [পাঠ ১৯: ক্লাস ফাইল এবং বাইটকোড](19.md) * [পাঠ ২০: Understanding performance tuning](20.md) * [পাঠ ২১: মডার্ন জাভা ইউজেস](21.md) - +* [অনুশীলন](exercises.md) From bad6d701808befcd67312aae7652bd172b5a05aa Mon Sep 17 00:00:00 2001 From: Nuhil Mehdy Date: Sun, 20 Dec 2015 17:15:08 -0600 Subject: [PATCH 112/150] Like box updated --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ec59e68..8f765c0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + [কোর্স এর মুল পাতা](http://java.howtocode.com.bd/) | [HowToCode মুল সাইট](http://www.howtocode.com.bd/) | [সবার জন্য প্রোগ্রামিং ব্লগ](http://blog.howtocode.com.bd/) | [পিডিএফ ডাউনলোড](https://www.gitbook.com/download/pdf/book/howtocode-com-bd/-java) From 376bce468f8db1e804576f59e82431add017e4cd Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Fri, 19 Feb 2016 22:22:35 +0600 Subject: [PATCH 113/150] Created 6.1.md --- 6.1.md | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 6.1.md diff --git a/6.1.md b/6.1.md new file mode 100644 index 0000000..f98cf21 --- /dev/null +++ b/6.1.md @@ -0,0 +1,91 @@ +##এক্সেপশান হ্যান্ডেলিং: চলুন আরও একটু গভীরভাবে পর্যবেক্ষণ করি + +আমরা ইতিমধ্যে জেনে ফেলেছি যে, একটা সিস্টেম এ নানা রকম সমস্যা হতে পারে। একটি প্রোগ্রাম চলতে গিয়ে হঠাৎ করে থেমে যেতে পারে কিংবা ক্র্যাশ করতে পারে। কিন্তু আমরা যখন একটি প্রোগ্রাম লিখি, আমরা অবশ্যই চাই প্রোগ্রামটি ভাল ভাবে চলুক কোন রকম সমস্যা ছাড়ায়। কিন্তু সমস্যা হতেই পারে এবং এর জন্যে আমাদের প্রস্তুত হয়ে থাকাটা জরুরী। + +শুরুতে একটি টার্ম সম্পর্কে পরিচয় করিয়ে দিই - Fault-tolerant + +ফল্ট টলারেন্ট যার বাংলা হতে পারে সমস্যা সহিষ্ণু। আমরা যেহেতু জানি যে আমাদের প্রোগ্রাম-এ সমস্যা হতে পারে, এবং আমরা চাই যে সখন সমস্যাটি হবে- তখনও প্রোগ্রামটি বন্ধ না হয়ে অন্য কোন ভাবে চলতে থাকে। আমরা যদি এমন ভাবে প্রোগ্রামটি লিখতে পারি তাহলে সেই প্রোগ্রামকে ফল্ট টলারেন্ট প্রোগ্রাম লিখবো। + +মনে করা যাক – আমাদের দেশে একটা সময় প্রতি ঘণ্টায় একবার করে চলে পাওয়ার যেত। এখন যদি কোন সিস্টেম তৈরি করি যা পাওয়ার এর উপর নির্ভরশীল, তাহলে যাখন পাওয়ার থাকবে না, তখন সিস্টিমটি কাজ করবে না। এজন্যে আমরা বিকল্প ব্যবস্থা হিসেবে জেনারেটর রাখতে পারি, যাতে করে যখন মেইন পাওয়ার লাইন থাকবে না, তখন জেনারেটরের মাধ্যমে আমাদের সিস্টেমটি চলতে থাকবে। এই সিস্টেমটিকে আমরা তখন ফল্ট টলারেন্ট সিস্টেম বলবো। + +তো আমাদের এই টপিক এর উদ্দেশ্য হচ্ছে আমরা কিভাবে ফল্ট টলারেন্ট জাভা প্রোগ্রাম লিখতে পারি। + +শুরুতে আমরা একটি প্রোগ্রাম দেখি যাতে একসেপশান হ্যান্ডেলিং ব্যবহার করা হয় নি। + +নিচের প্রোগ্রামটি আপানর রান করুন- + +```java +public class DivideByZeroNoExceptionHandling { + public static int divide(int a, int b) { + return a / b; + } + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + System.out.println("Please enter an integer: "); + int a = scanner.nextInt(); + System.out.println("Please enter another integer: "); + int b = scanner.nextInt(); + + int result = divide(a, b); + + System.out.println(String.format("Result: %d/%d = %d", a, b, result)); + } + +} +``` + +**Take 1** +``` +Please enter an integer: +100 +Please enter another integer: +45 +Result: 100/45 = 2 +``` + +**Take# 2** + +``` +Please enter an integer: +100 +Please enter another integer: +0 +Exception in thread "main" java.lang.ArithmeticException: / by zero + at com.bazlur.tips.DivideByZeroNoExceptionHandling.divide(DivideByZeroNoExceptionHandling.java:11) + at com.bazlur.tips.DivideByZeroNoExceptionHandling.main(DivideByZeroNoExceptionHandling.java:22) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) +```` + +**Take # 3** + +``` +Please enter an integer: +100 +Please enter another integer: +bazlur +Exception in thread "main" java.util.InputMismatchException + at java.util.Scanner.throwFor(Scanner.java:864) + at java.util.Scanner.next(Scanner.java:1485) + at java.util.Scanner.nextInt(Scanner.java:2117) + at java.util.Scanner.nextInt(Scanner.java:2076) + at com.bazlur.tips.DivideByZeroNoExceptionHandling.main(DivideByZeroNoExceptionHandling.java:20) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) +```` + + +- Take #1 এ প্রোগ্রামটি খুব ভাল ভাবে রান করছে। +- Take #2 তে ইনপুট হিসেবে শূণ্য দেওয়াতে আমাদের প্রোগ্রামটি ঠিকভাবে কাজ করেনি বরং অনেকগুলো লাইন প্রিন্ট করেছে। +- Take #3 তে ইনপুন হিসেবে ইন্টিজার এর পরিবর্তে স্ট্রিং দেওয়ায় প্রোগ্রামটি কাজ করে নি, বরং অনেকগুলো লাইন প্রিন্ট করেছে যা কিনা বলছে ইনপুটি সঠিক হয় নি। +এই লাইনগুলোর + + From 16acb74a7ec9a447dcd80977ad747806dcdfcd91 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Fri, 19 Feb 2016 23:13:42 +0600 Subject: [PATCH 114/150] Updated SUMMARY.md --- SUMMARY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/SUMMARY.md b/SUMMARY.md index 0acb173..6b84485 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -13,6 +13,7 @@ * [পাঠ ৫.২: পলিফরফিজম](5.2.md) * [পাঠ ৫.৩: এনক্যাপসুলেশান](5.3.md) * [পাঠ ৬: জাভা এক্সেপশান হ্যান্ডেলিং](6.md) +* [পাঠ ৬.১: ক্লোজার লুক](6.1.md) * [পাঠ ৭: স্ট্রিং অপারেশান ](7.md) * [পাঠ ৮: জেনেরিকস](8.md) * [পাঠ ৯: জাভা আই/ও](9.md) From a67570ac671f0d33c38b0e8a87eb468740c10ae9 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Sat, 20 Feb 2016 02:11:54 +0600 Subject: [PATCH 115/150] Updated 6.1.md --- 6.1.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/6.1.md b/6.1.md index f98cf21..3606eb9 100644 --- a/6.1.md +++ b/6.1.md @@ -12,7 +12,7 @@ শুরুতে আমরা একটি প্রোগ্রাম দেখি যাতে একসেপশান হ্যান্ডেলিং ব্যবহার করা হয় নি। -নিচের প্রোগ্রামটি আপানর রান করুন- +নিচের প্রোগ্রামটি রান করুন- ```java public class DivideByZeroNoExceptionHandling { @@ -86,6 +86,4 @@ Exception in thread "main" java.util.InputMismatchException - Take #1 এ প্রোগ্রামটি খুব ভাল ভাবে রান করছে। - Take #2 তে ইনপুট হিসেবে শূণ্য দেওয়াতে আমাদের প্রোগ্রামটি ঠিকভাবে কাজ করেনি বরং অনেকগুলো লাইন প্রিন্ট করেছে। - Take #3 তে ইনপুন হিসেবে ইন্টিজার এর পরিবর্তে স্ট্রিং দেওয়ায় প্রোগ্রামটি কাজ করে নি, বরং অনেকগুলো লাইন প্রিন্ট করেছে যা কিনা বলছে ইনপুটি সঠিক হয় নি। -এই লাইনগুলোর - - +এই লাইনগুলোর From b52badbbbfb400cb43213b2f76f3ab7b3460abc0 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Mon, 20 Jun 2016 00:38:23 +0600 Subject: [PATCH 116/150] Updated 9.md --- 9.md | 568 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 498 insertions(+), 70 deletions(-) diff --git a/9.md b/9.md index db27c19..752d63b 100644 --- a/9.md +++ b/9.md @@ -1,115 +1,543 @@ # পাঠ ৯: জাভা আই/ও +- স্ট্রিম +- বাইট স্ট্রিম +- ক্যারেক্টার স্ট্রিম +- বাফারড স্ট্রিম +- স্ক্যানিং এবং ফরমেটিং +- ডাটা স্ট্রিম +- ইনপুট স্ট্রিম +- আউটপুট স্ট্রিম +- ফাইল +- রিডিং এ টেক্সট ফাইল +- রাইটিং এ টেক্সট ফাইল +- সারসংক্ষেপ -* স্ট্রিম -* বাইট স্ট্রিম -* ক্যারেক্টার স্ট্রিম -* বাফারড স্ট্রিম -* স্ক্যানিং এবং ফরমেটিং -* ডাটা স্ট্রিম -* ইনপুট স্ট্রিম -* আউটপুট স্ট্রিম -* ফাইল -* রিডিং এ টেক্সট ফাইল -* রাইটিং এ টেক্সট ফাইল -* সারসংক্ষেপ -ইনপুট আউটপুট সংক্ষেপে যাকে আমারা বলি আই/ও (I/O) যে কোন কম্পিউটার সিস্টেম বা প্রোগ্রামিং ল্যাংগুজের একটি মৌলিক বিষয়। যে কোন প্রোগ্রাম লিখতে গেলেই আসলে আমাদের আই/ও দরকার হয়। তবে এই বিষয়টি ঠিক ততটা মজার না যতটা অন্যান্য বিষয় গুলো। খানিকটা ইলেক্ট্রিসিটিরর মতো। আমরা জানি প্রত্যেকটি বাড়িতেই এটি আছে, দরজা দিয়ে প্রবেশ করেই আমাদের হাত সুইচবোর্ডের দিকে চলে যায়, আমার সইচ টিপ দিই, এবং লাইট জ্বলে উঠে। এর পেছনের ব্যপারগুলো নিয়ে যেমন ইলেক্ট্রিসিটি কোথা থেকে এলো, কিভাবে কাজ করে এসব নিয়ে আমাদের চিন্তা করতে হয় না। এগুলো নেপথ্যে থেকে ঠিক ঠাক মতো কাজ করে। আই/ও অনেকটা এরকম। +ইনপুট আউটপুট সংক্ষেপে যাকে আমারা বলি আই/ও (I/O) যে কোন কম্পিউটার সিস্টেম বা প্রোগ্রামিং ল্যাংগুজের একটি মৌলিক বিষয়। যে কোন প্রোগ্রাম লিখতে গেলেই আসলে আমাদের আই/ও দরকার হয়। তবে এই বিষয়টি ঠিক ততটা মজার না যতটা অন্যান্য বিষয় গুলো। খানিকটা ইলেক্ট্রিসিটিরর মতো। আমরা জানি প্রত্যেকটি বাড়িতেই এটি আছে, দরজা দিয়ে প্রবেশ করেই আমাদের হাত সুইচবোর্ডের দিকে চলে যায়, আমার সুইচ টিপ দিই, এবং লাইট জ্বলে উঠে। এর পেছনের ব্যপারগুলো নিয়ে যেমন ইলেক্ট্রিসিটি কোথা থেকে এলো, কিভাবে কাজ করে এসব নিয়ে আমাদের চিন্তা করতে হয় না। এগুলো নেপথ্যে থেকে ঠিক ঠাক মতো কাজ করে। আই/ও অনেকটা এরকম। -তবে একজন জাভা প্রোগ্রামার এর কাছে আই/ও অনেক গুলো কারণেই গুরুত্বপূর্ণ হতে পারে। জাভাতে অনেক গুলো আই/ও ক্লাস এর কোর এপিআই এর সাথেই থাকে যার বেশির ভাগ – java.io প্যাকেজ-এ। তবে জাভাতে অধিকাংশ ক্ষেত্রেই আই/ও দুই ভাগে ভাগ করা হয়েছে। একটি হলো বাইট ভিত্তিক আই/ও যা input stream এবং output stream দিয়ে হ্যান্ডেল করা হয়, এবং অন্যটি হলো ক্যারেকটার ভিত্তিক যা readers এবং writers দিয়ে হ্যান্ডেল করা হয়। তবে দুই টাইপ-এ অ্যাবস্ট্রাকশন সরবরাহ করে যা দিয়ে সোর্সের সঠিক টাইপ না জেনেও পড়তে বা লিখতে পারি। এতে করে আমরা একি মেথড দিয়ে কনসোল থেকে ডাটা পড়তে পারছি আবার সেই মেথড দিয়ে আমরা নেটওয়ার্ক কানেকশন থেকেও পড়তে পারছি। +এবার ইনপুট আউটপুটকে সংজ্ঞায়িত করা যাক। একটি প্রোগ্রাম মূলত ডাটা আর ফাংশন এর সমষ্টি। অর্থাৎ ফাংশন ডাটা গুলো নিয়ে কাজ করে। তো এই ডাটা গুলো কোথাও থেকে তৈরি হয় এবং সেগুলোকে আমাদের প্রোগ্রাম ফাংশন প্রসেস করে । প্রসেসকৃত ডাটা গুলো হচ্ছে আউটপুট। সহজ করে বলা যেতে পারে, আমাদের প্রোগ্রাম কোন সোর্স থেকে ডাটা পড়ে এবং কোন একটা ডেস্টিনেশনে রাইট করে। উদাহরণ হিসেবে দেওয়া যেতে পারে- আমাদের কিবোর্ড একটি ডাটা সোর্স। আমরা একটা প্রোগ্রাম লিখতে পারি যা কি বোর্ড এ ডাটা টাইপ করছি তা ইনপুট হিসেবে নিচ্ছে এবং System.out.println() মেথড দিয়ে সেগুলো কনসোলে প্রিন্ট করতে পারি। -এতো হল টিপ অব দি আইসবার্গ। একবার আমরা অ্যাবস্ট্রাকশন এ অভ্যস্ত হয়ে গেলে যে কোন সোর্স থেকে ডাটা পড়তে পারবো, আমাদের আসলে খুব একটা কেয়ার করতে হবে না কিভাবে বা কোন সোর্স থেকে ডাটা আসছে বা যাচ্ছে। এখানে একটা গুরুত্বপূর্ণ কথা বলে রাখি, সেটা হলো, জাভা প্রোগ্রামারদের সব থেকে পছন্দের বিষয় হচ্ছে অ্যাবস্ট্রাকশন। +```java +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +public class StandardIOExample { + public static void main(String[] args) throws IOException { + BufferedReader reader; + reader = new BufferedReader(new InputStreamReader(System.in)); + String line; + do { + line = reader.readLine(); + line = line.toUpperCase(); + System.out.println(line); + } while (!line.equals("quit")); + } +} +``` -অনেক ইন্ট্রোডাকশন হলো, এবার তাহলে আরো ভেতরে প্রবেশ করা যাক। +উপরের প্রোগ্রামটি কিবোর্ড থেকে একটি লাইন পড়ে সেটি আপারকেইস এ কনর্ভার্ট করে কনসোলে প্রিন্ট করে। একটি একটি সরলতম এবং খুবই প্রয়োজনীয় ইনপুট/আউটপুট এর উদাহরণ। +সাধারণত আমরা কোন একটি ফাইল থেকে ডাটা পড়ি এবং প্রয়োজনীয় প্রসেসিং এর পর অন্য একটি ফাইল এ রাইট করি। তবে ইনপুট আউটপুট শুধুমাত্র ফাইল এর মধ্যে সীমাবদ্ধ থাকবে এবন কোন কথা নেই। আমরা চাইলে একটা স্ট্রিং অবজেক্ট থেকে ডাটা পড়ে আরেকটি স্ট্রিং অবজেক্ট রাইট করতে পারি। এক্ষেত্রে ইনপুট হচ্ছে একটি স্ট্রিং অবজেক্ট এবং আউটপুটও একটি স্ট্রিং অবজেক্ট। আবার একটি ফাইল থেকে ডাটা পড়ে একটি স্ট্রিং অবজেক্ট এ রাখতে পারি। এভাবে অনেক গুলো কম্বিনেশান করতে পারি। তবে সব সময় যে ই্নপুট এবং আউটপুট এক সাথেই কাজ করতে হবে এমনটা নয়। কখনো কখনো শুধুমাত্র ইনপুট অথবা শুধুমাত্র আউটপুট নিয়ে একটি প্রোগ্রাম তৈরি হতে পারে। -শুরুতেই আমরা জেনে নিই, স্ট্রিম কি ? +তবে একজন জাভা প্রোগ্রামার এর কাছে আই/ও অনেক গুলো কারণেই গুরুত্বপূর্ণ হতে পারে। জাভাতে অনেক গুলো আই/ও ক্লাস এর কোর এপিআই এর সাথেই থাকে যার বেশির ভাগ – java.io প্যাকেজ-এ। তবে জাভাতে অধিকাংশ ক্ষেত্রেই আই/ও দুই ভাগে ভাগ করা হয়েছে। একটি হলো বাইট ভিত্তিক আই/ও যা input stream এবং output stream দিয়ে হ্যান্ডেল করা হয়, এবং অন্যটি হলো ক্যারেকটার ভিত্তিক যা readers এবং writers দিয়ে হ্যান্ডেল করা হয়। তবে দুই টাইপ-এ অ্যাবস্ট্রাকশন সরবরাহ করে যা দিয়ে সোর্সের সঠিক টাইপ না জেনেও পড়তে বা লিখতে পারি। এতে করে আমরা একি মেথড দিয়ে কনসোল থেকে ডাটা পড়তে পারছি আবার সেই মেথড দিয়ে আমরা নেটওয়ার্ক কানেকশন থেকেও পড়তে পারছি। +এতো হল টিপ অব দি আইসবার্গ। একবার আমরা অ্যাবস্ট্রাকশন এ অভ্যস্ত হয়ে গেলে যে কোন সোর্স থেকে ডাটা পড়তে পারবো, আমাদের আসলে খুব একটা কেয়ার করতে হবে না কিভাবে বা কোন সোর্স থেকে ডাটা আসছে বা যাচ্ছে। এখানে একটা গুরুত্বপূর্ণ কথা বলে রাখি, সেটা হলো, জাভা প্রোগ্রামারদের সব থেকে পছন্দের বিষয় হচ্ছে অ্যাবস্ট্রাকশন। +অনেক ভূমিকা হলো, এবার তাহলে আরো ভেতরে প্রবেশ করা যাক। শুরতেই ফাইল নিয়ে কাজ করা যাক। -## স্ট্রিম +**ওয়ার্কিং উয়িদ ফাইল** -স্ট্রিম হচ্ছে অনেকটা পানির ধারার মতো, একটি উৎস থেকে অবিরাম ভাবে প্রবাহ হচ্ছে এমন কিন্তু আমরা ঠিক ভাবে উৎসে কতটুকু পানি আছে জানি না। অর্থাৎ কনসেপচুয়ালি একটি অবিরাম ডাটা প্রবাহ। আমরা এই প্রবাহ থেকে ডাটা পড়তে বা লিখতে পারি। যে কোন স্ট্রিম একটি উৎস বা গন্তব্যস্থলের সাথে সংযুক্ত। +**পাথ** +প্রত্যেকটি ফাইল এর জন্যে একটি নির্দিষ্ট পাথ থাকে যাতে করে আমরা আলাদা করতে পারি। পাথ হচ্ছে কতগুলো ক্যারেকটার এর সমষ্টি এবং এতে ফাইলে এর নাম এবং ডিরেকটরী লোকাশান থাকে। যেমন ওয়িন্ডোস প্লাটফর্মের ক্ষেত্রে C:\users\rokonoid\hello.txt হচ্ছে hello.txt ফাইল এর পাথনেইম যা কিনা C ড্রাইভের users ডিরেকটরির মাঝে rokonoid ডিরেকটরিতে আছে। Unix প্লাটফর্মের ক্ষেত্রে /home/rokonoid/hello.txt হচ্ছে hello.txt এর পাথনেইম। -স্ট্রিম দুই প্রকার হতে পারে- -1. বাইট স্ট্রিম -2. ক্যারেকটার স্ট্রিম। +পাথনেইম দুই প্রকার হতে পারে- absolute path এবং relative path. + Current working directory বলে একটা কনসেপ্ট আছে, আর সেটি হলো, আমরা যখন যে ডিরেকটরিতে কাজ করি। মনে করা যাক আমাদের জাভা প্রোগ্রামটি /home/rokonoid বা C:\users\rokonoid ডিরেকটরিতে আছে । তাহলে আমাদের কারেন্ট ওয়ার্কিং ডিরেকটরি হচ্ছে C:\users\rokonoid বা /home/rokonoid। এখন এই ডিরেকটরিতে যদি একটি hello.txt ফাইল থাকে, তাহলে এই ফাইল এর রিলেটিভ পাথ হবে hello.txt আর absolute path পাথ হবে C:\users\rokonoid\hello.txt বা /home/rokonoid/hello.txt । রিলেটিভ পাথ কারেন্ট ওয়ার্কিক ডিরেকটরি থেকে রিজলভ করা যায়। +**ফাইল তৈরি** + +এবার দেখা যাক কিভাবে একটি ফাইল অবজেক্ট তৈরি করা যায়। +_java.io.File_ ক্লাসটি একটি পাথ এর ফাইল বা ডিরেকটরিকে রিপ্রেজেন্ট করে। +এ ক্লাসে বেশ কয়েকটি কনস্ট্রাকর রয়েছে,এর মানে বেশ কয়েক উপায়ে একটি ফাইল অবজেক্ট তৈরি করা যায়। + +```java +File(String pathname) +File(File parent, String child) +File(String parent, String child) +File(URI uri) +``` -## বাইট স্ট্রিম +এখন আমাদের একটি পাথনেইম যদি হয় hello.txt বা /home/rokonoid/hello.txt তাহলে আমরা নিচের মতো করে ফাইল অবজেক্ট তৈরি করতে পারি। -বাইট ভিত্তিক আই/ও নিয়ে কাজ করার জন্যে বাইট স্ট্রিম-এ বেশ সমৃদ্ধ ক্লাস আছে। সাধারণত বাইট স্ট্রিম যে কোন টাইপ অবজেক্ট ( যেমন বাইনারী ডাটা) তে ব্যবহার করা যায়। -সব বাইট স্ট্রিম এর ক্লাস গুলো InputStream এবং OutputStream এর সাব ক্লাস। যদিও আরও অনেক বাইট স্ট্রিম ক্লাস আছে, কিন্তু যেহেতু এই দুটি ক্লাস সবার উপরে, আমরা শুরুতেই এই দুটি ক্লাস নিয়েই কথা বলবো। +```java +File file = new File("hello.txt"); +``` +অথবা +```java +File file = new File("/home/rokonoid/hello.txt"); +``` - java.io.InputStream এটি একটি অ্যাবস্ট্রাক্ট ক্লাস এবং সকল ইনপুট স্ট্রিম এর সুপার ক্লাস। এতে তিনটি বেসিক মেথড আছে যা কিনা কিভাবে ডাটা স্ট্রিম থেকে পড়তে হয় তা নিয়ে ডিল করে। এছাড়াও স্ট্রিম ক্লোস করা, ফ্লাস করা, এবং কতগুলো বাইট আরও পড়তে হবে ইত্যাদি নিয়ে কিছু মেথড আছে। এগুলো নিয়ে একটি ডিটেইল ব্যাংখ্যা করা যাক। -read() মেথড: +এই ফাইলটি আমাদের দেওয়া পাথ এ যে ফাইলটি আছে তাকে রিপ্রেজেন্ট করে। তবে মজার ব্যপার হচ্ছে ফাইল অবজেক্ট তৈরি করতে হলে এই পাথটি ফিজিক্যালি থাকতে হবে এমন কোন কথা নেই। File ক্লাসের বেশি কিছু মেথড আছে যেগুলো দিয়ে আমরা দেখতে পারি এই পাইলটি আসলেই আমরা যে পাথটি দিয়েছি সেখানে আছি কিনা। না থাকলে আমরা তৈরি করতে পারি। ```java -public abstract int read() throws IOException +import java.io.File; +import java.io.IOException; + +public class FileExample { + + public static void main(String[] args) { + File file = new File("hello.txt"); + if (file.exists()) { + System.out.println("File exists"); + } else { + System.out.println("File does not exist,lets create one"); + try { + file.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } +} ``` -এই মেথডটি ১ বাইট unsigned ডাটা পড়ে এবং এর ইন্টিজার ভ্যালু রিটার্ন করে যা কি না ০ থেকে 255 এর মধ্যে । যদি কোন বাইট না পাওয়া যায় তাহলে এটি -‌1 রিটার্ন করে এবং এতে করে আমরা বুঝতে পারি স্ট্রিম এর ডাটা শেষ হয় গেছে। আমরা একটি উদহারণ দেখি। +উপরের উদহরণটিতে আমরা প্রথমে আমাদের দেওয়া পাথ দিয়ে একটি ফাইল অবজেক্ট তৈরি করেছি। তারপর দেখেছি এই ফাইটি আসলেই ফিজিক্যালি আমাদের দেওয়া পাথ এ আছে কিনা। যদি না থাকে, তাহলে সেই পাথ এ নতুন একটি ফাইল তৈরি করা হয়েছে। -যেহেতু ইনপুট স্ট্রিম একটি অ্যাবস্ট্রাক্ট ক্লাস এবং এর বেশ কিছু সাব ক্লাস আছে, উদাহরণ দেওয়ার সুবিধার্থে আমরা একটি ফাইল ইনপুট স্ট্রিম ব্যবহার করি যা কিনা কোন একটি লোকেশানে রাখা একটি টেক্সট ফাইল পড়তে পারবে । +এছাড়াও আরও কিছু বেশ প্রয়োজনীয় মেথড যেমন- isFile() এবং isDirectory() আছে যেগুলো দিয়ে আমরা বের করতে পারি কোন পাথ ফাইল বা ডিরেকটরি কিনা। + +এছাড়াও কারেন্ট ওয়ার্কিং ডিরেকটি বের করা জন্যে একটি বিশেষ উপায় হলো - +```java +public class CurrentWorkingDirectory { + public static void main(String[] args) { + String workingDir = System.getProperty("user.dir"); + System.out.println(workingDir); + } +} +``` +**পাথ সেপারেটর +** + +একটি বিষয় মনে রাখতে হবে যে বিভিন্ন প্লাটপর্ম ফাইলের পাথ এর দুটি পার্ট আলাদা করার জন্যে আলাদা ক্যারেকটার ব্যবহার করে থাকে। যেমন- windows ব্যাকস্লেস (\) এবং unix সিস্টেম ফরওয়ার্ড স্লেস (/) ব্যবহার করে থাকে। সুতরাং পাথ তৈরি করতে হলে খেয়াল রাখা জরুরী কোন প্লাটফর্মে থেকে প্রোগ্রামটি রান করা হচ্ছে। কিন্তু আমাদের যেহেতু মূল উদ্দেশ্য প্লাটপর্ম স্পেসিফিক কোড না লেখা, সেক্ষত্রে নিজের উপায়টি ব্যবহার করা যেতে পারে। + +```java +String workingDir = System.getProperty("user.dir"); +String newFile = workingDir + File.separator + "hellword.txt"; +File file = new File(newFile); +``` + +এখানে File.separator একটি কনস্ট্যান্ট যা যে প্লাটফর্মে প্রোগ্রামটি রান করছে তার উপর ভিত্তি করে সেপারেটর স্ট্রিং আকারে দিয়ে থাকে। + +**ডিরেকটরি তৈরি** + + +File ক্লাসে এ mkdir() এবং mkdirs() দুটি মেথড আছে যেগুলো ব্যবহার করে আমরা একটি ডিরেকটরি তৈরি করতে পারি। এবং এদের মাঝে ফাইল তৈরি করতে পারি। + + +```java +import java.io.File; +import java.io.IOException; + +public class DirectoryExample { + public static void main(String[] args) throws IOException { + File dir = new File("/home/rokonoid/myDir"); + + dir.mkdir(); + + String dirPath = dir.getPath(); + System.out.println("Diectory Path: " + dirPath); + + // lets create a new file + String fileName = "hello.txt"; + File file = new File(dirPath + File.separator + fileName); + file.createNewFile(); + + String filePath = file.getPath(); + System.out.println("File Path: "+ filePath); + } +} +``` + +এই প্রোগ্রামটি রান করলে নিচের আউটপুট পাওয়া যাবে - + +``` +Diectory Path: /home/rokonoid/myDir +File Path: /home/rokonoid/myDir/hello.txt +``` + +**ফাইল রিনেমিং , কপিং এবং ডিলেটিং ** + + +File ক্লাস এ renameTo() ব্যবহার করে আমরা ফাইল রিনেম করতে পারি। + +```java +import java.io.File; + +public class FileRenameExample { + + public static void main(String[] args) { + File oldFile = new File("old_hello.txt"); + File newFile = new File("new_hello.txt"); + + boolean fileRenamed = oldFile.renameTo(newFile); + + if (fileRenamed) { + System.out.println(oldFile + " renamed to " + newFile); + } else { + System.out.println("Renaming " + oldFile + " to " + newFile + " failed."); + } + } +} +``` + +ফাইল ডিলিট করার জন্যে দুটি মেথড রয়েছে- delete() এবং deleteOnExit() +এই মেথড দুটি দিয়ে ফাইল এবং ডিরেকটররী ডিলেট করা যায়। তবে ডিরেকটরী ডিলিট করতে হলে অবশ্যই ডিরেকটরি টি খালি থাকতে হবে, অর্থাৎ ডিরেকটরীতে যদি আরও ফাইল থাকে , তাহলে সেগুলো আগে ডিলিট করে ফেলতে হবে। delete() মেথডটি সাথে সাথেই কাজ করে তবে, deleteOnExit() মেথডটি যখন JVM টারমিনেট করে তখন ডিলেট করে। আমাদের অনেকসময় প্রোগ্রাম চলাকালিন টেম্পোরারি ফাইল তৈরি করার দরকার পরে যা প্রোগ্রাম টার্মিনেট হয়ে গেলে দরকার হয় না,সেসব ক্ষেত্রে এই মেথড ব্যবহার করা যেতে পারে। + +```java +public class FileDeleteExample { + public static void main(String[] args) { + // To delete the hello.txt file immediately + File file1 = new File("hello.txt"); + file1.delete(); + + // To delete the hello.txt file when the JVM terminates + File file2 = new File("hello.txt"); + file2.deleteOnExit(); + } +} +``` + +File ক্লাসে কোন মেথড নেই যাতে করে সরাসরি আমরা ফাইল কপি করতে পারি। একটি ফাইল কপি করতে হলে আমাদেরকে একটি নতুন ফাইল তৈরি করতে হবে এবং সেই ফাইল এর কন্টেন্ট গুলো রিড করে নতুন ফাইল এ রাইট করতে হবে। পরবর্তি চ্যাপ্টারে এ নিয়ে আলোচনা করা হবে। +লিস্টিং ফাইলস + +আমরা একটি ডিরেকটরিতে কতগুলো ফাইল আছে তার লিস্ট listFiles() মেথড দিয়ে সহজেই বের করে ফেলতে পারি। উদাহরণ- + +```java +import java.io.File; + +public class ListingFiles { + public static void main(String[] args) { + File home = new File("/home/rokonoid/"); + + File[] listRoots = home.listFiles(); + for (File file : listRoots) { + System.out.println(file.getPath()); + } + } +} + +``` + +**ফাইল ফিল্টার +** + +তবে অনেক সময় আমাদের ফাইল ফিল্টারের প্রয়োজন হয়। মনে করা যাক একটি ডিরেকটরীতে শুধুমাত্র png ফাইল গুলো আমাদের দরকার। সেক্ষেত্রে - + +```java +import java.io.File; +import java.io.FileFilter; + +public class FileFileterExample { + public static void main(String[] args) { + File home = new File("/home/rokonoid/Pictures"); + + FileFilter pngFlter = new FileFilter() { + + @Override + public boolean accept(File pathname) { + String fileName = pathname.getName(); + if (fileName.endsWith(".png")) { + return true; + } + return false; + } + }; + + File[] listRoots = home.listFiles(pngFlter); + for (File file : listRoots) { + System.out.println(file.getPath()); + } + } +} +``` -প্রথমে আমরা একটি টেক্টট ফাইল তৈরি করে কোন একটি লোকেশানে রাখি। সাধারণত প্রজেক্ট এর একটি ফোল্টার তৈরি করে তাতেও রাখা যেতে পারে। +উপরের উদাহরণটিতে FileFilter এর একটি anonymous ক্লাস লেখা হয়েছে যা কিনা listFiles() মেথডটি paremeter হিসেবে নিচ্ছে । এই ফিল্টারের accept() মেথডটিতে আমরা আমাদের ফিল্টার লজিকটুকু লেখা হয়েছে যাতে করে এটি শুধুামাত্র png ফাইল গুলো লিস্টিং করে। -এর পর এই ফাইল এ যে কোন একটি স্ট্রিং লিখি। এখানে আমার ফাইল এর নাম input.txt এতে নিচের লাইটি লিখেছি - -`The quick brown fox jumps over the lazy dog.` +**ইনপুুট/আউটপুট স্ট্রিম** -এবার নিচের কোডটি রান করি। +স্ট্রিম এরে আক্ষরিক অর্থ হচ্ছে প্রবাহ । এর মানে হচ্ছে অনেকটা পানির ধারার মতো একটি উৎস থেকে অবিরাম ভাবে প্রবাহ হচ্ছে এমন কিন্তু আমরা ঠিক ভাবে উৎসে কতটুকু পানি আছে জানি না। অর্থাৎ কনসেপচুয়ালি একটি অবিরাম ডাটা প্রবাহ। আমরা এই প্রবাহ থেকে ডাটা পড়তে বা লিখতে পারি। যে কোন স্ট্রিম একটি উৎস বা গন্তব্যস্থলের সাথে সংযুক্ত। উৎস কে বলা হয় ডাটা সোর্স এবং গন্তব্যস্থলকে বলা হয় ডাটা সিংক। + + +**ইনপুট স্ট্রিম তৈরি ** + +ছবিতে দেখা যাচ্ছে একটি সোর্স থেকে প্রবাহ আকারে ডাটা ফ্লো হচ্ছে জাভা প্রোগ্রামে। এবং জাভা প্রোগ্রামটি আরেকটি ডাটা ফ্লো তৈরি করছে যা গন্তব্যে পৌছাচ্ছে। +তাহলে একটি সোর্স থেকে ডাটা পড়তে হলে আমাদেরকে কয়েকটি ধাপে যেতে হয় - +১. প্রথমে একটি সোর্স নির্ধারণ করতে হবে। সোর্স একটি স্ট্রিং হতে পারে, কিংবা একটি ফাইল অথবা একটি নেটওয়ার্ক কানেকশান। +২. সোর্স এর উপর ভিত্তি করে একটি ইনপুট স্ট্রিম তৈরি করতে হবে। +৩. ইনপুট স্ট্রিম থেকে ডাটা পড়া। সাধারণত একটু লুপ এর মধ্যে ইনপুট স্ট্রিম এর `read()` মেথড কল করতে হয় , এবং লুপটি ততক্ষণ পর্যন্ত চলে যতক্ষণ পর্যন্ত ডাটা পড়া শেষ না হয়। + +**ইনপুট স্ট্রিম থেকে ডাটা পড়া ** + +স্ট্রিম দুই প্রকার হতে পারে- +1. বাইট স্ট্রিম +2. ক্যারেকটার স্ট্রিম। +বাইট স্ট্রিম + +বাইট ভিত্তিক আই/ও নিয়ে কাজ করার জন্যে বাইট স্ট্রিম-এ বেশ সমৃদ্ধ ক্লাস আছে। সাধারণত বাইট স্ট্রিম যে কোন টাইপ অবজেক্ট ( যেমন বাইনারী ডাটা) তে ব্যবহার করা যায়। সব বাইট স্ট্রিম এর ক্লাস গুলো `InputStream` এবং `OutputStream` এর সাব ক্লাস। যদিও আরও অনেক বাইট স্ট্রিম ক্লাস আছে, কিন্তু যেহেতু এই দুটি ক্লাস সবার উপরে, আমরা শুরুতেই এই দুটি ক্লাস নিয়েই কথা বলবো। + +java.io.InputStream এটি একটি অ্যাবস্ট্রাক্ট ক্লাস এবং সকল ইনপুট স্ট্রিম এর সুপার ক্লাস। এতে তিনটি বেসিক মেথড আছে যা কিনা কিভাবে ডাটা স্ট্রিম থেকে পড়তে হয় তা নিয়ে ডিল করে। এছাড়াও স্ট্রিম ক্লোস করা, ফ্লাস করা, এবং কতগুলো বাইট আরও পড়তে হবে ইত্যাদি নিয়ে কিছু মেথড আছে। এগুলো নিয়ে একটি ডিটেইল ব্যাংখ্যা করা যাক। read() মেথড: ```java -package com.company; +public abstract int read() throws IOException +``` + +এই মেথডটি ১ বাইট unsigned ডাটা পড়ে এবং এর ইন্টিজার ভ্যালু রিটার্ন করে যা কি না ০ থেকে 255 এর মধ্যে । যদি কোন বাইট না পাওয়া যায় তাহলে এটি -‌1 রিটার্ন করে এবং এতে করে আমরা বুঝতে পারি স্ট্রিম এর ডাটা শেষ হয় গেছে। আমরা একটি উদহারণ দেখি। +যেহেতু ইনপুট স্ট্রিম একটি অ্যাবস্ট্রাক্ট ক্লাস এবং এর বেশ কিছু সাব ক্লাস আছে, উদাহরণ দেওয়ার সুবিধার্থে আমরা একটি ফাইল ইনপুট স্ট্রিম ব্যবহার করি যা কিনা কোন একটি লোকেশানে রাখা একটি টেক্সট ফাইল পড়তে পারবে । +প্রথমে আমরা একটি টেক্টট ফাইল তৈরি করে কোন একটি লোকেশানে রাখি। সাধারণত প্রজেক্ট এর একটি ফোল্টার তৈরি করে তাতেও রাখা যেতে পারে। +এর পর এই ফাইল এ যে কোন একটি স্ট্রিং লিখি। এখানে আমার ফাইল এর নাম input.txt এতে নিচের লাইটি লিখেছি - The quick brown fox jumps over the lazy dog. +এবার নিচের কোডটি রান করি। + +```java import java.io.FileInputStream; import java.io.IOException; -public class Main { - - public static void main(String[] args) { - FileInputStream in = null; - - try { - in = new FileInputStream("input.txt"); - int c; - - while ((c = in.read()) != -1) { - System.out.print(c + ","); - } - - } catch (IOException e) { - System.err.println("Could not read file"); - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException e1) { - System.err.println("Could close input stream"); - } - } - } - } +public class InputStreamExample { + public static void main(String[] args) { + FileInputStream in = null; + try { + in = new FileInputStream("input.txt"); + int c; + + while ((c = in.read()) != -1) { + System.out.print(c + ","); + } + } catch (IOException e) { + System.err.println("Could not read file"); + } finally { + if (in != null) { + try { + in.close(); + } catch (IOException e1) { + System.err.println("Could close input stream"); + } + } + } + } } ``` -আমরা এখানে শুরুতে একটি `FileInputStream` ক্লাস এর ইনস্টেন্স ক্রিয়েট করেছি তারপর আর্গুমেন্ট হিসেবে আমাদের টেক্সট ফাইলটির লোকেশান দিয়েছি। -তারপর একটা `int c` ডিক্লেয়ার করেছি । -এর হুয়াইল লুপটিতে আমারা প্রতিবার একটি করে বাইট রিড করে `c` তে এসাইন করছি এবং তা প্রিন্ট আউট করছি। এই লুপটি ততক্ষণ পর্যন্ত চলবে যতক্ষণ পর্যন্ত `read()` মেথডটি` -1` রিটার্ণ না করে। ফাইল টি পড়া শেষ হয়ে গেলে এটি `-1` রিরার্ণ করবে। -কোডটি একটি ট্রাই ক্যাচ ব্লক এর মধ্যে কারণ আমার জানি যে আই/ও আছে খুব লো লেভেল থেকে কাজ করে । এর মাঝে কোন একটি সমস্য হতেই পারে এবং তা হলে জাবা `IOException` থ্রু করবে এবং তা যাতে আমরা হ্যান্ডেল করতে পারি। -এছাড়াও একটি ফাইনালি ব্লক আছে যেখানে আমরা স্ট্রিমটি বন্ধ করেছি। আমাদের খেয়াল রাখতে হবে যে, যখনি একটি স্ট্রিম এর কাজ শেষ হয়ে যাবে তখনি তা বন্ধ করে দিতে হবে। এটি অনেকটা আমাদের ওয়াশরুমের পানির টেপ এর মতো। কাজ শেষ হলে আমরা অফ করে দিই যাতে করে রিসোর্স নষ্ট না হয়। +এখানে শুরুতে একটি `FileInputStream` ক্লাস এর ইনস্টেন্স ক্রিয়েট করো হয়েছে। যেহেতু `InputStream` একটি abstract ক্লাস, এবং আমাদের ডাটা সোর্স একটি ফাইল, সুতরাং কংক্রিট ক্লাস হিসেবে `FileInputStream` ব্যবহার করা হয়েছে। এতে আর্গুমেন্ট হিসেবে আমাদের টেক্সট ফাইলটির লোকেশান দেয়া হয়েছে। এখানে এটি রিলেটিভ পাথ। আমাদের ওয়ার্কিং ডিরেকটরী হচ্ছে প্রজেক্ট ডিরেকটরী, যেহেতু ফাইলটি প্রজেক্ট ডিরেক্টরীতেই রাখা আছে। যদি ফাইলটি অন্য ডিরেকটরীতে থাকে সেক্ষেত্রে absolute পাথ দিতে হবে। -এখন উপরের কোডটি যদি রান করি তাহলে কনসোলে আমরা নিচের আউটপুটটি দেখতে পাবো- -``` +তারপর একটা int c ডিক্লেয়ার করা হয়েছে । এরপর একটি হুয়াইল লুপ রয়েছে। এতে প্রতিবার একটি করে বাইট রিড করে c তে এসাইন করা হচ্ছে এবং তা প্রিন্ট আউট করা হচ্চে। এই লুপটি ততক্ষণ পর্যন্ত চলবে যতক্ষণ পর্যন্ত read() মেথডটি -1 রিটার্ন না করে। ফাইল টি পড়া শেষ হয়ে গেলে এটি -1 রিটার্ন করবে। কোডটি একটি ট্রাই ক্যাচ ব্লক এর মধ্যে কারণ আমার জানি যে আই/ও আছে খুব লো-লেভেল থেকে কাজ করে । এর মাঝে কোন একটি সমস্য হতেই পারে এবং তা হলে JVM IOException থ্রু করবে এবং তা যাতে আমরা হ্যান্ডেল করতে পারি। এছাড়াও একটি ফাইনালি ব্লক আছে যেখানে আমরা স্ট্রিমটি বন্ধ করেছি। আমাদের খেয়াল রাখতে হবে যে, যখনি একটি স্ট্রিম এর কাজ শেষ হয়ে যাবে তখনি তা বন্ধ করে দিতে হবে। এটি অনেকটা আমাদের ওয়াশরুমের পানির টেপ এর মতো। কাজ শেষ হলে আমরা অফ করে দিই যাতে করে রিসোর্স নষ্ট না হয়। + +এখন উপরের কোডটি যদি রান করি তাহলে কনসোলে আমরা নিচের আউটপুটটি দেখতে পাবো- 84,104,101,32,113,117,105,99,107,32,98,114,111,119,110,32,102,111,120,32,106,117,109,112,115,32,111,118,101,114,32,116,104,101,32,108,97,122,121,32,100,111,103,46, + +এর কারণ হচ্ছে read() মেথডটি এক সাথে একটি বাইট পড়ে এবং এর ইন্টিজার রিপ্রেজেন্টেশান রিটার্ন করে। আমরা যদি একে ঠিক আমাদের input.txt এর স্ট্রিং এর মতো করে প্রিণ্ট করতে চাই তাহলে ইন্টিজারকে ক্যারেকটার এ কাস্ট করতে হবে। +System.out.print((char)c); + +**আউটপুট স্ট্রিম তৈরি** + +ছবিতে দেখা যাচ্ছে যে জাভা প্রোগ্রামটি একটি আউটপুট স্ট্রিম ব্যবহার করে একটি ডাটা সিংক ডাটা ট্রান্সফার করছে। +আউটপুট স্ট্রিমএর মাধ্যমে প্রোগ্রাম থেকে ডাটা ডাটা সিংকে পাঠাতে হলে কয়েকটি ধাপ-এ যেতে হয়- +১. প্রথমে একটি ডাটা সিংক নির্ধারণ করতে হবে। এটি একটি ফাইল হতে পারে, কিংবা একটি স্ট্রিং অবজেক্ট বা নেটওয়ার্ক কানেকশান। +২. ডাটা সিংক ব্যবহার করে একটি আউটপুট স্ট্রিম অবজেক্ট তৈরি করতে হবে। +৩. এরপর আউটপুট স্ট্রিমটি ফ্লাস করতে হবে। +৪. এবং সবশেষে আউটপুট স্ট্রিমটি ক্লোজ করে দিতে হবে। + +**আউটপুট স্ট্রিমে ডাটা রাইট করা ** + +এবার আমরা চেষ্টা করবো ডাটা কিভাবে ডাটা সিংকে রাইট করা যায় । এক্ষেত্রে ডাটা সিংক হিসেবে একটি ফাইল নিতে পারি। আউটপুট স্ট্রিম হিসেবে নিতে পারি FileOutputStream. OutputStream এর একটি একটি মেথড হচ্ছে write() যা দিয়ে আমরা ডাটা ফাইল এ রাইট করতে পারি। write() মেথড এর কগুলো অভারলোডিং আছে । এর যেকোন একটা ব্যবহার করতে পারি। +একটি স্ট্রিং অবজেক্ট থেকে আমরা সহজেই ডাটা বাইট আকারে একটি অ্যারেতে রাখতে পারি। + +```java +String text = "Hello"; +byte[] textBytes = text.getBytes(); ``` -এর কারণ হচ্ছে `read()` মেথডটি এক সাথে একটি বাইট পড়ে এবং এর ইন্টিজার রিপ্রেজেন্টেশান রিটার্ণ করে। আমরা যদি একে ঠিক আমাদের `input.txt` এর স্ট্রিং এর মতো করে প্রিণ্ট করতে চাই তাহলে ইন্টিজারকে ক্যারেকটার এ কাস্ট করতে হবে। +এরপর এই বাইট অ্যারেকে আউটপুট স্ট্রিম এর আরইট মেথডে আর্গুমেন্ট হিসেবে পাস করতে পারি। +উদাহরণ- ```java -System.out.print((char)c); +import java.io.FileOutputStream; +import java.io.IOException; + +public class OutputStreamExample { + public static void main(String[] args) { + String destFile = "output.txt"; + String data = "Lorem ipsum dolor sit amet," + + " consectetur adipiscing elit. " + + " Suspendisse at placerat ipsum. "; + try { + FileOutputStream fos = new FileOutputStream(destFile); + fos.write(data.getBytes()); + fos.flush(); + fos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} ``` +এরপর আউটপুট স্ট্রিমটিকে ফ্লাস করতে হয় flush() মেথড ব্যবহার করে। আমাদের উদ্দেশ্য হচ্ছে ডাটা সিংকে ডাটা রাইট করা। এক্ষেত্রে আমরা FileOutputStream এ ডাটা রাইট করছি যা কিনা একটি ফাইল এর অ্যাবস্ট্রাকশন। আউটপুট স্ট্রিম বাইট গুলোকে আপারেটিং সিস্টেম কে দেয় যে কিনা আসলে বাইট গুলো ফাইল এ রাইট করার জন্যে রেসপনসিবল। অপারেটিং সিস্টেম আসলে নির্ধারণ করে কখন বাইট গুলো ফাইল এ রাইট করবে কিন্তু আমাদের আগে সবগুলো বাইট অপারেটিং সিস্টেমকে দিতে হবে। আউটপুট স্ট্রিম এর যেহেতু অ্যাবস্ট্রাক্ট ক্লাস এবং এর অনেক গুলো কনক্রিট আছে, এদের কোন কোন ক্লাস নিজের মাঝে বাইট গুলোর বাফার রেখে দিতে পারে। সেক্ষেত্রে flush() মেথডটি বাফার ক্লিয়ার করে দেবে। + +এবং কাজ শেষে আউটপুট স্ট্রিম টিকে ক্লোজ করে দিতে হবে। +আউটপুট স্ট্রিম এর আরও বেশ কিছু সাব ক্লাস হলো - + +**ক্যারেকটার স্ট্রিম** + +ক্যারেক্টার স্ট্রিম গুলো বাইট স্ট্রিম এর মতোই কাজ করে, তবে পার্থক্য শুধু এইটকুই যে এরা ক্যারেকটার নিয়ে কাজ করে। অর্থাৎ এগুলোকে শুধুামাত্র টেক্সট রিড এবং রাইট করার জন্যে লেখা হয়েছে। InputStream এবং OutputStream এর মতো এখানেও দুটি সুপার ক্লাস রয়েছে, যেগুলো হলো - Reader এবং Writer. + +ক্যারেক্টার স্ট্রিম সঠিক ভাবে বুঝতে হলে আমাদের আগে জানতে হবে ক্যারেক্টার ইনকোডিং সম্পর্কে। আমরা জানি যে কম্পিউটার মূলত র (raw ) জিরো-ওয়ান নিয়ে কাজ করে। কিন্তু আমরা যখন কোন টেক্সট দেখি তা কিন্তু মোটেও জিরো-ওয়ান বাইনারী ডিজিট নয়, বরং রিয়েল ক্যারেকটার গুলোই দেখি। এই জিরো-ওয়ান বাইনারী ডাটা গুলোকে ইন্টারপ্রেট করার জন্যে এক ধরণের ম্যাপিং থাকে যাকে বলা হয় ক্যারেকটার ইনকোডিং। অনেক ধরণের ক্যারেকটার ইনকোডিং থাকলেও সাধারণত ASCII ও ইউনিকোড-বেইজড ইনকোডিং গুলো নিয়ে আমাদের সমচেয়ে বেশি কাজ করতে হয়। ASCII বা আস্কি - American Standard Code for Information Interchange এর সংক্ষিপ্ত রূপ। এটি একটি ক্যারেকটার ইনকোডিং পদ্ধতি যা ইংরেজী বর্ণ মালা গুলোকে নাম্বারের মাধ্যমে রিপ্রেজন্ট করে। প্রতিটি ইংরেজী বর্ণকে একটি করে নাম্বার (০-১২৭) দেওয়া হয়। এই ইনকোডিং পদ্ধতিতে মাত্র এক বাইট এর দরকার হয়। আস্কি দিয়ে শুধুমাত্র ইংরেজী টেক্সট নিয়ে কাজ করা গেলেও পৃথিবীতে অসংখ্য ভাষা এবং বর্ণমালা রয়েছে। পৃথিবীর সব আধুনিক বর্ণমালা এবং ঐতিহাসিক দলিল গুলো নিয়ে কাজ করার জন্য একটি নতুন পদ্ধতি উদ্ভাবন করা হয়, যার নাম ইউনিকোড। এই ইউনিকোড ইমপ্লিমেন্ট করার জন্যে অনেকগুলো ক্যারেকটার ইনকোডিং স্কিম বা পদ্ধতি রয়েছে, তবে সাধাণত UTF-8, UTF-16 বেশি ব্যবহৃত হয়। UTF-8 ইনকোডিং সিস্টেম এ একটি ক্যারেকটার ১ থেকে ৪ বাইট হতে পারে এবং এটি ওয়েব পেইজ বা ইমেইল ব্যবহৃত হয়। UTF-16 এর ক্ষত্রে তা দই বা ততোধিক বাইট হতে পারে। + +অনেক সফটওয়্যার সিস্টেমই UTF ইনকোডিং স্কিম ব্যবহার করে টেক্সট স্টোর করে থাকে। যেহেতু এগুলো একটি ক্যারেকটার রিপ্রেজেন্ট করতে হলে ১ বা একাধিক বাইট দরকার হয়, সেহেতু এগুলো পড়ার সময় যদি আমরা ইনপুটস্ট্রিম ব্যবহার করে একবাইট করে পড়ি, এবং তা char এ কনভার্ট করি, তাহলে আমরা অনেক সময়ই সঠিক ভাবে ডাটা রিড করতে পারবো না। এই সসস্যা দূর করার জন্যে এবং সঠিক ভাবে টেক্সট রিড বা রাইট করার জন্যে Reader/Writer ক্লাস লেখা হয়েছে যা শুধুমাত্র টেক্সট নিয়ে কাজ করে। +মনে রাখতে হবে যে, InputStream এর read() মেথড প্রত্যেকবার এক বাইট করে রিটার্ন করে আর Reader ক্লাসের read() মেথড প্রতিবার একটি করে ক্যারেকটার রিটার্ন করে। একটি বাইট এর ভ্যালু ১-২৫৫ পর্যন্ত হতে পারে যেখানে একটি ক্যারেক্টার এর ভ্যালু ০ -৬৫৫৩৫ হতে পারে। তাহলে আমরা সহজ ভাবে বলতে পারি, ইনপুট স্ট্রিম/আউটপুট স্ট্রিম র-বাইনারী ডাটা নিয়ে কাজ করে আর রিডার/রাইটার শুধুমাত্র টেক্সট নিয়ে কাজ করে। +এই পার্থক্য ছাড়া ক্যারেক্টার স্ট্রিম নিয়ে কাজ করার সব স্টেপস গুলো ইনপুট/আউটপুট স্ট্রিম এর স্টেপস এর মতো। + +**Read using Reader** + +```java +import java.io.FileReader; +import java.io.IOException; +import java.io.Reader; + +public class ReaderExample { + public static void main(String[] args) { + Reader reader = null; + try { + reader = new FileReader("input.txt"); + int c; + while ((c = reader.read()) != -1) { + char ch = (char) c; + System.out.print(ch); + } + } catch (IOException e) { + e.printStackTrace(); + }finally{ + try { + if (reader!=null) { + reader.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } +} +``` +এতেও ইনপুট স্ট্রিম এর একটা করে বাইট রিড করতে হয় একটি লুপ এর মাঝে। +**Write using Writer ** +```java +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; + +public class WriterExample { + public static void main(String[] args) { + Writer writer; + String text = "Lorem ipsum dolor sit amet," + + " consectetur adipiscing elit. " + + "Suspendisse at placerat ipsum. "; + + try { + writer = new FileWriter("output2.txt"); + writer.write(text); + writer.flush(); + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} +```java + +রাইটার এর write() মেথড দিয়ে সরাসরি স্ট্রিং রাইট করা যায়। + +**System.in, System.out, and System.error +** + +এই তিনটি বহুল ব্যবহৃত ডাটা সিংক। তবে সবচেয়ে বেশি ব্যবহৃত হয় মূলত System.out . + +System.in একটি ইনপুট স্ট্রিম যা কিনা যে কোন কনসোল প্রোগ্রামের জন্যে কিবোর্ড এর সাথে কানেক্টেড। এটি System ক্লাসের একটি স্যাটিক মেম্বার। এটি যে খুব বেশি ব্যবহৃত হয় তা নয়, তবে আমরা চাইলেই নানা কাজে ব্যবহার করতে পারি। যেমন- + +```java +Scanner scanner = new Scanner(System.in); + +int a = scanner.nextInt(); +double d = scanner.nextDouble(); +``` + +স্ক্যানার একটি ইউটিলিটি ক্লাস, যার সাহায্যে সহজেই আমরা কিবোর্ড থেকে ইন্টিজার বা ডাবল টাইপ ইনপুট নিতে পারি। স্ক্যানার কনস্ট্রাকর আর্গুমেন্ট হিসেবে একটি ইনপুট স্ট্রিম নেয়। এক্ষেত্রে আমরা System.in টি দিতে পারি যাতে করে এটি সরাসরি কিবোর্ড থেকে ডাটা পড়তে পারে। + +`System.out` হচ্ছে `System` ক্লাসের একটি স্যাটিক মেম্বার যা কিনা একটি প্রিন্টস্ট্রিম(`PrintStream`) । এটি যেকোন ডাটা কনসোল এ রাইট করে। এটিও একটি আউটপুট স্ট্রিম তবে এটি ডাটা ফরমেট করে দেখাতে সাহায্য করে। যেমন আমরা যখন কনসোল এ প্রিমিটিভ ডাটা প্রিন্ট করি, প্রিন্ট স্ট্রিম তাদের ফরমেটেড ডাটা গুলো প্রিন্ট করে, এদের বাইট ভ্যালু প্রিন্ট না করে। + +`System.err` ও একটি আউটপুট স্ট্রিম যা কিনা `System.out` স্ট্রিম এর মতোই কাজ করে , তবে এটি শুধুমাত্র ইরর প্রিন্ট করার জন্যে ব্যবহার করা হয়। কিছু কিছু আইডিই এই ইরর টেক্সট গুলো লাল রং-এ প্রিন্ট করে থাকে। + +**রিডিং/রাইটিং প্রিমিটিভ ডাটা +** + +`DataInputStream` এবং `DataOutputStream` ক্লাস দুটি প্রিমিটিভ টাইপ ডাটা কাজ করার জন্যে ব্যবহার করা হয়। এতে বেশ কিছু `readxxx()` এবং `writexxx()` মেথড রয়েছে যে গুলো ব্যবহার করে যেকোন ধরণের প্রমিটিভ ডাটা আমরা রিড/রাইট করতে পারি। + +উদাহরণ- + +```java +import java.io.DataOutputStream; +import java.io.FileOutputStream; +import java.io.IOException; + +public class WritingPrimitivesExample { + public static void main(String[] args) { + String destFileName = "primitivs.data"; + + try { + DataOutputStream dos = new DataOutputStream(new FileOutputStream(destFileName)); + dos.writeInt(152); + dos.writeDouble(4.56); + dos.writeBoolean(true); + dos.writeLong(Long.MAX_VALUE); + + dos.flush(); + dos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} +``` + +উদাহরণটিতে `DataOutputStream` কনস্ট্রাকট আর্গুমেন্ট হিসেবে একটি আউটপুটস্ট্রিম নেয়,এখানে যেহেতু আমরা ফাইল এ রাইট করছি,সে জন্যে `FileOutputStream` ব্যবহার করা হয়েছে। + +```java +import java.io.DataInputStream; +import java.io.FileInputStream; +import java.io.IOException; + +public class ReadingPrimitivesExample { + + public static void main(String[] args) { + String sourceFile = "primitivs.data"; + + try { + DataInputStream dis = new DataInputStream(new FileInputStream(sourceFile)); + + int intValue = dis.readInt(); + double doubleValue = dis.readDouble(); + boolean booleanValue = dis.readBoolean(); + long longValue = dis.readLong(); + + System.out.println(intValue); + System.out.println(doubleValue); + System.out.println(booleanValue); + System.out.println(longValue); + + } catch (IOException e) { + e.printStackTrace(); + } + } +} +``` -## চলবে .... +উদাহরণটিতে `DataInputStream` কনস্ট্রাকটর আর্গুমেন্ট হিসেবে একটি ইনপুটস্ট্রিম নেয়। যেহেতু আমরা ফাইল থেকে রিড করছি, সেহেতু ইনপুটস্ট্রিম হিসেবে `FileInputStream` ব্যবহার করা হয়েছে। \ No newline at end of file From 1ba90722fa2df7b13023059e55afa2310b6908ea Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Tue, 21 Jun 2016 16:41:36 +0600 Subject: [PATCH 117/150] Add files via upload --- images/InputOutputStream.png | Bin 0 -> 56133 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/InputOutputStream.png diff --git a/images/InputOutputStream.png b/images/InputOutputStream.png new file mode 100644 index 0000000000000000000000000000000000000000..3d6b971933039c6cf4a0e953615f50f07695b6d9 GIT binary patch literal 56133 zcmd3NWmgnX*ER|Qf^>IEhs4k&-5t^*4TE%-N_WQ)gLHREOLq_5Qqm0Fyo1mE#7}tF znoqON%sFT0wfDYGn5wc28VWHA92^{)oUEie92`6s9NgRw-0dZ`)&aFA^j&W?#w_`{3899pnd90}aE06M@dtx$Ofd!u@QQ4klwI%!P zuSIT7!8FmLw=-6CUlcsK@3gKrclN^nXEonqp|YJ^L5bV*VYTJGl*NeOZHoU%)B2;1 zeTA)+0YSw3r!Bt=r@24PUH>gegdd(rq(0YBdqWXQ*oB|(x_GZfQn^mHVLJrmf&u@t z?whQs^DvKkualg`Nc;J)=rOqDMuR zQU6gjvTtV~qs9&oH;*N2e}-+Y<*4qiVNEe-(jsmQz2DydS-9}|#P{m{wuS9Z%qVmu z-D}oozaqLChrSYK9hCz6x-|c-2aF=60(CM;nKLDe2VvXf42PjK*d=DIqc@Jo$T>!9Xp7mHVLxv$CXO;j-=7(`OPFVSqu@1qC#xAnieJkW3;fn$ zN>LTJvL<;-z){h!wuG6(QoLe5*quTzrZ;?s6XVY?!V;&Y?ft$aN@Y+Uty2G4HLG-}R49%g;N7O=(qGs!nWdt8?Omk_+& z@K&?Q+8x#q)`f4M#mvq3|0yT{Gip>KtNkh=%R2#uGOxX$;j1&JmTx7^8?k?ekAeW* zPg^{?em=aWX7T;2>wFb-vbOPczd=(==lR7wOkycPWdf!{7j5nrw8_;z+um+HI7#|U zOn>J1u!sJsf+{PO&$IG+#DAEoGA!?+!*aBz*t^`F*S&O@I&PTEvn+_(4VYI_!i)L+ z@MyJ=V8%p-tmA!hk->>e@$=h%J{=g-5O>7>bN#&&=P4M_pXqa#9RA5i-@Ig>#_o9TlHk>$OJHvf(Jf$R z{bxWGnAye%QU}yTw+Fh;r+;#J-LJ~zv{p7=eu>n>#2iBeuvm6Wy#3KUck=7x-dj4F zyoCc)^5h>K$nh_45Hc(-E{&&hc(1MG<6`l{ob&j$lg9tx;eJ^`v~D+%OB-KtJT2*@ z38+(25{z3X^J10aE;gE4bFE$nE7u`TmBzl)M`V0z*h$6rWHT}U^f_VA$yM`c4GEEF z#8%f|t11-2UT_|W>p!x#B5vM2L|xU16}F9SQqrWG)70##bbv_;853}MnR3|j{86yW zjb*~2p>)rpkRf=A<;{zo4v-HnE)pGE`02!2zYns?YTErSjKn6;nlSMz#YE+P{;fA# z%T9rC5W_dIyESNGMmsBhgnemoac@L9gp_KoNGkTvQ`V!1J=WlRg|%k>6&L6HT&ui) z4z%$3FmP~R%_?bU5q}CN*%tqSdmUpW32sYf~K+~_`rED#GWAo43N<0)zO+0 zdI|HfG~9s3<@yTK+ zv|+{L*6x+!f~_`vaVMp~N%LQLZ>BF$;rd^C;TIw zPqL3hy$=_DG<6g&5iKq@RC6YI%?o#c?!x}5&jUv~n#g@69!Hr`ml{57Fwv-gvp>Vd zhCa-3YBJ3yf6a`>-FtCi_asN(TgmQG)c^u_8Y&}N}4V7?R>j) zUt$QkrnYt_z_l;K4qnbN1D5=hzej$c5tK}T<-m3}uBU*HJs@s}!3`z3oc4BTUv~_DwJ{oJ<=x-%Olwe{6=#f?h2QDG+L<=9+s5`B zuyD@;hP$k<4TvufUJl;1E{#Go>tiQ!X6Iv{gDVVp``$MgO^-@$22o8jipAA=xQZ1} z@2VoT33caVDr3WY=g#{qcqf4L!QyY{R-OijoT=m`#up9b>vP9KmNiv1tfjx;wch5G zm&2RH=9tf)DiDx4Dh}d5rPDXj<8i6mdnj=frEZs4j`|_7ElQ84X}TWK!>o)5Vg)3> zW3?&1lgGa@bWq*>#pf`&Q7OZ+H_V;mtN2ka>7?aZf3{~cY@ zS-55DZ9KEJ1-^$jtXebm>~z?J*L?fBTnwr@Yo{qOJ`Y!ACqeor?a!AS9}y6{4zz|h z9c_kDE{)pnOdDN!Rw8?`pN|;+FuWLfZ`ABYuHP`7mf6lIcz0UIXnxPPPaZU2wy*mV z``l0vApmaQNwx8`94RSk$Fo!@PNO-AW9vmXuZuLBHJgGLT^`~kXCI2Szl=*UP0oTEyi%wFiRV<2bKg>LB%+ zRvK8SBXXYY`2zKC-tCZd5BayD$e*OaEgt)JZ$_e3D;~qG=X>)sDjsPo#O6+!Pv0Qv z>P;0uloYU+1rnoGl#)cpLD59B>SQVmY#j~Xgcw{%pDL}Cb(Hv%np)ZF7iw%AU_T;BsL#*`YO1A`^E?%EYC+$yJ3ec6 zfb!RNVyq*o#n9@-YQMZ z4og6+#U=Y_+mnA&NTrDW`TOa_gwVyp(^m*mz+`ns9SAJc1DO!BxjS5Otz;(Qq!xO} zN_)NkHp9gbouuB!BlCQr)?%#njbLy?op64f4rZ!k!ZKwj04oXHr)7W145_4IiY=bg z5JA3O($1(AS#ddMigSEPkPM_FwqznsGR4?LQ|+=LCYv(}w5;h&Q$2Tgx0sYXE=EBN z16cjk#9Mi}0PmAp<3Y&wx?>i<&Y>Fr2WcsJxO#Duszrz}(-eFAFfqWqGX?F0ds@PFf7{Pi zj1P64x)>iTKj)2uyEalTX*b}qFb=QK^NohzV{-9 z=fme@EZQFa+IplQXnR01+nl$9bj%+!ZTJ4gkEwF9v-g^DRDAot+SRNT0fWoR202Y1 z9&7u-N9UGQu69`gDQOI<#aB>{^p4XB;rm1P_4mZSw^Gz`0``^s=MCEjBER|9&0_5u zh->$1uRI?)NYSEY!~!^iYO_U6Ig1L?30j{^qB50uhllN5$E(%cQ(rs)Ax74mslGTd ze4NWOWN@%w@GwSs<5Bqj$F*xbCcRQ+Kvh4kL=b7l5(M(JNrf-2AxkVEjeY+2C3H~_rx@H|lf~l7b zWH&?kw^9?7^~s{Nfeszrz0KnY8&7bwO`$QRO%EWB^vlDG~40Cw3jpo~Lc_Cg+OdOPs@m zBTfqzi5o5Osk#z2aYn3OCl=#uH4A!{`24_Vf=R|>u#gw7HnEnO$W_b@{4-B_X3uEg zT%oIEw{o1evr`Q-HYq_gr+aF5;Lw-VG*0R?cqNeJO&94~x~|St?iw@s0Me9!cZ@&% zf-TeBNe&3W9wf|MWISY2@)+aZ`DN!no2c^34Pz?WsAKKr- z!}Mhjm}8_n5J3>be|ZL8Qp0(e7p2@^B2}8UpwPn4BUnxO%q#5vi$_EhCe@`uN#3OG z^fmZ=@fYK?^7P+fW_(!U`Ffxr*_+t=pk^?@cxj9oO-bFF?6mU;+=|7TsnS%kmr#;@ z7XwWbk5UACj(N}Jr++ot)hquh^AcSCQrMV6d#=RQUJr%5<1#WpISa5+AKdlEo1|2Z z%~enOP4`D@ZN6@y4Ic}w;~~4b;J6Z$7u&+6fuEag>t4?-$xemWM6Mudz~@HSi54-m z&Tz_vboQx$LtB>ml|gNHw7^r6%k*dxG0uzPC+5(U?2eF9SbPu0)T1z~u&8ZbPg456 zmsOV`Cc>^WlH#74uhEhuVUfO@h}6CJkOlz9qHi!|>8JqtRVIQmJNqAJNbp4Abt%jDvzwCpxYx);58p;?G* zNr{bXv0cIAC5wk+`FbiE4kPQw*@~*YGv=Hm`7{dfnHkf}hTkqeT1P9@@e^X{oj4zh z-LTwT@x)q(4*fwc=-g7e6|=C}#I{ zmhsg%- zl(e?`3;f?_791jmq$d%N9(qOal^|N%1C^Gc?`RH9^ujE`YkA>!*Bp6E)DgIQ-g2m> zy#vaz*O;bn&bpv{^nGQbue&|h^Qtu2NahL{25i|LPth{hzB`U>`l`90PVqGkS3J!J z51BdH>3ZH0NIm?^WF*|^cAkmIAB$s&c-WK$+9F&Mj$8XWhyC-luYQD4o%!&uWN%! zCy2|xvVHZN-0|!7a@A?pt|DDWAz?F4DPu}fTs)l7y@Tpgl-ln#E&!oHVDjPotVXb` zRBe|FIC$K))=t)&a$NvO$(r%?=Y@>D9eksH48QtZB+#K~j!6KN&F$M>U>=g~o zBEV9m&uktf+*;l9tr9%(cCj# zpYmH2I0RygErQT6z?R4=Y|$U}(0c}-EHq?>i28S)S2vTxHMzpSn$jyjhDsZ+e&Ev5 zs;y^d@{(lDa7oOq?5I!B7J&gRJ3CaRzppvJpu+dKn$^XlWg%XdMeu+pM5Br(N*{E>Xq#S#^E zj`tyw)VJVvT)33*A$)Sf1D4~w^SyhVVh&EzRbURslaJ5SiIzU`p>*@=&ET|O(PRoQ z3lWFSMe>K7Z`w2#w67%i(Y|zk`u$zZP%kzvN)hmpbXpD-_XAH8y%H80wy8Xj4tpXU zr$>aDB2KGfvxWU>y#y9X^bKqwtZXoEPJE}XHN(EujM4MC=B1k~U~V9XdT?U-sTn1X zU`f(*8hEPh9I5^b47?&v*B6Mdujk^vJ9|w#|7;g@`;l0Qk1QrW^_hQ)eN-2&6ISn( zH46`*_Dj7PUEAzc7v=8&PMs<$_B`v}I&_hGb}_OyZ#iaqix3E6zkR7^4jJuGW!gXncVeXHv+pGDEO*&d+Uj@YD6EJfncpAHMWZGW|`8$mI64ZA- z+!5+-b*msxU8-jytQr?0b?ypF+I9URP-CHa6YT|{=Hw$&^h%Qj+UE^Pz9u!!OX{bx zh7fqZFKwbTi9Q!RemsueNj71Zp^kfY95(@f^@lluNmcgBie_RWsq?%v85~$&XcFiK zbnY>w8y@M%kKYOD=L5;xxhFow6XccHin=~94mXC-p2k)O2PSg$omZ6F8FLqVx@mfF=fbhKa<0$7rFjMkM@oiU4qT_QR2ny-Sr< zk^w$QWPkKwJWen8lGgNCY2k~{I`X&EkPVNGWlHh|$xr1?1#bh^TYna_nUY;{`{M?C z@gtMxSyQ5fJu2OM-wTfWGs57wz?=<$_60P2kC z8c2|=M3&Bd&Zi-2ipH%_yfd)!a1?LJCt6fdeBb#d#W3^QNF8_~S9vIhci1zn-D))V zM+-Ml$U_S*ARJ=m{4U~y+JR|ITt%O0nVkEEWF(tBr-Qh$CMJU+;yat z%L|n44aK`BcTk0u>k>S&ud0=>S3luKI&Ien_rx}TAt7GMtLE>HK%MLi(3hXf&}@N) z>_<5XcJ@#6+;y(bRC$TmnTHjh$UU9<-frR`!EFZ4X}C+!b`QM1Ru`d3%Triv0_D{S zCr7l58bMa6&ak$Pm`+C&V|&M((zees{{CG3Z6~nO`L^MkYsSb>L{7r z$239Vw-J%L(G$*fhJ{VtKcRek^HS0=!CFzPs`LSOm;kmNBDbl1iPbqX+lzQdAtvPq zC8IVSuZ1m8TNDCPts|MO&B4Hoj=aJE3}>9Aa{8W(`pQY5s5_$8sF)#k#iS8pspX_9 z>wS!be(^QpWMtLLqN69vt{#8KtZr&bAigbJaGAF8;C=rNvPGKZAlB|JYIv4?U>rry zq|>tNnqtdJ%n#F+_=cBtX=z7-(sN*^jijO%lUN^4;=gAKhzqYe4~oG|J8R!2+B#uO$r$ z{Xt`$cikS-++h`ee2{6P#&S5H2CxAiKJjFkU_)XX#1o?2`}fcH3et7>)yZ&S7L0;r zZf-7^+w% zjZ|@TZz_bNBGAl%4e~-*FW*!$_d8DQaRIwznLANO>Ee_=6&svy(8xTCceA;`I$gI* zcYo@to*43c)!<(jual!MK|ey?CkSz>X@o}1VTnbhC*VUV?MAmIx~<;r19ottm(u04 z^9SFMJq`u=LZ2v32t}MmoMB?|cNzE04o-YAZY#>5&-n^APqUEav;AHj!;Zm3PekV< zL~CwoPDKRDbfIft+oH>3gAz(mJFua3$Qp>NP<*zQJ< zA~U2;(N@zXiN)##2kked*djIQ4}x=MTNU7nj?(y6Z5s_o;v7pM$UYF*XvA7(q^u2D z)96WZ<}Ti&%#~?sIIwTBHDuDdJd350Xistr{#QVEnq;@g-B`dzfSc9ynOA>4#}Kbu z_np53nV5cWOevD{M|pbmJOyd~Df?)_Cab|gR4jHGrNnOS5fsf|T#{D4fQ=D~qDGiQ z{Pf3P1b&9KFEl~>!L%EEK&};umBTT6JxEQ4Nk|Ik=2Q8aFdBZWp8{>;5n>IRer@^s z1l8+7tz|Rs{_jmCjdO`qdnhHIY4~x=s`D)>%+wnBY?@#C!?+B=EpB9QekK%-KU~wF zJS;|cwk}vq!@o7r*vg}!U)kQbl(3L>Wu%L-ooM(QYATSXug5l9g+ed`0CWuJA0y+N|SK)LwvU&d%zOuT6jov|=v}7TGGXOyV%< zXH`Rumi=V~kvclrrdjb1Qeo|q*YV+|X2|SSGoy($aXGjun#T^6a`N4bnk;1e z7Rv=d-jN4o;04!=g9i;7Xe!?dJ$*B=XY6mJXiiV6i;&ZPS)5|c0p4Z5KN$5c6)5wTN;FWT;cEpj-gxq)30uu=71I}&MK6MF|9 ziO--_Z@2&ddH2_DO$$*CN4JtvLl%JW6ZFSxB z*5;k$6sTIvU?%=Z-R+?05Ubhh_|2(fktozbWmBhU53Y9Dob7qo~{=T z4GkN+RGtjg!T%f3pb&ekv$+ve?!tI2Lf0E4qHT0@XpHwZlIHUnsx5!sb9HcUiHQfU76STC_$%;vX!sKB2q`WDTN$jqvu`TZ1d3*X{gS&w_ z(=YlT@Y!z_;z{>RbEKXUl}X=5s#N|8$7vT@{b7p54vJ|6!heT}=8z$w?0fQ$rSm9~kc zwG`sOhqb1XOOneeJH>WUkZ}VM#l-`IH%Y9aOj)42pIJpFKBBe-3VC6U2J)9*zvpH8 zU6tCFme?A*%mq;h8czDWbXyqE?W=7YCt^O|l{KmOJ{@3u9p%lg&e=XbJFOjjYf00C z$fjW@ULZi!A>&cCJE8+?^}B1rk<#G<(Cp9@BjKsPjFLy;ehM#$q8|ug%!2C4V)h_l z_spNi1+-_NX? z`92%6HUAL>M@Tcz{+hc%FH}(dN4^N}c062c$|HvG@(BAwLn^!(4{^C6;i1uddje@s zD5$Y2_UQul&K<}5W|SPQ6`EThEPbo5){o_1ZznJvPY(Qpt0(F9O(vB}B{(?XrUvHA zIL9bo@yvce4zjZdOPqI(ecKljg;qLAB+IJbCu<^54v7w^&2E9(){F5mx2}zX+=Bjw4d%RiMn}dRxr%sHMpIZ6%##1=up#iOX_ptWD9Zih!)z&q+pAdH^+yF8O zW2BXm@#-*L^z}v(&kT*dSuh#~Y(gQQpYthskWLXSt!WYV^?ai0%i;)s`WaOJTGIhz z!{i(ztP1*B^1JNY&5$B=QUg;v=5?q$5tUVs3h`4mKvKu^PAAmnK zJRBBA8+q-UI`2^2%vp0;JU7|(6cz3hr$2#;%6xh=FB*PH{$;oRBCMsxR2)?L_h6LV>cTSB{KCOZQkVTK_;YcwttDDA3<=}Q=#+*o%40KQr zya$Y{HMBND0P=#GrJ;tds*BQg#b^3%q+{6GSd&08-0l2Xj#^;=b%61Ybr+oDuND^U z+fu<|ds~u)r$elM@WqAys?+Yi!6o-VbM1YM-;!f*eU{JFPl*(v)%oSKO64CK+E+4# z%t+VEF1RwBvAwP_xC#xRSo*Sxlmd2zGu$4yIso}rAPt~zaOcu0ar){-nj~rL3jGOI`VFp zN{ww>tLd`*YbT3*Q4Sw5?;>Oc_MK#Ci66Oo@|)_9)-kz%)uMOBU6_ zQbLrk8Sd47k2~^#?RGNBZA{9H6E15vG6*Fii$B&>bu8tD&OFO`~6b!)-u*EOoG`=D<@VG)=?nKB z!5wb(Wf~z>*>GkgB++p%dlYN@$|tK?aBO@F9(FVL&RUWtIXj9XzR-Lp8oR2nx;cL{ zn3xkL@f!+Rsk*&pdUeL%DmqXf>P#t+$S7}HV%au|6Z=una%%FhMX%Y=SY6LNT_D#0 z6+>{p@|aj`k%{q0o}K`KiUx*ZrKF?|De7G>ZDCim{>x~Z4LJ5Xog?e-xQw)14sx{9 z)#=$0_l%8rEs28l{YD8!7&#+?u|S|zX(yghO3|BxyOyTry(1u@2H=3lF^qhZJhEdt zf2yXR$@U79%44LoxO{0jMcgxou3^C1WjqvO`*JA(lxjFb?welBOw;3ttsNe~`(JVzU{X%Af$8H* z!;)-v+pjRBTOOI$R;y1Z-j7RDPmW3q4g3FfVXVw| zvBecC3ThsHpG$IOc$zHgyY1bvNH{Aj!Gr;}PF z9iWkj>|{#T(|w$uz^?D{H*RStXVU#(_T8J|zR0Y3dg?4|4JBHH9|4qbX2O5HXQ(Ce z5kf5hjw{zLa=urP%d1bDJ9?gjR__^&l4t|Y@&MxW*bK#LQS8MIQ%5_&_c=yS+cIn zAcbqqU)D=5AA5D>rdi}yA405F$Wm#}dZt&Q9zQDFtW zAZlR})+T3yRq5+Rf2)e9V=7jpQ5N&8xhPuBNko0#j|3&5g%5HFzSq9#ILjG!pPS`f z&e#9oktjv2LtgdwR0J?kXA!en^or2{AMZP@YPz@~p&G*R_J>(i+;K{7>Cd5FUily; zZaDD-RC)u<$)#h>iC+cE!F9F3#7VP-C5aAio4Le2Z_#a|X&HbZau?;fc8XLkK`(Ox zNwf&mPG6x3=k{AT`bv=h>MNu+;)veKRvpVf)YQ-lL)mI8JHzhjleRO_XKa_dcjV?g z<`BrbE8F`SYM#(z>94kFiYT2qL7r{w)U0%2hbNh@t-q~%9H_U}Gp@)n?B1q7oGEs#!<&UFHpC|@~oL5UoI zG#p({Yjbo`)pmYGY1-10Q6Frjtmx+A=zLZVlBjAMA%HE1g~!-O9TDadG(lBE=hMF{Qr z7!l(op~CRw=4I`*Ktba=qGDl{u|!5y7fQG`Q|cqz6YR{KMBHMqkhyl#8C`Sc6eyGU zkqS8gjthoQ!5Mt!cNWD32&NPro8ahz?C#nA%`jsDCIJ>=$QvX;}6S6o*Zbijc^B0y76L!_Da&gnee$3a(qEI_U@5i9m?iM-) z>gl-o@A`gKq)mqk zVP*d0St3nv&PDHymh+WU>F1(?uWaSY3cx0^P+|{YY7VK3{o2RT#1maeku;}@c`0K~ zsgL<#YVFsP4^m~9LBSfb6J1TM^|*|P+tMA?_I8Yw8)o1i>AdXfTZL|!2KzY+)(1!} zjE1X(ySdN9Vj#H*o!({p^vm!X_`z*aclSt@>}+G;J5yHgWMsho`AaY51R1a2^wn4Ba*iW~x#+ z(8}q@iowCz7ah-i=D|7cd&j@ywqo5WP`=E+W1L5`EicVCom#cZR?uashQKra1mVPa zJ5cZxsN^2&N{P>ZHrt;HO-;}S4mYOJTl;08#!pK_Wb-$@60~<>h(Gdiloo%dU2vbt zXb9s$K|Wv3-TR0cjvKbW@2jCTL(&B#r#tY=mgX2+fn*nOD!W^LG+CXPZ76S6ftQCm z@YVt9>qY16@cG6vIlPa9f9`VFD9YN`6nzJL4@AaP`rO8$-qp9XN2kTAVN68*7BnEu z7U@!UoY=`Qa|P0Vd^Ggkylz90 zfY;@di6&qA_{u4^cf8la<)=IQIW|mkhy*VUTZkOOt-d(lJVSawB!q2Au@dkfrs}pkA*;RG*DvYD{+fxnRY%-qGc9;(%=Sy<!dpU@bNxYF0a%V@LYk%#s+!WdRsh|Bf}O z7&6mrcs_n_=+q=kQ2c(^$ZLC6R;u@LlV0hbE;=wMgw+#mCP%$}ZefIuDWUQ&4=Vno z)!~k*vfusAPk$AjQA`5=tzMGHU5?W1YP3cjXc_%M`LQ{rbf>W7@QD@Wei#4U^!YFM zDCARLB|UzP0{E;~jsrms-%@{A@RmY0-xWgRa*Q0Z#9ZVuXu+FG*lP$CQSJ!JLbXOMb>SlH=A7 zXROX1g|s3?k>ou}z~yL2eGKTd<5=28=Tp;l(B~0}!PX@l>*^Mi_U-g-%l@k@x55k$u! zjs^WiZ8Ipss6kA}Cxgbn8HmE-7UW>8iRB_jHC{ipS?|9O1cf}32A#VX)?lw?B@8db6sjv(MCMEFul2qyg1O6Rfut8~~v!UfPgz z)Oc0Ah_>DEXAjqbSSrzpLzu+|L12*y(4=Y_zdgQs747T>!#P6x3@qgMI{=;0D&7x;wcK<_#-u#u4C6~POQTcho4xb@8Ci8=*Z}ln-gIo2h z5afAN+zLVK_iQ|e_;^(E*wTp^o0;urUA)5mrb4^I7&MsLX7-YOHeY{~>2G{mWqC&p z$jeE(6IcW->S0L;tAWses47}fa6Msg4=|Z+v(dSAWY?+hZ#ei{`K&!+EKWj}ol=hX zF@@l?X4dG?nCMsX6Xfv6zh7}!5iN*Z;e;ZOqzU>HtZsZs)?D%5$UY#&TSE-K>F0a^Enz-7g``+O(*tcK2iViZQ$>z7THIXyH>@8NKJlDvS002 zsXEP|^Bm>A`%eXFB-C09OigG#q3Dhx`Q#veo4qB5yAGx402l|gKr!ob8|1vxrah2O zeqLeDNoOp+4X@_e1)rfL(eMSz6h#Q|l5ust+)oGpdGH`eIm ztW)#z9{Ur?4TZ$S>F!SU1nHbuyCg8W+jp*gZB#^9T$uUCFK>UKi$zd)?t0Z%kPa#G zf#~WjCO1C6Bk>;_41{mBHfp{4Efo^t^fi{y#-CCzRx}~yDxNWd((`?SZpa>o)IMp< zX6*X2GP2aI0hgabg$ay?sgAdDk3=7iAcK(oscO!s7QM*cYSHj73E99q)Ys%Rl^b|w zCgwT)=d;G*J2x&@5i9ebU=M2q=N%5%Fc4w%vx8)?*G{s*gAptk=Y|YTeN%Sb2~{&a zrhjuZu$j`fv$lm-0^^z7HzdjAX3b{elM=lkoug7Od}W%-&CoI4Lg*76{vA#pE79D+@##S!Fpy3FCR5xlv@gpzqs@Sgu zI*k7*flej;)`J5wC}vT0Oy{c!O#ORLVn_ru>)W?X3vO7=ZV|%lF|F=tHt@(@Fq6vV z7*L#WRj!X3Wu>U7C^qDEt<)7P1~5QyN8dfV1sbgVhW6-;`CLosCOFDsr2A8&J~8}~ zl6{am`AB?_e4V<>!l0!p z<;@YK?Rvr9kj<|!S49BtcD%If;Yan*km*Z%dnfvtY-{(v1+=>~{}YxYJEqGC2`%VK zOL#0v6t&0~RsK8=G+A6~nbAT*+6*Ll_*;N3KDnh#4KczC*B*t&Wy+ z?X43|GK4>l*uEU&x-|ixb)BES+)H|hXj1cOyZXTXQCyqxs}F%lM5uCh)QNa~L3TO& z8$v2r?*UmcljA<_3-s(l+G1q7*UTQw_GB(@8TW^untcmi5KOIzZ;a2U&v(-yr?K>< z-`j&d%fxehfrTOHvkbehzKpN$W>oW1Z9nW?g-%n%;>(DW-9^SGwq~@qAVew4+aLQo zA-J$ou-J9}v{Kv)L*(JFp$RULWy*dv27*24xbO2icJG>zXE&>0?W6F#iz%NwB_bwb z4&_KtgY^~m8)r-`VXCz5`ya~NUwnUqk{B1Q(Ac7YY6P9lzccJFnPO3h<<2|^FGcZ3 z|Fkyo@J;`Uc8h)(Cf+J1FlXK06F6JBC4bN^(<;;Tp=j?IkRRWP4!Mkz-SX!ad`VLR@6BykujfnGH*cm!IJb4Y!{H+e#NwrhFv@bPJZJgV zV`(V5Q13F0g&I~?5QIR=ug>GsJYkbh{?TIw-`~Kq)Do^5ccyRdp}V4BBH+>B~ow_8MzO8%7IfH+w^)rHJOskmRsG4RaRP zRFmKAy2GGZ{deS!%>++$?()6%lMc4&cl;NY_%~#(!k6Cy5*^EB<3*%s&sb7|nd%tfD)t8i?%JAOJg0(QpFHoqb9;pL(OKgd!9RdU?~G8EIdd z6=b8Vb~^hN&q#oB`M`F&emEnM9;|$XC<8Hk-KHcfsPvQ+^ zNFekhG6|ZXSIDbeP8X9UZdqMihI2Pky%PNYG80dQAfyjY-H}?cKU6&rk$Ol{t zn~zRDhS8Z{5#T;i-U#6nQj5~v>nfTBpQubW=1QmO=2m1^cXxz^KuA582lZj~f}k_j zBrS#rcJYn-E92m+zMbqWSGnccTYG*N85N@qgDbSKUK~m6C07E(9}$+Yg0(?(l546 zPy$=Rxflj~fE>i*tdaMzjDGV{+J_}xW5lw};3_1zBFj1Fet)8`I&{1s#1kl{is z5iJ|&_kxRFuF~*<+Y}>);uU_)Nz_P{Rjq1zA*#J_1ZkFrq8VcD_b(F8=Pj<+mLa}Z zg6oczXR4T2$r91u1`G@kQfQ2HL0&p`hL5#&G}3mP%?S0?EwC3UN0GgML?L8^$ToX6 zt81F@jwM-KRT7 z@V0y9(tkk9&z~0i{cAN~)WQw`fbmEr9GRTy=O$BOOS#-+UGE+Fz8T&b!|RIFedr9W z>8@PW(=56Ux#QAfunu~4626o7T@FV%~2A^XHxNt>BiYg;c>(isu^sHuS4_1ncPGb9jlV zAX$Ezc@PMdV78#7#28h+VR;3)+!4cB1W*M8BE1>axI z-Iy|U3wwgKDYA%zhsDbp)=RqdsOF#B$E9LR&OwZ;M!%Nq_5^o$j)^{__o#lZ1-$O+ z+F2b-DncwaTh+tShv&@K!7g?b;+*jDkGR8J8FWo^u`+m;tys;?{#_n#b&;}U0JO%$1s4NP&n$bz>FQIP+D#; zMrF53`Aab_+~dIx)|^%0=0RJL7eEbHeQctOh!J_kZ{fO%4hQwvj$!+CNTVN+W~|7; zqM_E-(H}80^C84*Fnn~BPFFGN3!C7gzFBBftSr)AmvVD|?0C8LvMBhYYbF<9+h`<+{Nx$(RKe%ON?y2wWcaTcMAfh0w% zURjF_m!pU^O6okJo3_7nGb7Z!;x-XzBy7)Jwm}Jm;~EqDNw@%&?3v}NzxWchYL(UN zJlp_Zv0O^QU+Lc}V{6GJQ>@*w9uFv6&7Al5NlqeQ&-G$pPtM7F<;>0D31OhpF`WIV zg0QM6yV_G?B4}N5mXk3_mz8GR`@rVV{+YDbxry$Lw)Y=b<!uNWSD9I^gJQN=p6ofP7@Y+y<`2%F=(FW&vbkw4zp0w1Ew#pOaLgXxSMIP$6bGf zbc_&?5!PQ-gH*Z&_$*Wggu*F|SC zCr)-vw(Xki$(U^0lkFzkwmsQR#^heMUEl5Z{Q>XZ^UmF8pN+NF*6-sni>Pp|4fv$F z&dfE^(XH-rM_ee0r>8Gwy|`U?%WrAi`_6Ol^}!MPve2@kBvfz9rf5Mf zgV~#9r>r^ZModk+y_FZ|HSMfz_50-ZWk1?~BuD-|Jl`11en*4 zwCPdwfpE}C?_8nqa&*HH9PmAP{22lmMX1T|UL8~pKJmS+X?EZnF^kJ=3`MGl;Ek?& zFMob~l;x|6poJ)vP5`zUQphP+{MTTVQVXED_s$AeH&nBg-(+${gw#(>ZBQ+{X1P%P z!TBaU!8KouuB^0mn_D}v=DCljadlPmTK&tJh?D2uw&M`}6);ovglevksJdp#H49nh zLT(|FQ1Y9FU4DdWzWs6chip>gvCENnt+}BtW#3uaXK52oiu1=CvKZ_52_I*cF;$rS zY`Lze4d@>N_s`L@K8g*Ye?I2 zM=0j)tt*@!VelxJ>=UUf7bU*q=&~1>eQ4j1+AfOom?2o6)0X#d=w@^6_wSxm2sbESlMF__fi3}uGie9sfiTF zh{o%<_s01u<2N7${bFtI+0O@3THFqJh+jwoYUkgSOOt`7M+=HSpXCOm6}{?_%^2M% zNt`8;j)S%;B6C=Z5V95N$v51WY^OEt38Cok&NKhC1}tzrJ-Sh{tUTut6zngY?LU#Q zksqFPvd5-a;c5o!zeE=dn#2z^l_q#zILjETe1P=2_^a}G?8(u!B-m|-rTgSBB)i)5Md8w^b*;@x$M&LOc#E=1jU%=VKPv+*xso=d_ zU;3|A>dIQrj`utXSGoL1tzta>aLen>qPQ{_{e-`n{1eJU`G-g{5lF^NNoL2PcyX0} zK?s~9(jX%G4{@Q^ZohOa4j%c{p}=mrZaS00;wMVwWjYpl$VEp93b~&9wJ3TT9wm1q zdG=aJLW_7jfjaMe{=81m&jA)O5F@l}9(POES=v>5*vcyOXOC0If_{m)SlX7by|;+28%HB zdgE-GiirqTYmt}UaLRn;1z)d9e_)2wqTyhgsMZEvxwXTLMHWWxw(FQF->l#X02%Q7 z?#>#HCa*N^uW(ZGpJqYgXAOJoZcoSKnzxcvrbqeSgfpj7yExky+{LEC_uX^DOd-wt z+J_P}n_*)Lhw820Hn>b>h7To7^6U)=+2z<$!=LwB)2E`mOKEDs?9eMifnai}VSD1d z3T00)>fkdO-0uOaX#LKv^H82C~(Jft0tT7K>q@&&=fYZB_+2eO=q(kV@V5>j`Q+x6{f$A%k2=mC`p{21<)7}^8a8##*R&nwkAr8VxWG-K88iR+h$!l9mVAr zv+kYwWy?gu2_kzRZIrEA6OuQ-P zFaf>ZeU%v6$A70_Hg~C|-Uj3-XL4N?D;nQCXPHAKlcTuvm5I}dah&574-oE*PPZ00)6 z4Tj22@6s}GKGfKL5v@v+-JGV#YU2UOFwS#Jmy4XE|1iK{MggiYCLJ3kuE=t@`@+V- zv{L+%It#SpxfZn&mXyJom@p$LvsFnYN0h78%C#3ohLI=|v!sw#L&z-!%$1-f!@ilh zPEr3LTO&I2xqapIw|xR9>u|BY&;`$97g|kFcZeGz3Z9Sec_XVo_%!XDv+eR#y&gRc z!+RcZ6=8{{Fqy84xrM+P=jrF#&#Z-}3Tk*U^8Rr1%0NKuGJ36FXhJE!!Xjoe5b1}a z(iMdYFB;st*pbto%eD_ti;W_l89OzkAju+4bBvXl9~?7)lfO z;ApclApWvOWdNyj-BVi`OAy~KzqDD7i;a{OjwzzLK zjb$sk2!puzS6cNXt^P|LdD;;T94@R0YwDW!$W^r+T<(EKMQAHi=X_q_u!!Y32r!sRfls8+P zm9|bEB-%Y7`>+9PaAa>iq~VeV1~_!l4IQ%&w_iYFmY=X6&O(^%bITea=>@zjkd+3UrKNoP1<+xMA&uCnmA2)Mt1K zAdFoa#(>jr*nZzjTG+r?s^nymwYV!FWgo)0YFRdY(;~Q~rgGjFI-@PKwpw4FVFxR0 zwokJU%mE5aK6jv9)9T}~jGm0cg0JHp*XpiWcTT5&(n(lWuZ2cQ{sph>nVbiwJtmn2 zTbFfCv4qrf?Pokzjr)l{$B75yssCwT{0y`}j7QOjwjV@UIT^-7BMOg~+0LU?96B?d ztfh+@DHf-(-wnlKUWc0ISSpY$P0n5hk$6VONR2-C12Ux%kNAj~R2lxtZd{Kro-1cGY`)XFsi=(Z7|`r`uc_ zZtWhf=OWr8$TNXF+l7<$BNQZ*Re!@!-T)aNh@-khxp5`4-ee{*@C!PMpq1*rs zrZ_poG3@c@#nI^LH8u{V!wK4-1kDFuP|&mBJrGS#cX(e?@%Rd}zWRFu0KR2Z0A-%D z49H<{k;|rEW(vodnJ|-qkcfMpL2l?1>Xe;m?8K)sK}%l2_pNWS01Py4hy@?M8as=5 za;(E9)q?7QU*_Raj^jV@3ThbW+Wh@JQR_w?*Sh;!7g9f%5(_fy zT^G(!z&KW|!Kne=Xh99sp?`<^tn_3$0@RyHC2U0CZK8)NOw)FUv|94_e7%nZ;F~`a z8u=^hY#^aYIQAjpTF|Hl(FAzlV(cQ0{qT(kjY@w4s{-@vzuJ!T0W@~Fl^$@*3P5V4GhJzB)V2>p_IB;Br{uzKR+ux;?;TInJ@N2;HU%i=`F)bh34 z=E9!)!^sdajGQ@AaI=ukDOnY{k!qPyS!b9ss7rz&z4;P<5l)l{_Yr7*v;jdh+=jY! zSunrv*)ob}1B&>>UTCFsCthT-Cq!3qQ}v0RW|*^6F=Y6&ePyF6k*|ZpMn9Cmpr(sF z3oX+#s?Zw}#cLFLOQHa@Fhr%)$Y2(Z(2V)3xhDHQ(-d+gh-puReSgjiRPU-m-fEnO z9nHWNy?B{&|Ev*%)fK_j)p3+8gv_{r#=fo16PoMG=T~Bvh0GNBM0VaLt3ov{AxTW- z+@<*WOg;Rq`eXYGF*30Q9-AL$LMfR0`Xh%*+YchYZl!a;P2m{z6DpY+?AKeNG!BP% z)5FAM(6#Z!Vbk=2)ZfDXrR8q@FjO1?(bac2L?={-`7UGAG*c*-rb92&MGPU1?Ck4k z<)P3fQrhsoEF~=L8D3j>E4?@}PTMJer)lUS#aQk+>FAVY>72$Yhh}z`BDLil^UoOL zf+o>PT|k8?oL@lh+1ZOeOjC^lWtBG4vj!eHvFE6W zEh@x({sh!SvJK5GT20iGCzJm)jOKxfRFi`vU;? zatSKk-lkw(DDSbA+4RX9@b4wFLF0PA^07U~L~!VLlxtI%ABN0MMNIued)2%BGXkoA z;9qH~3a4_PA84tTQ;z>>+^!Q40&4!i!93gHBDkIk7ni&5ma$3-nxwq!OmPKifcU2x zO|_rvEoWKdgHXZhc9D_*UJL+&)qB@*T|I|$jMjIwiY5q!b!50Uv}H@t9ZFdAS49b6 z+`?li#u6QvV~A>~S#EAkhe^;Yjc5$G2N_0@F(*i>eEyzUsHT;T(?t_w|Hca?Wca%M zn)(Ed2=xrg)cdChXp_vuwkxMUYjdX{I(BWpu=tQNGg<+VDtYaU45bMGgznrd+31hc?wO-xWzhS|c+KB?ntkoAH`-PKEwe&uzbDzD|H$$lH7_T74_Z zGF7cM+Mm{f!w94px5O&~v+!1CIW&%7!v|zH%n7(p&L83O#~chp@V$E%fCQ=8(MkSg zu5pc@;iz0rf1!-lxs61snJZojL(1yR#k$pUs<{F2eT0L+~ zNIXe3gD?rLgvNuf!7;!VVtkH~4(*o{9SKKAumt+yBu45Mn<`=8G$pHYr8ND-FggT$ zacUU7I=Fc#;>PD*Fyd<-@UV{gO zwd+a$55S#2)hDFm#ETb~lkajZcAc+4&**Ln(^rw@-4JD2EUvI+0NY5GwbGnyGQNHv z()}`fU5!5TVno%F%Kn#pX0VG%FPb3<4mW z_mh}yfk%strY2Mc<+{wR;HoDgY~k?ey-jhYTBJ7zqYZsKr!o;vz<493u4Xk9LViOk zeR?Vd+AngpvY{0hQRp1^uKCCI(p5H)#cn_JCE`R*W$<%?;+>>gUH$>QJyk-_8FK+I zQ0b3-Qs25@pg&NB~HZas11=8G3&xr5u(&ln=`m zSj3EAFA@KZ`E?PPCO3}xax8Hk8!|~AR|kilbNy>0p!8B(2FS*;;9U6=b--F%TYqO` zWk1KO81N66khm<7DFkJDkV^1qCBLa5OQ8&>Z0G?kRmW-Q>Q{IEeaZ~OH55o&xZi~q z8isO5=Dob~?6+1|#L%KV67wW!e)W{fW1q5E6h9w_CB=+Gk+RHzIe(w&K+LJcW-E0R zHADXSD>RN?jW!PFjv`LN$@>ewn?Df(d!!Yi<8tU76VLUQar~`yf`YQvcl$1nst#;X z6C!uaVg?@frH%!ROiMRmrZ!NBj^!kHm|CgGCP)NDge6Bjn&{64cuq_uF><7ussIF|Uu z6wbCIxeX5x0k98B$+aKy-Z(A+w1UUtmLiB?mUHS$O>|yys>Qo$y9Y_y0CHs04?wwd zf~rHQ6c0sST31F)3=sYR*<~#RKxUV>oncr_0w;dC?Y3r zXd8MO8qeL71o`I)+xIT+1^}j!RAWyL*3)g(b;?C>&HihAu4I;k$7)=*5k4M0xISta z8Z=T~XR-~so|br~v?LJ{P!qc?RvF&RKQOFAPf8psPD+oLt-@cGs`qX3>95_F^2VKos6sw8iHdFCIT-*95O^IyV^}XHy1k>y=x=KH<@!ihAIRBCs(QL)(K#90}59ILYJW5sLCwY-Y8tU9w${|6m=r zFryWV36&<_0ULQKLgbNxM90sn9!G>9Yc9-ibco^w_ErXUv+j0}xob_0hSz1<> zyq5jb1Z9nWopQp*++b$$01kx`g8^e6Q@h>b*FHp;yF#Ei@;a-kuj-E#r(asB zJ2+hcu$4R#A=lFseXBZt(`+y+Jqd>D=9FQ9Ay-!@VnOgwXt>demvR8OJxrY*PJh5- zE627GA`OdJbm*RXoR555rnau(`vx*zm3z?~3x$q|GK?iL88d2F-YS=Np9-*8V&;a% zQ-_%>48qPEw%dY{PUeXWcX*cqr5_B*zmt8JJJ+WQPN{fH2n>~d)K<>y+DI_RW^vyn zAyK_s<{rBb;EpWS?zcJ%f{A&&11xkgD+MT>y|ybhm~w@3ed|`lA%W^*y2R z%k!#CG*<#@#yrDUDbL^lBmqEvTf2Jt0v$ku^nV9LL3IEebhH}nY#`mS7Ad3a0Q=JqmxaCyyqI>t<5O>}`{BR|fgz=Xz^VMTJ!#Y%%S-VM^eyVfb)O$|NS!3_v|< zL-dmZ^H{^9Nq|lNuVGkG5@p}?n#i4mrzF{Wh2zvdSK^~UUZ+@UYtbmqq<1U~+0lLH z>tZ5+S~8zj3@HTTwPi`jbJ+x>_C`GC&0in5w(YJyfFGyAvM zj4B^inwj;==gcYzB%^(`Ls`B+v!aA&A6g8Z*4{?K!jZ4H0zs%KtrLoffE$6vgLbV= z<$bR!&xT|1?;%eb4xf*=vr-0KEhMLa?20tyGOUopa|+YjS&Gv=&=b;vWtI%*rZ~+H zEntvA2(_O*dID3=7Bi1Dx~yIb%&Q9)=>b})!e3^fLQ=grH-Ap%gl{CY^OF%HqPcS? zW3AwL9stK51nOb-U53X0UEH-Prtz<84+O5k@ca^rvVR||I2$&Qd{(~Jba|W zva+|+_z=u%COyr{$Y%L)>#la``MNY*X=TGn#Cq%kww#;n^e`B=V>x%k{_$f_T_ShH z`U9Y2YUj{8sbt%KOCqcSV+o3C_BJ;Kz#jG!6aGY?f%HXwn_l^{GE0|SIW!|;6Q;5R zVq5Q6{CTVLjNTH3%(OXJ@}|9;5@3O+!LBPHP|2wU563VOwbp6-OpEtouD zN7NEJKtX={%DR@(dG6oseZDos(~JI{7&2l7OM2cw8MtXv(OV^c)JJhEez66Rw|u<^ z@;e0s2%ON>l%Lpy$ZsPrJ|C0uS$7x>dYlOMh6owNqk=%hJasX-+ zush^(sc(-@gGILh`obCctr^y{28U~-0PL?-L#_D%JYA(Vp?$cXCMuY?H=?<@s5ODz zsR~82Gyfx4H=>34qInCPuxfO4Il!A=^_VY=(HS|r;%R#Z;0FjnX$q>#!^;{$qVdz+!VWuCt)Z$ptaApFTh`@CQkrTSy zF}CfWI_=~Wvs|AHa-hGcvFyYN)vT#^E6^2~1tgYS5=a=;L75ub>grk{F)Pb}YK6tW zlDinBZP-+^!B#o7{@|dH#8xq}w@mWF?g%(JNMcXuA$%ZUdv#CNel)-$`CNf1$`YzB zC@R563MTAUla&MY~MyT*nGn_{CWQiRecGPVyt$N_T{7QZ)Wtq7l<*XxKl1$ zKIDCieaPvnqHIKRo;_evLOa=`Dk2@w#|C3V6hX@BSR98w!cAufA}*KBFp}};p|ZcQ zUn0m`$J}Oth~3qd`S+2T8D5*oO-op|V;h`_G%S2()eQ>-M3!q?9&SSTO*^dwTACP6 zu77MN=}+LA*Z@jS-43sGu9ff(XN4DQlHYZf4*m^pAmo9^ZE-~oLmz6g>YY^0@+qQ8 zAjF}BMxhB?M}1v2<^B>SjIRfmIsc-LK9VR>xkpa;YT;mQWF?ya6*pts3LTK&-ehfx z!gIg6(Rg0v(!XjDU=BtY_g;*n4H|B-RDr-p7~ z^lkL(&t2)`qQwdZwPb8N&0k8*FeF1B+<4Y-|Jcp+f(c>tT`yB6ppyY9OOyazvYuktwG#_F+9z&JcxB!m!_Oo_EEq3cP7_kH&oj2xi*pMC=d$8%Yh znY6_sL7WJ z#jk^}&-s@sM|9Co@kZbt|8kI<#t!2>b@$MdHL<9iL{l|yl;MQ4Ydbo4uU;xzuit-< zQSu=2F87!|r(!gYsN|bZuy;06RM5z2Qbl@XMnQ=K4V$p zibkFbH9%bra3zE%Nlv!@J-w?2K$*b7WcXed52$^8Qfic~gg)al?RNb@MAmr&4Ck=a z`h9QXk68>|&-bKgMRL9dfC}&w5-yX4tcdb;(x_4V#LWjqcJTpIjA>>iI0moYV(y@J zstscIGEDjYsj;2N%XRc7)%CRg-H#(WlX2G|nNe{mTE<=*pfUVH=n#-aVC=AIjWj@k z)x`PRnm~VFGF(n{13#X5?#i)s42&h1!@QbSSPld$5xFdnhxels` zLp7zg>I4jpIXu3PuC9kgJz{W+;92+`WwGeDGi zaB$YLC#}C=y4ydQ%YDL}@n3!^D|sZYnlOd=zgArPF?fjboV=I_TuWV{Yq8a!C#l zCqEv|pJp&u|B%xdfXibRHB~_JoWpK;(oj%L3yMacgdk2f7c7!2W-uAkj#mpN6LNwoqZdEI-j@)Cs@wg>{^o&eRFY|v7U0n>U<9oM zeK}%^3sHr17!n<*3T$bh&?gcqS5BQH(|aDBQZsNNSH(0xud{)}sYHZkBG6JL*VXrC%N{bkj&W{>gwcMJT6Z)Fg>{&xsU$Gr5+1rmy=k z(Sd(+bD%u4>Phm$TCi9Jh0ZwS)OJSUGyUdgAM#ma)BHy1HcnRpqCp~%#K|Re5u!GB zl7EWoC)Au5&m|YUJ*a}8eCYK&e zWCHy-Qr!l8wzc;(C;yO0cw6)R^y1)T_VvVf7K;k+Rfs(1G3T)lk--4$0>|lNX$r<{pd@W_Txc6MRIEyiyl{0S0f-MnEo@}TJJZ$~1DRKo{Lx6P}qEEv)+lFh9j z!cWw{cw<*?BWHd6K7~%(?7xF#c(i$}KJ7!q7n zjeDLcOoP47s#pfHoccJov+_!>sa;^uhrz~-^~bb{L~0^Jq(aI57Cf&7L4lpmi#D@U zBrtyYO@IJGR6EML#~v4^Eqwhnskyp1M8#k~jy38jBdjq^1x4nVyj`sQ9?OFOm5%;A zcEWC08q?`}!# z4`g9SvliTK=png`4r&=@!89zRAVmI|;TP$Kfix4%wxrTDci89z`pNfkJ|rh`2RFTx zPG?35c+fy~ugi;8vZ)tesTprfjZoDjz|;2K=e!+n9ISQq2O zp^|QTQMM?u@E;wDY@fRX{bCCtIR%vb%`B)i3_oHiqoCV$71q$G9cAntmdH;+l%W^M zkFc82X}vx}vmwFc8FEPBmixL-xs&_EKU+EZQL@6rIZHc_X8#kHCTQT%p)w5xA0OFq zM^1fo%#!>~ln7=rlMRsy@+!}Gl#FN=Dnh~Yt&AGs!fj5hAd?^FqUO! ziTgU4e7*JJC{|ZAks^}0Ew$DKoB;m|6NO*$YjCKO#e0{$W+m>)K3{~~@O_7GQ$EQ3 zu2a76A=wP*Bs;&w$&JS>+=&q7f?4UZLN;UX2A+{2i7fmy(-L+XsJ56>)3w}+RS=s#115zqL+yiy4l6TALws7RT&7Dkf`FrG%X<+=2{`bs_i;poZ z&!?u@?-Cjs*yiGD2>sKWK7;4)J7}&IG-M<@YzaE-yNtfJ*q|6QBsRZPxs1G&iRW)golU!_7{^<6q*L+1&Bek4u8`YMqPUEXlH2|4794NuV-lo zkVcbeb<3HlnVC9W=UI;H`Jvc1<(pl|cn8+7D&lad-&&IYM1CrQu&~Db=FA?F@2_`; zEDS>|Ygl*Dl8Jb8*<}Hj-ROU9Dv{#Y_j<2|H@O7A4vtOuvJ+0KnvSoL_O18+q?C)9 z+TuKZo*|RPKgGPHdC=1Zo|y$pGfW1NHao8I f1$ey^HvCL*ta4Va*dsn_qikr5_ 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 J8p9{g{|9{+rKSJ? literal 0 HcmV?d00001 From 27dfd1c15f246616eb298e6787d6e1ca9cb85606 Mon Sep 17 00:00:00 2001 From: "A. N. M. Bazlur Rahman (Rokon)" Date: Tue, 21 Jun 2016 16:43:43 +0600 Subject: [PATCH 118/150] Updated 9.md --- 9.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/9.md b/9.md index 752d63b..25054f8 100644 --- a/9.md +++ b/9.md @@ -266,6 +266,8 @@ public class FileFileterExample { স্ট্রিম এরে আক্ষরিক অর্থ হচ্ছে প্রবাহ । এর মানে হচ্ছে অনেকটা পানির ধারার মতো একটি উৎস থেকে অবিরাম ভাবে প্রবাহ হচ্ছে এমন কিন্তু আমরা ঠিক ভাবে উৎসে কতটুকু পানি আছে জানি না। অর্থাৎ কনসেপচুয়ালি একটি অবিরাম ডাটা প্রবাহ। আমরা এই প্রবাহ থেকে ডাটা পড়তে বা লিখতে পারি। যে কোন স্ট্রিম একটি উৎস বা গন্তব্যস্থলের সাথে সংযুক্ত। উৎস কে বলা হয় ডাটা সোর্স এবং গন্তব্যস্থলকে বলা হয় ডাটা সিংক। +![](images/InputOutputStream.png) + **ইনপুট স্ট্রিম তৈরি ** ছবিতে দেখা যাচ্ছে একটি সোর্স থেকে প্রবাহ আকারে ডাটা ফ্লো হচ্ছে জাভা প্রোগ্রামে। এবং জাভা প্রোগ্রামটি আরেকটি ডাটা ফ্লো তৈরি করছে যা গন্তব্যে পৌছাচ্ছে। @@ -540,4 +542,4 @@ public class ReadingPrimitivesExample { } ``` -উদাহরণটিতে `DataInputStream` কনস্ট্রাকটর আর্গুমেন্ট হিসেবে একটি ইনপুটস্ট্রিম নেয়। যেহেতু আমরা ফাইল থেকে রিড করছি, সেহেতু ইনপুটস্ট্রিম হিসেবে `FileInputStream` ব্যবহার করা হয়েছে। \ No newline at end of file +উদাহরণটিতে `DataInputStream` কনস্ট্রাকটর আর্গুমেন্ট হিসেবে একটি ইনপুটস্ট্রিম নেয়। যেহেতু আমরা ফাইল থেকে রিড করছি, সেহেতু ইনপুটস্ট্রিম হিসেবে `FileInputStream` ব্যবহার করা হয়েছে। From 8e6683a669e60c38bf38c0d645a66cb492c353ba Mon Sep 17 00:00:00 2001 From: "Md. Ashikuzzaman" Date: Wed, 2 Nov 2016 16:10:18 +0600 Subject: [PATCH 119/150] Update 6.md Added some more example of Exception and How to find out where to use try-catch block. --- 6.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/6.md b/6.md index e8d56a5..cd5cd59 100644 --- a/6.md +++ b/6.md @@ -208,6 +208,73 @@ public void openFile() { অর্থাৎ আমরা শুধুমাত্রে তখনি ফাইনালী ব্লক ব্যবহার করি যখন আমরা নো ম্যাটার হুয়াট, একটি কোড ব্লক সবসময়ই এক্সিকউট করতে চাই। +**Identifying Exception Point** + +`try` , `catch` এব`finally` ব্লক ব্যাবহার করে এক্সেপশন হ্যান্ডেল করার সময় আমাদের যে বিষয়টির উপর বিশেষ গুরুত্ব দিতে হবে সেটি হল নির্দিষ্ট পয়েন্টেই কেবল`try` এবং `catch` ব্যাবহার করা । ঠিক যেখানে এক্সেপশন ঘটবে বা ঘটার সম্ভাবনা থাকবে সেখানেই কেবল আমাদের প্রপার এক্সেপশন হ্যান্ডেলিং থাকা জরুরী । অন্যথায় কোড রান করবে কিন্তু কাঙ্খিত ফলাফল পাওয়া যাবেনা । + +উদাহরন হিসাবে আমরা মনে করি আমাদের একটি মেথড লিখতে বলা হল যেটিতে একটি স্ট্রিং অ্যারে পাস করা হবে এবং সেই অ্যারে এর মাঝ থেকে যে স্ট্রিং গুলা ইন্টিজার নাম্বার রিপ্রেজেন্ট করে সেগুলার যোগফল রিটার্ন করতে হবে । আমরা যদি কোডটি এভাবে লিখিঃ + +```java +public class Main { + + public static void main(String[] args) { + + String[] strings = {"1", "2", "3", "4", "5", "6"}; + System.out.println(new Main().getSum(strings)); + } + + public int getSum(String[] strings){ + + int result = 0; + + try { + + for (String string : strings) { + result += (Integer.valueOf(string)); + } + } catch (NumberFormatException e) { + + System.err.println(e); + } + + return result; + } +} +``` + +উপরের কোডটি 21 সংখ্যাটি প্রিন্ট করবে যেটি getSum নামক মেথটি রিটার্ন করছে । কিন্তু আমরা যদি ইনপুট স্ট্রিংটি একটু মডিফাই করে String[] strings = {"1", "2", "3", "four", "5", "6"}; করে দেই তাহলে প্রথমে প্রিন্ট করবে 6 এবং তারপর প্রিন্ট করবে `java.lang.NumberFormatException: For input string: "four` । কিন্তু প্রবলেম অনুযায়ী প্রিন্ট করা কথা ছিল 17 । কারন four বাদ দিলে বাকী যতগুলা স্ট্রিং ইন্টিজার নাম্বার রিপ্রেজেন্ট করে সেগুলার যোগফল । সেক্ষেত্রে আমরা যদি কোডটি একটু মডিফাই করে ঠিক যেখানে এক্সেপশন হওয়া সম্ভব সেখানেই `try` ব্লকটি ব্যাবহার করতাম তাহলে এই সমস্যা থেকে মুক্তি পাওয়া সম্ভব ছিল । কোডটি যদি এভাবে করিঃ + +```java +public class Main { + + public static void main(String[] args) { + + String[] strings = {"1", "2", "3", "four", "5", "6"}; + System.out.println(new Main().getSum(strings)); + } + + public int getSum(String[] strings) { + + int result = 0; + + for (String string : strings) { + + try { + + result += (Integer.valueOf(string)); + } catch (NumberFormatException e) { + + System.err.println(e); + } + } + + return result; + } +} +``` + +এবার যদি আমরা String[] strings = {"1", "2", "3", "four", "5", "6"}; এই স্ট্রিংটি ইনপুট আকারে দেই তাহলে দেখবো একটা এক্সেপশন ঠিকই থ্রো করছে তবে রেজাল্ট হিসাবে আমরা যেটি চেয়েছিলাম সেটিও প্রিন্ট করছে । এভাবে আমরা ঠিক নির্দিষ্ট পয়েন্টে এক্সেপশন ডিটেক্ট করে হ্যান্ডেল করতে পারি । এতে করে ওভারঅল কোডের পার্ফরমেন্স যেমন বাড়বে তেমন কোড অনেক বেশি বাগফ্রী ও হবে । + **Checked or Unchecked Exceptions** From 7739593bd40285771728bf475c63b01d3a22a065 Mon Sep 17 00:00:00 2001 From: Ashikuzzaman Date: Thu, 3 Nov 2016 03:30:54 +0600 Subject: [PATCH 120/150] Added abstract class concepts --- 5.1.md | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/5.1.md b/5.1.md index 8515021..00e7d67 100644 --- a/5.1.md +++ b/5.1.md @@ -1,4 +1,4 @@ -## ইনহেরিট্যান্স- +## ইনহেরিট্যান্স- এবার আমরা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট-এর আরও ভেতরে প্রবেশ করবো। শুরুতেই আমরা ইনহেরিটেন্স নিয়ো আলোচনা করি। @@ -214,3 +214,65 @@ A car has an engine ( কার এর একটি ইঞ্জিন আছে জাভা মাল্টিপল ইনহেরিটেন্স সাপোর্ট করে না। এর মানে হচ্ছে আমার একটি ক্লাস শুধুমাত্র একটি ক্লাসকেই ইনহেরিট করতে পারে। + +**অ্যাবস্ট্রাক্ট ক্লাস ( Abstract Class ):** +অ্যাবস্ট্রাক্ট ক্লাস হল বিশেষ এক ধরনের ক্লাস যেটির মাঝে কমপক্ষে একটি অ্যাবস্ট্রাক্ট মেথড থাকবে । তাহলে প্রশ্ন হল অ্যাবস্ট্রাক্ট মেথড আসলে কি জিনিস । অ্যাবস্ট্রাক্ট মেথড হল এমন এক ধরনের মেথড যেটার কোন বডি নেই। সোজা কথায় যে মেথডের অ্যাক্সেস মডিফায়ার আছে, রিটার্ন টাইপ আছে, মেথডের নাম আছে, ইনপুট প্যারামিটার আছে কিন্তু কোন বডি ডিফাইন করা নেই । বডি এম্পটি বা অ্যাবস্ট্রাক্ট সেজন্য এই মেথডকে অ্যাবস্ট্রাক্ট মেথড বলা হয়েছে । চলুন ছোট্ট একটা উদাহরন দেখে পরে ব্যাখ্যার দিকে যাই । + +```java +public abstract class Animal{ + + public abstract String color(); + public void name(){ + System.out.println(“Tiger”); + } +} +``` +উপরোক্ত কোডটিতে `Animal` একটি অ্যাবস্ট্রাক্ট ক্লাস । অ্যাবস্ট্রাক্ট ডিক্লেয়ার করার সময় `class` কিওয়ার্ডের আগে `abstract` কিওয়ার্ডটি লিখতে হবে । অ্যাবস্ট্রাক্ট ক্লাস পাবলিক বা ডিফল্ট যেকোনটিই হতে পারে । এই ক্লাস অ্যাবস্ট্রাক্ট ডিক্লেয়ার করার কারন এর মাঝে আমরা একটি অ্যাবস্ট্রাক্ট মেথড ডিক্লেয়ার করেছি যেটির নাম `color` । সহজেই আমরা বুঝতে পারছি যে অ্যাবস্ট্রাক্ট মেথড ডিক্লেয়ার করতে গেলে তার আগে `abstract` কিওয়ার্ডটি ব্যাবহার করতে হবে । লক্ষ করে দেখুন `color` মেথডের অ্যাক্সেস মডিফায়ার, রিটার্ন টাইপ ( ইনপুট প্যারামিটার দিলে দেওয়া সম্ভব ) সবই আছে কিন্তু কোন বডি নেই । এজন্য এই মেথডকে বলা হয়েছে অ্যাবস্ট্রাক্ট মেথড । একটি অ্যাবস্ট্রাক্ট ক্লাসে যেমন একাধিক অ্যাবস্ট্রাক্ট মেথড থাকতে পারে তেমন সাধারন মেথডও থাকতে পারে প্রচুর পরিমান । প্রশ্ন হল কেন এই অ্যাবস্ট্রাক্ট মেথড ? + +অ্যাবস্ট্রাক্ট ক্লাসের কোন ইন্সট্যান্স ক্রিয়েট করা যায়না যতক্ষন না সবগুলা অ্যাবস্ট্রাক্ট মেথডকে ওভাররাইড করা হচ্ছে । অ্যাবস্ট্রাক্ট মেথড হল একটা রুলের বা নিয়মের মত । এই মেথডের মাধ্যমে বলে দেওয়া হচ্ছে যে , যে ক্লাসই এই `Animal` ক্লাসকে এক্সটেন্ড করবে তাকে অবশ্যই `color` মেথডটি ওভাররাইড করতে হবে এবং নিজস্ব কাজের উপর ভিত্তি করে তাকে । যদি `Animal` ক্লাসকে `Bird` ক্লাস এক্সটেন্ড করে কিন্তু `color` মেথডটি ওভাররাইড না করে তবে `Bird` ক্লাসটিকেও অবশ্যই অ্যাবস্ট্রাক্ট ক্লাস হতে হবে । + +```java +abstract class Animal{ + + abstract void color(); +} + +abstract class Bird extends Animal{ + //abstract void color(); is present by default +} + +class Crow extends Animal{ + + @Override + void color() { + System.out.println("Black"); + } +} +public class Main { + + public static void main(String[] args) { + + Animal animal = new Crow(); + animal.color(); + Crow bird = new Crow(); + bird.color(); + } +} +``` + +উপরোক্ত কোডটিতে আমরা `Bird` ক্লাসের অবজেক্ট কোনভাবেই ক্রিয়েট করতে পারবো না যতক্ষন পর্যন্ত না আমরা এর সব অ্যাবস্ট্রাক্ট মেথড ইম্প্লিমেন্ট করছি । সে কাজটি করা সম্ভব এই ক্লাসটিকে যদি অন্য কোন ক্লাস এক্সটেন্ড করে এবং সব অ্যাবস্ট্রাক্ট মেথড ইম্লিমেন্ট করে অথবা অবজেক্ট ক্রিয়েট করার সময় আমরা সব অ্যাবস্ট্রাক্ট মেথড ইমপ্লিমেন্ট করে দেই । প্রথম কাজটি আপনারা পারেন । এখানে ২য় উপায়টি দেখানো হলঃ +```java +public class Main { + + public static void main(String[] args) { + + Bird bird = new Bird() { + @Override + void color() { + System.out.println("White"); + } + }; + bird.color(); + } +} +``` From fd492922feb260f89872349ee1cb386b15b163d2 Mon Sep 17 00:00:00 2001 From: Ashikuzzaman Date: Thu, 3 Nov 2016 04:00:59 +0600 Subject: [PATCH 121/150] Added interface concepts in 5.1.md file --- 5.1.md | 52 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 3 deletions(-) diff --git a/5.1.md b/5.1.md index 00e7d67..10388cd 100644 --- a/5.1.md +++ b/5.1.md @@ -241,7 +241,7 @@ abstract class Bird extends Animal{ //abstract void color(); is present by default } -class Crow extends Animal{ +class Crow extends Bird{ @Override void color() { @@ -252,8 +252,8 @@ public class Main { public static void main(String[] args) { - Animal animal = new Crow(); - animal.color(); + //Animal animal = new Animal(); //This is not possible + //Bird animal = new Bird(); //This is not possible Crow bird = new Crow(); bird.color(); } @@ -276,3 +276,49 @@ public class Main { } } ``` + + +**ইন্টারফেস ( Interface ):** +ইনহেরিট্যান্সের খুব গুরুত্বপূর্ন এবং কার্যকরী একটি টার্মস হল ইন্টারফেস । ইন্টারফেস ডিক্লেয়ার করতে হয় `interface` কিওয়ার্ডটি দিয়ে । এটি `public` বা ডিফল্ট যেকোনটিই হতে পারে ক্লাসের মত । আমরা ইতোমধ্যে জেনে ফেলেছি `Abstract` ক্লাস এবং অ্যাবস্ট্রাক্ট মেথড কি জিনিস । অ্যাবস্ট্রাক্ট ক্লাস এবং মেথড বুঝে থাকলে ইন্টারফেস বুঝতে পারা খুব বেশি কঠিন কিছুই নয় । ইন্টারফেস এমন একটি ক্লাস যেখানে সবগুলা মেথডই অ্যাবস্ট্রাক্ট । অর্থাৎ ১০০% অ্যাবস্ট্রাক্ট ক্লাসকে ইন্টারফেস বলা যায় । অ্যাবস্ট্রাক্ট ক্লাসে অ্যাবস্ট্রাক্ট মেথড এবং রেগুলার মেথড দুটিই ছিল কিন্তু ইন্টারফেসে কোন প্রকার রেগুলার মেথড থাকবে না । ইন্টারফেসে কেবল অ্যাবস্ট্রাক্ট মেথডই থাকবে । চলুন আমরা একটি উদাহরন দেখে নেইঃ + +```java +interface Animal{ + + public abstract void name(String animalName); + String color(); +} + +interface Cow{ + void work(); +} + +public class Main implements Animal, Cow{ + + public static void main(String[] args) { + + Main m = new Main(); + m.name("I don't know this :P"); + System.out.println(m.color()); + m.work(); + } + + @Override + public void name(String animalName) { + System.out.println(animalName); + } + + @Override + public String color() { + return "Red"; + } + + @Override + public void work() { + System.out.println("Gives Milk"); + } +} +``` +লক্ষ করুন এখানে `interface` কিওয়ার্ডটি দিয়ে দুটি ইন্টারফেস ডিক্লেয়ার করা হয়েছে যথাক্রমে `Animal` এবং `Cow` । `Animal` ইন্টারফেসের মধ্য দুটি মেথড আছে যাদের একজনে `public` এবং `abstract` ডিক্লেয়ার করা হয়েছে কিন্তু অন্য মেথডটি কেবল রিটার্নটাইপ দেওয়া হয়েছে । এটির কারন হল ইন্টারফেসের মাঝে আপনি যদি কোন মেথডের পূর্বে `public` এবং `abstract` ডিক্লেয়ার নাও করেন তবু তারা বাই ডিফল্ট পাবলিক এবং অ্যাবস্ট্রাক্ট । +এবার আসি `Main` ক্লাসে । এতক্ষন আমরা যেনে এসেছি যে জাভা মাল্টিপল ইনহেরিট্যান্স সাপোর্ট করেনা তাহলে এখানে কেন দুটি ইন্টারফেস ইম্লিমেন্ট করছে ? হ্যা সেটাই করবে কারন পরে ব্যাখ্যা করা হবে । এখানে লক্ষনীয় বিষয় হল ইন্টারফেসকে কিন্তু `implements` কিওয়ার্ড দিয়ে ইমপ্লিমেন্ট করতে হয় । এখানে কিন্তু এক্সটেন্ড হবেনা । একটি ক্লাস কেবল অন্য একটি ক্লাসকে এক্সটেন্ড করতে পারবে তবে একই সাথে অন্য শুন্য , এক বা একাধিক ইন্টারফেসকেও ইমপ্লিমেন্ট করতে পারবে । একাধিক ইন্টারফেস ইমপ্লিমেন্ট করার প্রয়োজন হলে কমা ( , ) দিয়ে একটির পর আরেকটি যোগ করতে হবে । তবে অবশ্যই অ্যাবস্ট্রাক্ট মেথড ইমপ্লিমেন্ট করতে ভুলবেন না । :P + +উল্লেখ্য অ্যাবস্ট্রাক্ট মেথডের মত ইন্টারফেসেরও কোন অবজেক্ট ক্রিয়েট করা যায়না । যায়না সেটা বলা ভুল তবে সরাসরি যায়না । কিভাবে যায় সেটা বোঝার জন্য আপনাদের পলিমরফিজম পর্যন্ত যাওয়া লাগবে । ;) From 01dc54e1bb2b85e307aebf9fdf05e7be6d357260 Mon Sep 17 00:00:00 2001 From: "Md. Ashikuzzaman" Date: Thu, 3 Nov 2016 04:04:13 +0600 Subject: [PATCH 122/150] Update 5.1.md --- 5.1.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/5.1.md b/5.1.md index 10388cd..d5cee14 100644 --- a/5.1.md +++ b/5.1.md @@ -216,6 +216,7 @@ A car has an engine ( কার এর একটি ইঞ্জিন আছে **অ্যাবস্ট্রাক্ট ক্লাস ( Abstract Class ):** + অ্যাবস্ট্রাক্ট ক্লাস হল বিশেষ এক ধরনের ক্লাস যেটির মাঝে কমপক্ষে একটি অ্যাবস্ট্রাক্ট মেথড থাকবে । তাহলে প্রশ্ন হল অ্যাবস্ট্রাক্ট মেথড আসলে কি জিনিস । অ্যাবস্ট্রাক্ট মেথড হল এমন এক ধরনের মেথড যেটার কোন বডি নেই। সোজা কথায় যে মেথডের অ্যাক্সেস মডিফায়ার আছে, রিটার্ন টাইপ আছে, মেথডের নাম আছে, ইনপুট প্যারামিটার আছে কিন্তু কোন বডি ডিফাইন করা নেই । বডি এম্পটি বা অ্যাবস্ট্রাক্ট সেজন্য এই মেথডকে অ্যাবস্ট্রাক্ট মেথড বলা হয়েছে । চলুন ছোট্ট একটা উদাহরন দেখে পরে ব্যাখ্যার দিকে যাই । ```java @@ -279,6 +280,7 @@ public class Main { **ইন্টারফেস ( Interface ):** + ইনহেরিট্যান্সের খুব গুরুত্বপূর্ন এবং কার্যকরী একটি টার্মস হল ইন্টারফেস । ইন্টারফেস ডিক্লেয়ার করতে হয় `interface` কিওয়ার্ডটি দিয়ে । এটি `public` বা ডিফল্ট যেকোনটিই হতে পারে ক্লাসের মত । আমরা ইতোমধ্যে জেনে ফেলেছি `Abstract` ক্লাস এবং অ্যাবস্ট্রাক্ট মেথড কি জিনিস । অ্যাবস্ট্রাক্ট ক্লাস এবং মেথড বুঝে থাকলে ইন্টারফেস বুঝতে পারা খুব বেশি কঠিন কিছুই নয় । ইন্টারফেস এমন একটি ক্লাস যেখানে সবগুলা মেথডই অ্যাবস্ট্রাক্ট । অর্থাৎ ১০০% অ্যাবস্ট্রাক্ট ক্লাসকে ইন্টারফেস বলা যায় । অ্যাবস্ট্রাক্ট ক্লাসে অ্যাবস্ট্রাক্ট মেথড এবং রেগুলার মেথড দুটিই ছিল কিন্তু ইন্টারফেসে কোন প্রকার রেগুলার মেথড থাকবে না । ইন্টারফেসে কেবল অ্যাবস্ট্রাক্ট মেথডই থাকবে । চলুন আমরা একটি উদাহরন দেখে নেইঃ ```java From bf875bd7e2cbdf183b027e260a746aea59fb8c33 Mon Sep 17 00:00:00 2001 From: Ashikuzzaman Date: Thu, 3 Nov 2016 04:15:47 +0600 Subject: [PATCH 123/150] Added some rules for Inheriting interface and abstract class in 5.1.md file --- 5.1.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/5.1.md b/5.1.md index d5cee14..126d52b 100644 --- a/5.1.md +++ b/5.1.md @@ -323,4 +323,10 @@ public class Main implements Animal, Cow{ লক্ষ করুন এখানে `interface` কিওয়ার্ডটি দিয়ে দুটি ইন্টারফেস ডিক্লেয়ার করা হয়েছে যথাক্রমে `Animal` এবং `Cow` । `Animal` ইন্টারফেসের মধ্য দুটি মেথড আছে যাদের একজনে `public` এবং `abstract` ডিক্লেয়ার করা হয়েছে কিন্তু অন্য মেথডটি কেবল রিটার্নটাইপ দেওয়া হয়েছে । এটির কারন হল ইন্টারফেসের মাঝে আপনি যদি কোন মেথডের পূর্বে `public` এবং `abstract` ডিক্লেয়ার নাও করেন তবু তারা বাই ডিফল্ট পাবলিক এবং অ্যাবস্ট্রাক্ট । এবার আসি `Main` ক্লাসে । এতক্ষন আমরা যেনে এসেছি যে জাভা মাল্টিপল ইনহেরিট্যান্স সাপোর্ট করেনা তাহলে এখানে কেন দুটি ইন্টারফেস ইম্লিমেন্ট করছে ? হ্যা সেটাই করবে কারন পরে ব্যাখ্যা করা হবে । এখানে লক্ষনীয় বিষয় হল ইন্টারফেসকে কিন্তু `implements` কিওয়ার্ড দিয়ে ইমপ্লিমেন্ট করতে হয় । এখানে কিন্তু এক্সটেন্ড হবেনা । একটি ক্লাস কেবল অন্য একটি ক্লাসকে এক্সটেন্ড করতে পারবে তবে একই সাথে অন্য শুন্য , এক বা একাধিক ইন্টারফেসকেও ইমপ্লিমেন্ট করতে পারবে । একাধিক ইন্টারফেস ইমপ্লিমেন্ট করার প্রয়োজন হলে কমা ( , ) দিয়ে একটির পর আরেকটি যোগ করতে হবে । তবে অবশ্যই অ্যাবস্ট্রাক্ট মেথড ইমপ্লিমেন্ট করতে ভুলবেন না । :P +কয়েকটি বিষয় জেনে রাখা ভালোঃ + +১) একটি ক্লাস একটি মাত্র ক্লাস বা অ্যাবস্ট্রাক্ট ক্লাসকে এক্সটেন্ড করতে পারবে । +২) একটি ক্লাস বা অ্যাবস্ট্রাক্ট ক্লাস এক বা একাধিক ইন্টারফেসকে ইমপ্লিমেন্ট করতে পারবে । +৩) একটি ইন্টারফেস এক বা একাধিক ইন্টারফেসকে এক্সটেন্ড (ইমপ্লিমেন্ট নয় কিন্তু) করতে পারবে । + উল্লেখ্য অ্যাবস্ট্রাক্ট মেথডের মত ইন্টারফেসেরও কোন অবজেক্ট ক্রিয়েট করা যায়না । যায়না সেটা বলা ভুল তবে সরাসরি যায়না । কিভাবে যায় সেটা বোঝার জন্য আপনাদের পলিমরফিজম পর্যন্ত যাওয়া লাগবে । ;) From 023fb48ff30f1e9240b770e5fb9a3721f27e3bc7 Mon Sep 17 00:00:00 2001 From: Ashikuzzaman Date: Thu, 3 Nov 2016 04:23:48 +0600 Subject: [PATCH 124/150] Added definition of polymorphism in 5.2.md file --- 5.2.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/5.2.md b/5.2.md index 8598d8a..3b7fb8e 100644 --- a/5.2.md +++ b/5.2.md @@ -1,7 +1,9 @@ -## পলিমরফিজম (Polymorphism) +## পলিমরফিজম (Polymorphism) এবার আমরা কথা বলবো পলিমরফিজম নিয়ে। শব্দটির মধ্যেই একটি বিশেষ গাম্ভীর্য আছে যা কিনা একটি সাধারণ কথোপকথনকে অনেক গুরুত্বর্পূণ করে তুলতে পারে। তবে এটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর একটি বহুল ব্যবহৃত কৌশল । এই শব্দটির সহজ মানে হচ্ছে যার একাধিক রূপ আছে অর্থাৎ বহুরূপিতা। +সহজ কথায় পলিমরফিজম হল এমন একটি টেকনিক বা পদ্ধতি যেখানে আমরা একটি ক্লাস, অ্যাবস্ট্রাক্ট ক্লাস বা ইন্টারফেসের অবজেক্ট ক্রিয়েট করি তার চাইল্ড ক্লাসের কনস্ট্রাক্টরের মাধ্যমে । অর্থাৎ আমরা একটি ক্লাসের অবজেক্ট ক্রিয়েট করবো অন্য একটি ক্লাসের কনস্ট্রাক্টর কল করে । সহজ ভাষায় এটিই হল পলিমরফিজম । + মনে করা যাক, ‌‌ ‌ @@ -146,4 +148,4 @@ -## চলবে ..... \ No newline at end of file +## চলবে ..... From 07d38613fcf7c02cc095a38c975102bdba8ff331 Mon Sep 17 00:00:00 2001 From: Ashikuzzaman Date: Thu, 3 Nov 2016 05:41:43 +0600 Subject: [PATCH 125/150] Added Homogeneous and Heterogeneous Collection of polymorphism in 5.2.md file --- 5.2.md | 131 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) diff --git a/5.2.md b/5.2.md index 3b7fb8e..17ea093 100644 --- a/5.2.md +++ b/5.2.md @@ -146,6 +146,137 @@ +**হোমেজিনিয়াস কালেকশন ( Homogeneous Collection ):** + +হোমোজিনিয়াস কালেকশন হল একই ক্লাসের কিছু সংখ্যক অবজেক্টের কালেকশন । একটি উদাহরন দিয়ে বিষয়টি একটু সুরাহা করা যাকঃ + +```java +interface Animal { + + public abstract void name(String animalName); +} + +class Cow implements Animal { + + private String animalName; + + public void work(String animalWork) { + System.out.println("Work of " + this.animalName + " is " + animalWork); + } + + @Override + public void name(String animalName) { + this.animalName = animalName; + System.out.println("Name of the animal is: " + this.animalName); + } +} + +public class Main { + + public static void main(String[] args) { + + Animal[] collection1 = new Cow[3]; + collection1[0] = new Cow(); + collection1[1] = new Cow(); + collection1[2] = new Cow(); + + Cow[] collection2 = new Cow[3]; + collection2[0] = new Cow(); + collection2[1] = new Cow(); + collection2[2] = new Cow(); + } +} +``` + +লক্ষ করুন । এখানে `Cow` ক্লাসটি `Animal` ইন্টারফেসের চাইল্ড । এবং `Main` ক্লাসের `main` মেথড এর মাঝে ২ টি অবজেক্টের অ্যারে ডিক্লেয়ার করা হয়েছে । একটি `Animal` ক্লাসের অবজেক্টের অ্যারে যেটির সবগুলা অবজেক্ট `Cow` ক্লাসের কনস্ট্রাক্টর দিয়ে ইন্সট্যানশিয়েট করা হয়েছে । এখানে পলিমরফিজম স্পষ্ট । এবং অন্যটি অবজেক্ট অ্যারেটি চীরাচরিত অবজেক্ট অ্যারে । এই দুইি অ্যারেই হল হোমোজিনিয়াস কালেকশনের উদাহরন । বোঝা যায়নি ? ওকে, এখানে ` collection1` অ্যারেটির প্রতিটি অবজেক্টই `Cow` ক্লাসের কনস্ট্রাক্টর দিয়ে ইন্সট্যানশিয়েট করা হয়েছে । তার মানে `collection1` এর মাঝে সবগুলা অবজেক্টই একই ধরনের । যেহেতু এই অ্যারেটির সবগুলা এলিমেন্ট একই ধরনের/ক্লাসের অবজেক্ট সুতরাং এটিকে বলা হবে হোমোজিনিয়াস কালেকশন । একই কথা `collection2` এর ক্ষেত্রেও প্রোযোজ্য । + + +**হেটারোজিনিয়াস কালেকশন ( Heterogeneous Collection ):** + +ভিন্নধর্মী অবজেক্টের কালেকশনকেই বলা হয় হেটারোজিনিয়াস কালেকশন । হেটারোজিনিয়াস কালেকশন বুঝতে হলে আমাদের একটি উদাহরন দেখে নেওয়া উত্তমঃ + +```java +class Animal { + + String animalName ; + public Animal(String animalName){ + this.animalName = animalName; + } + public void name(){ + System.out.println("Animal name is: "+this.animalName); + } +} + +class Cow extends Animal { + + public Cow(String animalName) { + super(animalName); + } + + public void work(String animalWork) { + System.out.println("Work of " + this.animalName + " is " + animalWork); + } +} + +class Dog extends Animal { + + public Dog(String animalName) { + super(animalName); + } + + public void work(String animalWork) { + System.out.println("Work of " + this.animalName + " is " + animalWork); + } +} + +class Cat extends Animal { + + public Cat(String animalName) { + super(animalName); + } + + public void work(String animalWork) { + System.out.println("Work of " + this.animalName + " is " + animalWork); + } +} + +public class Main { + + public static void main(String[] args) { + + Animal[] animals = new Animal[4]; + animals[0] = new Animal("Dolphin"); + animals[1] = new Cow("Big Cow"); + animals[2] = new Dog("Red Dog"); + animals[3] = new Cat("White Cat"); + } +} +``` + +খুব ভালোভাবে লক্ষ করুন । আমরা `Animal` ক্লাসের অবজেক্টের একটু অ্যারে ডিক্লেয়ার করেছি যার সাইজ ৪ । কিন্তু ইন্সট্যানশিয়েট করার সমস আমরা পলিমরফিজম মেকানিজম ব্যাবহার করে এর চাইল্ড ক্লাসের ভিন্ন ভিন্ন কনস্ট্রাক্টর দিয়ে ইন্সট্যানশিয়েট করেছি । অর্থাৎ `animals` অ্যারেটির প্রতিটি অবজেক্টই আলাদা আলাদা কনস্ট্রাক্ট দিয়ে ইন্সট্যানশিয়েট করা এবং তাদের বিহ্যাভিয়েরাল পার্থ্য আছে । এধরনের কালেকশনকে বলা হয় হেটারোজিনিয়াস কালেকশন । + +এবার একটু ভিন্ন পন্থায় এগোন যাক । মেইন ক্লাসটিকে আমরা একটু মডিফাই করবো । বাকী সবই ঠিক থাকবে আগের মত । + +```java +public class Main { + + public static void main(String[] args) { + + Animal animal = new Cat("Cute Cat"); + animal.name(); + //animal.work("Some Work");//Not possible + Cat cat = new Cat("Preety Cat"); + cat.name(); + cat.work("It plays"); + } +} +``` + +খেয়াল করে দেখুন আমরা `Animal` এবং `Cat` এর অবজেক্ট ক্রিয়েট করার সময় কনস্ট্রাক্টর ব্যাবহার করেছি `Cat` এর কিন্তু `Animal` এর অবজেক্ট থেকে আমরা `work` মেথডটি কোন ভাবেই কল করতে পারছি না বা পারবো না কিন্তু `Cat` এর অবজেক্ট থেকে ঠিকই পারছি । কারনটা কি ? কারন হল `Animal` ক্লাসের মাঝে ঠিক যে যে মেথড আছে সেগুলাকেই আমরা অ্যাক্সেস করতে পারব তবে `Cat` এর ইমপ্লিমেন্টেশন দিয়ে । `Animal` এর মাঝে নেই কিন্তু `Cat` ক্লাসে বাড়তি আছে এমন কোন মেথডকে আমরা অ্যাক্সেস করতে পারবো না । এমনকি `Animal` ক্লাসের অবজেক্টে `Cat` ক্লাসের `work` মেথডের কোন রেফারেন্সই ক্রিয়েট হবেনা । + +তাহলে এটা করি কেন আমরা ? এটা করার পেছনে বেশ কিছু কারন থাকতে পারে । প্রথমত আমরা প্যারেন্ট ক্লাস এবং চাইল্ড ক্লাসের ইমপ্লিমেন্টশন নিয়ে কাজ করতে চাইলে পলিমরফিজমের এই সুবিধাটি নেওয়া হয় । অন্য কারনটি হল মেমোরি কনজাম্পশন । ভেবে দেখুন যদি `Animal` ক্লাসে ৩ টি মেথড থাকে যেগুলার জন্য আপনি `Cat` ক্লাসের ইমপ্লিমেন্টেশন ব্যাবহার করতে চান , কিন্তু `Cat` ক্লাসের মাঝে ১৫ টির মত মেথড আছে এবং অনেক অ্যাট্রিবিউট । আপনি যদি `Cat` এর অবজেক্ট ক্রিয়েট করেন তবে মেমোরি থেকে প্রচুর স্পেস কনজিউম করবে উক্ত অবজেক্ট । অন্যদিকে আপনি যদি `Animal` এর অবজেক্ট ক্রিয়েট করেন `Cat` এর কনস্ট্রাক্টর ব্যাবহার করে তাহলে `Cat` ক্লাসের ইমপ্লিমেন্টেশন ব্যাবহার করতে পারছেন এবং মেমোরি থেকে খুব কম মেমোরি কনজিউম করছে ( `Animal` মেথডগুলার জন্য প্রয়োজনীয় মোমোরি মাত্র ) । +কোনটি বেশি সুবিধাজনক ? এছাড়া আরো কারন আছে । পরবর্তীতে সেগুলা নিয়েও আলোচনা করা হবে । + ## চলবে ..... From 0a722af780516576f1bf96b30cbc137fb5c18da1 Mon Sep 17 00:00:00 2001 From: Ashikuzzaman Date: Thu, 3 Nov 2016 06:40:36 +0600 Subject: [PATCH 126/150] Added Invoking Constructor Overriding concepts in 5.1.md file --- 5.1.md | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/5.1.md b/5.1.md index 126d52b..c1dd9a6 100644 --- a/5.1.md +++ b/5.1.md @@ -215,6 +215,75 @@ A car has an engine ( কার এর একটি ইঞ্জিন আছে জাভা মাল্টিপল ইনহেরিটেন্স সাপোর্ট করে না। এর মানে হচ্ছে আমার একটি ক্লাস শুধুমাত্র একটি ক্লাসকেই ইনহেরিট করতে পারে। + +**কনস্ট্রাক্টর অভাররাইডিং(Constructor Overriding)** + +মেথডের মত কনস্ট্রাকটরও অভাররাইড এবং ওভারলোড (Overload) করা যায় । অভাররাইড করা যায় বলতে অনেক ক্ষেত্রে কনস্ট্রাকটর অভাররাইড ম্যান্ডেটরি । প্যারেন্ট ক্যালে যদি এমন কোন কনস্ট্রাক্টর থাকে যেটি প্রাইভেট নয় এবং যেটি এক বা একাধিক ইনপুট প্যারামিটার নিয়ে থাকে তবে চাইল্ড ক্লাসে অবশ্যই সেই কনস্ট্রাক্টর অবশ্যই অভাররাইড করতে হবে । এটা বাধ্যতামূলক । একটা ছোট্ট উদাহরন দিয়ে বিষয়টি আমরা পরিষ্কার করে নিতে পারি । + +```java +class Animal { + + String animalName ; + String animalColor ; + + public Animal(String animalName, String animalColor){ + + this.animalName = animalName; + this.animalColor = animalColor; + } + + public void showName(){ + System.out.println("Animal Name is: "+this.animalName); + } + public void showColor(){ + System.out.println("Animal Color is: "+this.animalColor); + } +} + +class Cow extends Animal{ + + private String work ; + public Cow(String animalName, String animalColor) { +// this.work = "No Work";//This is not valid + super(animalName, animalColor);//super in constructor have to be on top + this.work = "Gives Milk";//This is valid + } + + @Override + public void showColor() { + System.out.println("Before showColor in child"); + super.showColor(); + } + + @Override + public void showName() { + super.showName(); + System.out.println("After showName in child"); + } + public void showDescription(){ + this.showName(); + System.out.println("Animal Work is: "+this.work); + this.showColor(); + } +} + + +public class Main { + + public static void main(String[] args) { + + Cow cow = new Cow("White Cow", "White"); + cow.showDescription(); + } +} +``` + +উপরের কোডটি মন দিয়ে লক্ষ করুন । প্যারেন্ট ক্লাস `Animal` এর মাঝে একটি পাবলিক কনস্ট্রাক্ট আছে যেটি দুটি প্যারামিটার নিয়ে থাকে । তাই এটার চাইল্ড ক্লাসেও আমাদের অবশ্যই একটি কনস্ট্রাক্টর থাকতে হবে যেটির মাঝে প্যারেন্ট ক্লাসের ওই কনস্ট্রাকটর ইনভোক করতে হবে । এটা ম্যান্ডেটরি । এটি না করলে কোড কম্পাইলেশন এরর শো করবে এবং কম্পাইলই হবেনা । আরো একটি বিষয় চাইল্ড ক্লাসের কনস্ট্রাক্টরের মাঝ থেকে প্যারেন্ট ক্লাসের কনস্ট্রাক্টরকে `super` কিয়াওর্ড দিয়ে কল করতে হবে তবে , `super` কিয়াওর্ড অবশ্যই সবার উপর থাকতে হবে । এমনকি একটি প্রিন্ট স্টেটমেন্টও থাকতে পারবে না । `super` এর পর যা খুশি থাকতে পারে কোন সমস্যা নাই । এছাড়া অন্য একাধিক কনস্ট্রাক্টর ডিক্লেয়ার করার প্রয়োজন হলে সেটাও করতে পারবেন , এটাকে বলা হবে কনস্ট্রাক্টর ওভারলোডিং । যথারীতি এর মাঝেও `super` বাবাজি অধিপত্য বিরাজ করে বসে থাকবে । + +তবে মেথড আর কনস্ট্রাক্টরের ওভাররাইডিং এর মাঝে এটা বড় একটা পার্থক্য যে মেথডের ক্ষেত্রে সুপার আপনারা কাজের সুবিধার জন্য যেকোন যায়গার ব্যাবহার করতে পারবেন । তবে কনস্ট্রাক্টরের ক্ষেতে আঈন খুবই কঠিন । + + + **অ্যাবস্ট্রাক্ট ক্লাস ( Abstract Class ):** অ্যাবস্ট্রাক্ট ক্লাস হল বিশেষ এক ধরনের ক্লাস যেটির মাঝে কমপক্ষে একটি অ্যাবস্ট্রাক্ট মেথড থাকবে । তাহলে প্রশ্ন হল অ্যাবস্ট্রাক্ট মেথড আসলে কি জিনিস । অ্যাবস্ট্রাক্ট মেথড হল এমন এক ধরনের মেথড যেটার কোন বডি নেই। সোজা কথায় যে মেথডের অ্যাক্সেস মডিফায়ার আছে, রিটার্ন টাইপ আছে, মেথডের নাম আছে, ইনপুট প্যারামিটার আছে কিন্তু কোন বডি ডিফাইন করা নেই । বডি এম্পটি বা অ্যাবস্ট্রাক্ট সেজন্য এই মেথডকে অ্যাবস্ট্রাক্ট মেথড বলা হয়েছে । চলুন ছোট্ট একটা উদাহরন দেখে পরে ব্যাখ্যার দিকে যাই । From 78f174d2e4620da9be684d162f04ed73716ed2b1 Mon Sep 17 00:00:00 2001 From: Ashikuzzaman Date: Thu, 3 Nov 2016 07:27:14 +0600 Subject: [PATCH 127/150] Added Overloading of method and constructor in 5.1.md file --- 5.1.md | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) diff --git a/5.1.md b/5.1.md index c1dd9a6..8077879 100644 --- a/5.1.md +++ b/5.1.md @@ -283,6 +283,85 @@ public class Main { তবে মেথড আর কনস্ট্রাক্টরের ওভাররাইডিং এর মাঝে এটা বড় একটা পার্থক্য যে মেথডের ক্ষেত্রে সুপার আপনারা কাজের সুবিধার জন্য যেকোন যায়গার ব্যাবহার করতে পারবেন । তবে কনস্ট্রাক্টরের ক্ষেতে আঈন খুবই কঠিন । +**অভারলোডিং অফ মেথড & কনস্ট্রাক্টর ( Overloading of method and constructor ):** + +অভারলোডিং বলতে খুব সাধারন ভাষায় বোঝায় একই নামের এবং একই রিটার্ন টাইপের ( নাও হতে পারে ) একাধিক মেথড বা কনস্ট্রাক্টর ( এক্ষেত্রে কোন রিটার্ন টাইপ থাকবে না ) বিদ্যমান থাকা । তার অর্থ দাড়ালো একই ক্লাসের মাঝে একই নামের এবং রিটার্ন টাইপের একাধিক মেথড বা কনস্ট্রাক্টর বিদ্যমান থাকবে । বিষয়টা একটু গোলমেলে মনে হচ্ছে তাইনা ? আসলে তেমন কিছুই নয় , বরং বিষয়টি অন্য অনেক কিছুর থেকেও অনেক বেশি সরল । একই নামের মেথড বা কনস্ট্রাক্ট থাকলেও তাদের ইনপুট প্যারামিটার কিন্তু একই হবেনা । ইনপুট টাইপ হয়ত ভিন্ন টাইপের হবে নাহয় একটি মেথড থেকে অন্যা মেথডের ইনপুট প্যারামিটার সংখ্যা ভিন্ন হবে । উদাহরন সহকারে আমরা আমাদের কনফিউশন দুর করতে পারি । চলুন একটি উদাহরন দেখে নেওয়া যাকঃ + +```java +public class Main { + + private int initialNumber; + private int terminalNumber; + + public Main(int initialNumber, int terminalNumber) { + + this.initialNumber = initialNumber; + this.terminalNumber = terminalNumber; + } + + public Main(int terminalNumber) { + + this(0, terminalNumber); + } + + public Main() { + + this(0, 100); + } + + public void showNumbers() { + + System.out.println("First Number: " + this.initialNumber + ", Second Number: " + this.terminalNumber); + } + + public static void main(String[] args) { + + Main m = new Main(1, 5); + m.showNumbers(); + Main m2 = new Main(5); + m2.showNumbers(); + Main m3 = new Main(); + m3.showNumbers(); + } +} +``` +উপরের কোড সেগমেন্টটিতে আরা দেখতে পারছি যে একই `Main` ক্লাসে একই নামের কনস্ট্রাক্টর ৩ টি । খেয়াল করলে দেখা যাবে যে ৩ টি কনস্ট্রাক্টর প্রায় একই কাজ করলেও তাদের ইনপুট প্যারামিটার কিন্তু একই নয় । একেক জন একেক রকম ইনপুট নিয়ে কাজ করছে । এভাবে একই ক্লাসের মাঝে একাধিক কাজের জন্য একাধিক কনস্ট্রাক্টর ব্যাবহার করাকে বলাহয় কনস্ট্রাক্টর অভারলোডিং । যেখানে একই কনস্ট্রাক্টরের লোড অভার হয়ে গিয়েছে :P + + +ওকে, এবার আসা যাক মেথড অভারলোডিং বিষয়ে । কনস্ট্রাক্টরের মত মেথড অভারলোডিংও সেম ম্যাকানিজম ফলো করে । একটি উদাহরন দিলেই বিষয়টি পরিষ্কার হয়ে যাবেঃ + +```java +public class Main { + + private int sum(int a, int b){ + return a+b; + } + private int sum(int a, int b, int c){ + return a+b+c; + } + private int sum(int ... a){ + + int result = 0; + for(int x : a){ + result+=x; + } + return result; + } + + public static void main(String[] args) { + + Main m = new Main(); + System.out.println(m.sum(3, 5)); + System.out.println(m.sum(3, 5, 7)); + System.out.println(m.sum(3, 5, 7, 17)); + System.out.println(m.sum(3, 5, 7, 17, 23)); + } +} +``` +উপরোক্ত কোডটিতে দেখুন `sum` মেথডটি ৩ বার লেখা হয়েছে । মেথডের আইডেন্টিফায়ার, রিটার্ন টাইপ সবই ঠিক আছে তবু কাজ করছে ! হ্যা কারন আপনার ইনপুর প্যারামিটার ভিন্ন দিয়েছি । প্রথম `sum` মেথড কেবল ২ টি নাম্বারের যোগ করে দিতে পারে । দ্বিতীয়টি পারে ৩ টি নাম্বারের , আর শেষেরটি পারে যত সংখ্যক ইন্টিজার নাম্বারই দেওয়া হোক না কেন সে যোগ করে রেজাল্ট দিবে । সিম্পলি এটাকেই বলা হয় মেথড ওভারলোডিং । যেখানে একই নামের একাধিক মেথড থাকে যাদের নাম এক হলেও ইনপুট প্যারামিটার বা কাজের ধরন সম্পূর্ন আলাদা হয় । + + + **অ্যাবস্ট্রাক্ট ক্লাস ( Abstract Class ):** From 1aa898938bc3985f033b75c85e5e3b85a3074107 Mon Sep 17 00:00:00 2001 From: Ashikuzzaman Date: Thu, 3 Nov 2016 12:02:30 +0600 Subject: [PATCH 128/150] Added introduction of Collection Frameworks, Advantages and Collections family tree --- 11.md | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/11.md b/11.md index 3ab4804..1348ad8 100644 --- a/11.md +++ b/11.md @@ -1,4 +1,4 @@ -# পাঠ ১১: জাভা কালেকশান ফ্রেমওয়ার্ক +# পাঠ ১১: জাভা কালেকশান ফ্রেমওয়ার্ক * জাভা কালেকশান ফ্রেমওয়ার ভুমিকা * কালেকশান ইন্টারফেইস @@ -15,3 +15,55 @@ * hashCode() এবং equals() * সারসংক্ষেপ + +**কালেকশান ফ্রেমওয়ার্ক** + +কালেকশন ফ্রেমওয়ার্ক জাভার টপ লেভের একটি এপিআই কনসেপ্ট । কালেকশান ফ্রেমওয়ার্ক কিছু হাইলি অপটিমাইজড ডাটা স্ট্রাকচার যার মাধ্যমে বিভিন্ন ডাটা মেমোরিতে স্টোর করতে পারি এবং প্রয়োজন মত ব্যাবহার করতে পারি । মনে করুন অ্যারে নিয়ে কাজ করছেন । কোন একটি সময়ে মনে হল আপনার অ্যারের সাইজ যথেষ্ঠ নয় আপনার কাজের জন্য তখন কি করবেন ? মনে করুন আপনি লিংকড লিস্ট নিয়ে কাজ করছেন কোন একটা সময়ে একটা এলিমেন্ট সার্চ করার প্রয়োজন হলো , সার্চ করলেন । দেখা গেল অনেক্ষন পর রেজাল্ট জানালো যে সেই এলিমেন্ট ওই লিস্টেই নাই । এরকম নানা রকম সমস্যা এবং তার সমাধান নিয়ে যে সব ডাটা স্ট্রাকচার একত্রিত করা হয়েছে সেগুলাকেই একত্রে বলা হয় কালেকশান । কালেকশান মানে হল সমষ্টি । এটি এমন কিছু ডাটা স্ট্রাকচারের সমষ্টি যেগুলার প্রতিটিই বিভিন্ন ডাটাকে সমষ্টিত করে রাখে । হ্যা অ্যারেকেও লো লেভেল এক প্রকার কালেকশান বলা যেতে পারে তবে মডার্ন কালেকশন ফ্রেমওয়ার্কের মাঝে এটিকে ধরা হয়না । + + +**কালেকশান ইন্টারফেস (Collection Interface)** + +ইন্টারফেস কি সেটি আপনারা খুব ভালোভাবেই জানেন । যদি না যেনে থাকেন তবে চ্যাপটার ৫.১ পড়ে আসুন । কালেকশান একটি ইন্টারফেস । যেই ইন্টারফেসের মধ্য বলে দেওয়া হয়েছে কোন একটি ক্লাসকে কালেকশান ফ্রেমওয়ার্কের অন্তর্গত হতে গেলে কি কি বৈশিষ্ট থাকতেই হবে । কালেশনগুলা সাধারনত `java.util` প্যকেজের অন্তর্গত । + +সবার আগে আমাদের জানা প্রয়োজন কেনই বা আমরা কালেকশনস নিয়ে কাজ করবো ? এটি না নিয়েও তো কাজ করা যেতো । তাহলে কালেকশন কেন ! + +ওয়েল , আপনাদের কিছুটা উত্তর আমি আগেই দিয়ে দিয়েছি । + +১)অ্যারে নিয়ে কাজ করার সময় আপনি ফিক্সড লেন্থের বাইরে কাজ করতে পারতেন না । অ্যারের বাউন্ডারি ফিক্সড এবং এটি বাড়ানো বা কমানোর কোন সুযোগ নেই রানটাইমে । কালেকশন এই সমস্যার সমাধান করেছে । এটির সাইজ আপনার প্রয়োজন মত বাড়াতে এবং কমাতে পারবেন । + +২)লিংক লিস্ট নিয়ে কাজ করার সময় আপনি ইনডেক্সের সুবিধা পাবেন না । এটা একটা বড় সমস্যার কারন, কালেকশনে আপনি ইন্ডেক্স সুবিধা পাবেন । + +৩)কেবল প্রিমিটিভ নয়, সকল প্রকার অবজেক্ট এমনি একটি কালেকশনের মাঝে আরেকটি কালেকশন নিয়ে কাজ করার মত ফ্লেক্সিবিলিটি পাবেন । + +এছাড়া আরো বহুত সুবিধা আছে যেগুলা কাজ করতে করতে বুঝে যাবেন । + +নিচে কালেকশান ফ্যামিলি ট্রি দেখানোর চেষ্টা করা হল । + +```java +Collection + Set + HashSet + LinkedHashSet + SortedSet + TreeSet + List + ArrayList + Vector + LinkedList + Queue + LinkedList + PriorityQueue + +Object + Arrays + Collections + +Map + HashTable + LinkedHashMap + HashMap + SortedMap + TreeMap +``` + + From 85becb64f333054d6ac2806548b78970a1c12adf Mon Sep 17 00:00:00 2001 From: Ashikuzzaman Date: Thu, 3 Nov 2016 12:44:50 +0600 Subject: [PATCH 129/150] Added List and details operation of it in 11.md file --- 11.md | 150 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) diff --git a/11.md b/11.md index 1348ad8..cd6272a 100644 --- a/11.md +++ b/11.md @@ -67,3 +67,153 @@ Map ``` +**লিস্ট ( List )** + +লিস্ট `List` একটি ইন্টারফেস যেটি সরাসরি `Collection` ইন্টারফেসকে এক্সটেন্ড করেছে । এটি যেহেতু একটি ইন্টারফেস ( `interface` ) তাই আমরা সরাসরি এটার কোন অবজেক্ট বা ইন্সট্যান্স ক্রিয়েট করতে পারবো না । এজন্য অবশ্য আমাদের চিন্তার খুব বেশি কারন নেই । `List` ইন্টারফেসকে ইমপ্লিমেন্ট করেছে `ArrayList` , `Vector` এবং `LinkedList` ক্লাস । আমরা খুব সহজে এগুলার মাধ্যমে `List` এর অবজেক্ট তৈরি করতে পারি । `List` হল আনসর্টেড অবজেক্ট কনটেইনার যেটি ডাটা ডুপ্লিকেসি সাপোর্ট করে । মানে একই ডাটা একাধিকবার থাকতে পারে লিস্টের মাঝে । + +`List` ডিক্লেয়ার করার নানা ধাপঃ + +ধাপ ১ঃ + +```java +import java.util.ArrayList; +import java.util.List; +import java.util.LinkedList; +import java.util.Vector; +public class Main { + public static void main(String[] args) { + List list; + list = new ArrayList(); + list2 = new LinkedList(); + list3 = new Vector(); + } +} +``` +ধাপ ২ঃ +```java +import java.util.ArrayList; +import java.util.List; +public class Main { + public static void main(String[] args) { + List list1 = new ArrayList(); + ArrayList list2 = new ArrayList(); + } +} +``` + +এমনকি কেউ চাইলে কালেকশনের অবজেক্ট নিয়েও কাজ করতে পারেন সেক্ষেত্রে যেটি করতে হবে । + +```java +import java.util.ArrayList; +import java.util.Collection; +public class Main { + public static void main(String[] args) { + Collection c = new ArrayList(); + } +} +``` + +ওকে অনেক হয়েছে । এবার কাজের কথায় আসা যাক । `List` নিয়ে কিভাবে কাজ করা যায় সেটাইতো জানা হলোনা এখনো ! ওকে আর বেশি বক বক করে আপনাদের ধৈর্য্যের পরীক্ষা নিবনা । প্রথমে আমরা দেখবো কিভাবে একটি লিস্টে ডাটা অ্যাড বা অ্যাসাইন করতে হয় । + +**লিস্টে ডাটা ইনসার্ট(Insert into List)** + +```java +import java.util.ArrayList; +import java.util.List; +public class Main { + public static void main(String[] args) { + List list = new ArrayList<>(); + list.add(7); + list.add(5); + list.add(13); + list.add(17); + list.add(3); + } +} +``` +উপরোক্ত কোডে `` দিয়ে বোঝানো হয়েছে এই লিস্টটি কেবল ইন্টিজার টাইপ ডাটার জন্য কাজ করবে । এটিকে জেনেরিক বলা হয় । চ্যাপটার ৮ এ আপনাদের এ বিষয়ে জানা কথা । তারপর `ArrayList` এর কনস্ট্রাকটর দিয়ে `list` অবজেক্টকে ইন্সট্যানশিয়েট করা হয়েছে । `add` মেথড এই লিস্টে একটি একটি করে ডাটা অ্যাড করে এবং একটি বুলিয়ান ভ্যালু রিটার্ন করে । যদি কোন কারনে কোন ডাটা অ্যাড করতে ব্যার্থ হয় তবে `false` ভ্যালু রিটার্ন করে । + +`add(int index, E element)` মেথডটি যেকোন একটি এলিমেন্ট লিস্টের নির্দিষ্ট ইনডেক্সে ইনসার্ট করে । `addAll(Collection c)` মেথডটি ইনপুট প্যারামিটার হিসাবে অন্য কোন একটি লিস্ট বা কালেকশন নিয়ে তার প্রতিটি এলিমেন্ট একটু একটি করে এই লিস্টে ইনসার্ট করে দেয় । `addAll(int index, Collection c)` মেথডটি ঠিক আগের মতই কাজ করে । নির্দিষ্ট ইনডেক্স থেকে অন্য একটি কালেকশনকে ইনজেক্ট করতে থাকে নতুন লিস্টের মাঝে । + + +**লিস্ট থেকে ডাটা রিড করা(Read from List)** + +উপরের কোড সেগমেন্টটি মনে করলাম আছে । আমরা কেবল ডাটা রিড করার জন্য কোডটি লিখবো । আমরা বেশ কয়েকভাবে দেখবো যে কিভাবে একটি লিস্ট থেকে ডাটা রিড করা যায় এবং এর মাধ্যমে আরো কিছু মেথড সম্পর্কে জেনে নিব । + +পদ্ধতি ১ঃ + +```java + for(int i=0; i { + System.out.println(x); + }); +``` + +হাল আমলের আলোচিত পদ্ধতি । এটিকে বলা হয় ফাংশনাল অপারেশন । জেডিকে ৮ এ এটিকে পরিচিত করানো হয়েছে । অনেকটা ফাংশনাল প্রাগ্রামিং এর মত করেই ডিজাইন করা করা । `forEach` মেথডটি একটি একটি করে এলিমেন্ট ট্রাভার্স করে যায় এবং তাকে যে কাজ করতে বলা হয় ঠিক সেই কাজটিই করে বসে থাকে । :D +দারুন মজার এই ফাংশনার অপারেশন । + + +**লিস্টের ভ্যালু রিপ্লেস করা** + +কোন একটি লিস্ট থেকে খুব সহজেই একটি ভ্যালু রিপ্লেস করে দেওয়া যায় । `set(int index, E element)` মেথডটি ২ টি ইনপুর প্যারামিটার নেয় । প্রথমে যে ইনডেক্সের ভ্যালু রিপ্লেস করতে হবে সেটি এবং তার পরে যে অবজেক্ট দিয়ে সেই স্থান পূরন করতে হবে সেটি। +```java +list.set(2, Integer.MAX_VALUE); +``` + + +**লিস্ট থেকে ডিলিট করা** + +খুব প্রচলিত ২ উপায়ে লিস্ট থেকে কোন একটি এলিমেন্ট ডিলিট বা রিমুভ করে দেওয়া যায় । একটি হল কোন একদি এলিমেন্ট বা অবজেক্ট কোন ইনডেক্সে আছে সেটা জানা এবং সেই ইনডেক্সকে রিমুভ করে দেওয়া । অথবা যে অবযেক্টটি রিমুভ করতে চাওয়া হচ্ছে সেই অবযেক্টটি দিয়ে বলা সেটি ডিলিট করতে । চলুন দেখি সেটি কিভাবে করা যায়ঃ + +পদ্ধতি ১ঃ +```java +list.remove(2); +``` +এই পদ্ধতি আপনি প্রিমিটিভ ইন্টিজার নাম্বার নাম্বার ইনপুট প্যারামিটার হিসাবে পাস করছেন । অর্থাৎ `remove` মেথডটি এটিকে ইনডেক্স হিসাবে বিবেচনা করবে । যদি 2 নাম্বার ইনডেক্সে অন্য কোন নাম্বার থাকে এবং ২ লিস্টে উপস্থিত থাকে তার পরেও সে ২ নাম্বার ইনডেক্সের ভ্যালুটিকে রিমুভ করবে এবং ওই ইনডেক্সের ভ্যালুটি রিটার্ন করবে । + +পদ্ধতি ২ঃ +```java +list.remove(new Integer(13)); +``` +এই পদ্ধতিতে আপনার লিস্টটি যে টাইপের অবজেক্ট কনটেইন করছে সেই টাইপের একটি অবজেক্ট দিলে সেটিকে ডিলিট করার চেষ্টা করবে । যদি উক্ত অবজেক্ট উপস্থিত থাকে ডিলিট করবে এবং `true` ভ্যালু রিটার্ন করবে অন্যথায় `false` রিটার্ন করবে । + + + +**লিস্ট সম্পর্কিত কিছু মেথড(Some methods of List)** + +`clear` মেথডটি উক্ত লিস্ট থেকে সব এলিমেন্ট রিমুভ করে দেয় । `contains` মেথডটি একটি অবজেক্ট ইনপুট হিসাবে নেয় এবং চেক করে যে উক্ত অবজেক্টরি লিস্টে প্রেজেন্ট কি না । ‍`indexOf` মেথসটি একটি অবজেক্ট ইনপুট হিসাবে নেয় এবং যদি সেই অবজেক্টটি ওই লিস্টে প্রেজেন্ট থাকে তবে তার ইনডেক্স রিটার্ন করে । অন্যথায় -১ রিটার্ন করে । `sort` নামক একটি মেথড আছে যেটি ইনপুট প্যারামিটার হিসাবে কম্পারেটর অবজেক্ট নিয়ে লিস্টটি সেই অনুযায়ী সর্ট করে । + +এরকম আরো বেশ কিছু মেথড এবং তাদের বিস্তর ব্যাখ্যা ওরাকলের অফিসিয়াল ডকুমেন্টেশন সাইটে পাওয়া যাবে । আগ্রহীরা সেখান থেকে দেখে নিতে পারেন । লিংকঃ http://docs.oracle.com/javase/8/docs/api/java/util/List.html + + + From 49c8cb34c1950d5476f5a99eb6ae05037b37ece2 Mon Sep 17 00:00:00 2001 From: Ashikuzzaman Date: Fri, 4 Nov 2016 02:04:31 +0600 Subject: [PATCH 130/150] Added list sorting technique in details --- 11.md | 258 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 257 insertions(+), 1 deletion(-) diff --git a/11.md b/11.md index cd6272a..cd138db 100644 --- a/11.md +++ b/11.md @@ -82,7 +82,7 @@ import java.util.LinkedList; import java.util.Vector; public class Main { public static void main(String[] args) { - List list; + List list, list2, list3; list = new ArrayList(); list2 = new LinkedList(); list3 = new Vector(); @@ -216,4 +216,260 @@ list.remove(new Integer(13)); এরকম আরো বেশ কিছু মেথড এবং তাদের বিস্তর ব্যাখ্যা ওরাকলের অফিসিয়াল ডকুমেন্টেশন সাইটে পাওয়া যাবে । আগ্রহীরা সেখান থেকে দেখে নিতে পারেন । লিংকঃ http://docs.oracle.com/javase/8/docs/api/java/util/List.html +**লিস্ট সর্ট করা(Sort a List)** +কোন একটি লিস্টকে সর্ট করার চেয়ে সহজ বিষয় আর কিছু হতেই পারেনা । তবে সমস্যা হল একটি লিস্টকে সর্ট করার নানাবিধ উপায় থাকায় আপনি কনফিউজ হয়ে যেতে পারেন যে আসলে কক্ষন কোন পদ্ধতিতে সর্ট করবেন । আমি নিজেও মাঝে মাঝে কনফিউজ হয়ে যাই । যাইহোক আমরা লিস্ট সর্টিং এর একেবারে বেসিক থেকে ধীরে ধীরে সামনের দিকে এগিয়ে যাব । বলে রাখা ভালো আমরা এখানে বেসিক্যালি ২ প্রকারের সর্টিং টেকনিক দেখবো এবং তাদের আবার ২ প্রকার সাব সর্টিং টেকনিক দেখবো । আগ্রহীরা আরো কিছুটা ঘাটাঘাটি করলে আরো অনেক কিছুই জানতে পারবে । + +পদ্ধতি ১ঃ + +```java +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +public class Main { + + public static void main(String[] args) { + + List list = new ArrayList<>(); + list.add(7); + list.add(5); + list.add(13); + list.add(17); + list.add(3); + + Collections.sort(list); + + list.forEach((x) -> { + System.out.println(x); + }); + } +} +``` + +এখানে আমরা `Collections` ক্লাসের একটি মেথড `sort` যেটি ইনপুট প্যারামিটার হিসাবে একটি লিস্ট অবজেক্ট নেয় এবং সেটিকে ইনপ্লেস সর্ট করে দেয় । অর্থাৎ এই মেথডের রিটার্ন টাইপ ভয়েড । এবং এটি অ্যাসেন্ডিং ( ছোট থেকে ক্রমান্বয়ে বড় ) অর্ডারে সর্ট করে । + +আমরা যদি ডিসেন্ডিং অর্ডারে সর্ট করতে চাই তবে আমাদের আরেকটু কাজ বেশি করতে হবে । আর সেটি হল `sort` নামক মেথডে আরেকটি প্যারামিটার পাস করতে হবে যেটি আসলে একটি `Comparator` অবজেক্ট । যেটার মাধ্যমে আমরা বলে দিব যে আসলে সর্টটি কোন অর্ডারে হবে বা কোন এলিমেন্টের সাপেক্ষে হবে । কোডটিকে সেক্ষেত্রে আমরা এভাবে লিখতে পারতাম, + +```java +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +public class Main { + + public static void main(String[] args) { + + List list = new ArrayList<>(); + list.add(7); + list.add(5); + list.add(13); + list.add(17); + list.add(3); + + Comparator comparator = new Comparator() { + @Override + public int compare(Integer t1, Integer t2) { + return t2-t1; + } + }; + + Collections.sort(list, comparator); + + list.forEach((x) -> { + System.out.println(x); + }); + } +} +``` + +উল্লেখ্য এখানে `Comparator` একটি ইন্টারফেস এবং এবং `compare` একটি `abstract` মেথড তাই আমাদের এটিকে ইমপ্লিমেন্ট করতে হয়েছে । ‍`compare` মেথডটি একটি ইন্টিজার নাম্বার রিটার্ন করে । দুটি অ্যাট্রিবিউটের মাঝে কম্পেয়ার করে পজেটিভ, নেগেটিভ বা শুন্য রিটার্ন করে । শুন্য রিটার্ন করা মানে দুটি সমান । পজেটিভ রিটার্ন করা মানে প্রথমটি বড় আর অন্যথায় ছোট । +আমরা আলাদা ভাবে `Comparator` এর অবজেক্ট ক্রিয়েট না করেও কাজটি করতে পারতাম ইনপ্লেসে । সেক্ষেত্রে এরকম হতে পারত, + +```java + Collections.sort(list, new Comparator() { + @Override + public int compare(Integer t, Integer t1) { + return t1-t; + } + }); +``` + +বর্তমান সময় যেহেতু ল্যামডা এক্সপ্রেশনের যুগ চলছে তাই এটিকে আরো সহজে এবং খুব সংক্ষেপে এভাবেও লেখা যেত, + +```java + Collections.sort(list, (Integer t1, Integer t2) -> t2-t1); +``` + +কাজ বেসিক্যালি সব একই ভাবে করছে । + + +এতক্ষন আমরা দেখলাম প্রিমিটিভ টাইপের ডাটার একটি লিস্ট সর্ট করা । এমনতো হতেই পারে যে আপনার কাছে একটি কাষ্ট টাইপের অবজেক্ট কনটেইন করে এমন একটি লিস্ট সর্ট করতে হবে ওই অবজেক্টের নির্দিষ্ট কোন এক বা একাধিক প্রপার্টির সাপেক্ষে । সেক্ষেত্রে করনীয় কি সেটা এবার চলুন দেখে ফেলি । + + +```java +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +class Employee { + + int id; + String name; + int age; + int salary; + + public Employee(int id, String name, int age, int salary) { + this.id = id; + this.name = name; + this.age = age; + this.salary = salary; + } +} + +public class Main { + + public static void main(String[] args) { + + List list = new ArrayList<>(); + list.add(new Employee(1, "Abul", 27, 35000)); + list.add(new Employee(2, "Babul", 25, 37000)); + list.add(new Employee(3, "Kabul", 29, 30000)); + list.add(new Employee(4, "Mofiz", 24, 36000)); + list.add(new Employee(5, "Hafiz", 28, 34000)); + + Collections.sort(list, new Comparator(){ + @Override + public int compare(Employee t, Employee t1) { + return t.age - t1.age; + } + }); + + list.forEach((x) -> { + System.out.println(x.salary); + }); + } +} +``` + +ঠিক আগের মতই কাজ করতে পারবেন । তবে এখানে অবজেক্ট নিয়ে কাজ করতে হবে । এবং অবজেক্টের কোন ফিল্ডের রেসপেক্টে সর্ট করতে চাচ্ছেন সেটাও ডিফাইন করে দিতে হবে । অ্যাসেন্ডিং বা ডিসেন্ডিং যেকোন ভাবেই সর্ট করতে পারবে । এমনকি একাধিক ফিল্ডের রেসপেক্টে যদি সর্ট করতে চান সেটাও করতে পারবে । আপনারা চাইলে ল্যামডা এক্সপ্রেশন ব্যাবহার করতে পারতেন সেক্ষেত্রে এরকম হতো কোডটি, + +```java + Collections.sort(list, (Employee t, Employee t1) -> t1.age – t.age);//descending order +``` + + +এবার আমরা একটু ভিন্ন একটা পদ্ধতি দেখবো । যদি এমন হয় যে আমাদের এই ক্লাসটি প্রায়ই সর্ট করতে হয় এবং নির্দিষ্ট একটা অর্ডারে সর্ট করতে হয় , সেক্ষেত্রে আমরা একটা বিশেষ কাজ করতে পারি । আমরা `Comparable` ইন্টারফেসটি ইমপ্লিমেন্ট করতে পারি । `Comparable` ইন্টারফেসের মাঝে `compareTo` মেথডটি অভাররাইড করলেই কাজ শেষ । অ্যাসেন্ডিং বা ডিসেন্ডিং আগের মতই । তবে চলুন দেখি কিভাবে সেটি করা যায় সেটি দেখে ফেলি । + + +```java +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +class Employee implements Comparable { + + int id; + String name; + int age; + int salary; + + public Employee(int id, String name, int age, int salary) { + this.id = id; + this.name = name; + this.age = age; + this.salary = salary; + } + + @Override + public int compareTo(Employee t) { + return this.age - t.age; + } +} + +public class Main { + + public static void main(String[] args) { + + List list = new ArrayList<>(); + list.add(new Employee(1, "Abul", 27, 35000)); + list.add(new Employee(2, "Babul", 25, 37000)); + list.add(new Employee(3, "Kabul", 29, 30000)); + list.add(new Employee(4, "Mofiz", 24, 36000)); + list.add(new Employee(5, "Hafiz", 28, 34000)); + + Collections.sort(list); + + list.forEach((x) -> { + System.out.println(x.id + ", " + x.name + ", " + x.age + ", " + x.salary); + }); + } +} +``` + +এভাবে খুব সহজেই আমরা একটি অবজেক্টের লিস্ট সর্ট করতে পারি । তবে একটি বিষয় লক্ষ করার মত বিষয় হচ্ছে যে আপনাদের যে ২ প্রকারের সর্ট দেখানো হয়েছে অবজেক্টের লিস্টের ক্ষেত্রে এই দুই প্রকার কিন্তু একত্রেও ব্যাবহার করতে পারবেন । তবে সেক্ষেত্রে প্রায়োরিটি পাবে ক্লোজার ফাংশন । চলুন দেখি বিষয়টা কি একটু দেখে নেই । + +```java +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +class Employee implements Comparable { + + int id; + String name; + int age; + int salary; + + public Employee(int id, String name, int age, int salary) { + this.id = id; + this.name = name; + this.age = age; + this.salary = salary; + } + + @Override + public int compareTo(Employee t) { + return this.age - t.age; + } +} + +public class Main { + + public static void main(String[] args) { + + List list = new ArrayList<>(); + list.add(new Employee(1, "Abul", 27, 35000)); + list.add(new Employee(2, "Babul", 25, 37000)); + list.add(new Employee(3, "Kabul", 29, 30000)); + list.add(new Employee(4, "Mofiz", 24, 36000)); + list.add(new Employee(5, "Hafiz", 28, 34000)); + + Collections.sort(list, ((Employee e1, Employee e2) -> (e2.salary + e1.salary))); + + list.forEach((x) -> { + System.out.println(x.id + ", " + x.name + ", " + x.age + ", " + x.salary); + }); + } +} +``` + +এখানে যদিও `Employee` ক্লাস `Comparable` ইন্টারফেস ইমপ্লিমেন্ট করেছে এবং `compareTo` মেথডে বলে দেওয়া হয়েছে `age` এর অ্যাসেন্ডিং অর্ডারে সর্ট করতে হবে কিন্তু এটি সর্ট করবে `salary` এর ডিসেন্ডিং অর্ডারে । কেন সেটা করছে সেটা নিশ্চয় বুঝতে পেরেছেন । + +আপনারা চাইলে কিন্তু `List` এর অন্তর্গত `sort` মেথড ব্যাবহার করেও সর্ট করতে পারতেন । সেটা করার জন্য খুব বেশি কিছুই করতে হতনা । সেটি অলরেডি আপনারা জানেন কিভাবে সেটি করা যায় । + +```java + list.sort(new Comparator(){ + @Override + public int compare(Employee t, Employee t1) { + return t1.age - t.age; + } + + }); +``` + +বেসিক্যালি এভাবে খুব সহজেই একটি লিস্ট সর্ট করা যায় । আপনারা আরো বেশি আগ্রহী হলে ওরাকলের ডকুমেন্টেশন পড়তে পারেন । আরো বেশি পরিষ্কার হবে ধারনা । + + +#–-------চলবে--------# From a5d2e49c744a58db4cb417faa49f2bc32ad1afa4 Mon Sep 17 00:00:00 2001 From: "howtocode.com.bd" Date: Wed, 16 Nov 2016 01:38:32 -0600 Subject: [PATCH 131/150] Update book.json --- book.json | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/book.json b/book.json index 51d6e7b..4e22b27 100644 --- a/book.json +++ b/book.json @@ -1,13 +1,23 @@ { - "plugins": ["disqus"], - "pluginsConfig": { - "disqus": { - "shortName": "howtocode-com-bd" - } - }, - "links": { - "sidebar": { - "সব কোর্স লিস্ট দেখুন": "http://www.howtocode.com.bd" - } - } -} \ No newline at end of file + "gitbook": "2.x.x", + "plugins": ["disqus", "github", "edit-link"], + "pluginsConfig": { + "disqus": { + "shortName": "howtocode-com-bd" + }, + "github": { + "url": "https://github.com/howtocode-com-bd/java.howtocode.com.bd" + }, + "edit-link": { + "base": "https://github.com/howtocode-com-bd/java.howtocode.com.bd/blob/master", + "label": "চ্যাপ্টারটি আপডেট করুন" + } + }, + "links": { + "sidebar": { + "অন্যান্য কোর্স": "http://www.howtocode.com.bd", + "আমাদের ব্লগ": "https://blog.howtocode.com.bd/", + "পিডিএফ ডাউনলোড": "https://www.gitbook.com/download/pdf/book/howtocode-com-bd/-java" + } + } +} From 5ab91337f6dd89a5a67857698b5b08bdccecf617 Mon Sep 17 00:00:00 2001 From: nazmul-pro Date: Wed, 16 Nov 2016 21:35:02 +0600 Subject: [PATCH 132/150] some text added --- 3.1.md | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/3.1.md b/3.1.md index 5214af0..cfb2a1e 100644 --- a/3.1.md +++ b/3.1.md @@ -1,4 +1,4 @@ -## এরে (Array) +## এরে (Array) ## এরে @@ -6,6 +6,11 @@ এরে ডিক্লার করার জন্যে প্রথমে ডাটাটাইপ (কি ধরণের ডাটাটাইপ রাখবে) এর সাথে ([]) স্কয়ার ব্র্যাকেট তারপর এর একটি ভেরিয়েবল নাম দিতে হয়। +জাভাতে দুই ধরনের এরে রয়েছে +১/ সিঙ্গেল ডাইমেনশনাল এরে +২/ মাল্টিডাইমেনশনাল এরে + +সিঙ্গেল ডাইমেনশনাল এরে কে আমরা এইভাবে ডিক্লিয়ার করতে পারিঃ ```java //একটি ইন্টিজার এরে int[] anArray; @@ -38,8 +43,8 @@ anArray[0] = 100; //এখানে প্রথম ভ্যাল্যু র anArray[1] = 200; // এভাবে দ্বিতীয় ভ্যালু anArray[2] = 300; // এভাবে বাকি গুলো ``` - -এই ভ্যালুগুলো যদি পড়তে চাই তাহলে - +জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজে জিরো বেজড নাম্বারিং( ইনডেক্স শুন্য থেকে শুরু ) করা হয়ে থাকে। + অর্থাৎ, এরের এই ভ্যালুগুলো যদি পড়তে চাই তাহলে - ```java System.out.println("Element 1 at index 0: " + anArray[0]); @@ -58,7 +63,7 @@ int[] anArray = { ``` একটি এরে এর মধ্যে আরেকটি অ্যারে রাখা যেতে পারে - - +নিচে মাল্টিডাইমেনশনাল এরে এর ডিক্লিয়ারেশন এবং ভ্যালু এসাইন করার একটি পদ্ধতি দেখানো হল । ```java int[][] anArray = {{1, 2, 3}, {4, 6, 7}, {8, 9}}; ``` @@ -68,4 +73,9 @@ int[][] anArray = {{1, 2, 3}, {4, 6, 7}, {8, 9}}; ```java int length = anArray.length; ``` - +সুবিধাঃ +এরেতে আমরা খুব সহজে ডেটা গুলোকে ছোট থেকে বড় - বড় থেকে ছোট আকারে সাজিয়ে নিতে পারি । +খুব সহজেই যেকোনো ইনডেক্সে এক্সেস নিতে পারি । +অসুবিধাঃ +এরের সাইজ আগে থেকে বলে দিতে হয় এবং এটি ফিক্সড সাইজ তাই রানটাইমে আমরা এটার সাইজ বাড়াতে পারিনা । +অবশ্য এই সমস্যা দূর করতে জাভাতে কালেকশন ফ্রেমওয়ার্ক ব্যবহার করতে পারি যেগুলো পর্যায়ক্রমে আমরা আলোচনা করবো । From cd28f40970dc9104f8ffaf04f67533f242a9c03b Mon Sep 17 00:00:00 2001 From: "howtocode.com.bd" Date: Wed, 16 Nov 2016 12:46:41 -0600 Subject: [PATCH 133/150] Update README.md --- README.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 8f765c0..6294a05 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@ - +# জাভা প্রোগ্রামিং -[কোর্স এর মুল পাতা](http://java.howtocode.com.bd/) | [HowToCode মুল সাইট](http://www.howtocode.com.bd/) | [সবার জন্য প্রোগ্রামিং ব্লগ](http://blog.howtocode.com.bd/) | [পিডিএফ ডাউনলোড](https://www.gitbook.com/download/pdf/book/howtocode-com-bd/-java) -# জাভা প্রোগ্রামিং + -[![Join the chat at https://gitter.im/howtocode-com-bd/java.howtocode.com.bd](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/howtocode-com-bd/java.howtocode.com.bd?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - +**স্বয়ংক্রিয় কন্ট্রিবিউটরের তালিকা** +(প্রথম ৫ জন) + #### সংক্ষেপ @@ -24,4 +24,6 @@ এটি মূলত একটি [গিটহাব রিপোজিটোরি](https://github.com/howtocode-com-bd/java.howtocode.com.bd) যেখানে এই বইয়ের আর্টিকেল গুলো মার্কডাউন ফরম্যাটে লেখা হচ্ছে । রিপোজটরিটি ফর্ক করে পুল রিকুয়েস্ট পাঠানোর মাধ্যমে আপনারাও অবদান রাখতে পারেন । বিস্তারিত দেখতে পারেন এই ভিডিওতে [Video](http://blog.howtcode.com.bd/?p=32) - + + +[![Join the chat at https://gitter.im/howtocode-com-bd/java.howtocode.com.bd](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/howtocode-com-bd/java.howtocode.com.bd?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) \ No newline at end of file From a1852a7469384e7fd593df4d847e1b23e1b924fa Mon Sep 17 00:00:00 2001 From: "howtocode.com.bd" Date: Wed, 16 Nov 2016 12:47:43 -0600 Subject: [PATCH 134/150] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6294a05..cc4064d 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ এই বইটি মূলত স্বেচ্ছাশ্রমে লেখা এবং বইটি সম্পূর্ন ওপেন সোর্স । এখানে তাই আপনিও অবদান রাখতে পারেন লেখক হিসেবে । আপনার কন্ট্রিবিউশান গৃহীত হলে অবদানকারীদের তালিকায় আপনার নাম যোগ করে দেওয়া হবে । -এটি মূলত একটি [গিটহাব রিপোজিটোরি](https://github.com/howtocode-com-bd/java.howtocode.com.bd) যেখানে এই বইয়ের আর্টিকেল গুলো মার্কডাউন ফরম্যাটে লেখা হচ্ছে । রিপোজটরিটি ফর্ক করে পুল রিকুয়েস্ট পাঠানোর মাধ্যমে আপনারাও অবদান রাখতে পারেন । বিস্তারিত দেখতে পারেন এই ভিডিওতে [Video](http://blog.howtcode.com.bd/?p=32) +এটি মূলত একটি [গিটহাব রিপোজিটোরি](https://github.com/howtocode-com-bd/java.howtocode.com.bd) যেখানে এই বইয়ের আর্টিকেল গুলো মার্কডাউন ফরম্যাটে লেখা হচ্ছে । রিপোজটরিটি ফর্ক করে পুল রিকুয়েস্ট পাঠানোর মাধ্যমে আপনারাও অবদান রাখতে পারেন । বিস্তারিত দেখতে পারেন এই ভিডিওতে [Video](http://blog.howtocode.com.bd/?p=32) From a8601109b746911cee27f603097ed2f71eaf4b0b Mon Sep 17 00:00:00 2001 From: nazmul-pro Date: Thu, 17 Nov 2016 01:04:46 +0600 Subject: [PATCH 135/150] For loop added --- 4.md | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/4.md b/4.md index 0244661..677e715 100644 --- a/4.md +++ b/4.md @@ -1,4 +1,4 @@ -# পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং +# পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং * ইফ-দেন-ইলস * সুইচ @@ -134,8 +134,50 @@ public static String getMonth(int month) { ``` +## For Loop +যখন আমাদের একই কাজ বারবার করার প্রয়োজন হয় তখন আমরা লুপ ব্যবহার করি । +ধরুন আপনাকে ১০ বার বাংলাদেশ শব্দটি প্রিন্ট দিতে বলা হল তাহলে আপনি System.out.println("Bangladesh"); দশবার না লিখে For Loop ব্যবহার করতে পারেন । +```java +for(int i=1;i<=10;i++) + { + System.out.println("Bangladesh"); + } +``` +উপরের কোড টুকুর জন্য Bangladesh শব্দটি ১০ বার প্রিন্ট হবে । +আমরা ইচ্ছা করলে Bangladesh শব্দটি অসংখ্যক বার প্রিন্ট দিতে পারি এভাবে- + +```java +for(;;) + { + System.out.println("Bangladesh"); + } +``` +উপরের লুপটাকে infinitive loop বলে । + +For-Each Loop: +একটা এরে র সবগুলো এলিমেন্টকে এক্সেস করার জন্য আমরা For-Each Loop ব্যবহার করতে পারি । +নিচের উদাহরণটি দেখুনঃ +```java + public class ForEachLoop { + public static void main(String[] args) { + int[] arr={3,6,9,10,30}; + for(int i:arr){ + System.out.println(i); + } + } + } + +``` +উপরের কোডটুকুর জন্য আউটপুট আসবে এমনঃ +3 +6 +9 +10 +30 + +যতক্ষণ এরের সব এলিমেন্ট প্রিন্ট না হবে ততক্ষণ লুপটি চলবে । From 84abf6d3f22f19744e3630aed7fce2a8628396e3 Mon Sep 17 00:00:00 2001 From: nazmul-pro Date: Thu, 17 Nov 2016 01:10:02 +0600 Subject: [PATCH 136/150] Edited For Loop --- 4.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/4.md b/4.md index 677e715..2780af3 100644 --- a/4.md +++ b/4.md @@ -171,11 +171,13 @@ For-Each Loop: ``` উপরের কোডটুকুর জন্য আউটপুট আসবে এমনঃ +```java 3 6 9 10 30 +``` যতক্ষণ এরের সব এলিমেন্ট প্রিন্ট না হবে ততক্ষণ লুপটি চলবে । From 55fd0a45a6a2adaedcdaec334bf838cf6fcbbff3 Mon Sep 17 00:00:00 2001 From: nazmul-pro Date: Thu, 17 Nov 2016 22:28:53 +0600 Subject: [PATCH 137/150] while /do-while loop added --- 4.md | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) diff --git a/4.md b/4.md index 2780af3..7554e67 100644 --- a/4.md +++ b/4.md @@ -181,6 +181,94 @@ For-Each Loop: যতক্ষণ এরের সব এলিমেন্ট প্রিন্ট না হবে ততক্ষণ লুপটি চলবে । +## While Loop + +ফর লুপের মতই যতক্ষন লুপের কন্ডিশন সত্য হয় ততক্ষণ while loop তার ভিতরের স্টেটমেন্ট এক্সিকিউট করতে থাকে । +```java +while (condition) { + //block of statements + statement 1; + statement 2; + ........... + statement n; +} +``` +উদাহরনঃ +```java +class WhileLoopExample { + public static void main(String args[]){ + int i=7 + while(i>1){ + System.out.println(i); + i--; + } + } +} +``` +আউটপুটঃ +```java +7 +6 +5 +4 +3 +2 +``` +Infinite while loop: + +উদাহরনঃ +```java +while(1==1){ + System.out.println("Bangladesh"); + } +``` +উপরের কোডটি দেখে বলুনতো Bangladesh শব্দটি মোট কতবার প্রিন্ট হবে !!! + +কারো মনে প্রশ্ন হতে পারে যে for loop দিয়েও তো এসব করা যায় তাহলে আবার while loop কেন? +মনে করুন আপনার এক বন্ধু আপনাকে ফোন করে বললো , তুই ১ ঘন্টার জন্য (for) ওখানে দাঁড়িয়ে থাক আমি আসছি ! +আরেকজন ফোন করে বললো আমি যতক্ষণ (while) না আসবো তুই ওখানে ততক্ষণ দাঁড়িয়ে থাক । + +প্রথম ক্ষেত্রে আপনি জানেন যে আপনাকে ঠিক কতক্ষণ দাঁড়িয়ে থাকতে হবে । প্রোগ্রামিং এ যদি আপনি জানেন যে ঠিক কতবার এই কাজটি আমাকে করতে হবে তাহলে সেক্ষেত্রে আপনি for loop ব্যবহার করতে পারেন । +২য় ক্ষেত্রে আপনি ঠিক জানেননা যে কতক্ষণ আপনাকে দাঁড়িয়ে থাকতে হবে । যখন আমরা জানিনা যে ঠিক করবার লুপ চালাতে হবে সেসব ক্ষেত্রে আমরা while loop ব্যবহার করতে পারি । +যেমনঃ আপনি যদি একটি টেক্সট ফাইল থেকে লাইন বাই লাইন ইনপুট নিতে চান তখন আপনি while loop ব্যবহার করতে পারেন কারন আপনি ঠিক জানেন না যে কতটা লাইন ইনপুট নিলে ফাইলটার শেষ লাইনে পৌঁছানো যাবে । + + +## do-while loop + +যখন আমরা ঠিক কতবার লুপটি চলবে তা জানিনা কিন্তু মিনিমাম একবার এক্সিকিউট করার দরকার পড়ে তখন do-while loop ব্যবহার করতে পারি । + +```java +do { + // Statements +}while(condition); + +``` +এক্ষেত্রে কন্ডিশন টেস্ট হবার আগেই স্টেটমেন্ট টি এক্সিকিউট হয় । + +উদাহরনঃ + +```java +public class DoWhileLoop{ + + public static void main(String args[]) { + int i = 5; + + do { + System.out.print(i); + i++; //increment by 1 + System.out.print("\n"); + }while( x < 10 ); + } +} +``` +আউটপুটঃ +```java +5 +6 +7 +8 +9 +``` ## চলবে ---- From cc934d1a81ad5ea3c8f1c36d1282cac17931f4af Mon Sep 17 00:00:00 2001 From: "howtocode.com.bd" Date: Fri, 2 Dec 2016 01:33:35 -0600 Subject: [PATCH 138/150] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index cc4064d..061a0cd 100644 --- a/README.md +++ b/README.md @@ -26,4 +26,6 @@ -[![Join the chat at https://gitter.im/howtocode-com-bd/java.howtocode.com.bd](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/howtocode-com-bd/java.howtocode.com.bd?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) \ No newline at end of file +[![Join the chat at https://gitter.im/howtocode-com-bd/java.howtocode.com.bd](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/howtocode-com-bd/java.howtocode.com.bd?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. From 200848a728376593400c5687bcab7f73611b0382 Mon Sep 17 00:00:00 2001 From: "howtocode.com.bd" Date: Fri, 21 Sep 2018 16:26:49 -0600 Subject: [PATCH 139/150] Delete book.json --- book.json | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 book.json diff --git a/book.json b/book.json deleted file mode 100644 index 4e22b27..0000000 --- a/book.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "gitbook": "2.x.x", - "plugins": ["disqus", "github", "edit-link"], - "pluginsConfig": { - "disqus": { - "shortName": "howtocode-com-bd" - }, - "github": { - "url": "https://github.com/howtocode-com-bd/java.howtocode.com.bd" - }, - "edit-link": { - "base": "https://github.com/howtocode-com-bd/java.howtocode.com.bd/blob/master", - "label": "চ্যাপ্টারটি আপডেট করুন" - } - }, - "links": { - "sidebar": { - "অন্যান্য কোর্স": "http://www.howtocode.com.bd", - "আমাদের ব্লগ": "https://blog.howtocode.com.bd/", - "পিডিএফ ডাউনলোড": "https://www.gitbook.com/download/pdf/book/howtocode-com-bd/-java" - } - } -} From fb343772312288e86e337fd060502c679197dd5e Mon Sep 17 00:00:00 2001 From: "howtocode.com.bd" Date: Fri, 21 Sep 2018 16:27:12 -0600 Subject: [PATCH 140/150] Update README.md --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 061a0cd..0515b4f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,3 @@ -# জাভা প্রোগ্রামিং - - @@ -9,8 +6,6 @@ -#### সংক্ষেপ - **কোর্সের বর্ণনা:** জাভা বর্তমানে বহুল ব্যবহৃত একটি প্রোগ্রামিং ল্যাংগুয়েজ। এন্টারপ্রাইজ এপ্লিক্যাশান ডেভেলেপমেন্টে এখনো জাভার বিকল্প তৈরি হয়নি বলে ধরা হয়। জাভার জনপ্রিয়তার মুল কারণ এর portability, নিরাপত্তা, এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও ওয়েব প্রোগ্রামিং এর পরিপূর্ণ সাপোর্ট। এই কোর্সে জাভার অ আ ক খ থেকে শুরু করে এর ব্যবহারিক প্রয়োগ এবং অন্যন্য বিষয় গুলো নিয়ে আলোচনা করা হবে। **কাদের জন্যে কোর্স:** এই কোর্স মূলত বিশ্ববিদ্যালয় এর প্রথম বর্ষের ছাত্র-ছাত্রীদের জন্যে যারা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট শুরু করতে চায়। তবে যে কেও চাইলে এই কোর্সটি করতে পারে। ধরে নেওয়া হচ্ছে যে, শিক্ষার্থী অন্ত্যত যে কোন একটি প্রোগ্রামিং ল্যাংগুয়েজ (সি/সি++) সম্পর্কে আগে থেকেই ধারণা রাখে। From 2116b87cdf3d4105795373d51d6a517fa5a117ec Mon Sep 17 00:00:00 2001 From: "Md. Jamal Uddin" Date: Sat, 7 Sep 2019 15:31:35 +0600 Subject: [PATCH 141/150] update intro page typo & links --- introduction.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/introduction.md b/introduction.md index 3c533c0..fc50859 100644 --- a/introduction.md +++ b/introduction.md @@ -1,31 +1,31 @@ ### উপক্রমণিকা -১৯৯৫ সালের ২৩ শে মে। ঝকঝকে ঝলমলে চমৎকার একটি দিন। জন গেইজ, ডিরেক্টর অব সান মাইক্রোসিস্টেম সাথে Marc Andreesen, কো ফাওন্ডার এবং ভাইস প্রেসিডেন্ট অব নেটস্কেপ ঘোষণা দেন যে, জাভা টেকনোলজি মোটেই কোন উপকথা নয়, বরং এটিই বাস্তবতা এবং তারা এটি Netscape Navigator এর সংযুক্ত হতে যাচ্ছে। +১৯৯৫ সালের ২৩ শে মে। ঝকঝকে ঝলমলে চমৎকার একটি দিন। [জন গেইজ](https://en.wikipedia.org/wiki/John_Gage), ডিরেক্টর অব সান মাইক্রোসিস্টেম সাথে [Marc Andreesen](https://en.wikipedia.org/wiki/Marc_Andreessen), কো ফাওন্ডার এবং ভাইস প্রেসিডেন্ট অব নেটস্কেপ ঘোষণা দেন যে, জাভা টেকনোলজি মোটেই কোন উপকথা নয়, বরং এটিই বাস্তবতা এবং তারা এটি Netscape Navigator এর সাথে সংযুক্ত হতে যাচ্ছে। -সে সময় জাভাতে কাজ করে এমন লোকের সংখ্যা ত্রিশেরও কম। তারা কখনোই চিন্তা করে নি, তাদের এই টিম ভবিষ্যৎ পৃথিবীর প্রধানতম টেকনোলজি নির্ধারণ করতে যাচ্ছে। ২০০৪ সালের ৩ জানুয়ারী Mars Exploration Rover মঙ্গল গ্রহের মানটিতে পা রাখে যার কন্ট্রোল সিস্টেম থেকে শুরু করে পৃথিবীর অধিকাংশ কনজুমার ইলেকট্রনিক্স - (ক্যাবল সেট-টব বক্স, ভিসিআর, টোস্টার, পিডিএ, স্মার্টফোন) ৯৭% এন্টাপ্রাইজ ডেস্কটপ ৮৯% ডেস্কটপ অব ইউএসএ, ৩ বিলিওন মোবাইল ফোন, ৫ বিলিওন জাভা কার্ড, ১২৫ মিলিওন টিভি ডিভাইস, ১০০% ব্লু-রে ডিস্ক প্লেয়ার … এই লিস্ট লম্বা হতেই থাকবে) জাভা রান করে। +সে সময় জাভাতে কাজ করে এমন লোকের সংখ্যা ত্রিশেরও কম। তারা কখনোই চিন্তা করে নি, তাদের এই টিম ভবিষ্যৎ পৃথিবীর প্রধানতম টেকনোলজি নির্ধারণ করতে যাচ্ছে। ২০০৪ সালের ৩ জানুয়ারী [Mars Exploration Rover](https://en.wikipedia.org/wiki/Mars_Exploration_Rover) মঙ্গল গ্রহের মাটিতে পা রাখে যার কন্ট্রোল সিস্টেম থেকে শুরু করে পৃথিবীর অধিকাংশ কনজুমার ইলেকট্রনিক্স - (ক্যাবল সেট-টব বক্স, ভিসিআর, টোস্টার, পিডিএ, স্মার্টফোন) ৯৭% এন্টারপ্রাইজ ডেস্কটপ ৮৯% ডেস্কটপ অব ইউএসএ, ৩ বিলিয়ন মোবাইল ফোন, ৫ বিলিয়ন জাভা কার্ড, ১২৫ মিলিয়ন টিভি ডিভাইস, ১০০% ব্লু-রে ডিস্ক প্লেয়ার … এই লিস্ট লম্বা হতেই থাকবে) জাভা রান করে। -নিচের ভিডিও টি চমৎকার। একবার দেখে নেওয়া যেতে পারে। +নিচের ভিডিও টি চমৎকার। একবার দেখে নেওয়া যেতে পারে। - + চলুন একটু পেছনের ইতিহাস জেনে নেই। তখন সি-প্লাস প্লাস এর একচ্ছত্রাধিপত্য। -সান মাইক্রাসিস্টেম- মূলত হার্ডওয়্যার কম্পানি। ১৯৭২ থেকে ১৯৯১ সালে কম্পিউটারের হার্ডওয়্যারের এক রেভ্যুলেশান হয়। দ্রুত এবং উচ্চ ক্ষমতা সম্পন্ন হার্ডওয়্যার অল্প দামে পাওয়া যাচ্ছে এবং সেই সাথে কমপ্লেক্স সফটওয়্যারের চাহিদা দ্রুতই বেড়ে যাচ্ছে। ১৯৭২ Dennis Ritchie সি প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করেন যা প্রোগ্রামারদের মধ্যে সব থেকে জনপ্রিয়। কিন্তু ততদিনে প্রোগ্রামারদের কাছে সি -এর স্ট্রাকচার্ড প্রোগ্রামিং কিছুটা ক্লান্তিকর মনে হতে শুরু করেছে। এর ফলশ্রুতিতে Bjarne Stroustrup 1979 সালে ডেভেলপ করে সি প্লাস প্লাস যা কিনা সি এর এনহান্সমেন্ট । এটি সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ধারণাকে পরিচিত করে তুলে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবিধে হচ্ছে প্রোগ্রামার পুনর্ব্যবহারযোগ্য(reusable) কোড লিখতে পারে যা কিনা পরে অন্য কাজে পুনরায় ব্যবহার করা যায়। +সান মাইক্রাসিস্টেম- মূলত হার্ডওয়্যার কোম্পানী। ১৯৭২ থেকে ১৯৯১ সালে কম্পিউটারের হার্ডওয়্যারের এক রেভ্যুলেশান হয়। দ্রুত এবং উচ্চ ক্ষমতা সম্পন্ন হার্ডওয়্যার অল্প দামে পাওয়া যাচ্ছে এবং সেই সাথে কমপ্লেক্স সফটওয়্যারের চাহিদা দ্রুতই বেড়ে যাচ্ছে। ১৯৭২ সালে [Dennis Ritchie](https://en.wikipedia.org/wiki/Dennis_Ritchie) সি প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করেন যা প্রোগ্রামারদের মধ্যে সব থেকে জনপ্রিয়। কিন্তু ততদিনে প্রোগ্রামারদের কাছে সি -এর স্ট্রাকচার্ড প্রোগ্রামিং কিছুটা ক্লান্তিকর মনে হতে শুরু করেছে। এর ফলশ্রুতিতে [Bjarne Stroustrup](https://en.wikipedia.org/wiki/Bjarne_Stroustrup) 1979 সালে ডেভেলপ করে সি প্লাস প্লাস যা কিনা সি এর এনহান্সমেন্ট । এটি সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ধারণাকে পরিচিত করে তুলে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবিধে হচ্ছে প্রোগ্রামার পুনর্ব্যবহারযোগ্য(reusable) কোড লিখতে পারে যা কিনা পরে অন্য কাজে পুনরায় ব্যবহার করা যায়। -১৯৯০ সাল। সান মাইক্রাসিস্টেম -এ সি প্লাস প্লাস এর আধিপত্যে সি-তে লেখা টুল এবং এপিআই গুলো প্রায় অবস্যুলেট হতে শুরু করেছে। Patrick Naughton,ইঞ্জিনিয়ার অব সান মাইক্রাসিস্টেম, মোটামুটি হতাশ এবং এক ধরণের অকওয়্যার্ড পরিস্থিতির স্বীকার। ততদিনে স্টিভ জব অ্যাপল কম্পিউটার থেকে বিতাড়িত হয়ে NeXT Computer, Inc প্রতিষ্ঠা করে ফেলেছেন( যা কিনা সফটওয়্যার ইন্ডাস্ট্রিতে বৈপ্লবিক পরিবর্তন আনতে যাচ্ছে এবং যার ফলশ্রুতিতে তৈরি হয়েছে আজকের ম্যাক-ওস) এবং NeXTSTEP নামে একটি অপারেটিং সিস্টেম তৈরি করেন। এতে কিছু অসাধারণ ব্যাপার ছিল যার মধ্যে অবজেক্ট ওরিয়েন্টেড এপ্লিক্যশান লেয়ার এর ধারণাটি ছিল অসাধারণ যাতে কিনা অবজেক্ট ধরে ধরে কাস্টমাইজড সফটওয়্যার তৈরি করে ফেলা যায়। Patrick Naughton ইতিমধ্যে NeXT এর দিকে যাওয়ার জন্য মনস্থির করে ফেলেছেন কিন্তু তখন একবার তাকে শেষ সুযোগ হিসেবে একটি অতি গোপন প্রজেক্টের অনুমোদন দেওয়া হয় যার কথা কেউ জানতো না। কিছুদিন পরেই তার সাথে যুক্ত হয় James Gosling এবং Mike Sheridan । তখন এর নাম দেওয়া হয় _গ্রিন প্রজেক্ট_। সময়ের সাথে _গ্রিন প্রজেক্ট_ এর দন্তোদ্গম হয় এবং তারা কম্পিউটার ছাড়াও বিভিন্ন ডিভাইস নিয়ে নার্চার করতে থাকে। +১৯৯০ সাল। সান মাইক্রাসিস্টেম -এ সি প্লাস প্লাস এর আধিপত্যে সি-তে লেখা টুল এবং এপিআই গুলো প্রায় অবস্যুলেট হতে শুরু করেছে। [Patrick Naughton](https://en.wikipedia.org/wiki/Patrick_Naughton), ইঞ্জিনিয়ার অব সান মাইক্রাসিস্টেম, মোটামুটি হতাশ এবং এক ধরণের অকওয়্যার্ড পরিস্থিতির স্বীকার। ততদিনে [স্টিভ জব](https://en.wikipedia.org/wiki/Steve_Jobs) অ্যাপল কম্পিউটার থেকে বিতাড়িত হয়ে NeXT Computer, Inc প্রতিষ্ঠা করে ফেলেছেন( যা কিনা সফটওয়্যার ইন্ডাস্ট্রিতে বৈপ্লবিক পরিবর্তন আনতে যাচ্ছে এবং যার ফলশ্রুতিতে তৈরি হয়েছে আজকের ম্যাক-ওস) এবং NeXTSTEP নামে একটি অপারেটিং সিস্টেম তৈরি করেন। এতে কিছু অসাধারণ ব্যাপার ছিল যার মধ্যে অবজেক্ট ওরিয়েন্টেড এপ্লিক্যশান লেয়ার এর ধারণাটি ছিল অসাধারণ যাতে কিনা অবজেক্ট ধরে ধরে কাস্টমাইজড সফটওয়্যার তৈরি করে ফেলা যায়। [Patrick Naughton](https://en.wikipedia.org/wiki/Patrick_Naughton) ইতিমধ্যে NeXT এর দিকে যাওয়ার জন্য মনস্থির করে ফেলেছেন কিন্তু তখন একবার তাকে শেষ সুযোগ হিসেবে একটি অতি গোপন প্রজেক্টের অনুমোদন দেওয়া হয় যার কথা কেউ জানতো না। কিছুদিন পরেই তার সাথে যুক্ত হয় [James Gosling](https://en.wikipedia.org/wiki/James_Gosling) এবং Mike Sheridan । তখন এর নাম দেওয়া হয় _গ্রিন প্রজেক্ট_। সময়ের সাথে _গ্রিন প্রজেক্ট_ এর দন্তোদ্গম হয় এবং তারা কম্পিউটার ছাড়াও বিভিন্ন ডিভাইস নিয়ে নার্চার করতে থাকে। -এর মধ্যে ১৩ জন স্টাফ এই গ্রিন টিম ক্যালিফোর্নিয়ার মেনলো পার্কের সেন্ড হিল রোড এর একটি ছোট্ট অফিসে কাজ করতে থাকে। তাদের প্রধান উদ্দেশ্য সি প্লাস প্লাস এর একটি ভাল ভার্সন তৈরি করা যা কিনা হবে অনেক দ্রুতগামী এবং রেস্পন্সিভ। সেই সময়ে কম্পিউটার ছাড়াও কনজুমার ইলেকট্রনিক্স যেমন -পিডিএ, Cable-Set Top Box ইত্যাদির চাহিদা বেড়ে গেছে। একদল ইঞ্জিনিয়ার এক সাথে থাকলে যা হয়, তারা নানারকম জিনিস নিয়ে চিন্তা করতে থাকে, নানা রকম আইডিয়া তৈরি হয়, তা থেকে প্রোটোটাইপ তৈরি করতে থাকে। এর মধ্যে জেমস গসলিং তার সি প্লাস প্লাস এনহান্সমেন্ট চালিয়ে যেতে থাকেন। তিনি এর নাম দেন সি প্লাস প্লাস প্লাস প্লাস মাইনাস মাইনাস (C++ ++ - -) । এখানে বাড়তি ++ মানে হচ্ছে নতুন জিনিস যোগ করা এবং - - মানে হচ্ছে কিছু জিনিস ফেলে দেওয়া। জেমস গসলিং এর জানালা দিয়ে একটি ওক গাছ দেখা যায়। একদিন তিনি অফিস থেকে বের হয়ে ঐ গাছটির নিচে দাড়ান এবং সাথে সাথে C++ ++ - - নাম পরিবর্তন করার সিন্ধান্ত নেন এবং নতুন নাম দেন ওক। +এর মধ্যে ১৩ জন স্টাফ এই গ্রিন টিম ক্যালিফোর্নিয়ার মেনলো পার্কের সেন্ড হিল রোড এর একটি ছোট্ট অফিসে কাজ করতে থাকে। তাদের প্রধান উদ্দেশ্য সি প্লাস প্লাস এর একটি ভাল ভার্সন তৈরি করা যা কিনা হবে অনেক দ্রুতগামী এবং রেস্পন্সিভ। সেই সময়ে কম্পিউটার ছাড়াও কনজুমার ইলেকট্রনিক্স যেমন -পিডিএ, Cable-Set Top Box ইত্যাদির চাহিদা বেড়ে গেছে। একদল ইঞ্জিনিয়ার এক সাথে থাকলে যা হয়, তারা নানারকম জিনিস নিয়ে চিন্তা করতে থাকে, নানা রকম আইডিয়া তৈরি হয়, তা থেকে প্রোটোটাইপ তৈরি করতে থাকে। এর মধ্যে _জেমস গসলিং_ তার সি প্লাস প্লাস এনহান্সমেন্ট চালিয়ে যেতে থাকেন। তিনি এর নাম দেন _সি প্লাস প্লাস প্লাস প্লাস মাইনাস মাইনাস (C++ ++ - -)_ । এখানে বাড়তি ++ মানে হচ্ছে নতুন জিনিস যোগ করা এবং - - মানে হচ্ছে কিছু জিনিস ফেলে দেওয়া। _জেমস গসলিং_ এর জানালা দিয়ে একটি _ওক_ গাছ দেখা যায়। একদিন তিনি অফিস থেকে বের হয়ে ঐ গাছটির নিচে দাড়ান এবং সাথে সাথে _C++ ++ - -_ নাম পরিবর্তন করার সিন্ধান্ত নেন এবং নতুন নাম দেন _ওক_। -এর মধ্যে ইঞ্জিয়াররা মিলে এম্বেডেড সিস্টেম নিয়ে নার্চার করতে থাকা অবস্থায় নানা রকম সমস্যার সম্মুখীন হন। এম্বেডেড সিস্টেম এ মেমরি কম থাকে, প্রসেসিং পাওয়ার ও কম থাকে। এই সিস্টেমে সি++ (যা কিনা কম্পিউটার এর মতো বড় ফ্রুটিপ্রিন্টের হার্ডওয়্যারের জন্যে ডিজাইন করা) চালাতে গিয়ে তারা অদ্ভুত অদ্ভুত সমস্যার সম্মুখীন হতে থাকে। এইসব সমস্যার সমাধান করার জন্যে _গ্রিন টিম_ নানা রকম চিন্তা ভাবনা করতে থাকে। এই সময়ে মানুষ পিডিএ, Cable-Set Top Box গুলোর মরণদশা দেখতে শুরু করে। কারণ যদিও ওক নিয়ে যথেষ্ট এগিয়েছে কিন্তু এটি কোনভাবেই এদেরকে সাহায্য করতে পারছিল না। একমাত্র একটি অলৌকিক ঘটনায় পারে এই প্রজেক্ট সফল করতে। ঠিক তখনি সেই প্রতীক্ষিত প্রত্যাশা আলোর মুখ দেখে। জেমস জেমস গসলিং _আউট অব দ্যা বক্স_ একটা যুগান্তকারী ধারণা নিয়ে আসে। সেটি হলো ভার্চুয়াল মেশিন। অর্থাৎ আমরা একটাি কাল্পনিক মেশিনের জন্যে কোড লিখবো যা কিনা কম্পাইল হয়ে একটি অন্তর্বর্তীকালীন কোড তৈরি করবে। এবং জাভা ভার্চুয়াল মেশিন সেই অন্তর্বর্তীকালীন কোডকে রান টাইম-এ রিয়েল ডিভাইসের জন্যে প্রয়োজন অনুযায়ী মেশিন কোড তৈরি করবে। +এর মধ্যে ইঞ্জিয়াররা মিলে এম্বেডেড সিস্টেম নিয়ে নার্চার করতে থাকা অবস্থায় নানা রকম সমস্যার সম্মুখীন হন। এম্বেডেড সিস্টেম এ মেমরি কম থাকে, প্রসেসিং পাওয়ারও কম থাকে। এই সিস্টেমে সি++ (যা কিনা কম্পিউটার এর মতো বড় ফ্রুটিপ্রিন্টের হার্ডওয়্যারের জন্যে ডিজাইন করা) চালাতে গিয়ে তারা অদ্ভুত অদ্ভুত সমস্যার সম্মুখীন হতে থাকে। এইসব সমস্যার সমাধান করার জন্যে _গ্রিন টিম_ নানা রকম চিন্তা ভাবনা করতে থাকে। এই সময়ে মানুষ পিডিএ, Cable-Set Top Box গুলোর মরণদশা দেখতে শুরু করে। কারণ, যদিও ওক নিয়ে যথেষ্ট এগিয়েছে কিন্তু এটি কোনভাবেই এদেরকে সাহায্য করতে পারছিল না। একমাত্র একটি অলৌকিক ঘটনায় পারে এই প্রজেক্ট সফল করতে। ঠিক তখনি সেই প্রতীক্ষিত প্রত্যাশা আলোর মুখ দেখে। জেমস গসলিং _আউট অব দ্যা বক্স_ একটা যুগান্তকারী ধারণা নিয়ে আসে। সেটি হলো ভার্চুয়াল মেশিন। অর্থাৎ আমরা একটাি কাল্পনিক মেশিনের জন্যে কোড লিখবো যা কিনা কম্পাইল হয়ে একটি অন্তর্বর্তীকালীন কোড তৈরি করবে। এবং জাভা ভার্চুয়াল মেশিন সেই অন্তর্বর্তীকালীন কোডকে রান টাইমে রিয়েল ডিভাইসের জন্যে প্রয়োজন অনুযায়ী মেশিন কোড তৈরি করবে। -ঠিক সেই সময়েই National Center for Supercomputing Applications (NCSA) একটি কমার্শিয়াল ওয়েব ব্রাউজার বের করে এবং তাদের টিম ইন্টারনেট এর ভবিষ্যৎ নিয়ে ভাবতে শুরু করে। তারা একটি নতুন ধারণা নিয়ে আসে সেটি হলো, একধরণের ছোট্ট প্রোগ্রাম যা কিনা ব্রাউজার এর মধ্যে চলবে - এর নাম দেয় অ্যাপলেট। অ্যাপলেট ধারণা থেকে তারা ঠিক করে অ্যাপলেট এর জন্যে কিছু স্ট্যাডার্ড – এটি হতে হবে ছোট্ট, খুব সিম্পল, এর স্ট্যাডার্ড এপিআই থাকতে হবে, এটি হবে প্লাটফর্ম ইন্ডিপেন্ডেন্ট, এবং আউট-অব-দ্যা বক্স নেটওয়ার্কিং প্রোগ্রামিং করা যাবে। তারা তখনকার সময়ের ইন্টারনেট বুমকে উদ্দ্যেশ্য করে নেক্সট জেনারেশান প্রোডাক্ট ডেভেলপ করতে চেয়েছিল। এই প্রজেক্ট এর কার্টুন নাম ছিল Duke ( যা কিনা এখন জাভা-এর মাস্কট হিসেবে চিনি)। কিন্তু সমস্যা হচ্ছে এর কোনটিই ঠিক মতো সি++ দিয়ে করা যাচ্ছিল না। সুতরাং পরবর্তীতে তারা সিন্ধান্ত নেয় যে এমবেডেড সিস্টেমের সমস্যার সমাধানটি তারা ওয়েব ব্রাউজার এর ক্ষেত্রেও ব্যবহার করবে । সেই সময়ে মানুষ ওয়েব ব্রাউজার এর শুধুমাত্র স্ট্যাটিক পেইজ এ টেক্সট আর ইমেজ ছাড়া কিছু দেখতে পেত না। এই টেকনোলজি ব্যবহার করায় ব্রাউজার এনিমেশান থেকে শুরু করে ইন্টারেকটিভ অ্যাপলেট সকলের নজর কাড়ে যা কিনা জাভা প্রোগ্রামিং ল্যাংগুয়েজ এর সফলতার মূল কারণ। +ঠিক সেই সময়েই [National Center for Supercomputing Applications (NCSA)](http://www.ncsa.illinois.edu/) একটি কমার্শিয়াল ওয়েব ব্রাউজার বের করে এবং তাদের টিম ইন্টারনেট এর ভবিষ্যৎ নিয়ে ভাবতে শুরু করে। তারা একটি নতুন ধারণা নিয়ে আসে সেটি হলো, একধরণের ছোট্ট প্রোগ্রাম যা কিনা ব্রাউজার এর মধ্যে চলবে - এর নাম দেয় অ্যাপলেট। অ্যাপলেট ধারণা থেকে তারা ঠিক করে অ্যাপলেট এর জন্যে কিছু স্ট্যাডার্ড – এটি হতে হবে ছোট্ট, খুব সিম্পল, এর স্ট্যাডার্ড এপিআই থাকতে হবে, এটি হবে প্লাটফর্ম ইন্ডিপেন্ডেন্ট, এবং আউট-অব-দ্যা বক্স নেটওয়ার্কিং প্রোগ্রামিং করা যাবে। তারা তখনকার সময়ের ইন্টারনেট বুমকে উদ্দ্যেশ্য করে নেক্সট জেনারেশান প্রোডাক্ট ডেভেলপ করতে চেয়েছিল। এই প্রজেক্ট এর কার্টুন নাম ছিল Duke ( যা কিনা এখন জাভা-এর মাস্কট হিসেবে চিনি)। কিন্তু সমস্যা হচ্ছে এর কোনটিই ঠিক মতো সি++ দিয়ে করা যাচ্ছিল না। সুতরাং পরবর্তীতে তারা সিন্ধান্ত নেয় যে এমবেডেড সিস্টেমের সমস্যার সমাধানটি তারা ওয়েব ব্রাউজার এর ক্ষেত্রেও ব্যবহার করবে । সেই সময়ে মানুষ ওয়েব ব্রাউজার এর শুধুমাত্র স্ট্যাটিক পেইজ এ টেক্সট আর ইমেজ ছাড়া কিছু দেখতে পেত না। এই টেকনোলজি ব্যবহার করায় ব্রাউজার এনিমেশান থেকে শুরু করে ইন্টারেকটিভ অ্যাপলেট সকলের নজর কাড়ে যা কিনা জাভা প্রোগ্রামিং ল্যাংগুয়েজ এর সফলতার মূল কারণ। জেমস গসলিং এর এই ভার্চুয়াল মেশিন-এর সল্যুশান ছিল সত্যিকার অর্থেই যুগান্তকারী এবং `গ্রিন টিম` এর রিলিজ দিতে প্রস্তুত। কিন্তু তখন-ই নতুন ঝামেলার সূচনা হয়, lawyers এসে তাদের জানায় এর নাম Oak দেওয়া যাবে না, কারণ এটি ইতিমধ্যেই Oak Technologies এর ট্রেড মার্ক। সুতরাং নাম পরিবর্তন করতে হবে। শুরু হয় ব্রেইনস্টর্মিং । কিন্তু কোন ভাবেই একটি ভাল নাম নির্বাচন করা যাচ্ছিল না। অনেকেই অনেক ধরণের নাম উপস্থাপন করে, যেমন - DNA, Silk , Ruby, yuck, Silk, Lyric, Pepper, NetProse, Neon, Java ইত্যাদি ইত্যাদি। এর সব গুলো লিগাল ডিপার্টমেন্ট এ সাবমিট করার পর মাত্র Java, DNA, and Silk এই তিনটি নাম ফিরে আসে যা কিনা ক্লিন। নাম নিয়ে ঘণ্টার পর ঘণ্টার মিটিং চলতে থাকে। এর মধ্যে Chris Warth প্রপোজ করে Java, কারণ তখন তার হাতে ছিল এক কাপ গরম Peet's Java (কফি)। শেষ পর্যন্ত নাম ঠিক করা হয় Java কারণ একমাত্র এই নামেই সব থেকে পজিটিভ রিএকশান পাওয়া যাচ্ছিল। ‌১৯৯৫ সালের মে মাসে জাভা এর প্রথম পাবলিক ভার্সন রিলিজ হয়। -এর পরের ইতিহাস আমরা সবাই জানি। জাভা হচ্ছে এই গ্রহের সবচেয়ে সফল প্রোগ্রামিং ভাষা। +এর পরের ইতিহাস আমরা সবাই জানি। জাভা হচ্ছে এই গ্রহের সবচেয়ে সফল প্রোগ্রামিং ভাষা। From 3025bf7e6ede28fb88710859c2ff9cf3396c9848 Mon Sep 17 00:00:00 2001 From: "Md. Jamal Uddin" Date: Sun, 8 Sep 2019 13:27:19 +0600 Subject: [PATCH 142/150] fix: typo, missplled & missing info --- 3.md | 93 ++++++++++++++++++++++++++++-------------------------------- 1 file changed, 43 insertions(+), 50 deletions(-) diff --git a/3.md b/3.md index 91aa1b6..152d0c4 100644 --- a/3.md +++ b/3.md @@ -1,8 +1,8 @@ # পাঠ ৩: ডাটা টাইপস এবং অপারেটর * ভেরিয়েবল -* প্রিমিটিভ ডাটাটাইপ, ইন্টিজার, লং, ডাবল, ইন্টিজার, ফ্লোট এবং কার -* রেপার ক্লাস +* প্রিমিটিভ ডাটাটাইপ - ইন্টিজার, লং, ডাবল, ইন্টিজার, ফ্লোট এবং কার ইত্যাদি। +* র‍্যাপার ক্লাস * লিটারেল * বিভিন্ন রকম অপারেটর @@ -13,8 +13,8 @@ int cadence = 0; -একটি ভ্যারিয়বল ডিক্লারেশন এর জন্যে একটি ডাটাটাইপ দরকার হয়, অর্থাৎ ভ্যারিয়বল টি কি ধরণের ডাটা হোল্ড করতে তা বলে দিতে হবে। -উপরের উদাহরণটিতে আমরা একটিভ্যারিয়বল ডিক্লার করেছি যার নাম cadence এবং এটি ইন্টিজার টাইপ ডাটা হোল্ড করে। +একটি ভ্যারিয়বল ডিক্লারেশন এর জন্যে একটি ডাটাটাইপ দরকার হয়, অর্থাৎ ভ্যারিয়বল টি কি ধরণের ডাটা হোল্ড করবে তা বলে দিতে হবে। +উপরের উদাহরণটিতে আমরা একটি ভ্যারিয়বল ডিক্লার করেছি যার নাম cadence এবং এটি ইন্টিজার টাইপ ডাটা হোল্ড করে। যেহেতু জাভা একটি স্ট্যাটিক্যালি টাইপড ল্যাংগুয়েজ সুতরাং ভ্যারিয়বল ডিক্লারেশন এর সময় ডাটাটাইপ উ্ল্লেখ করা অত্যাবশ্যক। @@ -64,14 +64,14 @@ } ``` -আমরা জানি যে একটি ক্লাস থেকে আমরা অবজেক্ট তৈরি করি। আমরা একটা ক্লাস থেকে অনেকগুলো অবজেক্ট তৈরি করতে পারি। এবং প্রত্যেক অবজেক্ট-ই আলাদা আলাদা। যেমন - +আমরা জানি যে একটি ক্লাস থেকে আমরা অনেকগুলো অবজেক্ট তৈরি করতে পারি। এবং প্রত্যেক অবজেক্ট-ই আলাদা আলাদা। যেমন - Bicycle bike1 = new Bicycle(); Bicycle bike2 = new Bicycle(); -এখানে bike1 এবং bike2 দুটি সম্পূর্ণ আলাদা অবজেক্ট। +এখানে bike1 এবং bike2 দুটি সম্পূর্ণ আলাদা দুইটি অবজেক্ট। -এখন bike1 এবং bike2 তে কিছু ভ্যারিয়বল গুলোও আলাদা। অর্থাৎ আমরা যতগুলো অজেক্ট তৈরি করতেবা ঠিক ততোগুলো আলাদা ভ্যারিয়বল থাকবে মেমোরিতে। এক্ষেত্রে মেমোরিতে ২টা cadence থাকবে, ২টা gear থাকবে এবং ২ speed ধাকবে। +এখন bike1 এবং bike2 তে কিছু ভ্যারিয়বল গুলোও আলাদা। অর্থাৎ আমরা যতগুলো অজেক্ট তৈরি করবো ঠিক ততোগুলো আলাদা ভ্যারিয়বল থাকবে মেমোরিতে। এক্ষেত্রে মেমোরিতে ২টা cadence থাকবে, ২টা gear থাকবে এবং ২ speed ধাকবে। এই ভ্যারিয়বল গুলোকে Instance Variables বা Non-static fields বলা হয়। এই ভ্যারিয়বল গুলো আগে static কিওয়ার্ডটি থাকে না। @@ -94,6 +94,7 @@ long myLong; float myFloat; double myDouble; + boolean myBool; শুরুতে আগে টাইপ লিখতে হবে, তারপর একটি নাম, তারপর সেমিকোলন দিয়ে শেষ করতে হবে। তবে আমরা চাইলে ভ্যারিয়বল কে ইনিশিয়ালাইজেশান করতে পারি। যেমন - @@ -109,7 +110,7 @@ জাভা ভ্যারিয়বল লেখার কিছু নিয়ম কানুন আছে- 1. ভ্যারিয়বল গুলো কেইস সেনসিটিভ। অর্থাৎ money, Money,MONEY তিনটি আলাদা। -2. ভ্যারিয়বল অবশ্যই যেকোন একটি লেটার দিয়ে শুরুকরতে হবে। তবে $ অথবা _ দিয়েও শুরু করা যায়। +2. ভ্যারিয়বল অবশ্যই যেকোন একটি লেটার দিয়ে শুরু করতে হবে। তবে $ অথবা _ দিয়েও শুরু করা যায়। 3. ভ্যারিয়বল এর মাঝে নাম্বার কিংবা _ থাকতে পারে। 4. ভ্যারিয়বল জাভার কোন reserved কিওয়ার্ড হতে পারবে না। @@ -127,11 +128,11 @@ int|32 bit signed value, values from -2.147.483.648 to 2.147.483.647 long|64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808 float|32 bit floating point value double|64 bit floating point value +boolean| true & false +এগুলো প্রমিটিভ ডাটা টাইপ, এর মানে হচ্ছে এগুলো অবজেক্ট নয়। এরা মেমোরিতে সরাসরি ভ্যালু রাখে। -এগুলো প্রমিটিভ , এর মানে হচ্ছে এগুলো অবজেক্ট নয়। এরা মেমোরিতে সরাসরি ভ্যালু রাখে। - -**রেপার ক্লাস** +**র‍্যাপার ক্লাস** তবে জাভাতে কিছু ডাটা টাইপ আছে যেগুলো অবজেক্ট। @@ -145,7 +146,7 @@ Long | 64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372. Float | 32 bit floating point value Double | 64 bit floating point value -এগুলোকে প্রিমিটিভ টাইপ এর রেপার রেপার ক্লাস বলা হয়। লক্ষ্য করুণ, এগুলোর সবগুলোর নাম ক্যাপিটাল অক্ষর দিয়ে শুরু হয়েছে। +এগুলোকে প্রিমিটিভ টাইপ এর র‍্যাপার ক্লাস বলা হয়। লক্ষ্য করুণ, এগুলোর সবগুলোর নাম ক্যাপিটাল অক্ষর দিয়ে শুরু হয়েছে। তবে আমরা চাইলে অবজেক্ট ডাটাটাইপ এবং প্রিমটিভ ডাটাটাইপ একে অপরের পরিপূরক হিসাবে ব্যবহার করতে পারি। @@ -153,7 +154,7 @@ Double | 64 bit floating point value int b = 9; a = b; -তবে প্রিমিটিভ ভ্যালু গুলো ডিফল্ট ভ্যালু থাকে। অর্থাৎ আমরা যদি ভ্যালু এসাইন না করি, তাহলে এদের মধ্যে বাইডিফল্ট ভ্যালু থাকে। যেমন - +তবে প্রিমিটিভ ডাটা টাইপ গুলোর ডিফল্ট ভ্যালু থাকে। অর্থাৎ আমরা যদি ভ্যালু এসাইন না করি, তাহলে এদের মধ্যে বাইডিফল্ট ভ্যালু থাকে। যেমন - Data Type |Default Value (for fields) -----------|------------------------ @@ -169,7 +170,7 @@ boolean|false **লিটারেল-** -প্রোগ্রামিং ল্যাংগুয়েজ কিছু মজার মজার বিল্ট-ইন সুবিধা থাকে, তার মধ্যে লিটারেল একটি। আমরা জানি যে একটা ভ্যারিয়বল ডিক্লারেশান এর জন্য প্রথমে টাইপ লিখতে হয়, তারপর একটা নাম দিতে হয়, তারপর একে ইনিশিয়ালাইজেশান করতে হয়। ভেরিয়েবলটি যদি অবজেক্ট হয়, তাহলে ইনটেনশিয়েশান করতে হয়। +প্রোগ্রামিং ল্যাংগুয়েজে কিছু মজার মজার বিল্ট-ইন সুবিধা থাকে, তার মধ্যে লিটারেল একটি। আমরা জানি যে একটা ভ্যারিয়বল ডিক্লারেশান এর জন্য প্রথমে টাইপ লিখতে হয়, তারপর একটা নাম দিতে হয়, তারপর একে ইনিশিয়ালাইজেশান করতে হয়। ভেরিয়েবলটি যদি অবজেক্ট হয়, তাহলে ইনটেনশিয়েশান করতে হয়। উদাহরণ- @@ -195,22 +196,19 @@ boolean|false **ইন্টিজার লিটারেল-** - // এখানে 26 হচ্ছে ডেসিমাল নাম্বার - int decVal = 26; - // এখানে 26 সংখ্যাটি হেক্সাডেসিমেল এ দেখানো হয়েছে - int hexVal = 0x1a; - // এখানে 26 সংখ্যাটি বাইনারি-তে এ দেখানো হয়েছে - int binVal = 0b11010; + int decVal = 26; // এখানে 26 হচ্ছে ডেসিমাল নাম্বার + int hexVal = 0x1a; // এখানে 26 সংখ্যাটি হেক্সাডেসিমেল এ দেখানো হয়েছে + int binVal = 0b11010; // এখানে 26 সংখ্যাটি বাইনারি-তে এ দেখানো হয়েছে **ফ্লােটিং পয়েন্ট লিটারেল-** - double d1 = 123.4; - // একি ভ্যালু বৈজ্ঞানিক উপায়ে লেখা হয়েছে - double d2 = 1.234e2; + double d1 = 123.4; + double d2 = 1.234e2; // একি ভ্যালু বৈজ্ঞানিক উপায়ে লেখা হয়েছে float f1 = 123.4f; - ক্যারেক্টার এন্ড স্ট্রিং লিটারেল-- -char এবং String উদ্ধৃতি চিহ্নের ভেতরে লেখা হয়। char ক্ষেত্রে একক উদ্ধৃতি চিহ্ন String এর জন্যে ডবল উদ্ধৃতি চিহ্ন ব্যবহার করতে হয়- +**ক্যারেক্টার এন্ড স্ট্রিং লিটারেল-** + +char এবং String উদ্ধৃতি চিহ্নের ভেতরে লেখা হয়। char ক্ষেত্রে একক উদ্ধৃতি ('') চিহ্ন String এর জন্যে ডবল উদ্ধৃতি ("") চিহ্ন ব্যবহার করতে হয়- যেমন- char chr = 'A'; // ক্যারেক্টার লিটারেল @@ -219,9 +217,9 @@ char এবং String উদ্ধৃতি চিহ্নের ভেতর char এবং String ইউনিকোড ক্যারেক্টার হতে পারে। -আমরা জানি কিভাবে ভেরিয়েবল ইনিশিয়ালাইজ করতে হয় জানি, এবার তাহলে এই ভ্যারিয়বল গুলো দিয়ে কি কাজ করা যায় সেগুলো দেখি। +আমরা জানি কিভাবে ভেরিয়েবল ইনিশিয়ালাইজ করতে হয়, এবার তাহলে এই ভ্যারিয়বল গুলো দিয়ে কি কাজ করা যায় সেগুলো দেখি। -কোন কাজ করতে হলে একজন কার্যকারী বা অপারেটর লাগে। অপারেটর কিছু অপারেন্ড নিয়ে কাজ করে থাকে তারপর ফলাফল রিটার্ন করে। জাভা প্রোগ্রামিং ল্যাংগুয়েজ এ বেশ কিছু অপারেটর আছে- সেগুলো দেখা যাক- +কোন কাজ করতে হলে একজন কার্যকারী বা অপারেটর লাগে। অপারেটর কিছু অপারেন্ড নিয়ে কাজ করে থাকে তারপর ফলাফল রিটার্ন করে। জাভা প্রোগ্রামিং ল্যাংগুয়েজে বেশ কিছু অপারেটর আছে- সেগুলো দেখা যাক- **এসাইনমেন্ট অপারেটর (Assignment Operator)** @@ -241,12 +239,12 @@ char এবং String ইউনিকোড ক্যারেক্টার জাভা প্রোগ্রামিং ল্যাংগুয়েজ-এ যোগ, বিয়োগ, গুন, ভাগ করার জন্যে কিছু অপারেটর আছে। এগুলো আমরা যখন বেসিক গণিত শিখি তখন থেকেই জানি। শুধু একটি অপারেটর নতুন মনে হতে পারে, যা হলো “%”। এটিকে অনেকেই পারসেন্টেজ বা শতকরা চিহ্ণ হিসেবে ভুল করতে পারে, কিন্তু এটি আসলে তা নয় । এটি মূলত একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে। - | অপারেটর | এর কাজ | +| অপারেটর | এর কাজ | |--- |---- | -| + | আডিটিভ(Additive) অপারেটর, যা দুটি সংখ্যা বা স্ট্রিং যোগ করার জন্যে ব্যবহার করা হয়। | -| - | সাবস্ট্রাকশান (Subtraction) অপরেটর যা একটি সংখ্যা থেকে আরেকটি সংখ্যা বিয়োগ করার জন্যে ব্যবহার করা হয়।| -| `*` | মাল্টিপ্লিকেশান (Multiplication)অপারেটর যা দুটি সংখ্যাকে গুন করে। | -| / | ডিভিশান(Division) অপারেটর , যা দিয়ে একটি সংখ্যাকে আরেকটি সংখ্যাকে ভাগ করা যায়। | +| + | আডিটিভ(Additive) অপারেটর, যা দুটি সংখ্যা বা স্ট্রিং যোগ করার জন্যে ব্যবহার করা হয়। | +| - | সাবস্ট্রাকশান (Subtraction) অপরেটর যা একটি সংখ্যা থেকে আরেকটি সংখ্যা বিয়োগ করার জন্যে ব্যবহার করা হয়।| +| `*` | মাল্টিপ্লিকেশান (Multiplication)অপারেটর যা দুটি সংখ্যাকে গুন করে। | +| / | ডিভিশান(Division) অপারেটর , যা দিয়ে একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করা যায়। | | % | রিমাইন্ডার (Remainder) অপারেটর যা একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে। | @@ -256,28 +254,23 @@ char এবং String ইউনিকোড ক্যারেক্টার public static void main (String[] args) { - int result = 1 + 2; - // এখানে result এর মান হচ্ছে 3 + int result = 1 + 2; // এখানে result এর মান হচ্ছে 3 System.out.println("1 + 2 = " + result); int original_result = result; - result = result - 1; - //এখানে result থেকে ১ সাবস্ট্রাক্ট করায় এর মান ২ + result = result - 1; //এখানে result থেকে ১ সাবস্ট্রাক্ট করায় এর মান ২ System.out.println(original_result + " - 1 = " + result); original_result = result; - result = result * 2; - // এখানে result এর সাথে ২ মাল্টিপ্লাই করার ফলে এর মান 4 + result = result * 2; // এখানে result এর সাথে ২ মাল্টিপ্লাই করার ফলে এর মান 4 System.out.println(original_result + " * 2 = " + result); original_result = result; - result = result / 2; - //আবার result ডিভাইড করার ফলে এর মান হয়ে গেল 2 + result = result / 2; //আবার result ডিভাইড করার ফলে এর মান হয়ে গেল 2 System.out.println(original_result + " / 2 = " + result); original_result = result; - result = result + 8; - // ৮ যোগ করার ফলে এর result হলো 10 + result = result + 8; // ৮ যোগ করার ফলে এর result হলো 10 System.out.println(original_result + " + 8 = " + result); original_result = result; @@ -301,11 +294,11 @@ char এবং String ইউনিকোড ক্যারেক্টার **ইউনারি (Unary) অপারেটর** -উপরের সব অপারেটর এর জন্যে আমাদের দুটি করে অপারেন্ড দরকার হতো, তবে এই অপারেটর এর লাগে একটি। +উপরের সব অপারেটর এর জন্যে আমাদের দুটি করে অপারেন্ড দরকার হতো, তবে এই অপারেটরের লাগে একটি। এগুলো বিভিন্ন ধরণের কাজ করে থাকে যেমন – এক করে ইনক্রিমেন্টিং/ডিক্রিমেন্টিং বা একটা এক্সপ্রেশান নেগেট করা বা একটা বুলিয়ান-কে ইনভার্ট করা । এগুলো হল - +, -, ++, –-, ‍! -উহাহরণ - +উদাহরণ - ```java class UnaryDemo { @@ -332,22 +325,22 @@ char এবং String ইউনিকোড ক্যারেক্টার // এখানে বুলিয়ানের মান হচ্ছে false System.out.println(success); // কিন্তু এর আগে একটি নেগেট অপারেটর এড করলে এটি হয়ে যায় - System.out.println(!success); + System.out.println(!success); // true } } ``` -**ইকুয়ালিটি (Equality) এবং রেশনাল(Relational) অপারেটরস** +**ইকুয়ালিটি (Equality) এবং রিলেশনাল(Relational) অপারেটরস** -ইকুয়ালিটি (Equality) এবং রেশনাল(Relational) অপারেটর গুলো নির্ধারণ করে একটি ভ্যালু অন্যটি থেকে বড় বা ছোট কিনা। +ইকুয়ালিটি (Equality) এবং রিলেশনাল(Relational) অপারেটর গুলো নির্ধারণ করে একটি ভ্যালু অন্যটি থেকে বড় বা ছোট কিনা। == দুটি ভ্যালু সমান হলে এই এক্সপ্রেশান এর মান true হয় - != দুটি ভ্যালু সমান না হলে true হয় + != দুটি ভ্যালু সমান না হলে true হয় > প্রথম ভ্যালু পরের ভ্যালু থেকে বড় হলে true হয় >= প্রথম ভ্যালু পরের ভ্যালু থেকে বড় বা সমান হলে true হয় - < প্রথম ভ্যালু পরের ভ্যালু থেকে ছোট হলে true হয় - <= প্রথম ভ্যালু পরের ভ্যালু থেকে ছোট বা সমান হলে true হয় + < প্রথম ভ্যালু পরের ভ্যালু থেকে ছোট হলে true হয় + <= প্রথম ভ্যালু পরের ভ্যালু থেকে ছোট বা সমান হলে true হয় উদাহরণ From b0b5e763595580930b17db764bc970704111e286 Mon Sep 17 00:00:00 2001 From: Tareq Monwer Date: Sat, 9 Nov 2019 16:00:34 +0600 Subject: [PATCH 143/150] =?UTF-8?q?=E0=A6=AC=E0=A6=BE=E0=A6=A8=E0=A6=BE?= =?UTF-8?q?=E0=A6=A8=20=E0=A6=86=E0=A6=AA=E0=A6=A1=E0=A7=87=E0=A6=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit লাইন নং ২৮১ --- 5.1.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/5.1.md b/5.1.md index 8077879..9c8a263 100644 --- a/5.1.md +++ b/5.1.md @@ -280,7 +280,7 @@ public class Main { উপরের কোডটি মন দিয়ে লক্ষ করুন । প্যারেন্ট ক্লাস `Animal` এর মাঝে একটি পাবলিক কনস্ট্রাক্ট আছে যেটি দুটি প্যারামিটার নিয়ে থাকে । তাই এটার চাইল্ড ক্লাসেও আমাদের অবশ্যই একটি কনস্ট্রাক্টর থাকতে হবে যেটির মাঝে প্যারেন্ট ক্লাসের ওই কনস্ট্রাকটর ইনভোক করতে হবে । এটা ম্যান্ডেটরি । এটি না করলে কোড কম্পাইলেশন এরর শো করবে এবং কম্পাইলই হবেনা । আরো একটি বিষয় চাইল্ড ক্লাসের কনস্ট্রাক্টরের মাঝ থেকে প্যারেন্ট ক্লাসের কনস্ট্রাক্টরকে `super` কিয়াওর্ড দিয়ে কল করতে হবে তবে , `super` কিয়াওর্ড অবশ্যই সবার উপর থাকতে হবে । এমনকি একটি প্রিন্ট স্টেটমেন্টও থাকতে পারবে না । `super` এর পর যা খুশি থাকতে পারে কোন সমস্যা নাই । এছাড়া অন্য একাধিক কনস্ট্রাক্টর ডিক্লেয়ার করার প্রয়োজন হলে সেটাও করতে পারবেন , এটাকে বলা হবে কনস্ট্রাক্টর ওভারলোডিং । যথারীতি এর মাঝেও `super` বাবাজি অধিপত্য বিরাজ করে বসে থাকবে । -তবে মেথড আর কনস্ট্রাক্টরের ওভাররাইডিং এর মাঝে এটা বড় একটা পার্থক্য যে মেথডের ক্ষেত্রে সুপার আপনারা কাজের সুবিধার জন্য যেকোন যায়গার ব্যাবহার করতে পারবেন । তবে কনস্ট্রাক্টরের ক্ষেতে আঈন খুবই কঠিন । +তবে মেথড আর কনস্ট্রাক্টরের ওভাররাইডিং এর মাঝে এটা বড় একটা পার্থক্য যে মেথডের ক্ষেত্রে সুপার আপনারা কাজের সুবিধার জন্য যেকোন যায়গার ব্যাবহার করতে পারবেন । তবে কনস্ট্রাক্টরের ক্ষেত্রে আঈন খুবই কঠিন । **অভারলোডিং অফ মেথড & কনস্ট্রাক্টর ( Overloading of method and constructor ):** From d2f281acef5a3f380f193c9df25975c34020b7f4 Mon Sep 17 00:00:00 2001 From: Tareq Monwer Date: Sat, 9 Nov 2019 16:27:10 +0600 Subject: [PATCH 144/150] =?UTF-8?q?=E0=A6=AC=E0=A6=BE=E0=A6=A8=E0=A6=BE?= =?UTF-8?q?=E0=A6=A8=20=E0=A6=86=E0=A6=AA=E0=A6=A1=E0=A7=87=E0=A6=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 5.1.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/5.1.md b/5.1.md index 8077879..ff8fd1d 100644 --- a/5.1.md +++ b/5.1.md @@ -285,7 +285,7 @@ public class Main { **অভারলোডিং অফ মেথড & কনস্ট্রাক্টর ( Overloading of method and constructor ):** -অভারলোডিং বলতে খুব সাধারন ভাষায় বোঝায় একই নামের এবং একই রিটার্ন টাইপের ( নাও হতে পারে ) একাধিক মেথড বা কনস্ট্রাক্টর ( এক্ষেত্রে কোন রিটার্ন টাইপ থাকবে না ) বিদ্যমান থাকা । তার অর্থ দাড়ালো একই ক্লাসের মাঝে একই নামের এবং রিটার্ন টাইপের একাধিক মেথড বা কনস্ট্রাক্টর বিদ্যমান থাকবে । বিষয়টা একটু গোলমেলে মনে হচ্ছে তাইনা ? আসলে তেমন কিছুই নয় , বরং বিষয়টি অন্য অনেক কিছুর থেকেও অনেক বেশি সরল । একই নামের মেথড বা কনস্ট্রাক্ট থাকলেও তাদের ইনপুট প্যারামিটার কিন্তু একই হবেনা । ইনপুট টাইপ হয়ত ভিন্ন টাইপের হবে নাহয় একটি মেথড থেকে অন্যা মেথডের ইনপুট প্যারামিটার সংখ্যা ভিন্ন হবে । উদাহরন সহকারে আমরা আমাদের কনফিউশন দুর করতে পারি । চলুন একটি উদাহরন দেখে নেওয়া যাকঃ +অভারলোডিং বলতে খুব সাধারন ভাষায় বোঝায় একই নামের এবং একই রিটার্ন টাইপের ( নাও হতে পারে ) একাধিক মেথড বা কনস্ট্রাক্টর ( এক্ষেত্রে কোন রিটার্ন টাইপ থাকবে না ) বিদ্যমান থাকা । তার অর্থ দাড়ালো একই ক্লাসের মাঝে একই নামের এবং রিটার্ন টাইপের একাধিক মেথড বা কনস্ট্রাক্টর বিদ্যমান থাকবে । বিষয়টা একটু গোলমেলে মনে হচ্ছে তাইনা ? আসলে তেমন কিছুই নয় , বরং বিষয়টি অন্য অনেক কিছুর থেকেও অনেক বেশি সরল । একই নামের মেথড বা কনস্ট্রাক্ট থাকলেও তাদের ইনপুট প্যারামিটার কিন্তু একই হবেনা । ইনপুট টাইপ হয়ত ভিন্ন টাইপের হবে নাহয় একটি মেথড থেকে অন্যান্য মেথডের ইনপুট প্যারামিটার সংখ্যা ভিন্ন হবে । উদাহরন সহকারে আমরা আমাদের কনফিউশন দুর করতে পারি । চলুন একটি উদাহরন দেখে নেওয়া যাকঃ ```java public class Main { @@ -325,10 +325,10 @@ public class Main { } } ``` -উপরের কোড সেগমেন্টটিতে আরা দেখতে পারছি যে একই `Main` ক্লাসে একই নামের কনস্ট্রাক্টর ৩ টি । খেয়াল করলে দেখা যাবে যে ৩ টি কনস্ট্রাক্টর প্রায় একই কাজ করলেও তাদের ইনপুট প্যারামিটার কিন্তু একই নয় । একেক জন একেক রকম ইনপুট নিয়ে কাজ করছে । এভাবে একই ক্লাসের মাঝে একাধিক কাজের জন্য একাধিক কনস্ট্রাক্টর ব্যাবহার করাকে বলাহয় কনস্ট্রাক্টর অভারলোডিং । যেখানে একই কনস্ট্রাক্টরের লোড অভার হয়ে গিয়েছে :P +উপরের কোড সেগমেন্টটিতে আমরা দেখতে পারছি যে একই `Main` ক্লাসে একই নামের কনস্ট্রাক্টর ৩ টি । খেয়াল করলে দেখা যাবে যে ৩ টি কনস্ট্রাক্টর প্রায় একই কাজ করলেও তাদের ইনপুট প্যারামিটার কিন্তু একই নয় । একেকজন একেক রকম ইনপুট নিয়ে কাজ করছে । এভাবে একই ক্লাসের মাঝে একাধিক কাজের জন্য একাধিক কনস্ট্রাক্টর ব্যাবহার করাকে বলাহয় কনস্ট্রাক্টর অভারলোডিং । যেখানে একই কনস্ট্রাক্টরের লোড অভার হয়ে গিয়েছে :P -ওকে, এবার আসা যাক মেথড অভারলোডিং বিষয়ে । কনস্ট্রাক্টরের মত মেথড অভারলোডিংও সেম ম্যাকানিজম ফলো করে । একটি উদাহরন দিলেই বিষয়টি পরিষ্কার হয়ে যাবেঃ +ওকে, এবার আসা যাক মেথড অভারলোডিং এর বিষয়ে । কনস্ট্রাক্টরের মত মেথড অভারলোডিংও সেম ম্যাকানিজম ফলো করে । একটি উদাহরন দিলেই বিষয়টি পরিষ্কার হয়ে যাবেঃ ```java public class Main { @@ -358,7 +358,7 @@ public class Main { } } ``` -উপরোক্ত কোডটিতে দেখুন `sum` মেথডটি ৩ বার লেখা হয়েছে । মেথডের আইডেন্টিফায়ার, রিটার্ন টাইপ সবই ঠিক আছে তবু কাজ করছে ! হ্যা কারন আপনার ইনপুর প্যারামিটার ভিন্ন দিয়েছি । প্রথম `sum` মেথড কেবল ২ টি নাম্বারের যোগ করে দিতে পারে । দ্বিতীয়টি পারে ৩ টি নাম্বারের , আর শেষেরটি পারে যত সংখ্যক ইন্টিজার নাম্বারই দেওয়া হোক না কেন সে যোগ করে রেজাল্ট দিবে । সিম্পলি এটাকেই বলা হয় মেথড ওভারলোডিং । যেখানে একই নামের একাধিক মেথড থাকে যাদের নাম এক হলেও ইনপুট প্যারামিটার বা কাজের ধরন সম্পূর্ন আলাদা হয় । +উপরোক্ত কোডটিতে দেখুন `sum` মেথডটি ৩ বার লেখা হয়েছে । মেথডের আইডেন্টিফায়ার, রিটার্ন টাইপ সবই ঠিক আছে তবু কাজ করছে ! হ্যা কারন আপনার ইনপুট প্যারামিটার ভিন্ন দিয়েছি । প্রথম `sum` মেথড কেবল ২ টি নাম্বারের যোগ করে দিতে পারে । দ্বিতীয়টি পারে ৩ টি নাম্বারের , আর শেষেরটি পারে যত সংখ্যক ইন্টিজার নাম্বারই দেওয়া হোক না কেন সে যোগ করে রেজাল্ট দিবে । সিম্পলি এটাকেই বলা হয় মেথড ওভারলোডিং । যেখানে একই নামের একাধিক মেথড থাকে যাদের নাম এক হলেও ইনপুট প্যারামিটার বা কাজের ধরন সম্পূর্ন আলাদা হয় । @@ -468,7 +468,7 @@ public class Main implements Animal, Cow{ } } ``` -লক্ষ করুন এখানে `interface` কিওয়ার্ডটি দিয়ে দুটি ইন্টারফেস ডিক্লেয়ার করা হয়েছে যথাক্রমে `Animal` এবং `Cow` । `Animal` ইন্টারফেসের মধ্য দুটি মেথড আছে যাদের একজনে `public` এবং `abstract` ডিক্লেয়ার করা হয়েছে কিন্তু অন্য মেথডটি কেবল রিটার্নটাইপ দেওয়া হয়েছে । এটির কারন হল ইন্টারফেসের মাঝে আপনি যদি কোন মেথডের পূর্বে `public` এবং `abstract` ডিক্লেয়ার নাও করেন তবু তারা বাই ডিফল্ট পাবলিক এবং অ্যাবস্ট্রাক্ট । +লক্ষ করুন এখানে `interface` কিওয়ার্ডটি দিয়ে দুটি ইন্টারফেস ডিক্লেয়ার করা হয়েছে, যথাক্রমে `Animal` এবং `Cow` । `Animal` ইন্টারফেসের মধ্য দুটি মেথড আছে যাদের একজনে `public` এবং `abstract` ডিক্লেয়ার করা হয়েছে কিন্তু অন্য মেথডটি কেবল রিটার্নটাইপ দেওয়া হয়েছে । এটির কারন হল ইন্টারফেসের মাঝে আপনি যদি কোন মেথডের পূর্বে `public` এবং `abstract` ডিক্লেয়ার নাও করেন তবু তারা বাই ডিফল্ট পাবলিক এবং অ্যাবস্ট্রাক্ট । এবার আসি `Main` ক্লাসে । এতক্ষন আমরা যেনে এসেছি যে জাভা মাল্টিপল ইনহেরিট্যান্স সাপোর্ট করেনা তাহলে এখানে কেন দুটি ইন্টারফেস ইম্লিমেন্ট করছে ? হ্যা সেটাই করবে কারন পরে ব্যাখ্যা করা হবে । এখানে লক্ষনীয় বিষয় হল ইন্টারফেসকে কিন্তু `implements` কিওয়ার্ড দিয়ে ইমপ্লিমেন্ট করতে হয় । এখানে কিন্তু এক্সটেন্ড হবেনা । একটি ক্লাস কেবল অন্য একটি ক্লাসকে এক্সটেন্ড করতে পারবে তবে একই সাথে অন্য শুন্য , এক বা একাধিক ইন্টারফেসকেও ইমপ্লিমেন্ট করতে পারবে । একাধিক ইন্টারফেস ইমপ্লিমেন্ট করার প্রয়োজন হলে কমা ( , ) দিয়ে একটির পর আরেকটি যোগ করতে হবে । তবে অবশ্যই অ্যাবস্ট্রাক্ট মেথড ইমপ্লিমেন্ট করতে ভুলবেন না । :P কয়েকটি বিষয় জেনে রাখা ভালোঃ From e268cc42f670be3f7732a64c4aead3cacf38a213 Mon Sep 17 00:00:00 2001 From: "Md. Mizanur Rahman Ashiq" <30866225+mmr-ashiq@users.noreply.github.com> Date: Fri, 1 May 2020 23:44:52 +0600 Subject: [PATCH 145/150] Update 5.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "এর মধ্যে ৮০% ব্যয় হয় শুধুমাত্র সফটওয়্যার মেইনটেইন করার জন্যে, বাকি ২০% তৈরি হয় সফটওয়্যার তৈরি করার জন্যে।" change "বাকি ২০% তৈরি হয়(to ব্যয় হয় সফটওয়্যার তৈরি করার জন্যে।) --- 5.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/5.md b/5.md index 379da02..f4d6605 100644 --- a/5.md +++ b/5.md @@ -44,10 +44,10 @@ এই ল্যাংগুয়েজ গুলো হাই-লেভেল এবস্ট্রাকশান এর জন্যে মানানসই নয়। যেমন সি যে কম্পোনেন্ট গুলো ব্যবহার করে সেগুলো খুব লো-লেভেল-এর যা দিয়ে একটি বাস্তব জগতের সমস্যাকে খুব সহজে চিত্রায়ণ (portray) করা সম্ভব হয় না। কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট বা সিআরএম অথবা ফুটবল খেলাকে সহজে সি দিয়ে চিত্রায়ণ করা কঠিন। ১৯৭০ সালের যুক্তরাষ্ট্রের প্রতিরক্ষা অদিদপ্তরের একটি টাস্কফোর্স তদন্ত করে বের করার চেষ্টা করে কেন আইটি(IT) বাজেট সবসময় নিয়ন্ত্রণ করা সম্ভব হয় না। সেগুলোর মধ্যে প্রধান গুলো এমন- -৮০% বাজেট শুধুমাত্র সফটওয়্যার এর জন্যে ব্যয় হয় আর বাকি ২০% ব্যয় হয় হার্ডওয়্যার এর জন্যে। এর মধ্যে ৮০% ব্যয় হয় শুধুমাত্র সফটওয়্যার মেইনটেইন করার জন্যে, বাকি ২০% তৈরি হয় সফটওয়্যার তৈরি করার জন্যে। হার্ডওয়্যার গুলো সহজেই রিইউজ বা পুনরায় ব্যবহার করা যায় এবং এতে এদের ইন্টিগ্রিটি নষ্ট হয় না, এবং একটি হার্ডওয়্যার একটি বিশেষ অংশ নষ্ট হয়ে গেলে তা সহজেই আলাদা করে ফেলা যায় এবং নতুন একটি দিয়ে রিপ্লেস করা যায়। কিন্তু সফটওয়্যার এর ক্ষেত্রে এমন সম্ভব হয় না, একটি প্রোগ্রাম এর সমস্যার জন্যে অন্য প্রোগ্রাম এর সমস্যা তৈরি হয় ইত্যাদি। +৮০% বাজেট শুধুমাত্র সফটওয়্যার এর জন্যে ব্যয় হয় আর বাকি ২০% ব্যয় হয় হার্ডওয়্যার এর জন্যে। এর মধ্যে ৮০% ব্যয় হয় শুধুমাত্র সফটওয়্যার মেইনটেইন করার জন্যে, বাকি ২০% ব্যয় হয় সফটওয়্যার তৈরি করার জন্যে। হার্ডওয়্যার গুলো সহজেই রিইউজ বা পুনরায় ব্যবহার করা যায় এবং এতে এদের ইন্টিগ্রিটি নষ্ট হয় না, এবং একটি হার্ডওয়্যার একটি বিশেষ অংশ নষ্ট হয়ে গেলে তা সহজেই আলাদা করে ফেলা যায় এবং নতুন একটি দিয়ে রিপ্লেস করা যায়। কিন্তু সফটওয়্যার এর ক্ষেত্রে এমন সম্ভব হয় না, একটি প্রোগ্রাম এর সমস্যার জন্যে অন্য প্রোগ্রাম এর সমস্যা তৈরি হয় ইত্যাদি। এই সমস্যা সমাধান করার জন্যে এই টাস্কফোর্স পরিশেষে প্রস্তাব করে যে সফটওয়্যার-ও হার্ডওয়্যার এর মতো হওয়া উচিৎ। পরবর্তীতে তারা তাদের সিস্টেম এর ৪৫০ টি প্রোগ্রামিং ল্যাংগুয়েজ রিপ্লেস করে এডা (Ada) নামে একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে। -## চলবে ------- \ No newline at end of file +## চলবে ------- From 40b547cddf5f2e260afe285337ed380aee189393 Mon Sep 17 00:00:00 2001 From: "Md. Mizanur Rahman Ashiq" <30866225+mmr-ashiq@users.noreply.github.com> Date: Tue, 23 Jun 2020 11:02:37 +0600 Subject: [PATCH 146/150] Update 3.2.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit বাক্যেের to বাক্যের, spelling mistake --- 3.2.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/3.2.md b/3.2.md index 9310e79..29a2a44 100644 --- a/3.2.md +++ b/3.2.md @@ -45,7 +45,7 @@ **স্টেটমেন্টস(Statements)** -স্টেটমেন্টস হচ্ছে অনেকটা একটা পূর্ণাঙ্গ বা সার্থক বাংলা বাক্যেের মতো। +স্টেটমেন্টস হচ্ছে অনেকটা একটা পূর্ণাঙ্গ বা সার্থক বাংলা বাক্যের মতো। তবে প্রোগ্রামিং এর ভাষায় এটি হচ্ছে- একটি ছোট ইউনিট অব কোড যা কিনা এক্সিকিউশান করা যায়। কতগুলো এক্সপ্রেশান শেষে সেমিকোলন (;) দিয়ে শেষ করলে স্টেটমেন্ট হয়ে যায়। যেমন- - এসাইনমেন্ট এক্সপ্রেশান From 0f6889278dfce2dcf255b9f5c307e25b4974c239 Mon Sep 17 00:00:00 2001 From: "Md. Mizanur Rahman Ashiq" <30866225+mmr-ashiq@users.noreply.github.com> Date: Fri, 3 Jul 2020 00:38:45 +0600 Subject: [PATCH 147/150] Update 5.3.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ব্যভহার to ব্যবহার --- 5.3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/5.3.md b/5.3.md index 25a211a..28570ed 100644 --- a/5.3.md +++ b/5.3.md @@ -13,7 +13,7 @@ কিন্তু যে প্রোগ্রামার লাইব্রেরি লিখেছে সে সবসময়ই চাইবে তার কোড এ নতুন কিছু এড করতে, আগের থেকে ভাল করা ইত্যাদি। এ্ই সমস্যা সমাধানের জন্যে জাভা আমাদেরকে কতগুলো একেসেস স্পেসিফায়ার (access specifiers) দিয়ে থাকে, যার মাধ্যমে লাইব্রেরি প্রোগ্রামার ঠিক করতে পারে যে কোড এর কোন কোন অংশ গুলো আমরা যখন আমাদের প্রজেক্ট এ ব্যবহার করতে পারবো আর কোন কোন গুলো করতে পারবো না। এতে সুবিধা হচ্ছে, লাইব্রেরি প্রোগ্রামার সে সব অংশ গুলো আমাদেরকে ব্যবহার করতে দিচ্ছে, সেই অংশ গুলোতে ইচ্ছে মতো পরিবর্তন/পরিবর্ধন করতে পারবে কোন রকম চিন্তাভাবনা ছাড়া। -আমারা যখন একটা বড় সিস্টেমে কাজ করি আমাদের নানা রকম অবজেক্ট লিখতে হয়। একটি অবজেক্ট আরেকটি অবজেক্ট কে ব্যবহার করে। এই একেসেস প্রটেকশানের মাধ্যমে আমরা নির্ধারণ করে দিতে পারি যে একটি নির্দিষ্ট অবজেক্ট এর কোন অংশ গুলো অন্য অবজেক্ট ব্যভহার করতে পারবে ,আর কোন গুলো পারবে না। +আমারা যখন একটা বড় সিস্টেমে কাজ করি আমাদের নানা রকম অবজেক্ট লিখতে হয়। একটি অবজেক্ট আরেকটি অবজেক্ট কে ব্যবহার করে। এই একেসেস প্রটেকশানের মাধ্যমে আমরা নির্ধারণ করে দিতে পারি যে একটি নির্দিষ্ট অবজেক্ট এর কোন অংশ গুলো অন্য অবজেক্ট ব্যবহার করতে পারবে ,আর কোন গুলো পারবে না। এতে উপরের সমস্যার সমাধান হয়ে যায়। এছাড়াও আরেকটি ব্যাপার হয়। আমরা যখন কোন একটি ক্লাস নিয়ে কাজ করতে যাবো, সেই অবজেক্ট-এ হাজার লাইন কোড থাকে পারে। পুরটা একেবারে দেখতে গেলে আমরা হয়তো কনফিউজড হয়ে যাবো কিংবা খুব কমপ্লেক্স কোড হলে বুঝতে অসুবিধা হতে পারে। কিন্তু সেই কোড যদি এমন ভাবে করা থাকে যেখানে অল্প অংশ আমাদের ব্যবহারের জন্যে অপেন করা থাকে, বাকি গুলো হাইড করা যাকে তাহলে আমরা যে অংশটুকু হাইড করা সেই অংশ নিয়ে চিন্তা করতে হবে না। এই কোড হাইড করার ঘটনাকে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ভাষায় এনক্যাপসুলেশান(Encapsulation) বলা হয়। From 2690795e0717001a7bd8e552bc259d9dd1f4f99d Mon Sep 17 00:00:00 2001 From: "Md. Mizanur Rahman Ashiq" <30866225+mmr-ashiq@users.noreply.github.com> Date: Fri, 3 Jul 2020 00:42:28 +0600 Subject: [PATCH 148/150] Update 5.3.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit আর to এর --- 5.3.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/5.3.md b/5.3.md index 25a211a..cd00674 100644 --- a/5.3.md +++ b/5.3.md @@ -26,7 +26,7 @@ ### Default Access -এর মানে হচ্ছে আমরা যদি কোন কি-ওয়ার্ড ব্যবহার না করি তাহলে সেটি Default Access আর মাঝে পরে। +এর মানে হচ্ছে আমরা যদি কোন কি-ওয়ার্ড ব্যবহার না করি তাহলে সেটি Default Access এর মাঝে পরে। কোন ক্লাস এর ভেরিয়েবল বা মেথড এর আগে যদি কোন একসেস মডিফায়ার না থাকে তাহলে সেই ক্লাসটি যে প্যাকেজের মধ্যে আছে সেই প্যাকেজ এর সব ক্লাস থেকে একসেস করা যাবে। From 2a83f2278729cae94eb04b50dc30dbb399510cd8 Mon Sep 17 00:00:00 2001 From: "howtocode.dev" Date: Mon, 6 Jul 2020 16:24:12 -0600 Subject: [PATCH 149/150] Update README.md --- README.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 0515b4f..4fdcf57 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,8 @@ - +**প্রধান লেখক ও সমন্বয়ক** +[বজলুর রহমান](http://bazlur.com/) - -**স্বয়ংক্রিয় কন্ট্রিবিউটরের তালিকা** -(প্রথম ৫ জন) - +**অন্যান্য লেখক ও কন্ট্রিবিউটরদের তালিকা** +[বিস্তারিত এখানে](https://github.com/howtocode-dev/java.howtocode.dev/graphs/contributors?type=a) **কোর্সের বর্ণনা:** জাভা বর্তমানে বহুল ব্যবহৃত একটি প্রোগ্রামিং ল্যাংগুয়েজ। এন্টারপ্রাইজ এপ্লিক্যাশান ডেভেলেপমেন্টে এখনো জাভার বিকল্প তৈরি হয়নি বলে ধরা হয়। জাভার জনপ্রিয়তার মুল কারণ এর portability, নিরাপত্তা, এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও ওয়েব প্রোগ্রামিং এর পরিপূর্ণ সাপোর্ট। এই কোর্সে জাভার অ আ ক খ থেকে শুরু করে এর ব্যবহারিক প্রয়োগ এবং অন্যন্য বিষয় গুলো নিয়ে আলোচনা করা হবে। @@ -19,8 +18,6 @@ এটি মূলত একটি [গিটহাব রিপোজিটোরি](https://github.com/howtocode-com-bd/java.howtocode.com.bd) যেখানে এই বইয়ের আর্টিকেল গুলো মার্কডাউন ফরম্যাটে লেখা হচ্ছে । রিপোজটরিটি ফর্ক করে পুল রিকুয়েস্ট পাঠানোর মাধ্যমে আপনারাও অবদান রাখতে পারেন । বিস্তারিত দেখতে পারেন এই ভিডিওতে [Video](http://blog.howtocode.com.bd/?p=32) - - -[![Join the chat at https://gitter.im/howtocode-com-bd/java.howtocode.com.bd](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/howtocode-com-bd/java.howtocode.com.bd?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +> **বর্তমানে বইটির কন্টেন্ট বিভিন্ন কন্ট্রিবিউটর এবং নানা রকম সোর্স থেকে সংগৃহীত এবং সংকলিত।** -Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. +Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. From 99077a433ab6b7c6cd76329e3d3b3813eaa2746a Mon Sep 17 00:00:00 2001 From: "howtocode.dev" Date: Mon, 6 Jul 2020 23:59:12 +0000 Subject: [PATCH 150/150] GitBook: [master] 31 pages and 5 assets modified --- .gitbook/assets/InputOutputStream.png | Bin 0 -> 56133 bytes .gitbook/assets/Throwable.png | Bin 0 -> 7872 bytes .gitbook/assets/hello-world-java.gif | Bin 0 -> 1267523 bytes .gitbook/assets/how-java-works.png | Bin 0 -> 15259 bytes .gitbook/assets/package_structure.png | Bin 0 -> 35128 bytes 1.md | 154 ++++---- 11.md | 153 ++++---- 12.md | 2 +- 13.md | 2 +- 14.md | 2 +- 15.md | 2 +- 16.md | 2 +- 17.md | 2 +- 18.md | 2 +- 19.md | 2 +- 2.md | 251 +++++++------ 20.md | 4 +- 21.md | 3 +- 3/3.1.md | 82 +++++ 3/3.2.md | 89 +++++ 3/README.md | 407 +++++++++++++++++++++ 4.md | 109 +++--- 5/5.1.md | 469 ++++++++++++++++++++++++ 5/5.2.md | 259 ++++++++++++++ 5/5.3.md | 102 ++++++ 5/README.md | 47 +++ 6.1.md | 76 ++-- 6.md | 136 +++---- 7.md | 75 ++-- 8.md | 350 +++++++++--------- 9.md | 495 ++++++++++++-------------- README.md | 26 +- SUMMARY.md | 19 +- exercises.md | 28 +- introduction.md | 25 +- 35 files changed, 2372 insertions(+), 1003 deletions(-) create mode 100644 .gitbook/assets/InputOutputStream.png create mode 100644 .gitbook/assets/Throwable.png create mode 100644 .gitbook/assets/hello-world-java.gif create mode 100644 .gitbook/assets/how-java-works.png create mode 100644 .gitbook/assets/package_structure.png create mode 100644 3/3.1.md create mode 100644 3/3.2.md create mode 100644 3/README.md create mode 100644 5/5.1.md create mode 100644 5/5.2.md create mode 100644 5/5.3.md create mode 100644 5/README.md diff --git a/.gitbook/assets/InputOutputStream.png b/.gitbook/assets/InputOutputStream.png new file mode 100644 index 0000000000000000000000000000000000000000..3d6b971933039c6cf4a0e953615f50f07695b6d9 GIT binary patch literal 56133 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 f1$ey^HvCL*ta4Va*dsn_qikr5_ z+FQRX7;zx-j8k~w62(9P)ES3%SGJ}SBd@DiQJunuvr3AvMw;`pKF%FPpvxL$ba_>nBT*7gtrptb=)r zFsc5t-@=xYfdSqnU`7M~dl?5FM_nx6mpqx_Gpt%wr_U;3H6CNbIzd7PMrBt$7oL{r zE7WIbr2o%gwUgUNB- zy?nxD5CxZ~J^Frhd`#NcLt!F_9j|>R&A8HeaL{IA+(tKd;irTiSe{JkmjBMLzY)>3 zEs)V9CO?lOQCVP;&F=-=>^X~972fktqSpfvJ%VX5XrN%V9=;F-A`8!bWz{NFr=VZU zsBX&ft6%ZT@9wE^p26o^Vu;xC5PbARY zG+@xeP_OKi%CiwELQS$Y{Yii^!NREbbbO0QbBcnHt?Qth)F9HA>@J7u3?67_fY)!a z_*Pi(quFf!>4&lr=pB)Pu)6H4WA;q>l&J|vw&F4J1bMx?rc7j^L4S%~#t$ex3w&fs zWah_H9^G-HE%qBcVrlR#Qcx@7s9^{GbnMz6dE0i=${oKDOtk@ZYaX|GG{BtwzzdNq z1B*{&XoSFNR>1uyYRC|=0( zYFwU@>2$UEz0k)+oEK~S=hI}{TksWY3IwGAd>*7Q)Hlm;jbGcpRR1{%m1hwhsxy)` zrl|1&pC47dCPm{Ld|DF@Y+7nB3v6a=4Jk2ItN56Hth1QUbMy~MNy!~A&ebND5JP1t z3y%TAvF!O9tnV9)({$p0aq~l|LLrQii7IK;!@LJ_{oQHT60NR)KDgb?(!K z0R!(~HJ%Sk!-o%~Fr2{>nw`^6K~}(p#P^ZFn(0*Ai1A-u^b39r>@Q%zbzdq}O+T%V z*73koo0UCP`Wy%5X%dQVq}_IVbo@pI;$jK!QG~KvFrGyq4j7{0<9NUi-~dlG7lxwa z=H83U@g)6t6Bi3Eu^A&8__bl$(M-a(^KvA49$1Ph9H-Nhw$b7SR2b~k<=+_Xoeg1n z!ZQ8iiGF?JnJV=smAOhhH%Jp6H?Yme*n#jqYEqL5HoT4!@Vu-PBZ`PiNqmXUmM7+?rZ(}L*eYqcolMb5XreXZ_i_`CKDc#CX zf?rlL*6k*V1-XP23NEwL(@EzKsp5ctfJk=GFq-?#CL~@c98OJ30`h%k5&67pZRtKL zsScawg8#+*v;lG&1s79~>ap!%3=dG;k#^#iCB6Cei zs!~%5RYiA~#zh7`WrEw)j|J_JaXj4%Aqn=^i36vHU(kXLBF9dW2ZlfCbM+ z$B*^wKws>+!Pp2c8Z11n{d?)MhH=4MuWA>8cxE#+KW5fOPq%_=PtAa-@4&+XAO5Il z{568KBOD$*i8mmT=YVzgahPXoHh2rei16a{_^r)$A?#%^Gg6VU`Y+JM8-D<}7@|Ks zzUNWvVt}eguvMfJ?b%7>%D=9=Hv6w}ii*CVud=|C4+uG9PLoLZemzqrZr3PG*@q!_ zZrAW+?9Wf4Yg4Q8z895SPK{Y?C&VLhZKHm-c+eiB!#MWqDm4DC=krV|8-#GDmVKOx zLk=-L%|roNnF0$~0UQp)Agp|F@GA>hfqCYJ&&G!X;8p&tR^9R9Uls^ToGR?2oIW_r z>$ir&csI1kaH?yXRVRWDA|X}&cPkThuzq~C)0@!v@l`_o1og(WK4ajHfr!YA4%gey zvx9Xw=*@Q3fO%Y)YT_m?#@b%Jp2F=`W*$Z=b8rZ29j5Dszb#Cq8_)wW%1F`LfG^LNxhGAX4#;Yfk0my@EX*Eq0!m{JLh5ghFH{luNj5RDw3Ox` z73%@Cr{5Rc-O~HX%DR;kQ(BDUS&|wP!gYk0uv)MA*6-(ini@ZzaqsyaLat}rpE#;@ zKi0QIPJ4W@QaSSP?=n-Bp~oiuMbz@lphtIL-|gfEw~6 zR9|#BURiC@_YYE7NNQ}N|9cWxtI`RYpJk}n>zn?cU@cVt2Ajn<-)juI#Q_6+_Q65{ ze6NMANS>X@sCRO9e*K`AF8D#(-^`M{UJG5yi{KsyG}QQvpn?%ApI>UUAKoS{Cm8RG zfHzpftCIV35br!$;(_L>=lW*cZW_ZR$Jt9SBnlfa_G+{MG&hTp{wnGvJOkgmLy}US zFdHy_LIy-Z5Aq?eC&bnLos|$K5P(y>JH}1 z99gcIje*jrJ6+l$W~KHqj^k|QJQv+HbzWZH)VHDn8)h-FHJ`Bi3SB`HGyY&3xwh-B z9Xq{QrEyU6xtsQ1>a36Lgx?f&$sw5b7dP-te^isIjV?|NM5QvHh!%LAA)nvR<-J`! zu1dFkuPpa2uA(5)MMX_;75}bv!B2}Z$T~k95gO^m#ZP>B5a9cAtw9$!-XTC+Ub~D> zcuD;Y*yLVlBZZ%E3hk2w5fljjI>utGNonduFvJ4`A@I3fJwNA(L>0XPk=4PG>gv6U zlatI3;Peo*_tgrnh^4|*qLwO2W_T}AcW?F_-M*K>f?hHM3qWw@zTY~efRi120d{S= zjwwy!tS!m2YK8B=5Ksz(skGFC4bRsUguf=~+pefl`CCq4nMB_j|O}2D1jy zRBSVglx~j;TGm_KFZLc&W8>F`nv&y3WV4k;RIer(#`OFzNr{NupLon02gWO1CwYO( zCl&U?0rVo*cjRdQ7}|gujga)k&{8+cBj$)H=BDjw^q(n_tW)=c;j#*ke4!^Fypjd} z40NeEHen+brB}IQ%=*7)B%CIDPzvt5;~4&Zr}IXD?}OdeJKyymJ>As?-?crYFBR|i zXJ`yoZ$CHQ`JRt_F==%=ckVp*tomN72)M5*vtOJpieB#U-{puU~O2Td7iM3$!>G7hO%upzRw;1-w*U@Z=6Bdldy9GiciJ1X|$tW&oxe#92} zuquX8g^5<@7i&LSmlu8ii^TeG*D4`+tyf^)VJ|rCWLpl*bflKaWSr}%T)xw1nCz#V zmBwffvkcbjEbdPgzRrjC%O)YSty&nIJRrls;Un^w0}=E2qBT!P40^=EBJYW6?1Yg9 zO%LnnagQ6x?&_#q0bEaRAZYk3PxEnN)+t5UDCXPNXc-_Vo?5+W+1F8>I9a$KT=4f$ zhC!zZ7=^_N%CiDpdGEjOOaG)yMYI{h;AZsb?5(?yT_ zLu$Dw$IfGU6D4=4p_3+|dPwXb`3U91$w6NrG6!3H zDRt%<QzjV&YFtSqM4$C+IFt*dE2e)WjJx#o5`TDUgC*X#L6 z_Q)dtG><}qve!5Nx!sUFBxop(E+<{E9utJn{*0A%EG#rVOLZFR%!abWGRWCsIDT`l z(Ob@;GgHFMibQ;}R>vsCM-E{5rl@TH%3#A4TGtt@%aVAjVSUH&xC?wwWMPYdL0=;? z3t#C@8AxJ(2X-%b{^Vkfm{-&T9~)SsP9Q$T0D9q287Yr@=vAWt|9 zbfRAv6VBR=Tlq!1$($Iy_Pn_>#PEYVB`MBb=`U5>$MSD~+3s3$obnhEGmlPL=VzRz zTzEap`XhBM6JY8yciPsjL?d7^JKP_sHD$n4d{)+@!g>0o*<}9gM{7j{a&&JsBP}B( zA#E-wFve4_dnzQ#`&d6cWF19g`rR~#qk52-4xz?hgnjcbb)jLQ z53Hmt&*ekO0$M0%V0);lWAlC0xZPvu*zOYCrq__TlZ^(6PLti#N9&g75$PMQ-5BWt zFDu5b-1?ge!?Pd89vl42avtZhug%Fwr3wDsa$cX+PW6E!C4rS7;suAmZg3Dkt=nza z6`i(gAlUUzMQ_@-hdyD%Nrl^284~xsu}$}!IXyob0iW%TX8f#H-O6{*{A0KBwaC+emrBEqP1@G!se}8Hk_KuBJjQF zQ-blIep~H%$kfKxqT%6$zOfyM>3D>$4VRHB19Ifls$8*cZ?;nAO(IXzPr<#XvD zZuokCaE_1gPS^>$%XxjbQ6Zfe9+|!>fgTBO5%{%xn=h@AfdOrZYS+WmEIQ)TdA=kN z{ss1C{Pz;Q9*Cc=Xc*?hZ70`?e>eF(3)IQG7%bsEiP2C{6kBg>k7+0|B2gH=UV3|c z`lR(qQdCH#`!!B_@^1|&^8d>$80#gA^@n;E#4xMO5m6zO9L{Jv|1)&2Oom01<#E@D z(=q|O67!L@2Ofks)iGjM`RA0%SM<%HMMbTc0q&fd6z9Pne>$#ReRA^v^H zi=0<=<-<;hMJb$s3lzf_0x{U$hnn8{npfG)WI7VA{u&+-hn0>Q<1eISbU|Ps^ra;q ztdp#*#0KD=%#_i0!6v;jY?ao)&VlIEna<{)NGy0x}?htJL=Ok zb&q}3R0b9kxl~8GFPT8NIUIxVpQ(9&)_16g^M|_U`xYb}E~4Z`heOaC#-E1Rn=ns> zcsSir_ZpP3E&GW>so$5hWD7EuQE zc}IYrd)w|>Xw4KX_9AjWjXEi~1iQ1wJQMwjlt>ye;=XKNe6!|+HwjOb9$JYyZv!GN z`LX|hufPMCP?SXf$L&>!hM`jJj%|ZX zgQ6|0$7@^~;D#c7Y5D&$s&hsxdku;0aAuJLpxlj2C*h_VZWYX`00Dxh53eC2IsP*g z6xj-|Lpms9he)7t_VygUztQn<4`iyKwA%x;v*&rXYDnKc`Q0Wq+@@BWbpEl2)t-G+{s_A5atMKI}xx zB{A9D{+$@VXOZ;VQ8AKo8Fn>V!KTlfNXDW)U#Q@Q{_q@I_;L04?39!=z?$Yh{qZl! z{b{~!ido8fDpvVv3(Q1Tbu1|h14Fs{SchR|+uehwwuJ>v*2hIp#;Z=myBu$Xcpv7I z>D;S)qG{~wKZc4fCW(%X9qBkRAi|) zPH!T_S}QH5X9E8dm#nwhh41&4{6(j&-9fAI(Jw{l=45ti4L$&sIh1g9vE2!wIscOI zUa<+f7JS-}l_}t0u9711)8HkkaJSRh^fP_oc&$rMzrki>zK%;sev$VOy=|k#zb1|; zEWplyyeMWs?Vm{_(-{09UtNg?`Hd-h%}xxB-a~dA#W&L#dt!>v9fUs_9qBBa z>6VgfK-bK%zt~S}rhw;7_HR2R7QZv~vxVs?0&0J`wx*&CAdDVl)YfV}UgqdA*K6VR zHoBB9qV(dD@bIxbd#TDr*m675bm`O(hJS1T*I&Y4b=CYryins!8VtO^=yq7|@e-jh zsR5pBLIKNyAkNYLtADO9f2@%?kiXVQ4W6rSZr!(em?T=s>L9*T;vTPdCO`A9`wqQb zq^ua5B1?*+vry^);Q%$H^n{aSI{RtWxXt>ue|0rQ;FEu0`C9PTTKmi2L7DA*=~?ON zV=R)ufeTE^DMil8O8V)KFuikCTk$)FLLGjT7${37OiPU>&d`gM{G5chO18&+60%E= z*YPX4^r;|mKz>mD_iURY1}+55dO+KG zsGy0}ys80tT-ouQ7x-(#K;COH6beehYYZGproPjMCLC;`@a; zg1|5b!qqRe;I5@K&PNx3H(^Upk)irCn zySr1GLrHfdB_&;lZlt@V5v03BMY_B5AfZUNgi3dF_rdqOe~G=Bs|4VM$@U-?T0Tq0xRT*CZu zQa;K2tn_QMmNJVXqxJ$AF+Ln#6f1`s$pK3@kpY#1VHywk;fh;X0#(==j{DcQq{sM6 zXWl2I@faB^xb4~0sJF#3nseQs#hOv(gk@VCNshttuf9}?eg|X`0U;GUEDBFr+09mB zlinLXr`xco$dzLBeuWy<=8?OlUOs0x$(8O%SIN4fZ`eCfXBOYxmpvJ3| z=z5ae!`BSrDFEm=kOcdXobth=kXB?zQfR5D5;F?+>r&I&LY?(rsQ^akNo<7-iuvjM zG?9)d9fyPKWJk7wMd0D7NgTEsyJDTa_Wd<_7qOnr7FV6%zMnjZwVBBtgtOaPfxXsK znY*{Qr#dgi8|JR+U(3>cb>eWaaL(E+P~pE1B3bAH`TQ)NVm@ypL^gffNK}ivxM}JHeb} zR5WqDRsOB6m@GumphMNd{mfY`j2ucHaF{<>EypYJ=-01b=esJ3fCToi`MQdE$h=0Z zX>Tcr8=RMdT)2s3H}AAMsO17I-uok=bzzq8p%|qZgYGRi43kL4CZ>poPK#lZQ}O~m zs>iGOa!HYuH_b?rzZdJM+56SgJD~{|D@^t2r2(s*CT8jXM0D%2bm+O=WWV(&()CaVynx|j>4D3@rboiD&^7J{C8hCeWd{*(;#J}h0cRZVSep~-*exm^0Hx8}!T@tv2~I0ana z4x80S&n?j56}=@%Uqxv3LeuYMA~o`7t=yE^ju&bBUBdw7=|ggw5wP?e^*4=9!Qp1| zNzi2@>O;)E&?_D8_}s{Ax(DOQ()N4M$UG>R;*OAwcF@+kS%(91;Q=ZZ>%n}d=frKG zA08;CmwtTZDpZa=Na2iUxmmY*ZS&haP52gv=kbKsO@z|nFm3NiyKmuY z0@-ZL#9j4@yOHO|U3E30?SnYQ9}5yXbf;9J>c*Syg*2iobBS`!Eru(>j!Pc%{4Ue( zdghvQXD6udJ}$jwf5R~E4YfskVeT7lB00+u!*uvzRER=338{ma%HA4%;k|hykFUp< zTolja(>5y!judOxur)!=75>$fe)u5kaD|qmaMp`!N=Ca*mD~0^yNG2&_#&9zsd{yZ ztD}(}&%;&pdY)wi${4~UC+S}(t<1=GLk}7=<@bkyj_}o#2aoM_Tzq0BQih`>gr58E zZl>2F5edyCT1~XS+=Xo%bMMx!f08vT4C^m9Z!tR$TQ-P34F(3oHFqkhwV1f(ecc`o zc~NTUborul0l3#=#5mj-whQGe0vO2KD(b+_5Qqb0Fh7FQ@(?!-?M-DTeNO_v-?JJZ z91wT$d-|u61If|Nefia^JvoSEsaXnkN~ntuAx}vRl9jkdNzzivO3%SazK_8T05mhShgS_2q~rmb9u z89;m+C~{bB<#%jE69YsIKRn$?DJ{i*%APo+R7+sZp6iWTfw^YtDLrT~;FBZA#zw^o zpyt=wq`e*C+4ChAh6=m3i0UZTO8Sg-HTqfj zhL7`;Q!P}LYn2$l;H8Vj(L{h7KtxbFIFMm5Bew6D#jK_!@5gq2Ti~0 zgVGL8zFo60y2WOm5b2|^8@c%()bTQ^l+Lyu8T!4AWPS0+OQNdNtuC2aZP>zFSeGR45E(kjkb^&7ir| zOxAYrHEQa@eTeehongR|V8TG!k52h!OWh@I7*nhkOnAK1S51HCx35ljDWE=#58>&C zGnKfVEwXmme|@Ulz)K#J=eq_Ni4q^cm&=o_< zh+Y~)&uFFcH6wf6F8VjO{NlxfhPs?KsQ_dnR5#)hKZiW_I z`o8ZL3$T329cylNVPIn7BH_O*CqqjsCr9e>q!;J;)CS~@#uM56OMSBjsjKW0J2l*|xOSYKs(*9(d=G;dCeFshqD?sdy!>JDV{1cG}l37k3Ho z(0)v*QW&;l$r0+dKlH*F+u)3}UteCL#+?i2V(0-ftNxpX&Eek2#x7itnd{#1HmEnC zs8dWFdPmbGUl*RMxQX{e5+#3x>Y+^*PL!t;img`FeD7VX*NrD*k?GGRF0<>t%*|@^ zGnb~VYTH=^>E>8Eg;d+6X%d}%4YVs}Pp=i@Y~N%bjA;wy!c8`hG!J30U#%G$y8Jc! zT&|}=$y7R(KF(wpMbjZtdo)V~3O_f@dZr#M1Vo}E6)eSaqw$g>X6sDKGs*m@jdH7M zsYk*#-a-;M`K#%YaH(;F0V<~10NF*X!4j*|9Hy?!jx=i)ATgK%QG%G}6n6+z=n=Gi zpn7=p!>@F%3)w@PF|o0$H{+w;dEB?s$fQhV5df zC68nh;>{nnbv{=(eO>{kz^*!(vPAn!hy zh@0beHB@|aTJVbo(cX}mBtW0ME@hz6+96p9fQiTRqR4-9j+%hV<0oV)-!M*9;iQlG z{wsvU1tGneZ?Nlg8PMIdhKb>Lh#VLXGQ%B6LbSgBbV7G{|NeWTfXggdVB9~m#s{;F zTVp6h;~ut1WII!p0%xB%fB*_x?U1cnf~` zSMKyd;zjT0DuQ@3puT(`YqwR`X|a>8VZsa#2rtbsAHNR@#=1($km4GBp8A#jar%+c zOJV;HP^#A+TUU}lhTl9LgOz!aSL;>~vyO!yvCg@%bdIdgE^vps$n%%WEKeK=V5&;f z8vevr=1%7Dy9Ch>Lb(>jl$mXbGaw9(WoFTE-VGLhBZQU!I^Gw5m;mAxlG=_D0iqzc zIy0#KW?}w1f{^YS^E$JnA;e{ZT4S}bMIEtPClI)b2&D=~Y~Mt3-E7|c+U6qsPZr4X zuq+COT%tR$ID!t_h&#zJz;{)wyoIog{2wrN8f}`n8$8(iH`&H4ZX#b*_0nzBk}>mQ zee@7K$V{*%3Gsc+jWJ@k;Ad!L@kgg4766Tt*F$DNR(2ZcO|N3%>qbI9!E}ig(1kFm=zgIo;KBbwA(|%a8@72CQ%e=^VHUVUNK{tMAWl@F2!*{`%nww#InV zhT0!OVUC@o*Ai0n-9Vzk^`uC;CA zr+&_{-o6LysYm6%H{iJwSZ_C6tK0j536Zpm8Di0k%8`w>ly9*sdT}77KYo~w#xaY< zk*2Zt*>P3c_+&zMUIJx?f*pQ}wkTL*e-m9x?}2>h>CY3EIMw%iP_B_QilLFwTs&l7 z9T3}`#t%O6sc_GUnA0OIX1p^cJGP3Ks6~a7ZZ79{>nUE6iz8T3J9JL$iv3yzVz?P46gp#vs2( zCK54&xc=)pE-nC3rmWsQMoq(C6}!XL^NQ1*9sOjtRxUW6&16d=37lXA7KdRI6$8gN z><0Vqhj2)oR5L8`XS_W;gCgC*GL zPd&_nep)Jcw`tk&tuWWtumse5S@i9E?(Gj=Xlyz1#}NR0LKVQ2^ooNeLD>`YfcGwW ziJs9`&xK>{6@3-}q@VZzvg?C{4FyN3N5PKBs)Uul zc**D#{6>Dr>O^K3P&42p;W94%W(3dj_a7bJrG7E}JKs30r!@LW=j5GIRes=Y>(Hy* z{roE&3=nKu;=18az}dF37*z@^MaJ*%FfYE{yAMhlS59x@Wbe>L0I$XZQAkhn>?U{X zYYt7#X$8Ash^-_0o7SIVDr3&xv5xCsQw*lF39uJVT zv-EgrkcAyw0!a9az4<{xfIwPg@ak|h(bzv|>f@S@ivM}5MdsAESi)^X8H{5sj^xcM z?pF43bdk3rBZD_(#$9Q?+CBv<0)a%6Dqk10wp_9{-;0lb2Gx5=xDGLIfFh${q1Q-= z+kJl?;!sT-GG%Uoh0n2y?ftEsqRtcaN6iKYzGtngp+_z@#Ne z53H*o2i)|Woo>xH?bfuvCX9l0J3$==Y!xJxv(_qT?D>|x)=+^^5QVJJ+YKZB#={XjZ-fb6e*F<9 zyvAvEcD})f_vt4(TK0dc|0R4l78+n>9+}7kQBF8hdjUQ1RSiTh2y^qk_=sF{QfQDs z3w|HF`8g*3H2o$K|23*MHcD2_5=ZdQ*)oMA(9FxF-lS)BCeeXZ(Bd#D z)e7|t$3iBDaDq6%*rYFa$T{l*kB~nFl1HoqWug^0`H=-O1hCpk?kwdVa$0x%bDas* zkVl(t@Fxs48^x-0qsx$mfC43I6n~2*eEJ_(1X(XBH-R%OE9>M|DJ31_U>BAtp(I`b zt03+(R#}yc&uUEHn`bWO(y1c>WkKPgs}afn(&x3F?5P^Qwemu`-le<)S|n!G3OLGW zb?=#q!wLhKw9DVXHFA2Eck}7TWBVuzRxkp8)o|tg5=0Jjn&teQ$**~!U=>bD*v^yn z3n#XzM6h&(?OHrQtvbSHdkjjHE^|A9GQ~j5O00Iyy|5q{EA92=ZS|Y%31@F;)oCRz z+&~k69|EUsVea}mSoW9pb|-(wKWLCxej@;$EUnlx7*CW4E}9qArYOif=NNn!oRtj} zb=sl0e`q~vgra3LB5e5Z9FZ&z*T_6e`qT)Tc}SJ!%9Yccgm(Shnxfp_~p2Z4X zMU1&rxn-yF(oEkpMugUysvl6=2EwX4D$Fc~LRD4a>O%|_?WU(cO-U;cJV2EXWx?Zm zC$V#wo{laNUA>z8-!oX#EHadrUf_m$^T8MW5Cr-6OlcNqmtGUGkcVrurp1v0g|l_} zpYsR(eFi*)l7%iz1jx=<Mjzbgy82w9axmR3tNkmOOIuRK=9_N3e0f zqKqJ5vD=6{mxM-bd3hwYM;3LNa0!IeI%2k=}ynr6AZe4F0c_) z5dGnYb=a^adJzcP1|Y%!<&@&YI8r}-DAO1{8K^7?`sIMA-~0-y^rnW4y9ECt3mzxX z1HjM0hr)ZvNGI>rr0IFp6jQh|R1u0%UHQgz>VjPc5qb;Z-ogG{PR*pX?&hF@1y4ZJao5;6*Zc2 z=7o_Zq?xSoD}vhl0HZG|Y~V`&MBh1nvOXvT6T zeTh&kGg5D2HfWTAD`^QQ#w-18zfhu_^~^3FXT|?wg-&dE;eOs><6B4#-G9@#LjakyMTGAL@*gB~GCN#8X!NV9`~uG(t$lT(7P5TFLE|&+Qwyce)QR z?LqBNh34(7ugNk#d>U6$C4G;20=rQ(^q3!Hm+CP8c5B&y#*vr_p2g0g;$HQL=P{l2 z2{)e|%5aocRMg}gR3>Z+x7*~#@1Z+p+Zeq@z&nRP_~%=jGF8i6OqUz#-%AgA^Mu#c z-71f|iYyP&NM^TTp93E-=qW_D858qZwsw-{lmMOjHt0K*kFFNm_NHd#%GgA$=|{X`teUWM^i15l$ZL}Au<3oT+H1w?35m<-J$u) z6JU{ubU$_5U};rc6X9@6ADV|2ep1npOkQ^($zPa1DB(h4bj(!WTH%662V<;ZdVA{(Go|5x$VV{CNGVYV595*>frLd)j)aJZLY%b^`f9 z6lG+Tg14Sjf+H_YKqr^KsUzQylkk#_IQBR>4rHRfO}FJ|T4yP5>5!`QS>lwb^tq}* z;hN()Z|3tdWnqr7kj*lxN&++n8SE{KMmCV*fg3}XNiP1G8R z!~3FZA3lr1(H|fow*?QMNRzMz4|^SZ)91h_(j9@!AqJ|?`%18AA^>6d?Yr8&`Lw$= z4n+G>Ed1MS=nuENOsiofMRz|4U75n?CAlyjzoO8`kf$}9Ut*9wb^4oR_lzJ6+$o<$V=`hv|=9j&E{R4fe)n=X7u1*h=!fLE7>;NRhxDVju$!x$TsmEaq4p=WONCU$1dy)i##&WBl&wmFp_|Z8snUml!#up^3kL z>D)P3=%CQe9B*mx3cCGG!O=dD!%zhVaXxHz8$ePkKD{+vcJJazG?9-Zob3M1De`5d z@<@G4w2lEsWn_va44x4@g2u1oNkb15mm%1Rq}8Z($~da?)bTJKU$Ya~`6hNM==(Bt z|306c8d4zhZzM6VwC}G`^3+~>GcoTH6TJ;w*oglcc5#&Ya2d_|$Pu3VQrkJOoHC$*h7mAFB2jTEF z{B_fepW(5R;v^jDF`Fv&mgM6rBd9F8;btiaySDwj0K?0*N=i?`7Ljrlc$~|uZclvS*%IXGxH%AhWTI!=l>~d8 zk+HY^&2B7y`)U3Id{i6peP*|o$oH@{THEAEP3Qg)m6*cvw8;%O%+^fvnDS$KQ1}*L zZihNCF_vXrl1@8ZyJ#0{*31g-%A-6VzW@>JJDARDsD4R%VrTD7+Se5L7(gg+-e%y*ydXtwrQ%di!zLV-Feu6 zWGs&qudc+vviY4V2776WuT;;3>Vkmta1)Oqk^yN;87V)T$3uh?weqALs>BfV#dzP$ zu1j^(tKNRdH(xW2EpPvv@ZQ20r335t*CoQoX`t)id*iP4?nB<%raFxb-LIFt%0Cf{ z;S8{Xb0?ESrA@J#;=~ElylLCFR%EuEZsG%9ys}C_wK6mt-FHgDoG!Mqs0mD);sB5& znH)}i_MiPTzArWvpky5BzN|)Re`bcV^L-^&@pQN{UYD41ejYZWi6Y*c<=m_sf0_FI z9sg9Vna>-0+nwukZ>G$qy8*hci0WIUW|^FW+mmxCub%(g0i3wlSLxbT4ai3fP0irdfwo3HO|LhBVpyO@tLR+ zl1>EFcoDl0NCuO*ph^@WqL1?xwJ+$bRET+ymG!fgRQQ@oPR-X*x(0vbO~aML=&;}B-y*Zrf99Do?DsaeyYkiV{qmu4t;;?Zg5JB7=VJZ^cpjbdvkQTtg)m?}NuvZyvN1P=|3IoP7 z?zXzZ71HlI0{ISPJg?u_BSrJlE^)AB<+brD;BY~iF+`vi?43CvLsh+>IG-%tt%;>J zc$V5)_+ZL(&bvFsTKZhm0g@ai;AS5R05BC=oIl?pvh-Bp=xW9tU7UyS?^$sdaz-!? zc^4UG&-TQUEX*cqcfVC(*FJXQT7?WRu2(etcG}?m2p#mnH~HohKga|U8s3zb!G!uBBtzD!ubmd!~XABk9I4$tBxIsbG% zN@K_mgt?!E$`RS93@@9HpnT|!ZD>at&Z&%r8l0G9gcHfyk9Xe>U_kG%XcLxji zu`U2_{8rSVJYI=lG)KdJ`vKFw=7tKM)BH))0umvAgj{B=heh&dHJaB)`**4oHkL9Z z4X=q=?<=S>6H3i`cMP$8-UF=(O-`-e;6agJGG3kp1Y5%KHl-A~G%t~{=93zUE__O!L$G2KdX9@D-i zkb3RkCb~%YxZjN=ps`K+8ia@)EE$5(ar>CB(?2 z>-mV^)*DwW>EE}Yd}GH*%U0VNU#K~*U$Pu#C@Vb#C?6FVzbvT3;253vqBUh>ybD9u zh_zv@tWHnSm$z+4#-PCW9MD^GDt~|)I;6^{dLPzniAC~)+5&1a+ukt(=ph+q2fd_Sf+PA zX&ZTagP$CB;y3Nf5h9XO^2XCL-H(ngRVHmXxU``*B>9$%{3MH)#17oeUXvd(xyznQ zc@lp{M**kxAZX>=@$|Du#oN1SXha(Pd+nzlkXWhvC_O)s58}+a__?Li%7A9j;a+qM zL1p4cF*nc4i)x^tWc?H>Gx^o$aiTDm^nBH4Ey|sLIkBMesQP|l#G+g#gUX);@*J83 zSY{F6>#PD4cE@_!J^OO;6WuQlSka)%CEXjukJB~PZ^OmNo>H7NFVVll(OwPF$Y{?^ zeFNJ5`_V`ts{mLK#Qej9^cf97wHq4Ulu=7&T%d~Bg_8*<4N!uYHZTg<3|=Jg6e{1| z3<4V2oln9RcxtSMx;K(_=O7emgGJF`fGdj029{4Gefo4xL452E4Lndz5{y`}5X{=| zN?8c<@RYD%lo_zS|=r(ms?4K1m0Ur3y*6T$gKV9y9><6}4t=!q`R!Dky#dyz;bFlwK z!}XD#z#cLPEbM)xV?&*wN!MxcGoud#g7R%?BlyDJ)fH;S{niR#pzXlFFQ5GKUc8Yx+-y9t& zAMsw2Wzw-<@^W$oQ;VbQxy3Cm5*>Qwr&`Y~&lC)=%hHze;p`<_CjAVd zGI}@8Xg1%s>eLVvLUX?7#O2}US&dB#*Xk@Zy%u!?r^D|_>3W^O!YV2??zdX4_jPTY3W5$`1z@f8tw_c@l^9cMT_$!WvAt~26dU+_; zwDsVAfsAt_Y^BKs$bZ@u%oI0eFZ+!UD3uU(H6#p$b`kNDT|m9;_=YQ$<3QJm-v=mQ zC7fFekWK!?R|^DRza4p(H3KWtot(dm@t>Cc3F*qBq`l1jiJGJXvZKI{Yr9(fGF1Ek zt-pTNy`xkUO|)Ru?Q6S^WkU|A+qwAqp@_zc<{M;(#p=t9?w$K13|6Of;d7g0OK53Y@;e6xkt(Yt)LI!;gC;g|@W-b>7LKt7~nAAA8%Vy2}EA zKQ%YpmY+3=_C=U^Dn9TmmbcpVbBLTyGS@S=s&0-(_vSkLnJ#%=;|+G@X`RWLc*k zwj5QEc|m51JGBPqY6V#0jDTKA(FLHSkfhg9b5e>M0RcMFys)ykOu)|<@lW{9U$i2V ztPBY_Sq{x@ocz<5LHMiOCwto(^h>ZJJHHw{IlvF=Z}RMUv$|B(#;@;zHkE_$kN1AoJF95ayJX;ft_AV zB}6iznsnbK5CCVVi%Nzcz57M{KVL9damyfcx`ko+Kd%h7#E2RFNo&JyRnKxGgITWe z9>lJssy`md zV?fh&-TOh4Y7aZ*H&HJVp7b!=nwU6gH=HR&ozh5N#m2;33vr5@AAR+fsA1M;w4JYJ zAX1NAZ%2IgA`zl{dehyxrvx zxC6#$OSr!Q)*m-SX#cxP~q=)4wi&asq#0#yr)V*u#yQt|0dk0*Muc@vz`p(V4@?hwnLdN-_2Xbr~2{qKR zBCB|}H%z{11WTO*I@&6k>~)!0B<0n=kEsHc;dD(9MRtJlbRLo@7tYuhpo8t*D&xbN z?_t8h+9zKVV4O$0M11v2sLCf7h79?O@k3;cHgY`EdJfJkMN%V&896B23Jc^C-0Rxt zx&wz_*aXaQ!xt2IvVwv8Lji$&docTUl(Fx-duADwmkJbt_klS>;o(hZ_cd*)a(ihvj>On(6NwLE~XqH8?TllW4c=XX2KOSKUgI`S5NpzV0# z0zc^D+fbf=PTF*v^Zi7N3GwmPzbE=nahq0#Z;gB?mIfHsMp^+c23;kZqAR}}Zd`{6 z=Y122PQ3L^ShOhL&)y&gsJs!yt2knwx&Hk8D-rDL_Wg0_9A{9!@}n%tq~LS# zipo^KtwEmV$KQlX9f+w=Cd4IbZE^N6FX88$_*=HZPR&HxJ@!u^=-YgYedJUt<#?et!a4LQX)Vu37DGVeB{MikFB zdg+H9eFN|E@!#g9LiUMjEU8A4o-JqcdT1AE@b^ z4P`e`k;oeIT+tHavnvPoSoo?X7m(kI zB)*$EIIF<+@QmNyCqD`zoBDL6EZX*~dKcRK|L&OESn?;XbsF+(oTcZ3A6Sd5K2FOf z{M=y-SrKBFOTYJbPtK>V1I6_p$f-G`-wXkuC*tdY`@3L;&(Rr4!E*$psN*}{DTGg|*|#DqHiq04rAGiw@I4EA@!>e;7KKo$6` zO=~JU^EntoNMZNwt@fJiC+yQs^pJieRjqBJg_wM|iktPr>XVre&-!#Vu|i2m7#@Tx zG)Q>z^|@zK`n<<)BP+IwXixhky{HT~Zgkl7GH^Z7*vMA^^3e)VYx@|R-0J_6-t>*r z<--hE5G|=p@Y(#(wwbqdXz2Lo5Y}bB#QU`?sOba#li9zG*!YqHJD%)n{OmC%6No&5 z@res+^tuF;uLb`7pC3Y8fEAZJJcDiG@AVrgNJMI$v-unOoviYhOy>Nc6I*GmQ$1W< zT#-nd7>55|1@1cL+y8=zFdr$B4q zSsXa@)4D!&piq{WR$%Glx>$^Dy0=f8Z z;>}6iZ%!K)vySg-_1Of2uP?A=A<*V%W8Il24{a+3qa7yn3#ZoSoB(Ay=!8uaWK$=7 z{jxY0Yay$q#{SiW?PWETfguM0l8$4;z?Q(%{o~Bh>p7yF2 z#f-<)`T5z>(#RBXxrfJ|NV|fyoM{vGE=voQFABK zz1r;JPfssqKi}E)%yYjljzs{sr1rR@(kB$>r!g|tCiF%A|9;`K8Ts*EdE60k;CmR2 zm}y$hL8=9(so#IAnRHATL_{DMTMDzzh`-^VEk2PE`nMWdVfb*Cq<2HurRT`!)%$q8 zY**4=D5Tj|UH8v6D1wCC3JiAWP@iX<#F#mgo5ZU8G=2~l zGd8h^^!p{TlACUr}GG~bY_1(5vOHnLOOYwl!~ZEYZ~<5n$UR(N7D59R*wwn zS{86)T8yQ9R{y;chfoT8R5s!29WN-Y#TxPV%aUMlG(pnY_J40}L0}UB$@pNv$|lPK z6Wv}!3^zU3c_RSEhA!HH@sQbchs^3x7mb+9yc{w}<~fT3($rKVU(JH5lOWAiFXh-5 z8>49m@cOS^))}F!F(Auu%VHbE!@NRP*;8h(->y*i-_HTkva;e-Jn5#9@E$}d%FKZMr$s~XjC%g1 zEVDk{5~-UJSoy(O$5ytdKCJ&NjD=_vO44|y!PZ0Z0Gl52By~ALdzs=+*?+4$nP(Yn z;SPG_mhoXj2}}I;YeT9}oTaZtakhK45H+XY%b534f?rSnN zNG9l>#n*r3*TL}F>t{9np$1(RV)m6cYLW;!A|@&W)3epK&g29 zk2mKkIY4{LQOjDX-BqhIkl_*nWZKt8LEGxx9DDOOBuzO$TM;fmn*8f3j6DP-o=l>h z7QhDs|D6t_r^zwz>7eGXv(V`= zez03-%T3^1V)YBYIB3`Q4!hAGXxOF$4BpF2j(Ginq4W}%dscadCq&fc3Ds*0V9=hd0w#?umc~@X%7rNzDd9!h%EmQygo@W0kpfZ@g$Dv0oV2vc#tca)KrWjM z3bNE0|LMd=$u)AriUFqRR)_V7{=fQC34rc zxV#kpDM1!wCz6Nguep_Rx!AD=<5=(N&3z{4po&cB*3ii$K*E^q(r&H?AUIDg_djSi ze$Ue^P<_*tPJD2#))a_d+eSI>H;>u2n0z{|1=dT2(*Y`td?cQcei|59Qk#fO}bP<$sM$;W`EGF9G%+^Ug=4@D_cYT_q);2E7S|#tY-t! z28({RLU%ne;61uo%42O))3CzXHTkDv8YC%YX@myMWE5@*{eVT{epyY%7j=|Q_AAI_`#3wUQ{ZUk8M~eJdWP%-+GnAIM zt>pFwnBrliwXb&~#2t;CRow35yO(~wXFG0WW#Qa$@vR;hbdp^>sGte2*U%C%@EIU@ z29F)lKU)!*aHU^{kwN>$AL{DsfT^GAvFJcdL;#c0EE78z*3|6R=NKE?wqj9V&;lN~ zuvvwU_DEwIXcCJyhPGu(-x&CTf09kNYyO660u6aR){GD8UstX<<=&x%#{Y!2*0bw=VX&_wo;{;__IJ}_ zt$?>n|59S9HTG>4FMmM@NAPW6ctALT0=y>%j@HPxeVqGCVSR#^mRsVZTzjteqo8Vy z2n3qs4Ke}0eczmwAOTj!?dFbOP@8KZo1C>!(Z7|=IjEY1)Hc=yC&sS98o0HO zh54>dKPWUb8JO+$ac_!-JNjdxj7=uOy$m-wv@she95y9nH49akz(675qu@^Naauki zyihK!zns4zW|dq{e=7q$D2LHniW`-L|1e|MatjX&C5aRXdR#H)ENR61ex!BC&1Lm{ zsaZE~i1>7*2na@C%u@tYGL(B1lM>?mKhABJ+1NEwbc6ukTp{&lVr8|X;8KDLl>`;y zXHZhIC3OUmWCbgpd_IPR-smD!MA4yy`+svZxDe#3scMN485E*x{_0(~3-dW6lCji3qdqhJH= z0&p;2@KUu`iTQe=rJoon7NUIj&+PfJD!j5jW2a1KulbBcf%@S6OMt3xa5=mu=nRyq zI00}t;(p=TgB1I(uOk{-rDqsr8*T8s3Q6$fRae-GQBl0t9(EqwPvVh;QelD7JL*bY zhPc&6&%1pkjhjE(1%dwtqh&KAa5;3Nug5p zRIlrhvz9w8YPJ2srY@d;ku%p$s&k2m@^hh}DkI+cq~(l=Ed(mn)I_w909KvlIDO zNl{hRWU9!c*~8Cd#PYP$v*JSDGky@-78>-f3}AiE0qi&eJW{fAQFHNRPiG)Ifd(rv zxJ27He4f1aqAb%gtyDWR5S;wpoDJC&0BWiv%fjRUW`O$dv>--%(}2FSvkgC70fyB6 zw1Y@g{Ph6FCeUVU1Td9dg)Cn(KFb$7w@m=$a+2?Z5$jK7Siy>#QTHN)`^2oXZ+`>L zt71s+EB_whSOPfBA%>cEgaJz|sciJO6#xWv5LkN-uBJu61`x=vPseezTKg#$B`6Pg zd7^1_q~_dU84IM)O3Xu#t9=E|)hL6PmdvlbtaqC_^xsDTBg@oSzpxc>|F!^sl*u@( zs_Uf>N?zGp_(-kXv>ZG<2_P)S>fH^aI2K^wzPA9N%S(gGXP3W6mX=i;EKg}J#Q8%` z&C#gOlzCPBp#zXhS4ddMBCb6Nf9;;A7)JqnPa0`Z~*C_po!hxa{&}8vtajT*>|HXIUWK7*%fE zHq3^`Lh@$i9oOKe__ktjbAU-S$pb2YQ$PN0Grj-3$kIs-^vzjWbPQqyMSszA;;D0* zG}i+X&cVA`X0VxC{P5f=_Sn3uDG4^o_I=|RSC3=aO#mBI8UrkGE`0UC1<{~H$)a?} z;HfZ+Z(ek?IX^V}sm}vX8+PYoV?<+1W%yX>aL=K=+{vxHkk!1`ng$CKr0|Y(Y zHSN7u?bVLfaB=rO0E8!C50q#u494gAu&=nSYtk`?=8ZnZj7*P9QQwx;E~!}?3~Vg37#5< z+n}>=&0!5S$y9kqnpWPsL&|9b44k<}PRir)E}|WTbYhDK8Ts%wL2UqSRFQ@clJw=q zClnSIL2?$+Dop@y*wiZ?hHsqTXO0)(Dx>8ondb$jUAC&Zv3xlYzWm`)-R`0g9vo-^ z9z1ht3#JyW>oA$N;^TpbWy{EZ#)wGJ1~=G~K1$=iF9SN?0{Q(Thm(smn1|Dss$`~3 zN@BC1y~BO*uzEZ(nATAkw*~;6?Qw9pCy^9rZsz5{;kR8Je$Wt(s#I~};k%7`cX+qn zH3BIV#oR=`3MGZP{CK`hq6T4ccF`g@;do}gmV};uTsf7_u~iUcB^oJ4Dzjya{OCff z|8v3GGT8SovpgZ_E#d$M0=l1-J=dx^(t4mN3h8+tl$m0f#*!o@j}*w)f-M_A6CUo) zcQjmbBtN>?L(pTptBGgBTxMA?()@h?<59?Fr{|=`ch-~HxES=5+*FA&aD-XZzki+t zpHl1HKU7Q;Z9F3IzSt{)_KrAv*WVr@kAq{#T<~E~=&ZoUKJ=~Kv&6=Jm*RBB@G953 z&|+YWrj+{d7?9y#U*4!~*g>c{&kaqYD<_P#9C7l+$x$Y<>RM1oc!u@a)hicjCJ0|y zM4bden^YAL)nJ~zxLGpn{0pvZnGf1pxv87l8$1%OqY^2E(+;|5XA)CO5&H{%8>}iK zY@&gJ4!`Em`zjT$dDs{PID-ri3|;_JB1EWt_Cz*F@1I3!p+8k!s}SoBPr*iX*m_FW zC2KNOvTGI9(G%@3|H3!4$(RV%#tPQM#D|v(UGCWL^*v#}&uY!je2%zmePj>y+?NuHJJ*&IG?tT>j;qGTZ#?I1ztxjAJu12heCCaM>sR7xXjw4t)pUyuKl%% zr}}&1O>`^GIujyB{feVh#8Cs^lSY-tC9<0?kL}^aRJp9HO-eeX2bL0<`wN+ui?44) zA?cHGSH7pw|@A3ez$TxhrPn z^r3Y7c>eyJa7v8!e0gXYZQ=5YXn|q`(ce{44`O$7>Tr9IktdfUlaR{K zM=I6Xw9fbH-t)8l5@ymmGbv>+yJx$}c_wVvPxESAb z3a)rh&p5Ds%=bOSk{Ft}5}&>ZtnF6ih|Ef&zKV|179Yfikt{6o{J-|D`>E;e+kQ~4 z;>D+M#&|Kl~+S$AS*C3yZH#L)40 zHnf<rSlL2)47k&_i1Xh!YaM>Ye?5Kv=aOe{;2w4QXY?MI>JoV`WkF0MlrlMKkio&w z0RX1#F_WK^D_QI5HZ;R6ZIe~L8D{Rb5Os9(Cd}J3z--cEXjtDuEgt(eO0fM3Ob@Oc zO&0;wWe>quD8)nmsh%Dl4)_R4u9ag3yJd0?5k!p~*%Ywrj2G*1kJ|QwQs#-dxy(uE zT}hn-OSdz!E3|qzZPI%daT&LsrhtW zK=dyRtw?dYlq++)FJTnRkB+ou^akr~W^b`uP?x^kiBNpD)Cc}dg~FZ*WoO^| zL2$r5t|8$Xwf8X{Q$57*S-=h4`~X95(xwBLo4lids65HrF!Hai0Y4ehBWTqICIO3X zuie{26kRlSBhi;gFn-6ig!#0g^QLHIF-q}s;um;!VE6EW%LijMX@sV=#BqH z@*Rbarz7nrxXRF>tIv(iaXAVc=iS;cy<$UMT$&}1nki;d zvXr>}RVc32MtJ3RR=90?5{+WBW#yH;G0|RNNiDzIZnw)%&Z_mCLeR>xBY7p(%HRPb ze&ba?+@O6(|J&!Le&eJM9iD9_vfi9jAu+-!J+3Dmnudc@97x|G3T z$vx&FpbtKbj+F2Y305J_W>VN&8~zR(CDcJ2@m0m8Htm)eIp|FZ( z7oWVr>@$nYT|!IKdY#!h)9%sLoU4jEZBCkQHZQSard?aI_j8v~;?jGx1J@BJ#MnQ_ zfp;U~9ICax;y}#;1Ln8cyq><>XW!!VnRUsP_HDqJiCSn@% zu)6Jg2ON}|3Izq$;9)=~HTgc)2<%6jT?@?GfK}metwDlgs(P1CW#N5W+1To?m+W;9 zUf6!8y*%)w_cm)W=Y4dA_5Hh&OcpCTYWR8buC9o>5o73yPDIbo>c z8_GDC-tdAmZ7^YXjlTv`5RH3E@q_d8cV4CXhyWNnZ&SGon)wz+V7Lz&9mONOUE?Fq z7oFvrlt(OoTlhF#AuB}5DGI$Gl5hYkA3LOXiP!7Ky7 zii(d>PU5|Qujj(%)LeTYdoip-?UJecDRjYbJF@s)4Jc=^kJ$VBg}FfLfTb!_KRXJo4-1 zhLJGy&Z)?tRgyhERrcnUIcsROdG8G%CTb#+k`G4OTX`w$QUviYR)d0qg3V{yF@?zR zE}z=p71*mDgNfw@Ek$*8%iSfEn?PsGY3rKncliaHukzEz+A;ZD5NJd(jClX#!2o>A zTT&n6lfeHDi41kI9?ux!a=A9DG!g(DsqzHVfBE^=zvI*5lJ?KA-YvQoE%M(-h0nMc zbg<4lxvHXt2gd7$;hh1ST>E(64_+RRUvWSlB7p3?vtlPHD_A!`1n=^5^+lCZANmeS zCf;)8<@bcjpbZ6i1>~P7!7-Ne$ur+vdkqKkYOn7yJ~lO_j{dI0SRE7rE@S1u%B3wT zl>M1k!79f3+E)4?h`efE9_P`Be^j=6qc%>>Gkoh4yt}aO!mjGhw-8m=#)?YMzW9;7 zeoxEZK(JFOJE=W;WmQ`CSH&}QNLPC3ysCx7Q zj>V&aBz28eu_)_$yL+NJ&FrhTdoB`J1lB3CY6>?>_ze0^?Ds;!4*S3~B=oP~dg>L` zNdMvN%=f)*x`B^bihE~-8V@pPQ?x%df};He zgAiQ>8BQ#;(;;{x`l0s0N?!H%9?OImdk~l=3{gO8rJn`>_AT?4#61sZWNs+95Yzqk zwbNZk(J}sC@tOu&PsvN5LLJ5@(A7uuhZ`a&-kZ;YnH_`eqBkrivk9i9wSSp$0X^3X z0I{Yi`osdwt)4Q2>ig?s!?edW0a zLh%i(+}sZ*Z6(xAUj#bO$#{u7gYHx*%CQ2;asAxX)Hj;=t};ZFm4s4?S@w465o$6l=LY^Q3-D%ANwm3>k?$j8wU00_zA#3^r$ zvVv~s5X1<&cS_~su)>7)uHf2PU06wrn;C50A*6qd#Chl?xY$hm-t&D#Hx$F@j6FF$ zdn0fOH|_t(jyj{{?dxfq%RxygIvN7NT;k){I`fLk&~<{v5ZVGZuL%Q%1{FqbMeqOW zx7M=I;f*V}N9&QL$Cmkp?$<_UwblRn83NJeJYzE=Jz96tVs<~D<;Nr- zQ)-A?`9X6pUT;UI8Pqj!5-o?Oo=#;dhr1Ox$LV|BFG)V&|CbMCZuJ}2Gn2M#bQj?LvQBv3JFZ~E?Mx{uZ1>t zU`E~gQF)uSRMcfxI8@%;IA`#wk=v7`CjP=cymn+d5k-qBys9{HTBR{8=AyuRp) zutBVWG7ulL-MNPT&lk8;pQgET-a*tFWnUjiL>RU5i`h?4&s^m5TK1JsPY!c=3wj z5QPSU4ugeEGvmdI05LR_p@eJAGR8@XrR|(#cg;e1kmaM&Ow4_gQxNPavEL*H0RVM% z$lS?Q|MfZh&dTmcA7dV8_Chl;t1YKM2GMs(HCzAyw<-?}m*AWG(k&3sdX0+=g|HJp zV1N2_2PEowEJ};0$^TasTY5%R1^{G5MN|#VtJ-a|IY#Vs*G3ov(N-+wZ;nW|aD)~I zI7o!>AcmIYn%pna2R11m%+=C7eb<})9dJn*oIw03>3o{B5YI5VQCKgx-gq3GP5$9t z(uT81S*p5xXoP08l$bP{!Hmyl5ol3n{&af+?NN0Qt)tv3uDn^#IOUPF2+C=_xgjY= z0}SfOCIdjH@9Fm!6pgw)`m?gqn*uj0>MW#y|6l)?fm{4tgTTyzKM$X?Uix?Ij*-Rf J8p9{g{|9{+rKSJ? literal 0 HcmV?d00001 diff --git a/.gitbook/assets/Throwable.png b/.gitbook/assets/Throwable.png new file mode 100644 index 0000000000000000000000000000000000000000..d74b4447aceb8ee2b8ddfc69421904d06e6408be GIT binary patch literal 7872 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Π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

vSY|L&^ONdW z5uiMR5KLuZDOySQxmR{CSC0WygkS|jYyq=of9fqkjLX_$IX*umBv%XIbQWblqv!RMSzP1ASLPTr?X zyxa#lKGWiU)>o)KMsu1IsnGUZO3kM72LmN4FveuDq9?4-eS#ITFVfXb9}N>3X^F

`z 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�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

s0c3 zRF%SC20p9a_0AeexYk~i>mAcDpkNt?b(ipKvU)4ye%>Cf5hXE-2r19BE5!}O6pI|! zu!*0VZ2s*#h8K1%$}Av-uS`QQ{5fRJUXAp`2WU{)leF|VL3ngsxaXyN*o>EjWPv<1{=ljAzSg^eSqoMP}GrB0D%5U4)X5FwM{wG^bgNGH7-Y!Aul04W4DDR^>0 z3%V6wzP4AVoi9K=&KH22e66{buN45rcMS<)kAMC~Ak4c`Xf_XfEw8+SY7QzDDHWT^ zR0RAEpmU+`w(2F_?$FfCF-N9&%-1a|yUz1Ww1fhidCz_9k^^-lM#1Ds zXz$}Wheul1z&2`)Z$SH7jSeRaW_68yBCCJAvMvSBkj>H9ziWJTaKqsILw<=${s~RO zn16DT%#! zS=M)I*PqIDwY+)J9n%D8nP9v|hjM+MPdv0aa}+fH<$9C&*Nq{RKluZA&g5`Y)5_;vZt9wh< zky4|g&8gFcz_lU&31fIXWrTqdf(IlCS2A?%igafQqL%H#mT{;-K4TlAkG3<=4JbnO z)S*1dBBQ~Z;q7_?0XIZn3~&Y|Q7=-Qf!0$+udjL$pephbZ*7P};gnOU+$)c8`A=AC zdM+bV%Lz#Z!){Gxsq4G_1{N->7W8kDFXC=5+M|3U{>;`NoChC*MVSTFtN8v`JTkO8 z373K}PW;jZVuY)QaX5?NusW9?(s8);A1a|^C&E{5LgH~_l#}CQm!|OFCksBjgVp%w zA}TWxrt#heaa0!9r{SB=K$EQDDd(@ZvEj6ZTD_|=Bbo%*t&bu5jtPq3tG?-%119-m zHZ2kzz`|T z5OZGa`}kvCFGDLO3LDy>-tMHPMYw4b*>O^|tE?d?mT*_J?!!S?^;Vkjh@Bs@|cV@j80(K8EVYJw|le0)y)Jr6q6?;_7F`?%M5S)uoy?eqfJ7uZCy-6Xp;d@NX~Vgb;PjXl1QV z8^5*D+)Y8k@W_S(@@xjCRYkTBkLhM$wj41x7fM(HWGWt`b4q(0!QcNtJ5t|Kf@P#6 z47~^tTLIXZC2EI%brN*kW@%`XQj>ik^fCqWO2Es-V|u7c<4o;!#-Gknxmvu!C4lki z+-+dApI`&DO$I}L(YgyzZhIgE8b?}=sTQ|l1{s)TDrSd@-KAnXqWn0YOXk_Ql05HS zilr2o%K33Q8$>t&pNdBY;gO+nHh*yFXo|4|&ui9;*t>9imx1Eo(e_?w_ckv? z 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

d&vxUsWF03KFDBJxSnOFd6($!o8WMu8+u}= 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�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

AHbP%wS2aP2;%%n7 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%0A7{j82gI#!r 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 z%0A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 D_r%8E literal 0 HcmV?d00001 diff --git a/.gitbook/assets/package_structure.png b/.gitbook/assets/package_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..824e20350e48bfcd150519f7f4b8981c4cd135bd GIT binary patch literal 35128 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 - Set - HashSet - LinkedHashSet - SortedSet - TreeSet - List - ArrayList - Vector - LinkedList - Queue - LinkedList - PriorityQueue + Set + HashSet + LinkedHashSet + SortedSet + TreeSet + List + ArrayList + Vector + LinkedList + Queue + LinkedList + PriorityQueue Object - Arrays - Collections + Arrays + Collections Map - HashTable - LinkedHashMap - HashMap - SortedMap - TreeMap + HashTable + LinkedHashMap + HashMap + SortedMap + TreeMap ``` +**লিস্ট \( List \)** -**লিস্ট ( List )** - -লিস্ট `List` একটি ইন্টারফেস যেটি সরাসরি `Collection` ইন্টারফেসকে এক্সটেন্ড করেছে । এটি যেহেতু একটি ইন্টারফেস ( `interface` ) তাই আমরা সরাসরি এটার কোন অবজেক্ট বা ইন্সট্যান্স ক্রিয়েট করতে পারবো না । এজন্য অবশ্য আমাদের চিন্তার খুব বেশি কারন নেই । `List` ইন্টারফেসকে ইমপ্লিমেন্ট করেছে `ArrayList` , `Vector` এবং `LinkedList` ক্লাস । আমরা খুব সহজে এগুলার মাধ্যমে `List` এর অবজেক্ট তৈরি করতে পারি । `List` হল আনসর্টেড অবজেক্ট কনটেইনার যেটি ডাটা ডুপ্লিকেসি সাপোর্ট করে । মানে একই ডাটা একাধিকবার থাকতে পারে লিস্টের মাঝে । +লিস্ট `List` একটি ইন্টারফেস যেটি সরাসরি `Collection` ইন্টারফেসকে এক্সটেন্ড করেছে । এটি যেহেতু একটি ইন্টারফেস \( `interface` \) তাই আমরা সরাসরি এটার কোন অবজেক্ট বা ইন্সট্যান্স ক্রিয়েট করতে পারবো না । এজন্য অবশ্য আমাদের চিন্তার খুব বেশি কারন নেই । `List` ইন্টারফেসকে ইমপ্লিমেন্ট করেছে `ArrayList` , `Vector` এবং `LinkedList` ক্লাস । আমরা খুব সহজে এগুলার মাধ্যমে `List` এর অবজেক্ট তৈরি করতে পারি । `List` হল আনসর্টেড অবজেক্ট কনটেইনার যেটি ডাটা ডুপ্লিকেসি সাপোর্ট করে । মানে একই ডাটা একাধিকবার থাকতে পারে লিস্টের মাঝে । -`List` ডিক্লেয়ার করার নানা ধাপঃ +`List` ডিক্লেয়ার করার নানা ধাপঃ ধাপ ১ঃ @@ -89,7 +88,9 @@ public class Main { } } ``` + ধাপ ২ঃ + ```java import java.util.ArrayList; import java.util.List; @@ -115,7 +116,7 @@ public class Main { ওকে অনেক হয়েছে । এবার কাজের কথায় আসা যাক । `List` নিয়ে কিভাবে কাজ করা যায় সেটাইতো জানা হলোনা এখনো ! ওকে আর বেশি বক বক করে আপনাদের ধৈর্য্যের পরীক্ষা নিবনা । প্রথমে আমরা দেখবো কিভাবে একটি লিস্টে ডাটা অ্যাড বা অ্যাসাইন করতে হয় । -**লিস্টে ডাটা ইনসার্ট(Insert into List)** +**লিস্টে ডাটা ইনসার্ট\(Insert into List\)** ```java import java.util.ArrayList; @@ -131,12 +132,12 @@ public class Main { } } ``` -উপরোক্ত কোডে `` দিয়ে বোঝানো হয়েছে এই লিস্টটি কেবল ইন্টিজার টাইপ ডাটার জন্য কাজ করবে । এটিকে জেনেরিক বলা হয় । চ্যাপটার ৮ এ আপনাদের এ বিষয়ে জানা কথা । তারপর `ArrayList` এর কনস্ট্রাকটর দিয়ে `list` অবজেক্টকে ইন্সট্যানশিয়েট করা হয়েছে । `add` মেথড এই লিস্টে একটি একটি করে ডাটা অ্যাড করে এবং একটি বুলিয়ান ভ্যালু রিটার্ন করে । যদি কোন কারনে কোন ডাটা অ্যাড করতে ব্যার্থ হয় তবে `false` ভ্যালু রিটার্ন করে । -`add(int index, E element)` মেথডটি যেকোন একটি এলিমেন্ট লিস্টের নির্দিষ্ট ইনডেক্সে ইনসার্ট করে । `addAll(Collection c)` মেথডটি ইনপুট প্যারামিটার হিসাবে অন্য কোন একটি লিস্ট বা কালেকশন নিয়ে তার প্রতিটি এলিমেন্ট একটু একটি করে এই লিস্টে ইনসার্ট করে দেয় । `addAll(int index, Collection c)` মেথডটি ঠিক আগের মতই কাজ করে । নির্দিষ্ট ইনডেক্স থেকে অন্য একটি কালেকশনকে ইনজেক্ট করতে থাকে নতুন লিস্টের মাঝে । +উপরোক্ত কোডে `` দিয়ে বোঝানো হয়েছে এই লিস্টটি কেবল ইন্টিজার টাইপ ডাটার জন্য কাজ করবে । এটিকে জেনেরিক বলা হয় । চ্যাপটার ৮ এ আপনাদের এ বিষয়ে জানা কথা । তারপর `ArrayList` এর কনস্ট্রাকটর দিয়ে `list` অবজেক্টকে ইন্সট্যানশিয়েট করা হয়েছে । `add` মেথড এই লিস্টে একটি একটি করে ডাটা অ্যাড করে এবং একটি বুলিয়ান ভ্যালু রিটার্ন করে । যদি কোন কারনে কোন ডাটা অ্যাড করতে ব্যার্থ হয় তবে `false` ভ্যালু রিটার্ন করে । +`add(int index, E element)` মেথডটি যেকোন একটি এলিমেন্ট লিস্টের নির্দিষ্ট ইনডেক্সে ইনসার্ট করে । `addAll(Collection c)` মেথডটি ইনপুট প্যারামিটার হিসাবে অন্য কোন একটি লিস্ট বা কালেকশন নিয়ে তার প্রতিটি এলিমেন্ট একটু একটি করে এই লিস্টে ইনসার্ট করে দেয় । `addAll(int index, Collection c)` মেথডটি ঠিক আগের মতই কাজ করে । নির্দিষ্ট ইনডেক্স থেকে অন্য একটি কালেকশনকে ইনজেক্ট করতে থাকে নতুন লিস্টের মাঝে । -**লিস্ট থেকে ডাটা রিড করা(Read from List)** +**লিস্ট থেকে ডাটা রিড করা\(Read from List\)** উপরের কোড সেগমেন্টটি মনে করলাম আছে । আমরা কেবল ডাটা রিড করার জন্য কোডটি লিখবো । আমরা বেশ কয়েকভাবে দেখবো যে কিভাবে একটি লিস্ট থেকে ডাটা রিড করা যায় এবং এর মাধ্যমে আরো কিছু মেথড সম্পর্কে জেনে নিব । @@ -144,32 +145,34 @@ public class Main { ```java for(int i=0; i { System.out.println(x); }); @@ -246,7 +248,7 @@ public class Main { } ``` -এখানে আমরা `Collections` ক্লাসের একটি মেথড `sort` যেটি ইনপুট প্যারামিটার হিসাবে একটি লিস্ট অবজেক্ট নেয় এবং সেটিকে ইনপ্লেস সর্ট করে দেয় । অর্থাৎ এই মেথডের রিটার্ন টাইপ ভয়েড । এবং এটি অ্যাসেন্ডিং ( ছোট থেকে ক্রমান্বয়ে বড় ) অর্ডারে সর্ট করে । +এখানে আমরা `Collections` ক্লাসের একটি মেথড `sort` যেটি ইনপুট প্যারামিটার হিসাবে একটি লিস্ট অবজেক্ট নেয় এবং সেটিকে ইনপ্লেস সর্ট করে দেয় । অর্থাৎ এই মেথডের রিটার্ন টাইপ ভয়েড । এবং এটি অ্যাসেন্ডিং \( ছোট থেকে ক্রমান্বয়ে বড় \) অর্ডারে সর্ট করে । আমরা যদি ডিসেন্ডিং অর্ডারে সর্ট করতে চাই তবে আমাদের আরেকটু কাজ বেশি করতে হবে । আর সেটি হল `sort` নামক মেথডে আরেকটি প্যারামিটার পাস করতে হবে যেটি আসলে একটি `Comparator` অবজেক্ট । যেটার মাধ্যমে আমরা বলে দিব যে আসলে সর্টটি কোন অর্ডারে হবে বা কোন এলিমেন্টের সাপেক্ষে হবে । কোডটিকে সেক্ষেত্রে আমরা এভাবে লিখতে পারতাম, @@ -266,16 +268,16 @@ public class Main { list.add(13); list.add(17); list.add(3); - + Comparator comparator = new Comparator() { @Override public int compare(Integer t1, Integer t2) { return t2-t1; } }; - + Collections.sort(list, comparator); - + list.forEach((x) -> { System.out.println(x); }); @@ -283,8 +285,7 @@ public class Main { } ``` -উল্লেখ্য এখানে `Comparator` একটি ইন্টারফেস এবং এবং `compare` একটি `abstract` মেথড তাই আমাদের এটিকে ইমপ্লিমেন্ট করতে হয়েছে । ‍`compare` মেথডটি একটি ইন্টিজার নাম্বার রিটার্ন করে । দুটি অ্যাট্রিবিউটের মাঝে কম্পেয়ার করে পজেটিভ, নেগেটিভ বা শুন্য রিটার্ন করে । শুন্য রিটার্ন করা মানে দুটি সমান । পজেটিভ রিটার্ন করা মানে প্রথমটি বড় আর অন্যথায় ছোট । -আমরা আলাদা ভাবে `Comparator` এর অবজেক্ট ক্রিয়েট না করেও কাজটি করতে পারতাম ইনপ্লেসে । সেক্ষেত্রে এরকম হতে পারত, +উল্লেখ্য এখানে `Comparator` একটি ইন্টারফেস এবং এবং `compare` একটি `abstract` মেথড তাই আমাদের এটিকে ইমপ্লিমেন্ট করতে হয়েছে । ‍`compare` মেথডটি একটি ইন্টিজার নাম্বার রিটার্ন করে । দুটি অ্যাট্রিবিউটের মাঝে কম্পেয়ার করে পজেটিভ, নেগেটিভ বা শুন্য রিটার্ন করে । শুন্য রিটার্ন করা মানে দুটি সমান । পজেটিভ রিটার্ন করা মানে প্রথমটি বড় আর অন্যথায় ছোট । আমরা আলাদা ভাবে `Comparator` এর অবজেক্ট ক্রিয়েট না করেও কাজটি করতে পারতাম ইনপ্লেসে । সেক্ষেত্রে এরকম হতে পারত, ```java Collections.sort(list, new Comparator() { @@ -301,12 +302,10 @@ public class Main { Collections.sort(list, (Integer t1, Integer t2) -> t2-t1); ``` -কাজ বেসিক্যালি সব একই ভাবে করছে । - +কাজ বেসিক্যালি সব একই ভাবে করছে । এতক্ষন আমরা দেখলাম প্রিমিটিভ টাইপের ডাটার একটি লিস্ট সর্ট করা । এমনতো হতেই পারে যে আপনার কাছে একটি কাষ্ট টাইপের অবজেক্ট কনটেইন করে এমন একটি লিস্ট সর্ট করতে হবে ওই অবজেক্টের নির্দিষ্ট কোন এক বা একাধিক প্রপার্টির সাপেক্ষে । সেক্ষেত্রে করনীয় কি সেটা এবার চলুন দেখে ফেলি । - ```java import java.util.ArrayList; import java.util.Collections; @@ -359,10 +358,8 @@ public class Main { Collections.sort(list, (Employee t, Employee t1) -> t1.age – t.age);//descending order ``` - এবার আমরা একটু ভিন্ন একটা পদ্ধতি দেখবো । যদি এমন হয় যে আমাদের এই ক্লাসটি প্রায়ই সর্ট করতে হয় এবং নির্দিষ্ট একটা অর্ডারে সর্ট করতে হয় , সেক্ষেত্রে আমরা একটা বিশেষ কাজ করতে পারি । আমরা `Comparable` ইন্টারফেসটি ইমপ্লিমেন্ট করতে পারি । `Comparable` ইন্টারফেসের মাঝে `compareTo` মেথডটি অভাররাইড করলেই কাজ শেষ । অ্যাসেন্ডিং বা ডিসেন্ডিং আগের মতই । তবে চলুন দেখি কিভাবে সেটি করা যায় সেটি দেখে ফেলি । - ```java import java.util.ArrayList; import java.util.Collections; @@ -408,7 +405,7 @@ public class Main { } ``` -এভাবে খুব সহজেই আমরা একটি অবজেক্টের লিস্ট সর্ট করতে পারি । তবে একটি বিষয় লক্ষ করার মত বিষয় হচ্ছে যে আপনাদের যে ২ প্রকারের সর্ট দেখানো হয়েছে অবজেক্টের লিস্টের ক্ষেত্রে এই দুই প্রকার কিন্তু একত্রেও ব্যাবহার করতে পারবেন । তবে সেক্ষেত্রে প্রায়োরিটি পাবে ক্লোজার ফাংশন । চলুন দেখি বিষয়টা কি একটু দেখে নেই । +এভাবে খুব সহজেই আমরা একটি অবজেক্টের লিস্ট সর্ট করতে পারি । তবে একটি বিষয় লক্ষ করার মত বিষয় হচ্ছে যে আপনাদের যে ২ প্রকারের সর্ট দেখানো হয়েছে অবজেক্টের লিস্টের ক্ষেত্রে এই দুই প্রকার কিন্তু একত্রেও ব্যাবহার করতে পারবেন । তবে সেক্ষেত্রে প্রায়োরিটি পাবে ক্লোজার ফাংশন । চলুন দেখি বিষয়টা কি একটু দেখে নেই । ```java import java.util.ArrayList; @@ -455,7 +452,7 @@ public class Main { } ``` -এখানে যদিও `Employee` ক্লাস `Comparable` ইন্টারফেস ইমপ্লিমেন্ট করেছে এবং `compareTo` মেথডে বলে দেওয়া হয়েছে `age` এর অ্যাসেন্ডিং অর্ডারে সর্ট করতে হবে কিন্তু এটি সর্ট করবে `salary` এর ডিসেন্ডিং অর্ডারে । কেন সেটা করছে সেটা নিশ্চয় বুঝতে পেরেছেন । +এখানে যদিও `Employee` ক্লাস `Comparable` ইন্টারফেস ইমপ্লিমেন্ট করেছে এবং `compareTo` মেথডে বলে দেওয়া হয়েছে `age` এর অ্যাসেন্ডিং অর্ডারে সর্ট করতে হবে কিন্তু এটি সর্ট করবে `salary` এর ডিসেন্ডিং অর্ডারে । কেন সেটা করছে সেটা নিশ্চয় বুঝতে পেরেছেন । আপনারা চাইলে কিন্তু `List` এর অন্তর্গত `sort` মেথড ব্যাবহার করেও সর্ট করতে পারতেন । সেটা করার জন্য খুব বেশি কিছুই করতে হতনা । সেটি অলরেডি আপনারা জানেন কিভাবে সেটি করা যায় । @@ -465,11 +462,11 @@ public class Main { public int compare(Employee t, Employee t1) { return t1.age - t.age; } - + }); ``` -বেসিক্যালি এভাবে খুব সহজেই একটি লিস্ট সর্ট করা যায় । আপনারা আরো বেশি আগ্রহী হলে ওরাকলের ডকুমেন্টেশন পড়তে পারেন । আরো বেশি পরিষ্কার হবে ধারনা । +বেসিক্যালি এভাবে খুব সহজেই একটি লিস্ট সর্ট করা যায় । আপনারা আরো বেশি আগ্রহী হলে ওরাকলের ডকুমেন্টেশন পড়তে পারেন । আরো বেশি পরিষ্কার হবে ধারনা । +## –-------চলবে-------- -#–-------চলবে--------# diff --git a/12.md b/12.md index 165a0ba..a94228c 100644 --- a/12.md +++ b/12.md @@ -1,4 +1,4 @@ -# পাঠ ১২: জাভা জেডিবিসি +# পাঠ ১২: জাভা জেডিবিসি * জেডিবিসি ভূমিকা * জেডিবিস ড্রাইভার এবং টাইপস diff --git a/13.md b/13.md index 196d875..0d16ecf 100644 --- a/13.md +++ b/13.md @@ -1,4 +1,4 @@ -# পাঠ ১৩: জাভা লগিং +# পাঠ ১৩: জাভা লগিং * সাধারণ ব্যবহার * লগার diff --git a/14.md b/14.md index 45db257..8a9071b 100644 --- a/14.md +++ b/14.md @@ -1,4 +1,4 @@ -# পাঠ ১৪: ডিবাগিং +# পাঠ ১৪: ডিবাগিং * ডিবাগিং ফ্লো * ডিবাগার দিয়ে ডিবাগিং diff --git a/15.md b/15.md index bb06780..ce56982 100644 --- a/15.md +++ b/15.md @@ -1,4 +1,4 @@ -# পাঠ ১৫: গ্রাফিক্যাল ইউজার ইন্টারফেইস +# পাঠ ১৫: গ্রাফিক্যাল ইউজার ইন্টারফেইস * সুইং * কনটেইনার, কম্পোনেন্ট, ইভেন্ট, লিসেনার এবং লেআউট diff --git a/16.md b/16.md index 68294e8..5745f31 100644 --- a/16.md +++ b/16.md @@ -1,4 +1,4 @@ -# পাঠ-১৬: থ্রেড +# পাঠ-১৬: থ্রেড * থ্রেড কি * থ্রেড কনস্ট্রাকশন diff --git a/17.md b/17.md index 77167e5..6598782 100644 --- a/17.md +++ b/17.md @@ -1,4 +1,4 @@ -# পাঠ ১৭: নেটওয়ার্কিং +# পাঠ ১৭: নেটওয়ার্কিং * সকেট * ক্লায়েন্ট/সার্ভার diff --git a/18.md b/18.md index 5ad1f90..22ccfe0 100644 --- a/18.md +++ b/18.md @@ -1,4 +1,4 @@ -# পাঠ ১৮: জাভা কনকারেন্সি +# পাঠ ১৮: জাভা কনকারেন্সি * ভূমিকা * বেনিফিট diff --git a/19.md b/19.md index b86b09c..03ded55 100644 --- a/19.md +++ b/19.md @@ -1,4 +1,4 @@ -# পাঠ ১৯: ক্লাস ফাইল এবং বাইটকোড +# পাঠ ১৯: ক্লাস ফাইল এবং বাইটকোড * ক্লাসলোডিং এবং ক্লাস অবজেক্ট * MethodHandle diff --git a/2.md b/2.md index 60b82bf..cb97cef 100644 --- a/2.md +++ b/2.md @@ -8,101 +8,105 @@ * কন্সট্রাকটরস * কমেন্টস -এই চ্যাপ্টারে আমি একটি জাভা প্রোগ্রাম এর মৌলিক কিছু ওভারভিউ দেয়ার চেষ্টা করবো। তবে শুরুতে সুবিধার্থে আমাদের কিছু টার্মস সম্পর্কে জেনে নেওয়া জরুরি। +এই চ্যাপ্টারে আমি একটি জাভা প্রোগ্রাম এর মৌলিক কিছু ওভারভিউ দেয়ার চেষ্টা করবো। তবে শুরুতে সুবিধার্থে আমাদের কিছু টার্মস সম্পর্কে জেনে নেওয়া জরুরি। - **অবজেক্ট** - -যেহেতু জাভা একটি অবজেক্ট ওরিয়েন্টেড ল্যাংগুয়েজ, সুতরাং শুরুতে জানতে হবে অবজেক্ট কি। অবজেক্ট এর মানে আমারা যা জানি, সেটা হচ্ছে আমাদের জড়জগতের কোন বস্তু, যাকে ঠিক স্পর্শ করা যায়। তবে যেহেতু আমরা কল্পনা করতে পারি, আমরা অনেক কিছু ধরে নিতে পারি, মনে করুন - একটি বাইসাইকেল। বাইসাইকেল বলতেই আমদের মাথায় একটি চিত্র চলে আসে। আমরা এর বৈশিষ্টগুলো জানি, যেমন এটির দুইটি চাকা থাকে, একটি বসার সিট থাকে, এর ব্রেক আছে। তারপর এও জানি যে এটি কি করে, অর্থাৎ সাইকেল এর কাজ গুলোও আমরা জানি- যেমন এটি চলে। দেখা যাচ্ছে যে আমরা একটি বাইসাইকেল এর অবস্থা ও আচরণ সম্পর্কে জানি। এই অবস্থা ও আচরণ গুলো নিয়েই বাইসাইকেল একটি অবজেক্ট। +**অবজেক্ট** -আমরা যদি আমাদের কল্পনাটুকু আরেকটু বাড়িয়ে নিয়ে বলি, সাইকেল হচ্ছে একটি সফটওয়্যার কম্পোনেন্ট যা কিনা কম্পিউটারে চলে, আমার মনে হয় কারো আপত্তি থাকার কথা নয়। +যেহেতু জাভা একটি অবজেক্ট ওরিয়েন্টেড ল্যাংগুয়েজ, সুতরাং শুরুতে জানতে হবে অবজেক্ট কি। অবজেক্ট এর মানে আমারা যা জানি, সেটা হচ্ছে আমাদের জড়জগতের কোন বস্তু, যাকে ঠিক স্পর্শ করা যায়। তবে যেহেতু আমরা কল্পনা করতে পারি, আমরা অনেক কিছু ধরে নিতে পারি, মনে করুন - একটি বাইসাইকেল। বাইসাইকেল বলতেই আমদের মাথায় একটি চিত্র চলে আসে। আমরা এর বৈশিষ্টগুলো জানি, যেমন এটির দুইটি চাকা থাকে, একটি বসার সিট থাকে, এর ব্রেক আছে। তারপর এও জানি যে এটি কি করে, অর্থাৎ সাইকেল এর কাজ গুলোও আমরা জানি- যেমন এটি চলে। দেখা যাচ্ছে যে আমরা একটি বাইসাইকেল এর অবস্থা ও আচরণ সম্পর্কে জানি। এই অবস্থা ও আচরণ গুলো নিয়েই বাইসাইকেল একটি অবজেক্ট। -যেহেতু আমারা প্রোগ্রামিং নিয়ে আলোচনা করছি, সুতরাং এভাবে বলি, আমরা যদি একটা প্রোগ্রাম লিখি, সেই প্রোগ্রামের ছোট্ট একটি অংশ যার আমাদের এই বাইসাইকেল এর মতো বৈশিষ্ট্য থাকে, এবং একটি কিছু কাজ সম্পাদন করতে পারে, তাহলে সেই ছোট্ট অংশটিকে অবজেক্ট বলতে পারি। +আমরা যদি আমাদের কল্পনাটুকু আরেকটু বাড়িয়ে নিয়ে বলি, সাইকেল হচ্ছে একটি সফটওয়্যার কম্পোনেন্ট যা কিনা কম্পিউটারে চলে, আমার মনে হয় কারো আপত্তি থাকার কথা নয়। + +যেহেতু আমারা প্রোগ্রামিং নিয়ে আলোচনা করছি, সুতরাং এভাবে বলি, আমরা যদি একটা প্রোগ্রাম লিখি, সেই প্রোগ্রামের ছোট্ট একটি অংশ যার আমাদের এই বাইসাইকেল এর মতো বৈশিষ্ট্য থাকে, এবং একটি কিছু কাজ সম্পাদন করতে পারে, তাহলে সেই ছোট্ট অংশটিকে অবজেক্ট বলতে পারি। **ক্লাস** -মনে করি আমরা একটা বাড়ি বানাতে চাই। প্রথমে আমরা চিন্তা করি বাড়িটা আসলে কিভাবে বানাবো। আমরা জায়গা নির্বাচন করি। তারপর চিন্তা করি বাড়িটি কত-তলা হবে, কয়টা এপার্টমেন্ট হবে, এপার্টমেন্ট গুলো কত স্কয়ারফিটের হবে। তারপর চিন্তা করি, একটা এপার্টমেন্ট এ কয়টি রুম হবে, ড্রয়িং রুমের দৈর্ঘ্য কত হবে, কয়টা বাথ থাকবে, বেলকনি কোথায় থাকবে, রান্না ঘর কোথায় হবে ইত্যাদি ইত্যাদি। আচ্ছা এগুলো ঠিক হয়ে গেল, এখন আমরা চিন্তা করবো আরও জটিল কাজ নিয়ে। ওয়্যারিং নিয়ে, প্রত্যেক রুমে কয়টা পয়েন্ট থাকবে, পানির লাইন কিভাবে নেব। তারপরে বাথরুমে কি ধরণের টাইল ব্যবহার করবো, ফ্লোরে কোন গুলো। +মনে করি আমরা একটা বাড়ি বানাতে চাই। প্রথমে আমরা চিন্তা করি বাড়িটা আসলে কিভাবে বানাবো। আমরা জায়গা নির্বাচন করি। তারপর চিন্তা করি বাড়িটি কত-তলা হবে, কয়টা এপার্টমেন্ট হবে, এপার্টমেন্ট গুলো কত স্কয়ারফিটের হবে। তারপর চিন্তা করি, একটা এপার্টমেন্ট এ কয়টি রুম হবে, ড্রয়িং রুমের দৈর্ঘ্য কত হবে, কয়টা বাথ থাকবে, বেলকনি কোথায় থাকবে, রান্না ঘর কোথায় হবে ইত্যাদি ইত্যাদি। আচ্ছা এগুলো ঠিক হয়ে গেল, এখন আমরা চিন্তা করবো আরও জটিল কাজ নিয়ে। ওয়্যারিং নিয়ে, প্রত্যেক রুমে কয়টা পয়েন্ট থাকবে, পানির লাইন কিভাবে নেব। তারপরে বাথরুমে কি ধরণের টাইল ব্যবহার করবো, ফ্লোরে কোন গুলো। + +অর্থাৎ বাড়িটি বানানোর আগেই আমরা সব কিছু নির্ধারণ করে ফেলছি এবং আমরা এই বিষয়গুলো সব লিপিবদ্ধ করে রাখি। তারপর এই লিপিবদ্ধ লেখাগুলোকে নানাভাবে পরীক্ষা করে ক্রস চেক করে চূড়ান্ত করি। এর একটি গলাভরা নাম আছে, সেটা হচ্ছে- blueprint. + +আমাদের এক্ষেত্র বাড়টি হচ্ছে অবজেক্ট। এই অবজেক্ট বানানোর আগে আমাদের blueprint এর দরকার হয়। আর এই blueprint কেই আমরা বলি ক্লাস। -অর্থাৎ বাড়িটি বানানোর আগেই আমরা সব কিছু নির্ধারণ করে ফেলছি এবং আমরা এই বিষয়গুলো সব লিপিবদ্ধ করে রাখি। তারপর এই লিপিবদ্ধ লেখাগুলোকে নানাভাবে পরীক্ষা করে ক্রস চেক করে চূড়ান্ত করি। এর একটি গলাভরা নাম আছে, সেটা হচ্ছে- blueprint. +আমরা তাহলে এখন অবজেক্ট এবং ক্লাস এর ধারণা জানি। এবার তাহলে আমাদের মূল বিষয় সিনট্যক্স নিয়ে কথা বলি- -আমাদের এক্ষেত্র বাড়টি হচ্ছে অবজেক্ট। এই অবজেক্ট বানানোর আগে আমাদের blueprint এর দরকার হয়। আর এই blueprint কেই আমরা বলি ক্লাস। +আমরা যারা সি কিংবা অন্য কোন প্রোগ্রামিং ল্যাংগুয়েজ আগে থেকেই জানি, একটি প্রোগ্রামে দুটি জিনিস অবশ্যই কমন থাকে - সেগুলো হলো - ফাংশান এবং ডেটা । -আমরা তাহলে এখন অবজেক্ট এবং ক্লাস এর ধারণা জানি। এবার তাহলে আমাদের মূল বিষয় সিনট্যক্স নিয়ে কথা বলি- +একটি জাভা প্রোগ্রাম লিখতে হলে আমাদেরকে অবশ্যএই একটি ফাইল তৈরি করতে হবে যার এক্সটেনশন হবে .java. উদাহরণসরূপ- HelloWorld.java এবার আমরা লক্ষ্য করি একটি জাভা প্রোগ্রামে কি কি থাকে- -আমরা যারা সি কিংবা অন্য কোন প্রোগ্রামিং ল্যাংগুয়েজ আগে থেকেই জানি, একটি প্রোগ্রামে দুটি জিনিস অবশ্যই কমন থাকে - সেগুলো হলো - ফাংশান এবং ডেটা । - -একটি জাভা প্রোগ্রাম লিখতে হলে আমাদেরকে অবশ্যএই একটি ফাইল তৈরি করতে হবে যার এক্সটেনশন হবে .java. -উদাহরণসরূপ- HelloWorld.java -এবার আমরা লক্ষ্য করি একটি জাভা প্রোগ্রামে কি কি থাকে- +* প্যাকেজ ডিক্লারেশন +* ইম্পোর্ট স্টেটমেন্টস +* টাইপ ডিক্লারেশন + * ফিল্ডস + * মেথডস -- প্যাকেজ ডিক্লারেশন -- ইম্পোর্ট স্টেটমেন্টস -- টাইপ ডিক্লারেশন - - ফিল্ডস - - মেথডস +উপরের নামগুলো নিয়ে দ্বন্দ্ব লাগলে সমস্যা নেই, এক্ষণি সেগুলো নিয়ে আলোচনা করছি, তবে তার আগে একটি জাভা প্রোগ্রাম দেখে নিই। -উপরের নামগুলো নিয়ে দ্বন্দ্ব লাগলে সমস্যা নেই, এক্ষণি সেগুলো নিয়ে আলোচনা করছি, তবে তার আগে একটি জাভা প্রোগ্রাম দেখে নিই। - - ```java +```java package bd.com.howtocode.java.tutotorial.syntax; - + import java.util.HashMap; - + public class HelloWorld { protected final String hello = "value"; - + public static void main(String[] args) { } } ``` - -এই কোডটির শুরুতেই আছে প্যাকেজ ডিক্লারেশন। আমরা আমাদের কম্পিউটারে নানা ধরণের ফাইল বিভিন্ন ফোল্ডারে সাজিয়ে রাখি। যেমন- মুভি ফোল্ডারে হয়তো আমরা শুধুই মুভি রাখি, সেখানে অন্য ফাইল রাখি না। আবার মুভি ফোল্ডারে এর মধ্যে আরো সাব-ফোল্ডার তৈরি করি আরো আলাদা করার জন্যে, যেমন – বাংলা মুভি, ইংরেজি মুভি ইত্যাদি। জাভাতে প্যাকেজ বলতে এই ধারণটিই বুঝায়। একটি জাভা প্রোগ্রামিং ভাষায় লেখা সফ্টওয়্যার এ শত শত বা হাজার হাজার পৃথক ক্লাস থাকতে পারে। এজন্যে প্যাকেজ ডিক্লারেশন এর মাধ্যমে আমরা একি রকম ক্লাস গুলো একটি প্যাকেজের মধ্যে আলাদা করে রাখি। - -উদাহরণসরূপ এখানে প্যাকেজ স্ট্রাকচার এর একটি স্ক্রিনশট দেওয়া হল- +এই কোডটির শুরুতেই আছে প্যাকেজ ডিক্লারেশন। আমরা আমাদের কম্পিউটারে নানা ধরণের ফাইল বিভিন্ন ফোল্ডারে সাজিয়ে রাখি। যেমন- মুভি ফোল্ডারে হয়তো আমরা শুধুই মুভি রাখি, সেখানে অন্য ফাইল রাখি না। আবার মুভি ফোল্ডারে এর মধ্যে আরো সাব-ফোল্ডার তৈরি করি আরো আলাদা করার জন্যে, যেমন – বাংলা মুভি, ইংরেজি মুভি ইত্যাদি। জাভাতে প্যাকেজ বলতে এই ধারণটিই বুঝায়। একটি জাভা প্রোগ্রামিং ভাষায় লেখা সফ্টওয়্যার এ শত শত বা হাজার হাজার পৃথক ক্লাস থাকতে পারে। এজন্যে প্যাকেজ ডিক্লারেশন এর মাধ্যমে আমরা একি রকম ক্লাস গুলো একটি প্যাকেজের মধ্যে আলাদা করে রাখি। -![package declamation](images/package_structure.png) +উদাহরণসরূপ এখানে প্যাকেজ স্ট্রাকচার এর একটি স্ক্রিনশট দেওয়া হল- -প্যাকেজ নাম গুলােকে লোয়ার কেস অক্ষরে-এ লিখতে হয়। +![package declamation](.gitbook/assets/package_structure.png) -কোম্পানি গুলো তাদের ইন্টারনেট ডোমেইন নেইম কে উল্টো করে তাদের প্যাকেজের নাম লিখে। যেমন - example.com এর একটি প্রোগ্রামার একটি প্যাকেজের নাম লিখবে এইভাবে- com.example.package. +প্যাকেজ নাম গুলােকে লোয়ার কেস অক্ষরে-এ লিখতে হয়। -আমাদের ক্ষেত্রে- +কোম্পানি গুলো তাদের ইন্টারনেট ডোমেইন নেইম কে উল্টো করে তাদের প্যাকেজের নাম লিখে। যেমন - example.com এর একটি প্রোগ্রামার একটি প্যাকেজের নাম লিখবে এইভাবে- com.example.package. - package bd.com.howtocode.java.tutotorial.syntax; - -তারপর আমাদের প্রোগ্রামের দ্বিতীয় লাইনটি হলো - ইম্পোর্ট স্টেটমেন্টস। অন্য কোন প্যাকেজের ক্লাস যদি আমাদের প্রোগ্রামে দরকার হয় তাহলে আমারা সেটিকে এভাবে ইম্পোর্ট করতে পারি। এটি সি প্রোগ্রামিং এর ইনক্লুড স্টেটমেন্টস এর মতো। +আমাদের ক্ষেত্রে- - import java.util.HashMap; +```text +package bd.com.howtocode.java.tutotorial.syntax; +``` -এর পরের লাইনটি হলো টাইপ ডিক্লারেশন। জাভাতে একটি টাইপ একটা ক্লাস অথবা ইন্টারফেইস অথবা এনাম হতে পারে(ইন্টারফেইস এবং এনাম নিয়ে পরে আলোচনা করা হবে)। ক্লাস ক্ষেত্রে শুরুতে class কিওয়ার্ড লিখেতে হয় তারপর কার্লি ব্রেস { শুরু এবং শেষ } করতে হয়। আমাদের পরবর্তি প্রতিটা লাইন কোড এই কার্লি ব্রেস { } এর ভেতরে লিখতে হবে। +তারপর আমাদের প্রোগ্রামের দ্বিতীয় লাইনটি হলো - ইম্পোর্ট স্টেটমেন্টস। অন্য কোন প্যাকেজের ক্লাস যদি আমাদের প্রোগ্রামে দরকার হয় তাহলে আমারা সেটিকে এভাবে ইম্পোর্ট করতে পারি। এটি সি প্রোগ্রামিং এর ইনক্লুড স্টেটমেন্টস এর মতো। - public class HelloWorld { } +```text +import java.util.HashMap; +``` -এখানে অতিরিক্ত একটি public কিওয়ার্ড দেখা যাচ্ছে। এই মুহুর্তে শুধু মনে রাখুন ক্লাস এর শুরুতে এটি লিখতে হয়। পরে এটি নিয়ে আলোচনা করা হবে। +এর পরের লাইনটি হলো টাইপ ডিক্লারেশন। জাভাতে একটি টাইপ একটা ক্লাস অথবা ইন্টারফেইস অথবা এনাম হতে পারে\(ইন্টারফেইস এবং এনাম নিয়ে পরে আলোচনা করা হবে\)। ক্লাস ক্ষেত্রে শুরুতে class কিওয়ার্ড লিখেতে হয় তারপর কার্লি ব্রেস { শুরু এবং শেষ } করতে হয়। আমাদের পরবর্তি প্রতিটা লাইন কোড এই কার্লি ব্রেস { } এর ভেতরে লিখতে হবে। -এর পরেই আমরা যা দেখছি তাকে বলা হয় ফিল্ড ডিক্লারেশন। অর্থাৎ আমরা যে বিভিন্ন রকম ভ্যারিয়বল ডিক্ল্যার করি, সেগুলো। +```text +public class HelloWorld { } +``` - protected final String hello = "value"; +এখানে অতিরিক্ত একটি public কিওয়ার্ড দেখা যাচ্ছে। এই মুহুর্তে শুধু মনে রাখুন ক্লাস এর শুরুতে এটি লিখতে হয়। পরে এটি নিয়ে আলোচনা করা হবে। -এবং এর পরেই থাকে মেথড। সি কিংবা অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজ এ যাকে আমরা ফাংশন কিংবা সাবরুটিন বলে থাকে, এখানে আমরা সেগুলোকে মেথড বলি। +এর পরেই আমরা যা দেখছি তাকে বলা হয় ফিল্ড ডিক্লারেশন। অর্থাৎ আমরা যে বিভিন্ন রকম ভ্যারিয়বল ডিক্ল্যার করি, সেগুলো। -এক্ষেত্রে আমাদের মেথড হচ্ছে - +```text + protected final String hello = "value"; +``` - public static void main(String[] args) { - } +এবং এর পরেই থাকে মেথড। সি কিংবা অন্যান্য প্রোগ্রামিং ল্যাংগুয়েজ এ যাকে আমরা ফাংশন কিংবা সাবরুটিন বলে থাকে, এখানে আমরা সেগুলোকে মেথড বলি। +এক্ষেত্রে আমাদের মেথড হচ্ছে - -এটি হচ্ছে মেইন মেথড। জাভা প্রোগ্রামকে রান করতে হলে অবশ্যই কোন ক্লাসে একটি মেইন মেথড থাকতে হবে। -এবার আমরা কিছু জিনিস প্রিন্ট করার চেষ্টা করি- +```text +public static void main(String[] args) { +} +``` -জাভাতে কনসলে কিছু প্রিন্ট করার জন্যে System.out.println() অথবা System.out.print() ব্যবহার করা হয়। +এটি হচ্ছে মেইন মেথড। জাভা প্রোগ্রামকে রান করতে হলে অবশ্যই কোন ক্লাসে একটি মেইন মেথড থাকতে হবে। এবার আমরা কিছু জিনিস প্রিন্ট করার চেষ্টা করি- +জাভাতে কনসলে কিছু প্রিন্ট করার জন্যে System.out.println\(\) অথবা System.out.print\(\) ব্যবহার করা হয়। আমরা যদি নিচের প্রোগ্রমটি রান করি- - - ```java + +```java package bd.com.howtocode.java.tutotorial.syntax; - + public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world!"); // Advance the cursor to the beginning of next line after printing @@ -116,19 +120,20 @@ } ``` -তাহলে কনসলে নিচের লাইন গুলো প্রিন্ট হবে- +তাহলে কনসলে নিচের লাইন গুলো প্রিন্ট হবে- - Hello, world! - - Hello, world!Hello, - world!Hello, world! +```text +Hello, world! +Hello, world!Hello, + world!Hello, world! +``` আমরা ইতিমধ্যে জানি ক্লাস কি- তাহলে এবার একটি ক্লাস লিখে ফেলা যাক- - ```java +```java package bd.com.howtocode.java.tutotorial.syntax; - + /** * @author Bazlur Rahman Rokon * @since 9/20/14. @@ -137,23 +142,23 @@ int cadence = 0; int speed = 0; int gear = 1; - + void changeCadence(int newValue) { cadence = newValue; } - + void changeGear(int newValue) { gear = newValue; } - + void speedUp(int increment) { speed = speed + increment; } - + void applyBrakes(int decrement) { speed = speed - decrement; } - + void printStates() { System.out.println("cadence:" + cadence + " speed:" + @@ -162,31 +167,31 @@ } ``` -আমরা ক্লাস এবং অবজেক্ট কি জানি, কিন্তু কিভাবে ক্লাস থেকে অবজেক্ট তৈরি করতে হয় সেটি এবার দেখা যাক- +আমরা ক্লাস এবং অবজেক্ট কি জানি, কিন্তু কিভাবে ক্লাস থেকে অবজেক্ট তৈরি করতে হয় সেটি এবার দেখা যাক- - ```java +```java package bd.com.howtocode.java.tutotorial.syntax; - + /** * @author Bazlur Rahman Rokon * @since 9/20/14. */ - + public class BicycleDemo { public static void main(String[] args) { // Create two different // Bicycle objects - + Bicycle bike1 = new Bicycle(); Bicycle bike2 = new Bicycle(); - + // Invoke methods on // those objects bike1.changeCadence(50); bike1.speedUp(10); bike1.changeGear(2); bike1.printStates(); - + bike2.changeCadence(50); bike2.speedUp(10); bike2.changeGear(2); @@ -197,67 +202,66 @@ } } ``` -আমরা জানি যে জাভা প্রোগ্রাম চালু করতে হলে একটি মেইন মেথড দরকার হয়। উপরের প্রোগ্রামটিতে একটি মেইন মেথড আছে। এবং এর ভেতরে শুরুতে আমরা দুইটি অবজেক্ট তৈরি করেছি। - Bicycle bike1 = new Bicycle(); - Bicycle bike2 = new Bicycle(); +আমরা জানি যে জাভা প্রোগ্রাম চালু করতে হলে একটি মেইন মেথড দরকার হয়। উপরের প্রোগ্রামটিতে একটি মেইন মেথড আছে। এবং এর ভেতরে শুরুতে আমরা দুইটি অবজেক্ট তৈরি করেছি। -জাভাতে অবজক্ট তৈরি করা খুব সহজ। এর জন্যে আমাদের তিনটি স্টেপ দরকার হয়- +```text + Bicycle bike1 = new Bicycle(); + Bicycle bike2 = new Bicycle(); +``` -- ডিক্লারেশন -- ইনসটেনশিয়েশান -- ইনিশিয়ালাইজেশান +জাভাতে অবজক্ট তৈরি করা খুব সহজ। এর জন্যে আমাদের তিনটি স্টেপ দরকার হয়- +* ডিক্লারেশন +* ইনসটেনশিয়েশান +* ইনিশিয়ালাইজেশান -**Bicycle bike1** = new Bicycle(); -‌‌‌‌‌‌ +**Bicycle bike1** = new Bicycle\(\); ‌‌‌‌‌‌ -উপরের বোল্ড অক্ষরে লেখাটুকু হচ্ছে ডিক্লারেশন, তারপর সমান চিহ্ন এর পর new কিওয়ার্ড পর্যন্ত হচ্ছে ইনসটেনশিয়েশান এবং এর পরের অংশটুকুকে ইনিশিয়ালাইজেশান বলা হয়। ইনিশিয়ালাইজেশান এর জন্যে আমাদের ক্লাসটির কনস্ট্রাকটরকে কল করতে হয়। কনস্ট্রাকটর নিয়ে একটু পরেই কথা বলছি। +উপরের বোল্ড অক্ষরে লেখাটুকু হচ্ছে ডিক্লারেশন, তারপর সমান চিহ্ন এর পর new কিওয়ার্ড পর্যন্ত হচ্ছে ইনসটেনশিয়েশান এবং এর পরের অংশটুকুকে ইনিশিয়ালাইজেশান বলা হয়। ইনিশিয়ালাইজেশান এর জন্যে আমাদের ক্লাসটির কনস্ট্রাকটরকে কল করতে হয়। কনস্ট্রাকটর নিয়ে একটু পরেই কথা বলছি। -এখানে ডিক্লারেশন টাইপ ডিক্লারেশন এর মতোই। ভ্যারিয়বল চ্যাপ্টারে আমরা আরো ডিটেইলস দেখবো। +এখানে ডিক্লারেশন টাইপ ডিক্লারেশন এর মতোই। ভ্যারিয়বল চ্যাপ্টারে আমরা আরো ডিটেইলস দেখবো। -তারপর অবজেক্টটি ধরে ডট অপারেটর ব্যবহার করে সেই ক্লাসের মেথড গুলো কল করা হয়ছে। -‌‌‌ -এই প্রোগ্রামটি রান করলে আউটপুট আসবে- +তারপর অবজেক্টটি ধরে ডট অপারেটর ব্যবহার করে সেই ক্লাসের মেথড গুলো কল করা হয়ছে। ‌‌‌ এই প্রোগ্রামটি রান করলে আউটপুট আসবে- - cadence:50 speed:10 gear:2 - cadence:40 speed:20 gear:3 +```text +cadence:50 speed:10 gear:2 +cadence:40 speed:20 gear:3 +``` + **কনস্ট্রাকটর** -** কনস্ট্রাকটর ** +কনস্ট্রাকটর অন্যান্য মেথড বা ফাংশনের মতই একটি মেথড বা ফাংশনে। তবে এটির কোন রিটার্ন টাইপ নেই। একটি ক্লাসকে একটি অবজেক্ট-এ তৈরি করতে যে প্রয়োজনীয় কাজ গুলো করতে হয়, কনস্ট্রাকটর সেই কাজ গুলো করে থাকে। তবে মজার ব্যপার হচ্ছে সেই প্রয়োজনীয় কাজ গুলো জন্যে আমাদের কোড লিখতে হয় না। -কনস্ট্রাকটর অন্যান্য মেথড বা ফাংশনের মতই একটি মেথড বা ফাংশনে। তবে এটির কোন রিটার্ন টাইপ নেই। একটি ক্লাসকে একটি অবজেক্ট-এ তৈরি করতে যে প্রয়োজনীয় কাজ গুলো করতে হয়, কনস্ট্রাকটর সেই কাজ গুলো করে থাকে। তবে মজার ব্যপার হচ্ছে সেই প্রয়োজনীয় কাজ গুলো জন্যে আমাদের কোড লিখতে হয় না। +আমাদের উপরের ক্লাসটিতে আমরা কোন কনস্ট্রাকটর লিখি নি। তাহলে এর অবজেক্ট তৈরি হলো কিভাবে? উত্তরটি হচ্ছে আমরা যদি কোন কনস্ট্রাকটর না লিখি তাহলে জাভা কম্পাইলার নিজে থেকেই একটি কনস্ট্রাকটর লিখে কম্পাইল করে, যাকে আমরা বলি ডিফল্ট কনস্ট্রাকটর। তবে আমরা চাইলে নিজের একটি লিখতে পারি। -আমাদের উপরের ক্লাসটিতে আমরা কোন কনস্ট্রাকটর লিখি নি। তাহলে এর অবজেক্ট তৈরি হলো কিভাবে? -উত্তরটি হচ্ছে আমরা যদি কোন কনস্ট্রাকটর না লিখি তাহলে জাভা কম্পাইলার নিজে থেকেই একটি কনস্ট্রাকটর লিখে কম্পাইল করে, যাকে আমরা বলি ডিফল্ট কনস্ট্রাকটর। তবে আমরা চাইলে নিজের একটি লিখতে পারি। +```text + public class Bicycle { + int cadence = 0; + int speed = 0; + int gear = 1; - public class Bicycle { - int cadence = 0; - int speed = 0; - int gear = 1; - - public Bicycle() { - } + public Bicycle() { } + } +``` +এবার আমরা দেখবো কিভাবে জাভাতে কমেন্ট লিখতে হয়- -এবার আমরা দেখবো কিভাবে জাভাতে কমেন্ট লিখতে হয়- - -জাভা তিন ধরণের কমেন্ট সাপোর্ট করে- - - Comment | Description - /* text */ | জাভা কম্পাইলার /* থেকে */ পর্যন্ত সব কিছু উপেক্ষা করে যাবে - // text | জাভা কম্পাইলার // থেকে লাইনের শেষ পর্যন্ত উপেক্ষা করে যাবে - /** documentation */ | এটি হচ্ছে ডকুমেন্টাশান কমে্নট । একে doc comment বলা হয়। - +জাভা তিন ধরণের কমেন্ট সাপোর্ট করে- +```text + Comment | Description + /* text */ | জাভা কম্পাইলার /* থেকে */ পর্যন্ত সব কিছু উপেক্ষা করে যাবে + // text | জাভা কম্পাইলার // থেকে লাইনের শেষ পর্যন্ত উপেক্ষা করে যাবে + /** documentation */ | এটি হচ্ছে ডকুমেন্টাশান কমে্নট । একে doc comment বলা হয়। +``` -উদাহরণ- +উদাহরণ- - ```java - +```java package bd.com.howtocode.java.tutotorial.syntax; - + /** * The HelloWorld program implements an application that * simply displays "Hello World!" to the standard output. @@ -269,30 +273,25 @@ public static void main(String[] args) { // Prints Hello, World! on standard output. System.out.println("Hello, world!"); - + /* for (int i = 0; i < 100; i++) { System.out.println(i); }*/ } } - ``` -আরও কিছু নিয়ম: -- জাভাতে প্রত্যেকটি স্টেটমেন্ট এর পর সেমিকোলন (;) দিয়ে স্টেটমেন্ট শেষ করতে হয়। -- জাভা একটি কেইস সেনসিটিভ ল্যাংগুয়েজ- অর্থাৎ hello এবং Hello দুটি আলাদা শব্দ । +আরও কিছু নিয়ম: + +* জাভাতে প্রত্যেকটি স্টেটমেন্ট এর পর সেমিকোলন \(;\) দিয়ে স্টেটমেন্ট শেষ করতে হয়। +* জাভা একটি কেইস সেনসিটিভ ল্যাংগুয়েজ- অর্থাৎ hello এবং Hello দুটি আলাদা শব্দ । **অনুশীলন:** -নিচের প্যাটার্নগুলো প্রিন্ট করতে চেষ্টা করুন - +নিচের প্যাটার্নগুলো প্রিন্ট করতে চেষ্টা করুন - - * * * * * * * * * * * * * * * - * * * * * * * * * - * * * * * * * * * - * * * * * * * * * - * * * * * * * * * * * - (a) (b) (c) - - +```text + (a) (b) (c) +``` diff --git a/20.md b/20.md index a3ccf78..0fdda03 100644 --- a/20.md +++ b/20.md @@ -1,4 +1,4 @@ -# পাঠ ২০: Understanding performance tuning +# পাঠ ২০: Understanding performance tuning * টারমিনলজি * Latency @@ -23,7 +23,7 @@ * এসকেপ এনালাইসিস * Concurrent Mark-Sweep * G1—Java’s new collector -* হটস্পট দিয়ে জিট(JIT) কম্পাইলেশন +* হটস্পট দিয়ে জিট\(JIT\) কম্পাইলেশন * Inlining methods * Dynamic compilation and monomorphic calls * Reading the compilation logs diff --git a/21.md b/21.md index fbf5e1e..27a93cf 100644 --- a/21.md +++ b/21.md @@ -1,4 +1,4 @@ -# পাঠ ২১: মডার্ন জাভা ইউজেস +# পাঠ ২১: মডার্ন জাভা ইউজেস * রেপিড ওয়েব ডেভেলপমেন্ট * জাভা ফ্রেমওয়ারর্ক @@ -18,4 +18,3 @@ * আরলেং * সারসংক্ষেপ - diff --git a/3/3.1.md b/3/3.1.md new file mode 100644 index 0000000..b0b2e36 --- /dev/null +++ b/3/3.1.md @@ -0,0 +1,82 @@ +# পাঠ ৩.১: এরে + +\#\# এরে \(Array\) + +## এরে + +এরে হচ্ছে একধরণের কন্টেইনার অবজেক্ট যা অনেকগুলো একিধরণের ডাটা টাইপের এর একটি ফিক্সড সাইজের ভ্যালু ধরে রাখতে পারে। + +এরে ডিক্লার করার জন্যে প্রথমে ডাটাটাইপ \(কি ধরণের ডাটাটাইপ রাখবে\) এর সাথে \(\[\]\) স্কয়ার ব্র্যাকেট তারপর এর একটি ভেরিয়েবল নাম দিতে হয়। + +জাভাতে দুই ধরনের এরে রয়েছে ১/ সিঙ্গেল ডাইমেনশনাল এরে ২/ মাল্টিডাইমেনশনাল এরে + +সিঙ্গেল ডাইমেনশনাল এরে কে আমরা এইভাবে ডিক্লিয়ার করতে পারিঃ + +```java + //একটি ইন্টিজার এরে + int[] anArray; +``` + +তবে স্কয়ার ব্র্যাকেট ভেরিয়েবল নাম এর পরেও দেওয়া যেতে পারে - উদহরণ- + +```java + int anArray[]; +``` + +এভাবে আমরা অন্য ডাটাটাইপ এর অ্যারে লিখতে পারি - + +```java +long[] anArrayOfLongs; +float[] anArrayOfFloats; +double[] anArrayOfDoubles; +``` + +এরে একটি অবজেক্ট, সুতরাং একে নিউ\(new\) অপারেটর দিয়ে প্রথমে ক্রিয়েকট করতে হবে। + +```java +// এখানে ১০ সাইজের একটি এরে ক্রিয়েট করা হলো +anArray = new int[10]; +``` + +এই স্ট্যাটমেন্ট যদি না লেখা হয় তাহলে প্রোগ্রামটি কম্পাইল হবে না। + +এরপর আমরা এর এর ভেতর ভ্যাল্যু রাখতে পারি। + +```java +anArray[0] = 100; //এখানে প্রথম ভ্যাল্যু রাখা হল +anArray[1] = 200; // এভাবে দ্বিতীয় ভ্যালু +anArray[2] = 300; // এভাবে বাকি গুলো +``` + +জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজে জিরো বেজড নাম্বারিং\( ইনডেক্স শুন্য থেকে শুরু \) করা হয়ে থাকে। অর্থাৎ, এরের এই ভ্যালুগুলো যদি পড়তে চাই তাহলে - + +```java +System.out.println("Element 1 at index 0: " + anArray[0]); +System.out.println("Element 2 at index 1: " + anArray[1]); +System.out.println("Element 3 at index 2: " + anArray[2]); +``` + +এছাড়াও এরে লেখার শর্টকাট পদ্ধতি আছে - + +```java +int[] anArray = { + 100, 200, 300, + 400, 500, 600, + 700, 800, 900, 1000 +}; +``` + +একটি এরে এর মধ্যে আরেকটি অ্যারে রাখা যেতে পারে - নিচে মাল্টিডাইমেনশনাল এরে এর ডিক্লিয়ারেশন এবং ভ্যালু এসাইন করার একটি পদ্ধতি দেখানো হল । + +```java +int[][] anArray = {{1, 2, 3}, {4, 6, 7}, {8, 9}}; +``` + +আমরা যদি একটি এরে এর লেন্থ বা সাইজ জানতে চাই তাহলে – + +```java +int length = anArray.length; +``` + +সুবিধাঃ এরেতে আমরা খুব সহজে ডেটা গুলোকে ছোট থেকে বড় - বড় থেকে ছোট আকারে সাজিয়ে নিতে পারি । খুব সহজেই যেকোনো ইনডেক্সে এক্সেস নিতে পারি । অসুবিধাঃ এরের সাইজ আগে থেকে বলে দিতে হয় এবং এটি ফিক্সড সাইজ তাই রানটাইমে আমরা এটার সাইজ বাড়াতে পারিনা । অবশ্য এই সমস্যা দূর করতে জাভাতে কালেকশন ফ্রেমওয়ার্ক ব্যবহার করতে পারি যেগুলো পর্যায়ক্রমে আমরা আলোচনা করবো । + diff --git a/3/3.2.md b/3/3.2.md new file mode 100644 index 0000000..c0cad7c --- /dev/null +++ b/3/3.2.md @@ -0,0 +1,89 @@ +# পাঠ ৩.২: এক্সপ্রেশান\(Expressions\), স্টেটমেন্ট \(Statements\) এবং ব্লক\(Blocks\) + +আমরা ইতিমধ্যে ভেরিয়েবল এবং অপারেটর সম্পর্কে জেনে ফেলেছি, এবার তাহলে আমরা জেনে নিই এক্সপ্রেশান কি। + +**এক্সপ্রেশান\(Expressions\)** + +একপ্রেশান হচ্ছে কতগুলো ভ্যারিয়েবল, অপারেটর এবং মেথড বা ফাংশান কল এর মাধ্যমে একটি আউটপুট তৈরি করার জন্যে যে কোড লেখা হয়। উদাহরণ- + +```java + ‌‌int cadence = 0; + anArray[0] = 100; + + int result = 1 + 2; + if (value1 == value2) + System.out.println("value1 == value2"); +``` + +উপরের cadence = 0 একটি এক্সপ্রেশান। এটির ‌”=” অপারেটরের মাধ্যমে একটি ভ্যালু cadence ভ্যারিয়েবল এ এসাইন হয়। তারপর anArray\[0\] = 100 এই এক্সপ্রেশানের মাধ্যমে anArray এরে এর প্রথম ঘরে 100 এসাইন করা হল। + +1 + 2 একটি এক্সপ্রেশান যা “+” অপারেটর এর মাধ্যমে দুটি সংখ্যা যোগ হয় এবং “=” অপারেটর এর মাধ্যমে result ভ্যারিয়েবল এ এসাইন হয়। সুতরাং এখানে দুইটা এক্সপ্রেশান। + +জাভা প্রোগ্রামিং ল্যাংগুয়েজ কম্পাউন্ড এক্সপ্রেশান সাপোর্ট করে। এর মানে হচ্ছে অনেকগুলো ছোট ছোট এক্সপ্রেশান নিয়ে আমরা একটি বড় এক্সপ্রেশান তৈরি করতে পারি। একটি এক্সপ্রেশান মূলত একটি নির্দিষ্ট ডাটাটাইপ এর ভ্যালু প্রদান করে, সুতরাং কম্পাউন্ড এক্সপ্রেশান এর ক্ষেত্রে সব এক্সপ্রেশান এর ফলাফল একি ডাটাটাইপ এর হতে হবে। + +```text + 1 * 2 * 3 +``` + +এখানে 1 \* 2 একটি এক্সপ্রেশান যার ইন্টিজার টাইপ এর ডাটাটাইপ এর আউটপুট প্রদান করে, এবং এটি যখন আবার 3 এর মাল্টিপ্লাই করা হয়, তখনও এর আউটপুট ইন্টিজার টাইপ হয়। + +তবে কম্পাউন্ড এক্সপ্রেশান এর ক্ষেত্রে এম্বিগিউটি দূর করার জন্যে ব্রেস “\(\)” ব্যবহার করা উত্তম। উদাহরণ - + +```text + x + y / 100 +``` + +এবং \(x + y\) / 100 + +এই দুটি এক্সপ্রেশান এর ফলাফল ভিন্ন হবে। + +তবে যদি এক্সপ্রেশান এর অর্ডার ব্রেস দিয়ে না ঠিক করে দেওয়া হয় তবে অপারেটর এর অগ্রগণ্যতা\(precedence\) অনুযায়ী এক্সপ্রেশান এর অর্ডার নির্ধারিত হয়। + +**স্টেটমেন্টস\(Statements\)** + +স্টেটমেন্টস হচ্ছে অনেকটা একটা পূর্ণাঙ্গ বা সার্থক বাংলা বাক্যের মতো। তবে প্রোগ্রামিং এর ভাষায় এটি হচ্ছে- একটি ছোট ইউনিট অব কোড যা কিনা এক্সিকিউশান করা যায়। কতগুলো এক্সপ্রেশান শেষে সেমিকোলন \(;\) দিয়ে শেষ করলে স্টেটমেন্ট হয়ে যায়। যেমন- + +* এসাইনমেন্ট এক্সপ্রেশান +* ++ অথবা-- এর ব্যবহার +* মেথড/ফাংশান কল +* নতুন অবজেক্ট তৈরি করা, ইত্যাদি । + +এদেরকে এক্সপ্রেশানাল স্টেটমেন্ট বলা হয়। + +```java + // এটি এসাইনমেন্ট স্টেটমেন্ট + aValue = 8933.234; + // এটি ইনক্রিমেন্ট স্টেটমেন্ট + aValue++; + // এখানে একটি মেথড কল করা হয়েছে + System.out.println("Hello World!"); + // এখানে একটি অবজেক্ট তৈরি করা হয়েছে + Bicycle myBike = new Bicycle(); +``` + +আরও দু-ধরণের স্টেটমেন্ট আছে- ডিক্লারেশান স্টেটমেন্ট – + +```java + double aValue = 8933.234; +``` + +কন্ট্রোল ফ্লাে স্টেটমেন্ট – এটি নিয়ে পরবর্তী চ্যাপ্টারে আরও বিস্তারিত বলা হবে। + +**ব্লকস\(Blocks\)** + +একটি কারলি ব্রেস “{}” এর মাঝে শূণ্য অথবা একাধিক স্টেটমেন্ট থাকলে তাকে ব্লক বলা হয়। উদারহরণ- + +```java + class BlockDemo { + public static void main(String[] args) { + boolean condition = true; + if (condition) { //এখানে ব্লক -১ এর শুরু + System.out.println("Condition is true."); + } // এখানে ব্লক -১ শেষ + else { // এখানে ব্লক-২ শুরু + System.out.println("Condition is false."); + } // এখানে ব্লক-২ শেষ + } + } +``` + diff --git a/3/README.md b/3/README.md new file mode 100644 index 0000000..fd6ce26 --- /dev/null +++ b/3/README.md @@ -0,0 +1,407 @@ +# পাঠ ৩: ডাটা টাইপস এবং অপারেটর + +* ভেরিয়েবল +* প্রিমিটিভ ডাটাটাইপ - ইন্টিজার, লং, ডাবল, ইন্টিজার, ফ্লোট এবং কার ইত্যাদি। +* র‍্যাপার ক্লাস +* লিটারেল +* বিভিন্ন রকম অপারেটর + +**ভ্যারিয়বল** + +ভ্যারিয়বল হচ্ছে একটি নাম যা কম্পিউটারের একটি মেমোরি লোকেশান কে নির্দেশ করে। উদাহরণ- + +```text +int cadence = 0; +``` + +একটি ভ্যারিয়বল ডিক্লারেশন এর জন্যে একটি ডাটাটাইপ দরকার হয়, অর্থাৎ ভ্যারিয়বল টি কি ধরণের ডাটা হোল্ড করবে তা বলে দিতে হবে। উপরের উদাহরণটিতে আমরা একটি ভ্যারিয়বল ডিক্লার করেছি যার নাম cadence এবং এটি ইন্টিজার টাইপ ডাটা হোল্ড করে। + +যেহেতু জাভা একটি স্ট্যাটিক্যালি টাইপড ল্যাংগুয়েজ সুতরাং ভ্যারিয়বল ডিক্লারেশন এর সময় ডাটাটাইপ উ্ল্লেখ করা অত্যাবশ্যক। + +জাভাতে আমরা চার ধরণের ভেরিয়েবল নিয়ে কাজ করে থাকি - + +1. Instance Variables \(Non-static fields\) +2. Class Variables \(Static Fields\) +3. Local variables +4. Parameters variables + +জাভাতে ভ্যারিয়বল এবং ফিল্ড দুই শব্দই ব্যবহার করা হয়, তবে এর কিছু টেকনিকাল পার্থক্য আছে। সেগুলো নিয়েই আলোচনা করা হবে – + +আমরা আবার একটি উদাহরণ দেখি – + +```java + public class Bicycle { + static int numGears = 6; + + int cadence = 0; + int speed = 0; + int gear = 1; + + public Bicycle() { + } + + void changeCadence(int newValue) { + cadence = newValue; + } + + void changeGear(int newValue) { + gear = newValue; + } + + void speedUp(int increment) { + speed = speed + increment; + } + + void applyBrakes(int decrement) { + speed = speed - decrement; + } + + void printStates() { + System.out.println("cadence:" + + cadence + " speed:" + + speed + " gear:" + gear); + } + } +``` + +আমরা জানি যে একটি ক্লাস থেকে আমরা অনেকগুলো অবজেক্ট তৈরি করতে পারি। এবং প্রত্যেক অবজেক্ট-ই আলাদা আলাদা। যেমন - + +```text + Bicycle bike1 = new Bicycle(); + Bicycle bike2 = new Bicycle(); +``` + +এখানে bike1 এবং bike2 দুটি সম্পূর্ণ আলাদা দুইটি অবজেক্ট। + +এখন bike1 এবং bike2 তে কিছু ভ্যারিয়বল গুলোও আলাদা। অর্থাৎ আমরা যতগুলো অজেক্ট তৈরি করবো ঠিক ততোগুলো আলাদা ভ্যারিয়বল থাকবে মেমোরিতে। এক্ষেত্রে মেমোরিতে ২টা cadence থাকবে, ২টা gear থাকবে এবং ২ speed ধাকবে। + +এই ভ্যারিয়বল গুলোকে Instance Variables বা Non-static fields বলা হয়। এই ভ্যারিয়বল গুলো আগে static কিওয়ার্ডটি থাকে না। + +```text + static int numGears = 6; +``` + +উপরের উদাহরণটিতে **numGears** নামে একটি ভ্যারিয়বল আছে, এটির আগে একটি **static** কিওয়ার্ডটি আছে। এ ধরণের ভ্যারিয়বল কে Class Variables বা Static Fields বলা হয়। static কিওয়ার্ডটি কম্পাইলারকে বলে যে numGears নামে একটি মাত্র ভ্যারিয়বল থাকবে মেমোরিতে, অবজেক্ট এর সংখ্যা যতই হোক। + +লোকাল ভ্যারিয়বল হলো সেসব ভ্যারিয়বল যে গুলো কোন মেথডের মাঝে ডিক্লার করা হয়। একটি লোকাল ভ্যারিয়বল শুধু মাত্র সেই মেথডের ভেতর থেকেই একসেস করা যাবে। + +আর Parameters variables হলো সেই ভ্যারিয়বল গুলো যেগুলো মেথড কল করার সময় পাস করা হয়। এ গুলোও শুধুমাত্র মেথডের ভেতর থেকেই একসেস করা যায়। + +আমরা Instance Variables এবং Class Variables গুলোকে ফিল্ড বলি। + +এখানে কিছু ভ্যারিয়বল ডিক্লারাশেনের উদাহরণ দেওয়া হলো - + +```text +byte myByte; +short myShort; +char myChar; +int myInt; +long myLong; +float myFloat; +double myDouble; +boolean myBool; +``` + +শুরুতে আগে টাইপ লিখতে হবে, তারপর একটি নাম, তারপর সেমিকোলন দিয়ে শেষ করতে হবে। তবে আমরা চাইলে ভ্যারিয়বল কে ইনিশিয়ালাইজেশান করতে পারি। যেমন - + +```text + int cadence = 0; +``` + +অর্থাৎ শুরুতে আমরা cadence এর ভ্যালু 0 এসাইন করালাম। + +এরপর যদি আমরা কোন ভ্যারিয়বলে ভ্যালু এসাইন করতে চাই তাহলে - + +```text +myByte = 127; +myFloat = 199.99; +``` + +জাভা ভ্যারিয়বল লেখার কিছু নিয়ম কানুন আছে- + +1. ভ্যারিয়বল গুলো কেইস সেনসিটিভ। অর্থাৎ money, Money,MONEY তিনটি আলাদা। +2. ভ্যারিয়বল অবশ্যই যেকোন একটি লেটার দিয়ে শুরু করতে হবে। তবে $ অথবা \_ দিয়েও শুরু করা যায়। +3. ভ্যারিয়বল এর মাঝে নাম্বার কিংবা \_ থাকতে পারে। +4. ভ্যারিয়বল জাভার কোন reserved কিওয়ার্ড হতে পারবে না। + +**ডাটা টাইপ** + +জাভা তে আট ধরণের প্রিমিটিভ ডাটা টাইপ আছে । + +| Data type | Description | +| :--- | :--- | +| byte | 8 bit signed value, values from -128 to 127 | +| short | 16 bit signed value, values from -32.768 to 32.767 | +| char | 16 bit Unicode character | +| int | 32 bit signed value, values from -2.147.483.648 to 2.147.483.647 | +| long | 64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808 | +| float | 32 bit floating point value | +| double | 64 bit floating point value | +| boolean | true & false | + +এগুলো প্রমিটিভ ডাটা টাইপ, এর মানে হচ্ছে এগুলো অবজেক্ট নয়। এরা মেমোরিতে সরাসরি ভ্যালু রাখে। + +**র‍্যাপার ক্লাস** + +তবে জাভাতে কিছু ডাটা টাইপ আছে যেগুলো অবজেক্ট। + +| Data type | Description | +| :--- | :--- | +| Byte | 8 bit signed value, values from -128 to 127 | +| Short | 16 bit signed value, values from -32.768 to 32.767 | +| Character | 16 bit Unicode character | +| Integer | 32 bit signed value, values from -2.147.483.648 to 2.147.483.647 | +| Long | 64 bit signed value, values from -9.223.372.036.854.775.808 to 9.223.372.036.854.775.808 | +| Float | 32 bit floating point value | +| Double | 64 bit floating point value | + +এগুলোকে প্রিমিটিভ টাইপ এর র‍্যাপার ক্লাস বলা হয়। লক্ষ্য করুণ, এগুলোর সবগুলোর নাম ক্যাপিটাল অক্ষর দিয়ে শুরু হয়েছে। + +তবে আমরা চাইলে অবজেক্ট ডাটাটাইপ এবং প্রিমটিভ ডাটাটাইপ একে অপরের পরিপূরক হিসাবে ব্যবহার করতে পারি। + +```text + Integer a; + int b = 9; + a = b; +``` + +তবে প্রিমিটিভ ডাটা টাইপ গুলোর ডিফল্ট ভ্যালু থাকে। অর্থাৎ আমরা যদি ভ্যালু এসাইন না করি, তাহলে এদের মধ্যে বাইডিফল্ট ভ্যালু থাকে। যেমন - + +| Data Type | Default Value \(for fields\) | +| :--- | :--- | +| byte | 0 | +| short | 0 | +| int | 0 | +| long | 0L | +| float | 0.0f | +| double | 0.0d | +| char | '\u0000' | +| boolean | false | + +**লিটারেল-** + +প্রোগ্রামিং ল্যাংগুয়েজে কিছু মজার মজার বিল্ট-ইন সুবিধা থাকে, তার মধ্যে লিটারেল একটি। আমরা জানি যে একটা ভ্যারিয়বল ডিক্লারেশান এর জন্য প্রথমে টাইপ লিখতে হয়, তারপর একটা নাম দিতে হয়, তারপর একে ইনিশিয়ালাইজেশান করতে হয়। ভেরিয়েবলটি যদি অবজেক্ট হয়, তাহলে ইনটেনশিয়েশান করতে হয়। + +উদাহরণ- + +```text +List list = new ArrayList(); + +or + +Int x = 5; +``` + +উপরের দুটি উদাহরণের মাঝে একটিতে আমরা new কিওয়ার্ড ব্যবহার করে নতুন অবজেক্ট তৈরি করেছি। কিন্তু পরের উদাহরণটিতে সেটি করতে হয় নি। আমরা সরাসরি একটি ভ্যালু এসাইন করেছি। এখানে 5 একটি ভ্যালু। এখানে 5 হচ্ছে লিটারেল। + +এরকম অনেক ক্ষেত্রে আমরা new কিওয়ার্ড ব্যবহার না করেই ভেরিয়েবল initialize করতে পারি। + +জাভাতে প্রিমিটিভ টাইপ সকল ডাটাটাইপ লিটারেল সাপোর্ট করে। যেমন - + +```text +boolean result = true; +char capitalC = 'C'; +byte b = 100; +short s = 10000; +int i = 100000; +``` + +নিচে আরো কিছু উদাহরণ দেওয়া হলো – + +**ইন্টিজার লিটারেল-** + +```text +int decVal = 26; // এখানে 26 হচ্ছে ডেসিমাল নাম্বার +int hexVal = 0x1a; // এখানে 26 সংখ্যাটি হেক্সাডেসিমেল এ দেখানো হয়েছে +int binVal = 0b11010; // এখানে 26 সংখ্যাটি বাইনারি-তে এ দেখানো হয়েছে +``` + +**ফ্লােটিং পয়েন্ট লিটারেল-** + +```text +double d1 = 123.4; +double d2 = 1.234e2; // একি ভ্যালু বৈজ্ঞানিক উপায়ে লেখা হয়েছে +float f1 = 123.4f; +``` + +**ক্যারেক্টার এন্ড স্ট্রিং লিটারেল-** + +char এবং String উদ্ধৃতি চিহ্নের ভেতরে লেখা হয়। char ক্ষেত্রে একক উদ্ধৃতি \(''\) চিহ্ন String এর জন্যে ডবল উদ্ধৃতি \(""\) চিহ্ন ব্যবহার করতে হয়- যেমন- + +```text +char chr = 'A'; // ক্যারেক্টার লিটারেল +String name = "Bazlur"; // স্ট্রিং লিটারের +``` + +char এবং String ইউনিকোড ক্যারেক্টার হতে পারে। + +আমরা জানি কিভাবে ভেরিয়েবল ইনিশিয়ালাইজ করতে হয়, এবার তাহলে এই ভ্যারিয়বল গুলো দিয়ে কি কাজ করা যায় সেগুলো দেখি। + +কোন কাজ করতে হলে একজন কার্যকারী বা অপারেটর লাগে। অপারেটর কিছু অপারেন্ড নিয়ে কাজ করে থাকে তারপর ফলাফল রিটার্ন করে। জাভা প্রোগ্রামিং ল্যাংগুয়েজে বেশ কিছু অপারেটর আছে- সেগুলো দেখা যাক- + +**এসাইনমেন্ট অপারেটর \(Assignment Operator\)** + +“=” এটি হচ্ছে এসাইনমেন্ট অপারেটর বাংলায় যাকে বলে সমান সমান চিহ্ন। আমরা একটি Bicycle ক্লাস দেখেছি, এর মাঝে কিছু ভেরিয়েবল দেখেছি- + +```java + int cadence = 0; + int speed = 0; + int gear = 1; +``` + +এই ভ্যারিয়বল গুলোর ডান পাশে সমান সমান চিহ্নের পর আমরা একটা ভ্যালু বা মান বসিয়েছি। এভাবে আমরা একটি ভ্যারিয়বল এর মাঝে ভ্যালু এসাইন করতে পারি। + +**এরিথমেটিক অপারেটর\(Arithmetic Operator\)** + +জাভা প্রোগ্রামিং ল্যাংগুয়েজ-এ যোগ, বিয়োগ, গুন, ভাগ করার জন্যে কিছু অপারেটর আছে। এগুলো আমরা যখন বেসিক গণিত শিখি তখন থেকেই জানি। শুধু একটি অপারেটর নতুন মনে হতে পারে, যা হলো “%”। এটিকে অনেকেই পারসেন্টেজ বা শতকরা চিহ্ণ হিসেবে ভুল করতে পারে, কিন্তু এটি আসলে তা নয় । এটি মূলত একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে। + +| অপারেটর | এর কাজ | +| :--- | :--- | +| + | আডিটিভ\(Additive\) অপারেটর, যা দুটি সংখ্যা বা স্ট্রিং যোগ করার জন্যে ব্যবহার করা হয়। | +| - | সাবস্ট্রাকশান \(Subtraction\) অপরেটর যা একটি সংখ্যা থেকে আরেকটি সংখ্যা বিয়োগ করার জন্যে ব্যবহার করা হয়। | +| `*` | মাল্টিপ্লিকেশান \(Multiplication\)অপারেটর যা দুটি সংখ্যাকে গুন করে। | +| / | ডিভিশান\(Division\) অপারেটর , যা দিয়ে একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করা যায়। | +| % | রিমাইন্ডার \(Remainder\) অপারেটর যা একটি সংখ্যাকে আরেকটি সংখ্যা দ্বারা ভাগ করে ভাগশেষ রিটার্ন করে। | + +```java + class ArithmeticDemo { + + public static void main (String[] args) { + + int result = 1 + 2; // এখানে result এর মান হচ্ছে 3 + System.out.println("1 + 2 = " + result); + int original_result = result; + + result = result - 1; //এখানে result থেকে ১ সাবস্ট্রাক্ট করায় এর মান ২ + System.out.println(original_result + " - 1 = " + result); + original_result = result; + + result = result * 2; // এখানে result এর সাথে ২ মাল্টিপ্লাই করার ফলে এর মান 4 + System.out.println(original_result + " * 2 = " + result); + original_result = result; + + result = result / 2; //আবার result ডিভাইড করার ফলে এর মান হয়ে গেল 2 + System.out.println(original_result + " / 2 = " + result); + original_result = result; + + result = result + 8; // ৮ যোগ করার ফলে এর result হলো 10 + System.out.println(original_result + " + 8 = " + result); + original_result = result; + + result = result % 7; + // result এর সাথে ৭ রিমাইন্ডার অপারেটর ব্যবহার করার ফলে এর মান হয়ে গেল 3, কারণ এটি শুধু মাত্র রিমানইন্ডার বা ভাগশেষ রিটার্ন করে + System.out.println(original_result + " % 7 = " + result); + } + } +``` + +এই প্রোগ্রামটি রান করলে নিচের ফলাফল প্রকাশিত হবে। + +```text + 1 + 2 = 3 + 3 - 1 = 2 + 2 * 2 = 4 + 4 / 2 = 2 + 2 + 8 = 10 + 10 % 7 = 3 +``` + +**ইউনারি \(Unary\) অপারেটর** + +উপরের সব অপারেটর এর জন্যে আমাদের দুটি করে অপারেন্ড দরকার হতো, তবে এই অপারেটরের লাগে একটি। + +এগুলো বিভিন্ন ধরণের কাজ করে থাকে যেমন – এক করে ইনক্রিমেন্টিং/ডিক্রিমেন্টিং বা একটা এক্সপ্রেশান নেগেট করা বা একটা বুলিয়ান-কে ইনভার্ট করা । এগুলো হল - +, -, ++, –-, ‍! উদাহরণ - + +```java + class UnaryDemo { + + public static void main(String[] args) { + + int result = +1; + // এটি এক করে ইনক্রিমেন্ট করে, সুতরাং এখানে result এর মান 1 + System.out.println(result); + + result--; + // এটি এক করে ডিক্রিমেন্ট করে, সুতরাং এখানে result এর মান 0 + System.out.println(result); + + result++; + // এটিও এক করে ইনক্রিমেন্ট করে, সুতরাং এখানে result এর মান আবার ১ + System.out.println(result); + + result = -result; + // এখানে result কে নেগেট করে, সুতরাং এর মান এখন -1 + System.out.println(result); + + boolean success = false; + // এখানে বুলিয়ানের মান হচ্ছে false + System.out.println(success); + // কিন্তু এর আগে একটি নেগেট অপারেটর এড করলে এটি হয়ে যায় + System.out.println(!success); // true + } +} +``` + +**ইকুয়ালিটি \(Equality\) এবং রিলেশনাল\(Relational\) অপারেটরস** + +ইকুয়ালিটি \(Equality\) এবং রিলেশনাল\(Relational\) অপারেটর গুলো নির্ধারণ করে একটি ভ্যালু অন্যটি থেকে বড় বা ছোট কিনা। + +```text +== দুটি ভ্যালু সমান হলে এই এক্সপ্রেশান এর মান true হয় +!= দুটি ভ্যালু সমান না হলে true হয় +> প্রথম ভ্যালু পরের ভ্যালু থেকে বড় হলে true হয় +>= প্রথম ভ্যালু পরের ভ্যালু থেকে বড় বা সমান হলে true হয় +< প্রথম ভ্যালু পরের ভ্যালু থেকে ছোট হলে true হয় +<= প্রথম ভ্যালু পরের ভ্যালু থেকে ছোট বা সমান হলে true হয় +``` + +উদাহরণ + +```java +‌‌‌‌ + class ComparisonDemo { + + public static void main(String[] args){ + int value1 = 1; + int value2 = 2; + if(value1 == value2) + System.out.println("value1 == value2"); + if(value1 != value2) + System.out.println("value1 != value2"); + if(value1 > value2) + System.out.println("value1 > value2"); + if(value1 < value2) + System.out.println("value1 < value2"); + if(value1 <= value2) + System.out.println("value1 <= value2"); + } + } +``` + +কন্ডিশনাল\( Conditional\) অপারেটর + +&& এবং \|\| এই দু্ই অপারেটরকে কন্ডিশনাল অপারেটর বলে। + +```text + && কন্ডিশনাল অ্যান্ড (Conditional-AND) + || কন্ডিশনাল ওর ( Conditional-OR) +``` + +উদাহরণ- + +```java + class ConditionalDemo1 { + + public static void main(String[] args){ + int value1 = 1; + int value2 = 2; + if((value1 == 1) && (value2 == 2)) + System.out.println("value1 is 1 AND value2 is 2"); + if((value1 == 1) || (value2 == 1)) + System.out.println("value1 is 1 OR value2 is 1"); + } + } +``` + +## চলবে -- + diff --git a/4.md b/4.md index 7554e67..2c42e04 100644 --- a/4.md +++ b/4.md @@ -1,4 +1,6 @@ -# পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং +# পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং + +\# পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং * ইফ-দেন-ইলস * সুইচ @@ -10,35 +12,33 @@ * রিটার্ন স্ট্যাটমেন্ট * সারসংক্ষেপ +আমাদের সোর্সকোডে -এ যেসব স্টেটমেন্ট থাকে তা সাধরারণত উপর থেকে নিচে যে অর্ডার এ দেওয়া থাকে সেই অর্ডারেই এক্সিকিউট হয়। কিন্তু কন্ট্রোল ফ্লো স্টেটমেন্ট এই অর্ডারকে ভেঙ্গে বিভিন্ন ডিসিশান মেকিং, লুপিং এবং ব্রাঞ্চিং এর মাধ্যমে একটি নির্দিষ্ট কোড ব্লক-কে এক্সিকিউট করে। -আমাদের সোর্সকোডে -এ যেসব স্টেটমেন্ট থাকে তা সাধরারণত উপর থেকে নিচে যে অর্ডার এ দেওয়া থাকে সেই অর্ডারেই এক্সিকিউট হয়। কিন্তু কন্ট্রোল ফ্লো স্টেটমেন্ট এই অর্ডারকে ভেঙ্গে বিভিন্ন ডিসিশান মেকিং, লুপিং এবং ব্রাঞ্চিং এর মাধ্যমে একটি নির্দিষ্ট কোড ব্লক-কে এক্সিকিউট করে। - -কন্ট্রোল ফ্লো স্টেটমেন্ট গুলি হচ্ছে - +কন্ট্রোল ফ্লো স্টেটমেন্ট গুলি হচ্ছে - -- ডিসিশান-মেকিং স্টেটমেন্ট (if-then, if-then-else, switch)- -- লুপিং স্টেটমেন্ট (for, while, do-while) -- এবং ব্রাঞ্চিং স্টেটমেন্ট (break, continue, return) +* ডিসিশান-মেকিং স্টেটমেন্ট \(if-then, if-then-else, switch\)- +* লুপিং স্টেটমেন্ট \(for, while, do-while\) +* এবং ব্রাঞ্চিং স্টেটমেন্ট \(break, continue, return\) -`if-then` স্টেটমেন্ট হচ্ছে সব চেয়ে বেসিক কন্ট্রোল ফ্লো স্টেটমেন্ট। +`if-then` স্টেটমেন্ট হচ্ছে সব চেয়ে বেসিক কন্ট্রোল ফ্লো স্টেটমেন্ট। -আমরা যদি একটি প্রোগ্রাম এর একটি নির্দিষ্ট কোড ব্লক শুধু মাত্র একটি বিশেষ কন্ডিশান বা শর্ত সাপেক্ষেে এক্সিকিউট করতে চাই তাহলে আমরা `if-then` স্টেটমেন্ট ব্যবহার করি- +আমরা যদি একটি প্রোগ্রাম এর একটি নির্দিষ্ট কোড ব্লক শুধু মাত্র একটি বিশেষ কন্ডিশান বা শর্ত সাপেক্ষেে এক্সিকিউট করতে চাই তাহলে আমরা `if-then` স্টেটমেন্ট ব্যবহার করি- -উদাহরণ- +উদাহরণ- ```java - int x = 10; + int x = 10; if( x < 20 ){ System.out.print("This is if statement"); } ``` -উপরের কোড ব্লকটিতে আমরা শুধু মাত্র x এর মান 20 হলেই তা প্রিন্ট করতে চাই। +উপরের কোড ব্লকটিতে আমরা শুধু মাত্র x এর মান 20 হলেই তা প্রিন্ট করতে চাই। -`if` স্টেটমেন্ট এর পেরেনস্থেসিস “()” মাঝে একটি বুলিয়ান এক্সপ্রেশান থাকে। বুলিয়ান এক্সপ্রেশান হচ্ছে এক ধরণের এক্সপ্রেশান যার ফলাফল শুধুমাত্র `true` অথবা `false` হতে পারে। এই বুলিয়ান এক্সপ্রেশানটির মান যদি `true` হয় তাহলে এই if স্টেটমেন্ট এর ব্লকটি এক্সিকিউট হবে, নতুবা হবে না। +`if` স্টেটমেন্ট এর পেরেনস্থেসিস “\(\)” মাঝে একটি বুলিয়ান এক্সপ্রেশান থাকে। বুলিয়ান এক্সপ্রেশান হচ্ছে এক ধরণের এক্সপ্রেশান যার ফলাফল শুধুমাত্র `true` অথবা `false` হতে পারে। এই বুলিয়ান এক্সপ্রেশানটির মান যদি `true` হয় তাহলে এই if স্টেটমেন্ট এর ব্লকটি এক্সিকিউট হবে, নতুবা হবে না। -তবে আমাদের প্রথম কন্ডিশান বা শর্ত বা বুলিয়ান এক্সপ্রেশান যদি সত্যি না হয়, এবং এক্ষেত্রে আমরা অন্য একটি ব্লক অব কোড এক্সিকিউট করতে চাই, তাহলে `if-then-else` স্টেটমেন্ট ব্যবহার করি। -উদাহরণ- +তবে আমাদের প্রথম কন্ডিশান বা শর্ত বা বুলিয়ান এক্সপ্রেশান যদি সত্যি না হয়, এবং এক্ষেত্রে আমরা অন্য একটি ব্লক অব কোড এক্সিকিউট করতে চাই, তাহলে `if-then-else` স্টেটমেন্ট ব্যবহার করি। উদাহরণ- ```java if( x < 20 ){ @@ -48,7 +48,7 @@ } ``` -উপরের উদাহরণটি-তে একটি কন্ডিশান বা বুলিয়ান এক্সপ্রেশান ছিল, কিন্তু আমাদের মাঝে মাঝে একাধিক কন্ডিশান থাকতে পারে। তাহলে আরেকটি উদাহরণ দেখা যাক- +উপরের উদাহরণটি-তে একটি কন্ডিশান বা বুলিয়ান এক্সপ্রেশান ছিল, কিন্তু আমাদের মাঝে মাঝে একাধিক কন্ডিশান থাকতে পারে। তাহলে আরেকটি উদাহরণ দেখা যাক- ```java int score = 76; @@ -68,21 +68,22 @@ System.out.println("Grade = " + grade); ``` -উপরের উদাহরণটি যদি আমরা রান করি তাহলে output হবে - - Grade = C - -এখানে প্রথম বুলিয়ান এক্সপ্রেশানটি যদি`‌true` হয, তাহলে ‌` grade = 'A';` কোড ব্লকটি এক্সিকিউট হবে, আর ‌`true` না হয়, তাহলে পরের কোড ব্লক, অর্থাৎ ‌‌`else if (score >= 80)` এক্সপ্রেশানটি ই্ভালুয়েট করা হবে, এবং এটি যদি `true` হয় তাহলে এর কার্লি ব্রেস `{}` এর মাঝের কোড ব্লকটি এক্সিকিউট হবে। অর্থাৎ আমাদের যদি অনেকগুলো কন্ডিশান থাকে তাহলে আমরা ‌`if` কন্ডিশান এর সাথে `else if` দিয়ে সেগুলো-কে এড করতে পারি। এই কন্ডিশান গুলোর মধ্যে যে কোন একটি এক্সপ্রেশান যদি `true` হয় তাহলে সেই ব্লক এর কোডটি এক্সিকিউট হবে । +উপরের উদাহরণটি যদি আমরা রান করি তাহলে output হবে - + +```text +Grade = C +``` -এখানে লক্ষ্য রাখতে হবে যে, প্রথম এক্সপ্রেশানটি যদি ‌`true` হয়, তাহলে কিন্তু বাকি কন্ডিশান গুলো আর ইভালুয়েট হবে না। অর্থাৎ রান টাইমে এই কোড ব্লক গুলো একদম প্রথম ‌`‌if` কন্ডিশান থেকে যতক্ষন পর্যন্ত কোন `true` এক্সপ্রেশান না পাওয়া যায়, ঠিক ততক্ষণ পর্যন্ত এক্সপ্রেশন গুলো ইভালুয়েট হবে। আমাদের উদাহরণটিতে - প্রথম, দ্বিতীয় এবং তৃতীয় এই তিনটি এক্সপ্রেশান ইভালুয়েটেড হয়েছে, এবং তৃতীয়টিতে `true` এক্সপ্রেশান পাওয়া গেছে, এবং ‌`grade = 'C';`এই কোড ব্লকটি এক্সিকিউট হয়েছে। +এখানে প্রথম বুলিয়ান এক্সপ্রেশানটি যদি`‌true` হয, তাহলে ‌`grade = 'A';` কোড ব্লকটি এক্সিকিউট হবে, আর ‌`true` না হয়, তাহলে পরের কোড ব্লক, অর্থাৎ ‌‌`else if (score >= 80)` এক্সপ্রেশানটি ই্ভালুয়েট করা হবে, এবং এটি যদি `true` হয় তাহলে এর কার্লি ব্রেস `{}` এর মাঝের কোড ব্লকটি এক্সিকিউট হবে। অর্থাৎ আমাদের যদি অনেকগুলো কন্ডিশান থাকে তাহলে আমরা ‌`if` কন্ডিশান এর সাথে `else if` দিয়ে সেগুলো-কে এড করতে পারি। এই কন্ডিশান গুলোর মধ্যে যে কোন একটি এক্সপ্রেশান যদি `true` হয় তাহলে সেই ব্লক এর কোডটি এক্সিকিউট হবে । -এভাবে আমাদের যদি একাধিক কন্ডিশান এর জন্য আমরা `if-then-else` ব্যবহার করে কোড লিখতে পারি। যদি একাধিক +এখানে লক্ষ্য রাখতে হবে যে, প্রথম এক্সপ্রেশানটি যদি ‌`true` হয়, তাহলে কিন্তু বাকি কন্ডিশান গুলো আর ইভালুয়েট হবে না। অর্থাৎ রান টাইমে এই কোড ব্লক গুলো একদম প্রথম ‌`‌if` কন্ডিশান থেকে যতক্ষন পর্যন্ত কোন `true` এক্সপ্রেশান না পাওয়া যায়, ঠিক ততক্ষণ পর্যন্ত এক্সপ্রেশন গুলো ইভালুয়েট হবে। আমাদের উদাহরণটিতে - প্রথম, দ্বিতীয় এবং তৃতীয় এই তিনটি এক্সপ্রেশান ইভালুয়েটেড হয়েছে, এবং তৃতীয়টিতে `true` এক্সপ্রেশান পাওয়া গেছে, এবং ‌`grade = 'C';`এই কোড ব্লকটি এক্সিকিউট হয়েছে। +এভাবে আমাদের যদি একাধিক কন্ডিশান এর জন্য আমরা `if-then-else` ব্যবহার করে কোড লিখতে পারি। যদি একাধিক -## Switch +## Switch -আমাদের কোড এ যদি একাধিক এক্সিকিউশান পাথ থাকে তাহলে, আমরা `if-then` এবং `if-then-else` ব্যবহার করে কোড লিখতে পারি। তবে এর পরিবর্তে `switch` স্ট্যাটমেন্ট ও ব্যবহার করতে পারি। -উদাহরণ- +আমাদের কোড এ যদি একাধিক এক্সিকিউশান পাথ থাকে তাহলে, আমরা `if-then` এবং `if-then-else` ব্যবহার করে কোড লিখতে পারি। তবে এর পরিবর্তে `switch` স্ট্যাটমেন্ট ও ব্যবহার করতে পারি। উদাহরণ- ```java public static String getMonth(int month) { @@ -131,34 +132,32 @@ public static String getMonth(int month) { } return monthString; } - ``` ## For Loop -যখন আমাদের একই কাজ বারবার করার প্রয়োজন হয় তখন আমরা লুপ ব্যবহার করি । -ধরুন আপনাকে ১০ বার বাংলাদেশ শব্দটি প্রিন্ট দিতে বলা হল তাহলে আপনি System.out.println("Bangladesh"); দশবার না লিখে For Loop ব্যবহার করতে পারেন । +যখন আমাদের একই কাজ বারবার করার প্রয়োজন হয় তখন আমরা লুপ ব্যবহার করি । ধরুন আপনাকে ১০ বার বাংলাদেশ শব্দটি প্রিন্ট দিতে বলা হল তাহলে আপনি System.out.println\("Bangladesh"\); দশবার না লিখে For Loop ব্যবহার করতে পারেন । ```java for(int i=1;i<=10;i++) { System.out.println("Bangladesh"); - } + } ``` -উপরের কোড টুকুর জন্য Bangladesh শব্দটি ১০ বার প্রিন্ট হবে । -আমরা ইচ্ছা করলে Bangladesh শব্দটি অসংখ্যক বার প্রিন্ট দিতে পারি এভাবে- + +উপরের কোড টুকুর জন্য Bangladesh শব্দটি ১০ বার প্রিন্ট হবে । আমরা ইচ্ছা করলে Bangladesh শব্দটি অসংখ্যক বার প্রিন্ট দিতে পারি এভাবে- ```java for(;;) { System.out.println("Bangladesh"); - } + } ``` -উপরের লুপটাকে infinitive loop বলে । -For-Each Loop: -একটা এরে র সবগুলো এলিমেন্টকে এক্সেস করার জন্য আমরা For-Each Loop ব্যবহার করতে পারি । -নিচের উদাহরণটি দেখুনঃ +উপরের লুপটাকে infinitive loop বলে । + +For-Each Loop: একটা এরে র সবগুলো এলিমেন্টকে এক্সেস করার জন্য আমরা For-Each Loop ব্যবহার করতে পারি । নিচের উদাহরণটি দেখুনঃ + ```java public class ForEachLoop { public static void main(String[] args) { @@ -167,10 +166,11 @@ For-Each Loop: System.out.println(i); } } - } - + } ``` + উপরের কোডটুকুর জন্য আউটপুট আসবে এমনঃ + ```java 3 6 @@ -179,11 +179,12 @@ For-Each Loop: 30 ``` -যতক্ষণ এরের সব এলিমেন্ট প্রিন্ট না হবে ততক্ষণ লুপটি চলবে । +যতক্ষণ এরের সব এলিমেন্ট প্রিন্ট না হবে ততক্ষণ লুপটি চলবে । ## While Loop -ফর লুপের মতই যতক্ষন লুপের কন্ডিশন সত্য হয় ততক্ষণ while loop তার ভিতরের স্টেটমেন্ট এক্সিকিউট করতে থাকে । +ফর লুপের মতই যতক্ষন লুপের কন্ডিশন সত্য হয় ততক্ষণ while loop তার ভিতরের স্টেটমেন্ট এক্সিকিউট করতে থাকে । + ```java while (condition) { //block of statements @@ -193,7 +194,9 @@ while (condition) { statement n; } ``` + উদাহরনঃ + ```java class WhileLoopExample { public static void main(String args[]){ @@ -205,7 +208,9 @@ class WhileLoopExample { } } ``` + আউটপুটঃ + ```java 7 6 @@ -214,36 +219,34 @@ class WhileLoopExample { 3 2 ``` + Infinite while loop: -উদাহরনঃ +উদাহরনঃ + ```java while(1==1){ System.out.println("Bangladesh"); } ``` -উপরের কোডটি দেখে বলুনতো Bangladesh শব্দটি মোট কতবার প্রিন্ট হবে !!! -কারো মনে প্রশ্ন হতে পারে যে for loop দিয়েও তো এসব করা যায় তাহলে আবার while loop কেন? -মনে করুন আপনার এক বন্ধু আপনাকে ফোন করে বললো , তুই ১ ঘন্টার জন্য (for) ওখানে দাঁড়িয়ে থাক আমি আসছি ! -আরেকজন ফোন করে বললো আমি যতক্ষণ (while) না আসবো তুই ওখানে ততক্ষণ দাঁড়িয়ে থাক । +উপরের কোডটি দেখে বলুনতো Bangladesh শব্দটি মোট কতবার প্রিন্ট হবে !!! -প্রথম ক্ষেত্রে আপনি জানেন যে আপনাকে ঠিক কতক্ষণ দাঁড়িয়ে থাকতে হবে । প্রোগ্রামিং এ যদি আপনি জানেন যে ঠিক কতবার এই কাজটি আমাকে করতে হবে তাহলে সেক্ষেত্রে আপনি for loop ব্যবহার করতে পারেন । -২য় ক্ষেত্রে আপনি ঠিক জানেননা যে কতক্ষণ আপনাকে দাঁড়িয়ে থাকতে হবে । যখন আমরা জানিনা যে ঠিক করবার লুপ চালাতে হবে সেসব ক্ষেত্রে আমরা while loop ব্যবহার করতে পারি । -যেমনঃ আপনি যদি একটি টেক্সট ফাইল থেকে লাইন বাই লাইন ইনপুট নিতে চান তখন আপনি while loop ব্যবহার করতে পারেন কারন আপনি ঠিক জানেন না যে কতটা লাইন ইনপুট নিলে ফাইলটার শেষ লাইনে পৌঁছানো যাবে । +কারো মনে প্রশ্ন হতে পারে যে for loop দিয়েও তো এসব করা যায় তাহলে আবার while loop কেন? মনে করুন আপনার এক বন্ধু আপনাকে ফোন করে বললো , তুই ১ ঘন্টার জন্য \(for\) ওখানে দাঁড়িয়ে থাক আমি আসছি ! আরেকজন ফোন করে বললো আমি যতক্ষণ \(while\) না আসবো তুই ওখানে ততক্ষণ দাঁড়িয়ে থাক । +প্রথম ক্ষেত্রে আপনি জানেন যে আপনাকে ঠিক কতক্ষণ দাঁড়িয়ে থাকতে হবে । প্রোগ্রামিং এ যদি আপনি জানেন যে ঠিক কতবার এই কাজটি আমাকে করতে হবে তাহলে সেক্ষেত্রে আপনি for loop ব্যবহার করতে পারেন । ২য় ক্ষেত্রে আপনি ঠিক জানেননা যে কতক্ষণ আপনাকে দাঁড়িয়ে থাকতে হবে । যখন আমরা জানিনা যে ঠিক করবার লুপ চালাতে হবে সেসব ক্ষেত্রে আমরা while loop ব্যবহার করতে পারি । যেমনঃ আপনি যদি একটি টেক্সট ফাইল থেকে লাইন বাই লাইন ইনপুট নিতে চান তখন আপনি while loop ব্যবহার করতে পারেন কারন আপনি ঠিক জানেন না যে কতটা লাইন ইনপুট নিলে ফাইলটার শেষ লাইনে পৌঁছানো যাবে । ## do-while loop -যখন আমরা ঠিক কতবার লুপটি চলবে তা জানিনা কিন্তু মিনিমাম একবার এক্সিকিউট করার দরকার পড়ে তখন do-while loop ব্যবহার করতে পারি । +যখন আমরা ঠিক কতবার লুপটি চলবে তা জানিনা কিন্তু মিনিমাম একবার এক্সিকিউট করার দরকার পড়ে তখন do-while loop ব্যবহার করতে পারি । ```java do { // Statements }while(condition); - ``` -এক্ষেত্রে কন্ডিশন টেস্ট হবার আগেই স্টেটমেন্ট টি এক্সিকিউট হয় । + +এক্ষেত্রে কন্ডিশন টেস্ট হবার আগেই স্টেটমেন্ট টি এক্সিকিউট হয় । উদাহরনঃ @@ -261,7 +264,9 @@ public class DoWhileLoop{ } } ``` + আউটপুটঃ + ```java 5 6 @@ -270,5 +275,5 @@ public class DoWhileLoop{ 9 ``` - ## চলবে ---- + diff --git a/5/5.1.md b/5/5.1.md new file mode 100644 index 0000000..6f8e4c0 --- /dev/null +++ b/5/5.1.md @@ -0,0 +1,469 @@ +# পাঠ ৫.১: ইনহেরিট্যান্স + +\#\# ইনহেরিট্যান্স- + +এবার আমরা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট-এর আরও ভেতরে প্রবেশ করবো। শুরুতেই আমরা ইনহেরিটেন্স নিয়ো আলোচনা করি। + +ইনহেরিটেন্স নিয়ে কথা বলতে হলে এর সাথে আরেকটি বিষয় চলে আসে সেটি হলো অবজেক্ট কম্পোজিশান। এটি মোটামুটিভাবে একটু কঠিন অন্যান্য টপিক থেকে। তাই এই টপিকটি পড়ার সময় একটু ধৈর্য্য নিয়ে পড়তে হবে। + +তো শুরু করার যাক- + +প্রথমেই আমরা কথা বলবো Is - A এবং Has – A নিয়ে। + +যেহেতু আমরা জাভা প্রোগ্রামিং শুরু করেছি, তো আমরা যতই এর ভেতরে প্রবেশ করতে শুরু করবো, ততই বুঝতে শুরু করবো যে ক্লাস আসলে একটা স্ট্যান্ড এলোন কম্পোনেন্ট নয়, বরং এটি অন্যান্য ক্লাসের উপর নির্ভর করে। অর্থাৎ ক্লাস গুলো একটি রিলেশন মেইনটেইন করে চলে। এই রিলেশন গুলো সাধারণত দুই ধরণের হয়- Is - A এবং Has – A। + +আমাদের বাস্তব জগৎ থেকে একটা এনালজি দেয়া যাক । যেমন একটি বিড়াল, কিংবা কার অথবা বাস। বিড়াল হচ্ছে একটি প্রাণি। কার এর থাকে চাকা এবং ইঞ্জিন। বাস এরও থাকে চাকা এব ইঞ্জিন। আবার কার এবং বাস দুটিই ভেহিকল বা যান। + +এখানে যে উদাহরণ গুলো দেয়া হয়েছে এর সবগুলো মূলত Is - A অথবা Has – A রিলেশনশিপ মেইনটেইন করে । যেমন - + +A cat is an Animal \(বিড়াল একটি প্রাণি ।\) A car has wheels \( কার এর চাকা আছে ।\) +A car has an engine \( কার এর একটি ইঞ্জিন আছে ।\) + +তো ব্যপারটি একদম সহজ। ঠিক এই ব্যপারটিকে আমরা আমাদের অবজেক্ট ওরিয়েন্টেট কনসেপ্ট এর মাধ্যমে বলতে পারি। যখন কোন অবজেক্ট এর মাঝে Is – A এই সম্পর্কটি দেখবো তাকে বলবো ইনহেরিটেন্স। আবার যখন কোন অবজেক্ট এর মাঝে Has – A এই সম্পর্কটি দেখবো তখন সেই ব্যপারটিকে বলবো অবজেক্ট কম্পোজিশান। + +ইনহেরিটেন্স মূলত একটি ট্রি-রিলেশানশিপ। অর্থাৎ এটি একটি অবজেক্ট থেকে ইনহেরিট করে আসে। + +আর যখন আমরা অনেকগুলো অবজেক্ট নিয়ে আরেকটি অবজেক্ট তৈরি করবো তখন সেই নতুন অবজেক্ট হলো মেইড-আপ বা নতুন তৈরি করা অবজেক্ট এই ঘটনাটি হলো কম্পোজিশান। + +এর সবই আসলে একটি কনসেপ্ট এবং আইডিয়া থেকে এসেছে, সেটি হলো কোড রিইউজ করা এবং সিম্পল করা। যেমন দুটি অবজেক্ট এর কোড এর কিছু অংশ যদি কমন থাকে তাহলে আমরা সেই অংশটিকে দুইটি ক্লাসের মধ্যে পুনরায় না লিখে বরং তাকে ব্যবহার করতে পারি। + +ধরা যাক, আমরা দুটি অবজেক্ট তৈরি করতে চাই- Animal এবং Cat + +আমরা জানি যে সব Animal খায়, ঘুমায়। সুতরাং আমরা এই ক্লাসে এই দুটি বৈশিষ্ট্য আমরা এই ক্লাসে লিখতে পারি। আবার যেহেতু আমরা জানি যে Cat হচ্ছে একটি Animal। সুতরাং আমরা যদি এমন ভাবে কোড লিখতে পারি, যাতে করে এই Cat ক্লাসের মধ্যে নতুন করে আর সেই দু্টি বৈশিষ্ট্যের কোড আর লিখতে হচ্ছে না, বরং আমর এই Animal ক্লাসটিকে রিইউজ করলাম, তাহলে যে ঘটনাটি ঘটবে তাকেই মূলত ইনহেরিটেন্স বলা হয়। + +এইভাবে আমরা আরও অন্যান্য Animal যেমন, Dog, Cow ইত্যাদি ক্লাস লিখতে পারি। + +কম্পোজিশান তুলনামূলক ভাবে একটু সহজ। + +যেমন আমরা একটি Car তৈরি করতে চাই। Car তৈরি করতে হলে আমাদের লাগবে Wheel এবং Engine. সুতরাং আমরা Wheel এবং Engine এই দুটি ক্লাসকে নিয়ে নতুন আরেকটি ক্লাস লিখবো। + +এবার তাহলে একটি উদাহরণ দেখা যাক। + +‌ + +```java + public class Bicycle { + + // the Bicycle class has three fields + public int cadence; + public int gear; + public int speed; + + // the Bicycle class has one constructor + public Bicycle(int startCadence, int startSpeed, int startGear) { + gear = startGear; + cadence = startCadence; + speed = startSpeed; + } + + // the Bicycle class has four methods + public void setCadence(int newValue) { + cadence = newValue; + } + + public void setGear(int newValue) { + gear = newValue; + } + + public void applyBrake(int decrement) { + speed -= decrement; + } + + public void speedUp(int increment) { + speed += increment; + } + } +``` + +উপরের Bicycle ক্লাসটিতে তিনটি ফিল্ড এবং চারটি মেথড আছে। এবার এই Bicycle থেকে আমরা এর একটি সাব-ক্লাস লিখবো- + +```java + public class MountainBike extends Bicycle { + + // the MountainBike subclass adds one field + public int seatHeight; + + // the MountainBike subclass has one constructor + public MountainBike(int startHeight, + int startCadence, + int startSpeed, + int startGear) { + super(startCadence, startSpeed, startGear); + seatHeight = startHeight; + } + + // the MountainBike subclass adds one method + public void setHeight(int newValue) { + seatHeight = newValue; + } + } +``` + +এই MountainBike ক্লাসটি উপরে Bicycle এর সব ফিল্ড এবং মেথড গুলো ইনহেরিট করে এবং এতে নতুন করে শুধু একটি ফিল্ড এবং একটি মেথড লেখা হয়েছে। তাহলে আমাদের MountainBike ক্লাসটিতে Bicycle ক্লাসটির সব প্রোপ্রাটি এবং মেথড অটোম্যাটিক্যালি পেয়ে গেলো। + +এখানে এ Bicycle হচ্ছে সুপার ক্লাস\(Super Class\) এবং MountainBike হচ্ছে সাব-ক্লাস\(Sub Class\) । অর্থাৎ যে ক্লাস থেকে ইনহেরিট করা হয় তাকে বলা হয় সুপার ক্লাস এবং যে ক্লাস সাব ক্লাস থেকে ইনহেরিট করে + +**মেথড অভাররাইডিং\(Method Overriding\)** + +যদিও সাব-ক্লাস সুপার-ক্লাসের সব গুলো প্রোপ্রার্টি এবং মেথড ইনহেরিটর করে, তবে সাব-ক্লাসে সুপার ক্লাসের যে কোন প্রোপ্রার্টি বা মেথড কে অভাররাইড করা যায়। + +একটি উদাহরণ দেখা যাক- + +```java + public class Circle { + double radius; + String color; + + public Circle(double radius, String color) { + this.radius = radius; + this.color = color; + } + + public Circle() { + radius = 1.0; + color = "RED"; + } + + public double getArea() { + return radius * radius * Math.PI; + } + } +``` + +এই ক্লাসটিতে `getArea()` মেথড একটি বৃত্তের ক্ষেত্রফল রিটার্ন করে। + +এখন আমরা এই ক্লাসটিকে এক্সটেন্ড\(‌‌‌‌‌`extends`‌\) করে নতুন আরেকটি ক্লাস লিখবো- + +```java + public class Cylinder extends Circle { + double height; + + public Cylinder() { + this.height = 1.0; + } + + public Cylinder(double radius, String color, double height) { + super(radius, color); + this.height = height; + } + + @Override + public double getArea() { + return 2 * Math.PI * radius * height + 2 * super.getArea(); + } + } +``` + +এই ক্লাসটিতে `Circle` এর মেথডটি আমরা সাধারণ ভাবেই পেয়ে যাবো। `Cylinder` এর ক্ষেত্রফল নির্ধারণ করতে হলে `getArea()` কল করলেই হয়ে যাচ্ছে। কিন্তু আমরা জানি যে `Circle` এবং `Cylinder` এর ক্ষেত্রফল একভাবে নির্ধারণ করা যায় না। এক্ষেত্রে আমরা যদি `Circle` এর মেথডটি কে ব্যবহার করি তাহলে আমাদের ক্ষেত্রফলের মান ভুল আসবে। এই সমস্যা সমধাণ করার জন্যে আমরা আমাদের `Cylinder` ক্লাসটিতে `getArea()` মেথডটিকে পুনারায় লিখেছি। + +এখানে লক্ষ্য রাখতে হবে যে, দুটি মেথড এর সিগনেচার, রিটার্ন-টাইপ এবং প্যারামিটার লিস্ট একই রকম হতে হবে। + +এখন আমরা যদি `Cylinder` ক্লাস-এর `getArea()` মেথড কল করি, তাহলে অভারাইডেড মেথডটি কল হবে। + +**অ্যনোটেশান\(Annotation\) @Override** + +`@Override` এই অ্যনোটেশানটি জাভা 1.5 ভার্সনে প্রথম নিয়ে আসা হয়। কোন মেথডকে যদি আমরা অভাররাইড করি তাহলে সেই মেথড এর উপরে `@Override` দেয়া হয়। এটি কম্পাইলারকে ইনফর্ম করে যে, এই মেথটি সুপার ক্লাসের অভাররাইডেড মেথড। + +তবে এটি অপশনাল হলেও অবশ্যই ভাল যদি ব্যবহার করা হয়। + +**`super` কিওয়ার্ড** + +আমরা যদি সাব ক্লাস থেকে সুপার ক্লাসের কোন মেথড বা ভেরিয়েবল একসেস করতে চাই তাহলে আমরা এই কিওয়ার্ডটি ব্যবহার করি। কিন্তু আমরা জানি যে সাব ক্লাসে অটোমেটিক্যালি সুপার ক্লাসের সব প্রোপ্রার্টি চলে আসে তাহলে এর প্রয়োজনিয়তা নিয়ে প্রশ্ন হতে পারে। + +আমরা আবার উপরের Cylinder ক্লাসটি আবার দেখি। এই ক্লাসটিতে আমরা নতুন আরেকটি মেথড লিখতে চাই। + +```java + public double getVolume() { + return getArea() * height; + } +``` + +এই মেথডটি-তে `getArea() * height` এই স্ট্যাটমেন্টটি লক্ষ করি। এখানে `getArea()` এই মেথটি কল করা হয়েছে। আমাদের এই `Cylinder` ক্লাসটিতে `getArea()` মেথডটিকে আমরা `Circle` ক্লাস এর `getArea()` মেথড-কে অভারাইড করেছি। সুতরাং আমরা যখন এই `Cylinder` ক্লাস থেকে `getArea()` মেথডটি কল করবো তখন আসলে `Cylinder` ক্লাস এর মেথডটি কল হবে। + +কিন্তু এক্ষেত্রে আমাদের একটি সমস্যা হচ্ছে যে - আমরা জানি সিলিন্ডারের আয়তন + +```text +V = Pi * r^2 * h + = (Pi * r^2) * h + = Area of Circle * h +``` + +সুতরাং Cylinder ক্লাসের ‌`getArea()` মেথডটি ব্যবহার করা যাচ্ছে না। কারণ সিলিন্ডারের ক্ষেত্রফল- + +```text + A = (2 * Pi * r * h) + (2 * Pi * r^2) +``` + +কিন্তু আমরা যদি `Circle` ক্লাস এর মেথডটি ব্যবহার করি তাহলে আমাদের সমস্যা সমাধান হয়ে যায়। এখন যদি আমরা সুপার ক্লাস\(Circle\) এর মেথডটি কল করে এই মেথডটি লিখতে চাই তাহলে - + +```java + public double getVolume() { + return super.getArea() * height; + } +``` + +অর্থাৎ সাব ক্লাসে যদি মেথড অভাররাইড করা হয় এবং তারপরেও কোন কারণে যদি আমাদের সুপার ক্লাসের মেথড কে কল করার প্রয়োজন হয় তাহলে আমরা সুপার\(`super`\) কিওয়ার্ডটি ব্যবহার করি। + +ইনহেরিটেন্স এর ক্ষেত্রে মনে রাখতে হবে – + +জাভা মাল্টিপল ইনহেরিটেন্স সাপোর্ট করে না। এর মানে হচ্ছে আমার একটি ক্লাস শুধুমাত্র একটি ক্লাসকেই ইনহেরিট করতে পারে। + +**কনস্ট্রাক্টর অভাররাইডিং\(Constructor Overriding\)** + +মেথডের মত কনস্ট্রাকটরও অভাররাইড এবং ওভারলোড \(Overload\) করা যায় । অভাররাইড করা যায় বলতে অনেক ক্ষেত্রে কনস্ট্রাকটর অভাররাইড ম্যান্ডেটরি । প্যারেন্ট ক্যালে যদি এমন কোন কনস্ট্রাক্টর থাকে যেটি প্রাইভেট নয় এবং যেটি এক বা একাধিক ইনপুট প্যারামিটার নিয়ে থাকে তবে চাইল্ড ক্লাসে অবশ্যই সেই কনস্ট্রাক্টর অবশ্যই অভাররাইড করতে হবে । এটা বাধ্যতামূলক । একটা ছোট্ট উদাহরন দিয়ে বিষয়টি আমরা পরিষ্কার করে নিতে পারি । + +```java +class Animal { + + String animalName ; + String animalColor ; + + public Animal(String animalName, String animalColor){ + + this.animalName = animalName; + this.animalColor = animalColor; + } + + public void showName(){ + System.out.println("Animal Name is: "+this.animalName); + } + public void showColor(){ + System.out.println("Animal Color is: "+this.animalColor); + } +} + +class Cow extends Animal{ + + private String work ; + public Cow(String animalName, String animalColor) { +// this.work = "No Work";//This is not valid + super(animalName, animalColor);//super in constructor have to be on top + this.work = "Gives Milk";//This is valid + } + + @Override + public void showColor() { + System.out.println("Before showColor in child"); + super.showColor(); + } + + @Override + public void showName() { + super.showName(); + System.out.println("After showName in child"); + } + public void showDescription(){ + this.showName(); + System.out.println("Animal Work is: "+this.work); + this.showColor(); + } +} + + +public class Main { + + public static void main(String[] args) { + + Cow cow = new Cow("White Cow", "White"); + cow.showDescription(); + } +} +``` + +উপরের কোডটি মন দিয়ে লক্ষ করুন । প্যারেন্ট ক্লাস `Animal` এর মাঝে একটি পাবলিক কনস্ট্রাক্ট আছে যেটি দুটি প্যারামিটার নিয়ে থাকে । তাই এটার চাইল্ড ক্লাসেও আমাদের অবশ্যই একটি কনস্ট্রাক্টর থাকতে হবে যেটির মাঝে প্যারেন্ট ক্লাসের ওই কনস্ট্রাকটর ইনভোক করতে হবে । এটা ম্যান্ডেটরি । এটি না করলে কোড কম্পাইলেশন এরর শো করবে এবং কম্পাইলই হবেনা । আরো একটি বিষয় চাইল্ড ক্লাসের কনস্ট্রাক্টরের মাঝ থেকে প্যারেন্ট ক্লাসের কনস্ট্রাক্টরকে `super` কিয়াওর্ড দিয়ে কল করতে হবে তবে , `super` কিয়াওর্ড অবশ্যই সবার উপর থাকতে হবে । এমনকি একটি প্রিন্ট স্টেটমেন্টও থাকতে পারবে না । `super` এর পর যা খুশি থাকতে পারে কোন সমস্যা নাই । এছাড়া অন্য একাধিক কনস্ট্রাক্টর ডিক্লেয়ার করার প্রয়োজন হলে সেটাও করতে পারবেন , এটাকে বলা হবে কনস্ট্রাক্টর ওভারলোডিং । যথারীতি এর মাঝেও `super` বাবাজি অধিপত্য বিরাজ করে বসে থাকবে । + +তবে মেথড আর কনস্ট্রাক্টরের ওভাররাইডিং এর মাঝে এটা বড় একটা পার্থক্য যে মেথডের ক্ষেত্রে সুপার আপনারা কাজের সুবিধার জন্য যেকোন যায়গার ব্যাবহার করতে পারবেন । তবে কনস্ট্রাক্টরের ক্ষেত্রে আঈন খুবই কঠিন । + +**অভারলোডিং অফ মেথড & কনস্ট্রাক্টর \( Overloading of method and constructor \):** + +অভারলোডিং বলতে খুব সাধারন ভাষায় বোঝায় একই নামের এবং একই রিটার্ন টাইপের \( নাও হতে পারে \) একাধিক মেথড বা কনস্ট্রাক্টর \( এক্ষেত্রে কোন রিটার্ন টাইপ থাকবে না \) বিদ্যমান থাকা । তার অর্থ দাড়ালো একই ক্লাসের মাঝে একই নামের এবং রিটার্ন টাইপের একাধিক মেথড বা কনস্ট্রাক্টর বিদ্যমান থাকবে । বিষয়টা একটু গোলমেলে মনে হচ্ছে তাইনা ? আসলে তেমন কিছুই নয় , বরং বিষয়টি অন্য অনেক কিছুর থেকেও অনেক বেশি সরল । একই নামের মেথড বা কনস্ট্রাক্ট থাকলেও তাদের ইনপুট প্যারামিটার কিন্তু একই হবেনা । ইনপুট টাইপ হয়ত ভিন্ন টাইপের হবে নাহয় একটি মেথড থেকে অন্যান্য মেথডের ইনপুট প্যারামিটার সংখ্যা ভিন্ন হবে । উদাহরন সহকারে আমরা আমাদের কনফিউশন দুর করতে পারি । চলুন একটি উদাহরন দেখে নেওয়া যাকঃ + +```java +public class Main { + + private int initialNumber; + private int terminalNumber; + + public Main(int initialNumber, int terminalNumber) { + + this.initialNumber = initialNumber; + this.terminalNumber = terminalNumber; + } + + public Main(int terminalNumber) { + + this(0, terminalNumber); + } + + public Main() { + + this(0, 100); + } + + public void showNumbers() { + + System.out.println("First Number: " + this.initialNumber + ", Second Number: " + this.terminalNumber); + } + + public static void main(String[] args) { + + Main m = new Main(1, 5); + m.showNumbers(); + Main m2 = new Main(5); + m2.showNumbers(); + Main m3 = new Main(); + m3.showNumbers(); + } +} +``` + +উপরের কোড সেগমেন্টটিতে আমরা দেখতে পারছি যে একই `Main` ক্লাসে একই নামের কনস্ট্রাক্টর ৩ টি । খেয়াল করলে দেখা যাবে যে ৩ টি কনস্ট্রাক্টর প্রায় একই কাজ করলেও তাদের ইনপুট প্যারামিটার কিন্তু একই নয় । একেকজন একেক রকম ইনপুট নিয়ে কাজ করছে । এভাবে একই ক্লাসের মাঝে একাধিক কাজের জন্য একাধিক কনস্ট্রাক্টর ব্যাবহার করাকে বলাহয় কনস্ট্রাক্টর অভারলোডিং । যেখানে একই কনস্ট্রাক্টরের লোড অভার হয়ে গিয়েছে :P + +ওকে, এবার আসা যাক মেথড অভারলোডিং এর বিষয়ে । কনস্ট্রাক্টরের মত মেথড অভারলোডিংও সেম ম্যাকানিজম ফলো করে । একটি উদাহরন দিলেই বিষয়টি পরিষ্কার হয়ে যাবেঃ + +```java +public class Main { + + private int sum(int a, int b){ + return a+b; + } + private int sum(int a, int b, int c){ + return a+b+c; + } + private int sum(int ... a){ + + int result = 0; + for(int x : a){ + result+=x; + } + return result; + } + + public static void main(String[] args) { + + Main m = new Main(); + System.out.println(m.sum(3, 5)); + System.out.println(m.sum(3, 5, 7)); + System.out.println(m.sum(3, 5, 7, 17)); + System.out.println(m.sum(3, 5, 7, 17, 23)); + } +} +``` + +উপরোক্ত কোডটিতে দেখুন `sum` মেথডটি ৩ বার লেখা হয়েছে । মেথডের আইডেন্টিফায়ার, রিটার্ন টাইপ সবই ঠিক আছে তবু কাজ করছে ! হ্যা কারন আপনার ইনপুট প্যারামিটার ভিন্ন দিয়েছি । প্রথম `sum` মেথড কেবল ২ টি নাম্বারের যোগ করে দিতে পারে । দ্বিতীয়টি পারে ৩ টি নাম্বারের , আর শেষেরটি পারে যত সংখ্যক ইন্টিজার নাম্বারই দেওয়া হোক না কেন সে যোগ করে রেজাল্ট দিবে । সিম্পলি এটাকেই বলা হয় মেথড ওভারলোডিং । যেখানে একই নামের একাধিক মেথড থাকে যাদের নাম এক হলেও ইনপুট প্যারামিটার বা কাজের ধরন সম্পূর্ন আলাদা হয় । + +**অ্যাবস্ট্রাক্ট ক্লাস \( Abstract Class \):** + +অ্যাবস্ট্রাক্ট ক্লাস হল বিশেষ এক ধরনের ক্লাস যেটির মাঝে কমপক্ষে একটি অ্যাবস্ট্রাক্ট মেথড থাকবে । তাহলে প্রশ্ন হল অ্যাবস্ট্রাক্ট মেথড আসলে কি জিনিস । অ্যাবস্ট্রাক্ট মেথড হল এমন এক ধরনের মেথড যেটার কোন বডি নেই। সোজা কথায় যে মেথডের অ্যাক্সেস মডিফায়ার আছে, রিটার্ন টাইপ আছে, মেথডের নাম আছে, ইনপুট প্যারামিটার আছে কিন্তু কোন বডি ডিফাইন করা নেই । বডি এম্পটি বা অ্যাবস্ট্রাক্ট সেজন্য এই মেথডকে অ্যাবস্ট্রাক্ট মেথড বলা হয়েছে । চলুন ছোট্ট একটা উদাহরন দেখে পরে ব্যাখ্যার দিকে যাই । + +```java +public abstract class Animal{ + + public abstract String color(); + public void name(){ + System.out.println(“Tiger”); + } +} +``` + +উপরোক্ত কোডটিতে `Animal` একটি অ্যাবস্ট্রাক্ট ক্লাস । অ্যাবস্ট্রাক্ট ডিক্লেয়ার করার সময় `class` কিওয়ার্ডের আগে `abstract` কিওয়ার্ডটি লিখতে হবে । অ্যাবস্ট্রাক্ট ক্লাস পাবলিক বা ডিফল্ট যেকোনটিই হতে পারে । এই ক্লাস অ্যাবস্ট্রাক্ট ডিক্লেয়ার করার কারন এর মাঝে আমরা একটি অ্যাবস্ট্রাক্ট মেথড ডিক্লেয়ার করেছি যেটির নাম `color` । সহজেই আমরা বুঝতে পারছি যে অ্যাবস্ট্রাক্ট মেথড ডিক্লেয়ার করতে গেলে তার আগে `abstract` কিওয়ার্ডটি ব্যাবহার করতে হবে । লক্ষ করে দেখুন `color` মেথডের অ্যাক্সেস মডিফায়ার, রিটার্ন টাইপ \( ইনপুট প্যারামিটার দিলে দেওয়া সম্ভব \) সবই আছে কিন্তু কোন বডি নেই । এজন্য এই মেথডকে বলা হয়েছে অ্যাবস্ট্রাক্ট মেথড । একটি অ্যাবস্ট্রাক্ট ক্লাসে যেমন একাধিক অ্যাবস্ট্রাক্ট মেথড থাকতে পারে তেমন সাধারন মেথডও থাকতে পারে প্রচুর পরিমান । প্রশ্ন হল কেন এই অ্যাবস্ট্রাক্ট মেথড ? + +অ্যাবস্ট্রাক্ট ক্লাসের কোন ইন্সট্যান্স ক্রিয়েট করা যায়না যতক্ষন না সবগুলা অ্যাবস্ট্রাক্ট মেথডকে ওভাররাইড করা হচ্ছে । অ্যাবস্ট্রাক্ট মেথড হল একটা রুলের বা নিয়মের মত । এই মেথডের মাধ্যমে বলে দেওয়া হচ্ছে যে , যে ক্লাসই এই `Animal` ক্লাসকে এক্সটেন্ড করবে তাকে অবশ্যই `color` মেথডটি ওভাররাইড করতে হবে এবং নিজস্ব কাজের উপর ভিত্তি করে তাকে । যদি `Animal` ক্লাসকে `Bird` ক্লাস এক্সটেন্ড করে কিন্তু `color` মেথডটি ওভাররাইড না করে তবে `Bird` ক্লাসটিকেও অবশ্যই অ্যাবস্ট্রাক্ট ক্লাস হতে হবে । + +```java +abstract class Animal{ + + abstract void color(); +} + +abstract class Bird extends Animal{ + //abstract void color(); is present by default +} + +class Crow extends Bird{ + + @Override + void color() { + System.out.println("Black"); + } +} +public class Main { + + public static void main(String[] args) { + + //Animal animal = new Animal(); //This is not possible + //Bird animal = new Bird(); //This is not possible + Crow bird = new Crow(); + bird.color(); + } +} +``` + +উপরোক্ত কোডটিতে আমরা `Bird` ক্লাসের অবজেক্ট কোনভাবেই ক্রিয়েট করতে পারবো না যতক্ষন পর্যন্ত না আমরা এর সব অ্যাবস্ট্রাক্ট মেথড ইম্প্লিমেন্ট করছি । সে কাজটি করা সম্ভব এই ক্লাসটিকে যদি অন্য কোন ক্লাস এক্সটেন্ড করে এবং সব অ্যাবস্ট্রাক্ট মেথড ইম্লিমেন্ট করে অথবা অবজেক্ট ক্রিয়েট করার সময় আমরা সব অ্যাবস্ট্রাক্ট মেথড ইমপ্লিমেন্ট করে দেই । প্রথম কাজটি আপনারা পারেন । এখানে ২য় উপায়টি দেখানো হলঃ + +```java +public class Main { + + public static void main(String[] args) { + + Bird bird = new Bird() { + @Override + void color() { + System.out.println("White"); + } + }; + bird.color(); + } +} +``` + +**ইন্টারফেস \( Interface \):** + +ইনহেরিট্যান্সের খুব গুরুত্বপূর্ন এবং কার্যকরী একটি টার্মস হল ইন্টারফেস । ইন্টারফেস ডিক্লেয়ার করতে হয় `interface` কিওয়ার্ডটি দিয়ে । এটি `public` বা ডিফল্ট যেকোনটিই হতে পারে ক্লাসের মত । আমরা ইতোমধ্যে জেনে ফেলেছি `Abstract` ক্লাস এবং অ্যাবস্ট্রাক্ট মেথড কি জিনিস । অ্যাবস্ট্রাক্ট ক্লাস এবং মেথড বুঝে থাকলে ইন্টারফেস বুঝতে পারা খুব বেশি কঠিন কিছুই নয় । ইন্টারফেস এমন একটি ক্লাস যেখানে সবগুলা মেথডই অ্যাবস্ট্রাক্ট । অর্থাৎ ১০০% অ্যাবস্ট্রাক্ট ক্লাসকে ইন্টারফেস বলা যায় । অ্যাবস্ট্রাক্ট ক্লাসে অ্যাবস্ট্রাক্ট মেথড এবং রেগুলার মেথড দুটিই ছিল কিন্তু ইন্টারফেসে কোন প্রকার রেগুলার মেথড থাকবে না । ইন্টারফেসে কেবল অ্যাবস্ট্রাক্ট মেথডই থাকবে । চলুন আমরা একটি উদাহরন দেখে নেইঃ + +```java +interface Animal{ + + public abstract void name(String animalName); + String color(); +} + +interface Cow{ + void work(); +} + +public class Main implements Animal, Cow{ + + public static void main(String[] args) { + + Main m = new Main(); + m.name("I don't know this :P"); + System.out.println(m.color()); + m.work(); + } + + @Override + public void name(String animalName) { + System.out.println(animalName); + } + + @Override + public String color() { + return "Red"; + } + + @Override + public void work() { + System.out.println("Gives Milk"); + } +} +``` + +লক্ষ করুন এখানে `interface` কিওয়ার্ডটি দিয়ে দুটি ইন্টারফেস ডিক্লেয়ার করা হয়েছে, যথাক্রমে `Animal` এবং `Cow` । `Animal` ইন্টারফেসের মধ্য দুটি মেথড আছে যাদের একজনে `public` এবং `abstract` ডিক্লেয়ার করা হয়েছে কিন্তু অন্য মেথডটি কেবল রিটার্নটাইপ দেওয়া হয়েছে । এটির কারন হল ইন্টারফেসের মাঝে আপনি যদি কোন মেথডের পূর্বে `public` এবং `abstract` ডিক্লেয়ার নাও করেন তবু তারা বাই ডিফল্ট পাবলিক এবং অ্যাবস্ট্রাক্ট । এবার আসি `Main` ক্লাসে । এতক্ষন আমরা যেনে এসেছি যে জাভা মাল্টিপল ইনহেরিট্যান্স সাপোর্ট করেনা তাহলে এখানে কেন দুটি ইন্টারফেস ইম্লিমেন্ট করছে ? হ্যা সেটাই করবে কারন পরে ব্যাখ্যা করা হবে । এখানে লক্ষনীয় বিষয় হল ইন্টারফেসকে কিন্তু `implements` কিওয়ার্ড দিয়ে ইমপ্লিমেন্ট করতে হয় । এখানে কিন্তু এক্সটেন্ড হবেনা । একটি ক্লাস কেবল অন্য একটি ক্লাসকে এক্সটেন্ড করতে পারবে তবে একই সাথে অন্য শুন্য , এক বা একাধিক ইন্টারফেসকেও ইমপ্লিমেন্ট করতে পারবে । একাধিক ইন্টারফেস ইমপ্লিমেন্ট করার প্রয়োজন হলে কমা \( , \) দিয়ে একটির পর আরেকটি যোগ করতে হবে । তবে অবশ্যই অ্যাবস্ট্রাক্ট মেথড ইমপ্লিমেন্ট করতে ভুলবেন না । :P + +কয়েকটি বিষয় জেনে রাখা ভালোঃ + +১\) একটি ক্লাস একটি মাত্র ক্লাস বা অ্যাবস্ট্রাক্ট ক্লাসকে এক্সটেন্ড করতে পারবে । ২\) একটি ক্লাস বা অ্যাবস্ট্রাক্ট ক্লাস এক বা একাধিক ইন্টারফেসকে ইমপ্লিমেন্ট করতে পারবে । ৩\) একটি ইন্টারফেস এক বা একাধিক ইন্টারফেসকে এক্সটেন্ড \(ইমপ্লিমেন্ট নয় কিন্তু\) করতে পারবে । + +উল্লেখ্য অ্যাবস্ট্রাক্ট মেথডের মত ইন্টারফেসেরও কোন অবজেক্ট ক্রিয়েট করা যায়না । যায়না সেটা বলা ভুল তবে সরাসরি যায়না । কিভাবে যায় সেটা বোঝার জন্য আপনাদের পলিমরফিজম পর্যন্ত যাওয়া লাগবে । ;\) + diff --git a/5/5.2.md b/5/5.2.md new file mode 100644 index 0000000..8e5dfbf --- /dev/null +++ b/5/5.2.md @@ -0,0 +1,259 @@ +# পাঠ ৫.২: পলিফরফিজম + +\#\# পলিমরফিজম \(Polymorphism\) + +এবার আমরা কথা বলবো পলিমরফিজম নিয়ে। শব্দটির মধ্যেই একটি বিশেষ গাম্ভীর্য আছে যা কিনা একটি সাধারণ কথোপকথনকে অনেক গুরুত্বর্পূণ করে তুলতে পারে। তবে এটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর একটি বহুল ব্যবহৃত কৌশল । এই শব্দটির সহজ মানে হচ্ছে যার একাধিক রূপ আছে অর্থাৎ বহুরূপিতা। + +সহজ কথায় পলিমরফিজম হল এমন একটি টেকনিক বা পদ্ধতি যেখানে আমরা একটি ক্লাস, অ্যাবস্ট্রাক্ট ক্লাস বা ইন্টারফেসের অবজেক্ট ক্রিয়েট করি তার চাইল্ড ক্লাসের কনস্ট্রাক্টরের মাধ্যমে । অর্থাৎ আমরা একটি ক্লাসের অবজেক্ট ক্রিয়েট করবো অন্য একটি ক্লাসের কনস্ট্রাক্টর কল করে । সহজ ভাষায় এটিই হল পলিমরফিজম । + +মনে করা যাক, ‌‌ ‌ + +```text + public class Liquid { + public void swirl(boolean clockwise) { + // Implement the default swirling behavior for liquids + System.out.println("Swirling Liquid"); + } + } +``` + +এখন এর একটি অবজেক্ট তৈরি করতে চাইলে – আমাদের new অপারেটর ব্যবহার করে তা একটি ভেরিয়েবল এ রাখতে হবে। + +```text + Liquid myFavoriteBeverage = new Liquid (); +``` + +এখানে `myFavoriteBeverage` হচ্ছে আমাদের ভেরিয়েবল যা `Liquid` অবজেক্ট এর রেফারেন্স। আমরা এখন পর্যন্ত যা যা শিখেছি সে অনুযায়ী এই স্টেন্টমেন্টটি যথার্থ। তবে আমরা এর আগের অধ্যায়ে `Is-A` সম্পর্কে জেনে এসেছি। + +আমাদের জাভা প্রোগ্রামিং পলিমরফিজম সাপোর্ট করায় আমরা `myFavoriteBeverage` এই রেফারেন্সের যায়গায় `Is-A` সম্পর্কিত যে কোন টাইপ রাখতে পারি। যেমন – ‌ ‌ + +```text + Liquid myFavoriteBeverage = new Coffee(); + Liquid myFavoriteBeverage = new Milk(); +``` + +এখানে `Coffee` এবং `Milk` হচ্ছে`Liquid`এর সাব- ক্লাস বা টাইপ এবং `Liquid` এদের সুপার ক্লাস বা টাইপ। + +পলিমরফিজম নিয়ে আরও একটু আশ্চর্য হতে চাইলে আমরা এখন একটি বিষয় জানবো যা দিয়ে আমরা কোন একটি অবজেক্ট এর কোন মেথড কল করবো তবে তা কোন ক্লাসের অবজেক্ট সেটি না জেনেই। আরেকটু পরিষ্কার করে বলি, আমরা যখন সুপার ক্লাসের এর রেফারেন্স ধরে কোন এর মেথড কল করবো তখন কিন্তু আমরা জানি না যে এটি আসলে কোন অবজেক্ট এর মেথড। যেমন- ‌ ‌ + +```text + Liquid myFavoriteBeverage = // …. +``` + +এখানে আমাদের myFavoriteBeverage এই রেফারেন্স এ `Liquid`, `Coffee`, `Milk` এর যেকোন একটির অবজেক্ট হতে পারে। উদাহরণ - +‌ + +```text + public class Coffee extends Liquid { + @Override + public void swirl(boolean clockwise) { + System.out.println("Swirling Coffee"); + } + } + + public class Milk extends Liquid{ + @Override + public void swirl(boolean clockwise) { + System.out.println("Swirling Milk"); + } + } + + public class CoffeeCup { + private Liquid innerLiquid; + + void addLiquid(Liquid liq) { + innerLiquid = liq; + // Swirl counterclockwise + innerLiquid.swirl(false); + } + } +``` + +আমরা এখানে একটি `CoffeeCup` ক্লাস লিখেছি যার মাঝে `addLiquid()` নামে একটি মেথড আছে যা কিনা একটি `Liquid` টাইপ parameter নেয়, এবং সেই `Liquid` এর `swirl()` মেথড-কে কল করে। + +কিন্তু আমরা আমাদের সত্যিকারের জগতে একটি কফি-কাপ এ শুধুমাত্র কফি-ই এড করতে পারি তা নয়, আমরা চাইলে যে কোন ধরণের লিকুইড এড করতে পারি, সেটি মিল্ক ও হতে পারে। তাহলে এই `addLiquid` মেথড তো শুধুমাত্র `Liquid` টাইপ parameter নেয়, তাহলে আমাদের সত্যিকারের জগতের সাথে এই প্রোগ্রামিং মডেল এর সাদৃশ্য থাকলো কোথায় ? + +তবে মজার ব্যপার এখানেই, আমাদের এই `CoffeeCu`p ক্লাসটি পলিমরফিজমের ম্যজিক ব্যাবহার করে সত্যিকার অর্থেই আমাদের সত্যিকারের জগতের `CoffeeCup` এর মতোই কাজ করে। ‌ + +```text + public class MainApp { + public static void main(String[] args) { + // First you need a coffee cup + CoffeeCup myCup = new CoffeeCup(); + + // Next you need various kinds of liquid + Liquid genericLiquid = new Liquid(); + Coffee coffee = new Coffee(); + Milk milk = new Milk(); + + // Now you can add the different liquids to the cup + myCup.addLiquid(genericLiquid); + myCup.addLiquid(coffee); + myCup.addLiquid(milk); + } + } +``` + +উপরের কোড গুলোতে দেখা যাচ্ছে যে আমরা একটি `CoffeeCup` এর একটি অবজেক্ট তৈরি করে সেটি তে বিভিন্ন রকম `Liquid` এড করতে পারছি। + +আরেকটু লক্ষ্য করি, + +```java + void addLiquid(Liquid liq) { + innerLiquid = liq; + // Swirl counterclockwise + innerLiquid.swirl(false); + } +``` + +এই মেথডটিতে innerLiquid.swirl\(false\) যখন কল করি তখন কিন্তু আমরা জানি না যে এই innerLiquid আসলে কোন অবজেক্ট এর রেফারেন্স। এটি লিকুইড বা এর যে কোন সাব-টাইপ হতে পারে। + +কিছু প্রয়োজনীয় তথ্য- + +১. একটি সাব ক্লাস এর অবজেক্টকে আমরা এর সুপার ক্লাসের রেফারেন্স এ এসাইন করতে পারি। ২. সাব ক্লাসের অবজেক্টকে সুপার ক্লাসের রেফারেন্স-এ এসাইন করলে, মেথড কল করার সময় শুধু মাত্র সুপার ক্লাসের মেথড গুলোকেই কল করতে পারি। ৩. তবে সাব ক্লাস যদি সুপার ক্লাসের মেথড অভাররাইড করে, তাহলে যদিও আমরা সুপার ক্লাস এর রেফারেন্স ধরে মেথড কল করছি, কিন্তু রানটাইম-এ সাব ক্লাসের মেথডটি কল হবে। মনে রাখতে হবে এটি শুধুমাত্র মেথড অভাররাইড করা হলেই সত্য হবে। + +**আপ-কাস্টিং\(Upcasting \) এবং ডাউনকাস্টিং \(Downcasting\)** + +```java + Liquid liquid = new Coffee (); +``` + +এখানে সাব ক্লাসের অবজেক্টকে সুপার ক্লাসের রেফারেন্স এ এসাইন করা হয়ছে। একে বলা হয় আপ-কাস্টিং। এই কাস্টিং সবসময় সেইফ ধরা হয় কারণ আপকাস্টং এর ক্ষেত্রে সাব ক্লাস সবসময়ই সুপার ক্লাসের সবকিছু ইনহেরিট করে এবং কম্পাইলার কম্পাইল করার সময়-ই এ কাস্টিং করা সম্ভব কিনা তা চেক করে থাকে। + +```java + Liquid liquid = new String(); +``` + +উপরের স্টেটমেন্টটি কম্পাইলার কম্পাইল করবে না, কারণ `String` মোটেই `Liquid` ক্লাসের সাব ক্লাস নয়। এক্ষেত্রে কম্পাইলার incompatible types ইরর দেখাবে। + +**হোমেজিনিয়াস কালেকশন \( Homogeneous Collection \):** + +হোমোজিনিয়াস কালেকশন হল একই ক্লাসের কিছু সংখ্যক অবজেক্টের কালেকশন । একটি উদাহরন দিয়ে বিষয়টি একটু সুরাহা করা যাকঃ + +```java +interface Animal { + + public abstract void name(String animalName); +} + +class Cow implements Animal { + + private String animalName; + + public void work(String animalWork) { + System.out.println("Work of " + this.animalName + " is " + animalWork); + } + + @Override + public void name(String animalName) { + this.animalName = animalName; + System.out.println("Name of the animal is: " + this.animalName); + } +} + +public class Main { + + public static void main(String[] args) { + + Animal[] collection1 = new Cow[3]; + collection1[0] = new Cow(); + collection1[1] = new Cow(); + collection1[2] = new Cow(); + + Cow[] collection2 = new Cow[3]; + collection2[0] = new Cow(); + collection2[1] = new Cow(); + collection2[2] = new Cow(); + } +} +``` + +লক্ষ করুন । এখানে `Cow` ক্লাসটি `Animal` ইন্টারফেসের চাইল্ড । এবং `Main` ক্লাসের `main` মেথড এর মাঝে ২ টি অবজেক্টের অ্যারে ডিক্লেয়ার করা হয়েছে । একটি `Animal` ক্লাসের অবজেক্টের অ্যারে যেটির সবগুলা অবজেক্ট `Cow` ক্লাসের কনস্ট্রাক্টর দিয়ে ইন্সট্যানশিয়েট করা হয়েছে । এখানে পলিমরফিজম স্পষ্ট । এবং অন্যটি অবজেক্ট অ্যারেটি চীরাচরিত অবজেক্ট অ্যারে । এই দুইি অ্যারেই হল হোমোজিনিয়াস কালেকশনের উদাহরন । বোঝা যায়নি ? ওকে, এখানে `collection1` অ্যারেটির প্রতিটি অবজেক্টই `Cow` ক্লাসের কনস্ট্রাক্টর দিয়ে ইন্সট্যানশিয়েট করা হয়েছে । তার মানে `collection1` এর মাঝে সবগুলা অবজেক্টই একই ধরনের । যেহেতু এই অ্যারেটির সবগুলা এলিমেন্ট একই ধরনের/ক্লাসের অবজেক্ট সুতরাং এটিকে বলা হবে হোমোজিনিয়াস কালেকশন । একই কথা `collection2` এর ক্ষেত্রেও প্রোযোজ্য । + +**হেটারোজিনিয়াস কালেকশন \( Heterogeneous Collection \):** + +ভিন্নধর্মী অবজেক্টের কালেকশনকেই বলা হয় হেটারোজিনিয়াস কালেকশন । হেটারোজিনিয়াস কালেকশন বুঝতে হলে আমাদের একটি উদাহরন দেখে নেওয়া উত্তমঃ + +```java +class Animal { + + String animalName ; + public Animal(String animalName){ + this.animalName = animalName; + } + public void name(){ + System.out.println("Animal name is: "+this.animalName); + } +} + +class Cow extends Animal { + + public Cow(String animalName) { + super(animalName); + } + + public void work(String animalWork) { + System.out.println("Work of " + this.animalName + " is " + animalWork); + } +} + +class Dog extends Animal { + + public Dog(String animalName) { + super(animalName); + } + + public void work(String animalWork) { + System.out.println("Work of " + this.animalName + " is " + animalWork); + } +} + +class Cat extends Animal { + + public Cat(String animalName) { + super(animalName); + } + + public void work(String animalWork) { + System.out.println("Work of " + this.animalName + " is " + animalWork); + } +} + +public class Main { + + public static void main(String[] args) { + + Animal[] animals = new Animal[4]; + animals[0] = new Animal("Dolphin"); + animals[1] = new Cow("Big Cow"); + animals[2] = new Dog("Red Dog"); + animals[3] = new Cat("White Cat"); + } +} +``` + +খুব ভালোভাবে লক্ষ করুন । আমরা `Animal` ক্লাসের অবজেক্টের একটু অ্যারে ডিক্লেয়ার করেছি যার সাইজ ৪ । কিন্তু ইন্সট্যানশিয়েট করার সমস আমরা পলিমরফিজম মেকানিজম ব্যাবহার করে এর চাইল্ড ক্লাসের ভিন্ন ভিন্ন কনস্ট্রাক্টর দিয়ে ইন্সট্যানশিয়েট করেছি । অর্থাৎ `animals` অ্যারেটির প্রতিটি অবজেক্টই আলাদা আলাদা কনস্ট্রাক্ট দিয়ে ইন্সট্যানশিয়েট করা এবং তাদের বিহ্যাভিয়েরাল পার্থ্য আছে । এধরনের কালেকশনকে বলা হয় হেটারোজিনিয়াস কালেকশন । + +এবার একটু ভিন্ন পন্থায় এগোন যাক । মেইন ক্লাসটিকে আমরা একটু মডিফাই করবো । বাকী সবই ঠিক থাকবে আগের মত । + +```java +public class Main { + + public static void main(String[] args) { + + Animal animal = new Cat("Cute Cat"); + animal.name(); + //animal.work("Some Work");//Not possible + Cat cat = new Cat("Preety Cat"); + cat.name(); + cat.work("It plays"); + } +} +``` + +খেয়াল করে দেখুন আমরা `Animal` এবং `Cat` এর অবজেক্ট ক্রিয়েট করার সময় কনস্ট্রাক্টর ব্যাবহার করেছি `Cat` এর কিন্তু `Animal` এর অবজেক্ট থেকে আমরা `work` মেথডটি কোন ভাবেই কল করতে পারছি না বা পারবো না কিন্তু `Cat` এর অবজেক্ট থেকে ঠিকই পারছি । কারনটা কি ? কারন হল `Animal` ক্লাসের মাঝে ঠিক যে যে মেথড আছে সেগুলাকেই আমরা অ্যাক্সেস করতে পারব তবে `Cat` এর ইমপ্লিমেন্টেশন দিয়ে । `Animal` এর মাঝে নেই কিন্তু `Cat` ক্লাসে বাড়তি আছে এমন কোন মেথডকে আমরা অ্যাক্সেস করতে পারবো না । এমনকি `Animal` ক্লাসের অবজেক্টে `Cat` ক্লাসের `work` মেথডের কোন রেফারেন্সই ক্রিয়েট হবেনা । + +তাহলে এটা করি কেন আমরা ? এটা করার পেছনে বেশ কিছু কারন থাকতে পারে । প্রথমত আমরা প্যারেন্ট ক্লাস এবং চাইল্ড ক্লাসের ইমপ্লিমেন্টশন নিয়ে কাজ করতে চাইলে পলিমরফিজমের এই সুবিধাটি নেওয়া হয় । অন্য কারনটি হল মেমোরি কনজাম্পশন । ভেবে দেখুন যদি `Animal` ক্লাসে ৩ টি মেথড থাকে যেগুলার জন্য আপনি `Cat` ক্লাসের ইমপ্লিমেন্টেশন ব্যাবহার করতে চান , কিন্তু `Cat` ক্লাসের মাঝে ১৫ টির মত মেথড আছে এবং অনেক অ্যাট্রিবিউট । আপনি যদি `Cat` এর অবজেক্ট ক্রিয়েট করেন তবে মেমোরি থেকে প্রচুর স্পেস কনজিউম করবে উক্ত অবজেক্ট । অন্যদিকে আপনি যদি `Animal` এর অবজেক্ট ক্রিয়েট করেন `Cat` এর কনস্ট্রাক্টর ব্যাবহার করে তাহলে `Cat` ক্লাসের ইমপ্লিমেন্টেশন ব্যাবহার করতে পারছেন এবং মেমোরি থেকে খুব কম মেমোরি কনজিউম করছে \( `Animal` মেথডগুলার জন্য প্রয়োজনীয় মোমোরি মাত্র \) । কোনটি বেশি সুবিধাজনক ? এছাড়া আরো কারন আছে । পরবর্তীতে সেগুলা নিয়েও আলোচনা করা হবে । + +## চলবে ..... + diff --git a/5/5.3.md b/5/5.3.md new file mode 100644 index 0000000..9e2c144 --- /dev/null +++ b/5/5.3.md @@ -0,0 +1,102 @@ +# পাঠ ৫.৩: এনক্যাপসুলেশান + +আমরা এতোক্ষনে জেনে ফেলেছি যে, একটি অবজেক্ট হলো কতগুলো ডাটা এবং মেথড এর সমষ্টি। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর আরেকটি খুবই গুরুত্বপূর্ণ বিষয় আছে, যা হচ্ছে, একটি ক্লাসের মধ্যে ডাটা গুলোকে লুকিয়ে রাখা এবং শুধুমাত্র মেথডের মাধ্যমে সেগুলোকে একসেস করতে দেওয়া। এর নাম হচ্ছে এনক্যাপসুলেশান\(Encapsulation\) । এর মাধ্যমে আমরা সব ডাটা গুলোকে ক্লাসের মধ্যে সিল করে একটা কেপসুলের মধ্যে রেখে দিই এবং সেগুলো শুধুমাত্র যেসব মেথড গুলোকে ট্রাস্ট করা যায়, তাদের মাধ্যমে একসেস করতে দিই। + +তবে এই এতো প্রোটেকশান এর কারণ কি হতে পারে তা যদি একটু জেনে নিই শুরুতে তাহলে আমার মনে খুব ভাল হয় – + +যারা অনেক লেখালেখি করে এমনকি যারা কোড লিখে তারাও জানে যে, একটা লেখা ততই ভাল হয় সেটাকে যত বেশি রি-রাইট করা হয়। আপনি যদি একটা কোড লিখে ফেলে রাখেন এবং কিছুদিন পরে আবার সেটি খুলে দেখেন- দেখা যাবে যে আপনি আরও একটি ভাল উপায় বের পেয়ে যাবেন সেই কোডটি লেখার। এটি সব সময়ই হয়। এই বার বার কোড চেঞ্জ করে নতুন করে লেখাকে বলা হয় রিফেক্টরিং\(refactoring\)। আমরা একটি কোডকে বার বার লিখে সেটাকে আরও বেশি কিভাবে সহজবোধ্য কোড লেখার চেষ্টা করি যাতে সেই কোডটি আরও ভালভাবে মেইনটেইন করা যায়। + +কিন্তু এখানে একটি চিন্তার বিষয় হচ্ছে। আমরা জানি যে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর মাধ্যমে আমরা যে সফটওয়্যার সিস্টেম তৈরি করি তাতে নানা রকম অসংখ্য অবজেক্ট থাকে যেখানে একটি অবজেক্ট আরেকটির সাথে তথ্য আদান প্রদান করে, একটি আরেকটির উপর নির্ভর করে কাজ করে থাকে। ধরা যাক, A একটি অবজেক্ট যার উপর B নির্ভর করে। ধরা যাক B এখানে কনজ্যুমার অবজেক্ট। এখন আমারা যদি A কে কোন রকম পরিবর্তন করতে চাই, তাহলে B আগের মতোই থাকতে চাইবে। এখানে দুটো অবজেক্ট হয়তো দুইজন ভিন্ন প্রোগ্রামার লিখে থাকতে পারে। সুতরাং একে অন্যের পরিবর্তন নিয়ে যাতে সমস্যায় পরতে না হয়, সেই ব্যবস্থা করতে হবে। আমরা অনেক সময় নানা রকম লাইব্রেরি ব্যবহার করতে হয় বিভিন্ন প্রজেক্টে এবং এগুলোর উপর নির্ভর করে করে আমাদের প্রজেক্ট দাড়িয়ে যায়। এই লাইব্রেরি গুলোর মাঝেই মাঝেই ভার্সন পরিবর্তন হয়। কিন্তু মজার ব্যপার হলো এগুলো পরিবর্তন হলেও আমাদের কোড নতুন করে লিখতে হয় না। আবার অন্যদিকে লাইব্রেরি যারা তৈরি করে তাদেরও এই কোড পরিবর্তনের স্বাধীনতা থাকা চাই, কিন্তু সক্ষেত্রে যাতে আমাদের প্রজেক্ট এর কোন সমস্যা যাতে না হয় সেটাও মনে রাখতে হবে। + +তো এই সমস্যা সমাধানের একটি উপায় আছে। সেটি হলো- লাইব্রেরি কোড-এর যে মেথড গুলো আছে সেগুলো মোটেও রিমুভ করা যাবে না। কারণ আমরা যখন একটি লাইব্রেরির একটি নির্দিষ্ট ক্লাসের মেথড নিয়ে কাজ করবো, আমরা চাইবো না কোন ভাবেই আমাদের কোড ভেঙ্গে যাক। লাইব্রেরির প্রোগ্রামার সেই ক্লাস নিয়ে যা কিছু করতে পারবে, কিন্তু আমরা যে সব মেথড ব্যবহার করেছি সেগুলোকে মুছে ফেলতে পারবে না। তারপর ফিল্ড বা প্রোপ্রার্টিজ এর ক্ষেত্রেও লাইব্রেরি যে লিখেছে সে কিভাবে জানবে যে কোন ফিল্ড বা প্রোপ্রার্টিজ গুলো আমরা আমাদের প্রজেক্ট এর ক্ষেত্রে একসেস করেছি? কোন ভাবেই জানার উপায় নেই। কারণ আমারা আমাদের কোড কিভাবে করেছি যা লাইব্রেরি যে লিখেছে তার জানার কথা নয়। কিন্তু যে প্রোগ্রামার লাইব্রেরি লিখেছে সে সবসময়ই চাইবে তার কোড এ নতুন কিছু এড করতে, আগের থেকে ভাল করা ইত্যাদি। এ্ই সমস্যা সমাধানের জন্যে জাভা আমাদেরকে কতগুলো একেসেস স্পেসিফায়ার \(access specifiers\) দিয়ে থাকে, যার মাধ্যমে লাইব্রেরি প্রোগ্রামার ঠিক করতে পারে যে কোড এর কোন কোন অংশ গুলো আমরা যখন আমাদের প্রজেক্ট এ ব্যবহার করতে পারবো আর কোন কোন গুলো করতে পারবো না। এতে সুবিধা হচ্ছে, লাইব্রেরি প্রোগ্রামার সে সব অংশ গুলো আমাদেরকে ব্যবহার করতে দিচ্ছে, সেই অংশ গুলোতে ইচ্ছে মতো পরিবর্তন/পরিবর্ধন করতে পারবে কোন রকম চিন্তাভাবনা ছাড়া। + +আমারা যখন একটা বড় সিস্টেমে কাজ করি আমাদের নানা রকম অবজেক্ট লিখতে হয়। একটি অবজেক্ট আরেকটি অবজেক্ট কে ব্যবহার করে। এই একেসেস প্রটেকশানের মাধ্যমে আমরা নির্ধারণ করে দিতে পারি যে একটি নির্দিষ্ট অবজেক্ট এর কোন অংশ গুলো অন্য অবজেক্ট ব্যবহার করতে পারবে ,আর কোন গুলো পারবে না। এতে উপরের সমস্যার সমাধান হয়ে যায়। এছাড়াও আরেকটি ব্যাপার হয়। আমরা যখন কোন একটি ক্লাস নিয়ে কাজ করতে যাবো, সেই অবজেক্ট-এ হাজার লাইন কোড থাকে পারে। পুরটা একেবারে দেখতে গেলে আমরা হয়তো কনফিউজড হয়ে যাবো কিংবা খুব কমপ্লেক্স কোড হলে বুঝতে অসুবিধা হতে পারে। কিন্তু সেই কোড যদি এমন ভাবে করা থাকে যেখানে অল্প অংশ আমাদের ব্যবহারের জন্যে অপেন করা থাকে, বাকি গুলো হাইড করা যাকে তাহলে আমরা যে অংশটুকু হাইড করা সেই অংশ নিয়ে চিন্তা করতে হবে না। এই কোড হাইড করার ঘটনাকে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর ভাষায় এনক্যাপসুলেশান\(Encapsulation\) বলা হয়। + +জাভাতে তিনটি একেসে কন্ট্রোল করার জন্যে তিনটি কি ওয়ার্ড আছে। সেগুলো হলে- ‌`Public`, `protected` এবং `private` এখন আমরা বিভিন্ন রকম একসেস কন্ট্রোল দেখবো- + +## Default Access + +এর মানে হচ্ছে আমরা যদি কোন কি-ওয়ার্ড ব্যবহার না করি তাহলে সেটি Default Access এর মাঝে পরে। কোন ক্লাস এর ভেরিয়েবল বা মেথড এর আগে যদি কোন একসেস মডিফায়ার না থাকে তাহলে সেই ক্লাসটি যে প্যাকেজের মধ্যে আছে সেই প্যাকেজ এর সব ক্লাস থেকে একসেস করা যাবে। + +```java +package bd.com.howtocode.java; + +import java.util.Random; + +public class HelloWorld { + String version = "2.56"; + + int getRandomInt() { + return new Random().nextInt(); + } +} +``` + +এই ক্লাসের ভেরিয়েবল version এবং getRandomInt\(\) মেথড কে bd.com.howtocode.java এই প্যাকেজ এর সকল ক্লাস একসেস করতে পারবে। + +## Private Access Modifier - `private`: + +কোন ক্লাসের মেথড, ভেরিয়েবল, কনস্ট্রাকটর এর আগে যদি private কিওয়ার্ড থাকে তাহলে সেগুলোকে সেই ক্লাস ছাড়া অন্য কোন ক্লাস একসেস করতে পারবে না। + +উদাহরণ- + +```java + package bd.com.howtocode.java; + + public class User { + private String name; + private String emailAddress; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmailAddress() { + return emailAddress; + } + + public void setEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + } + } +``` + +এই ক্লাসের এর ভেরিয়েবল `name` এবং `emailAddress` কে কোন ভাবেই অন্য কোন ক্লাস থেকে একসেস করা যাবে না। কিন্তু আমরা যদি এদের কে একসেস করতে চাই তাহলে একসেসর মেথড ব্যাবহার করতে পারি। + +## Public Access Modifier - `public`: + +কোন ক্লাসের মেথড, ভেরিয়েবল, কনস্ট্রাকটর এর আগে যদি public কিওয়ার্ড থাকে তাহলে সেগুলোকে যে কোন ক্লাস থেকে একসেস করা যায়। + +```java +public class Milk{ + public void swirl(boolean clockwise) { + System.out.println("Swirling Milk"); + } +} +``` + +## Protected Access Modifier - `protected`: + +কোন ক্লাসের মেথড, ভেরিয়েবল, কনস্ট্রাকটর এর আগে যদি protected কিওয়ার্ড থাকে তাহলে সেগুলোকে অন্য প্যাকেজ থেকে সেই ক্লাসের সাব ক্লাস একসেস করতে পারবে আর নিজের প্যাকেজ এর সবাই একসেস করতে পারবে। + +```java +class AudioPlayer { + protected boolean openSpeaker(Speaker sp) { + // implementation details + } +} +``` + +একসেস লেভেল একটি টেবলি - + +| Modifier | Class | Package | Subclass | World | +| :--- | :--- | :--- | :--- | :--- | +| public | Y | Y | Y | Y | +| protected | Y | Y | Y | N | +| no modifier | Y | Y | N | N | +| private | Y | N | N | N | + diff --git a/5/README.md b/5/README.md new file mode 100644 index 0000000..5a61770 --- /dev/null +++ b/5/README.md @@ -0,0 +1,47 @@ +# পাঠ ৫: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-১ + +* অবজেক্ট +* ক্লাস +* ইন্টারফেইস +* অ্যবস্ট্রাক্ট ক্লাস +* স্ট্যাটিক মেম্বার +* অবজেক্ট ওরিয়েন্টেড কনসেপ্ট +* ইনহেরিট্যান্স +* পলিমরফিজম +* ইনকেপসুলেশান +* সারসংক্ষেপ + +শুরুতে বস্তুর ধারণা নিয়ে একটি ছোট্ট ব্যাখ্যা দেই, পরবর্তীতে আমি এই কথাগুলো আরো ব্যাখ্যা করে বলবো। আমরা সবাই কম্পিউটার ব্যবহার করি, যারা একটু বেশি কৌতূহলী তারা নিশ্চয় কম্পিউটারের বক্স খুলে খুলে দেখে ফেলেছে যে, এর মধ্যে নানা রকম যন্ত্রাংশ থাকে, যেমন, র‍্যাম, হার্ডডিস্ক, মাদারবোর্ড, সিপিইউ, কুলিং ফ্যান ইত্যাদি। এইসব মিলেই কম্পিউটার। কিন্তু মজার ব্যপার হলো, এর সবই একটি কোম্পানি তৈরি করেনি। কেও র‍্যাম তৈরি করে, কেওবা মাদারবোর্ড, কেও বা আবার সিপিইউ। কিন্তু সবাই আলাদা আলাদা ভাবে সবকিছু তৈরি করলেও আমরা যখন পুরো কম্পিউটারটি এসেম্বল করি, কি সুন্দর ভাবে সব ঠিক ঠাক ভাবে লেগে যায়, কোন সমস্যা হয় না। একজন ম্যাকানিক-ও যার নাকি কম্পিউটার সায়েন্স এ ডিগ্রি নেই, সেও জানে কিভাবে সব কিছু এসেম্বল করতে হয়। র‍্যাম এর মধ্যে কি আছে সে সম্পর্কে তার কোনই ধারণা নেই, কিংবা সিপিইউ । অবজেক্ট ওরিয়েন্টেড কনসেপ্ট মূল ব্যাপারটি হলো এটি। একটা সিস্টেমে অনেক গুলো কম্পোনেন্ট থাকতে পারে, কিন্তু সব কম্পোনেন্ট গুলো কেও একা তৈরি করবে না এইটাই স্বাভাবিক, এবং এগুলো এমন ভাবে তৈরি করা হয় যাতে খুব সহজেই এদেরকে এসেম্বল করে পুরো সিস্টেম দাড় করানো যায়। + +অবজেক্ট ওরিয়েন্টেড কনসেপ্ট এর ধারণার সাথে পরিচিত হতে হলে শুরুতে আমাদের কিছু টার্ম বা শব্দের সাথে পরিচিত হতে হয়। আমি শুরুতে এনালজি বা উপমা দিয়ে বুঝানো চেষ্টা করবো, তারপর মূল বিষয়ে চলে আসবো। + +**অবজেক্ট \(Object\):** + +এর মানে হচ্ছে বস্তু। পৃথিবীতে যা কিছু দেখি, অনুভব করি, তার সবই বস্তু। যেমন- মোবাইল ফোন, চশমা, এমনকি আমি নিজেও একটি অবজেক্ট। আমরা যেহেতু প্রোগ্রামার, এখন একটু সেভাবে কথা বলি। প্রোগ্রামিং এ একটা ধারণাও অবজেক্ট। অবজেক্ট কে কিভাবে দেখা হচ্ছে তা নির্ভর করে যে দেখছে তার উপর। মনে করা যাক, একটি অফিসের বড়ো কর্তা \(CEO\) সে দেখবে, এমপ্লয়ি, বিল্ডিং, ডিভিশন, নোটপত্র, বেনিফিট প্যাকেজ, লাভ ক্ষতির হিসেব এগুলো অবজেক্ট। একজন আর্কিটেক্ট দেখবে, তার প্ল্যান, মডেল, এলেভেশান, ডোনেজ, ডেন্টিল, আর্মাচার ইত্যাদি। সেভাবে একজন সফটওয়্যার ইঞ্জিনিয়ারের অবজেক্ট হলো, স্ট্যাক, কিউ, উইন্ডো, চেক বক্স ইত্যাদি। অবজেক্ট এর একটি স্টেট থাকে। স্টেট হলো কিছু তথ্য যা দিয়ে ওই অবজেক্টকে আলাদা করা যায়, এবং তার বর্তমান অবস্থান জানা যায়। যেমন একটি ব্যাংক একাউন্ট স্টেট হতে পারে কারেন্ট ব্যালেন্স। একটা অবজেক্ট এর মধ্যে আরেকটি অবজেক্ট থাকতে পারে, যা ওই অবজেক্ট এর স্টেট হতে পারে। + +অবজেক্ট সাধারণত কিছু কাজ করে থাকে যাকে বলে তার বিহেভিয়ার। যেমন ধরা যাক, সাইক্যালের চাকা, চাকার স্টেট হতে পারে এর ব্যাসার্ধ, পরিধি, গতি ইত্যাদি এবং চাকার বিহেভিয়ার হলো এটি ঘুরে। এখন যেহেতু আমরা সাইক্যাল এর চাকাকে কে আমরা প্রোগ্রামিং এর মাধ্যমে প্রকাশ করবো, সতুরাং এগুলোকে আমরা ভ্যারিয়েবল এ রাখবো। আর বিহেভিয়ার গুলোকে আমরা ফাংশন এর মাধ্যমে লিখি। আমরা এর আগে যাকে ফাংশন বলে এসেছি এখন থেকে আমরা ফাংশন কে ফাংশন বলবো না, আমরা এদেরকে মেথড বলবো। + +সুতরাং আমরা জানলাম, অবজেক্ট এর দুইটা জিনিস থাকে, স্টেট \( অর্থাৎ নিজের সম্পর্কে ধারণা\) এবং মেথড \(সে কি কি কাজ করতে পারে\)। + +**ক্লাস\(Class\)** + +অবজেক্ট সম্পর্কে আমরা জানলাম। ক্লাস হলো সেই অবজেক্টটি তৈরি করার প্রক্রিয়ার একটি অংশ। মনে করি আমরা একটি কলম বানাতে চাই, শুরুতে আমরা কোন রকম চিন্তা ভাবনা না করে ফু দিয়ে একটা কিছু বানিয়ে ফেলতে পারি না। আমরা এর জন্যে পরিকল্পনা করি- কলমাটা দেখতে কেমন হবে, এটি লম্বা কতটুকু হবে, কলমটি কি কি কাজ করবে ইত্যাদি। এই পরিকল্পনা গুলো আমরা আমরা কোথাও লিখে রাখি। আমাদের এই লেখা ডকুমেন্টটি আসলে ক্লাস। সহজ একটি ব্যাপার। + +অবজেক্ট ওরিয়েন্ট কনসেপ্ট তিনটি ধারণার উপর প্রতিষ্ঠিত। + +এক, _**ইনহেরিট্যান্স-**_ নাম থেকেই বুঝা যাচ্ছে যে এখানে বংশগতির একটা বিষয় চলে এসেছে। আসলেও তাই। ধরা যাক একটি একটা চাকা। নানা রকম চাকা হতে পারে, যেমন বাসের চাকা, সাইক্যাল এর চাকা, মটর সাইক্যাল এর চাকা ইত্যাদি। সব চাকার মধ্যেই কিন্তু কিছু কমন ব্যাপার আছে, এটির ব্যাসার্ধ আছে, পরিধি আছে এবং এটি ঘুরে। সুতরাং আমরা একটা চাকা নামের অবজেক্ট বানাতে পারি যা বাকি সব চাকা\(বাস, সাইক্যাল এর\) পূর্বপুরুষ। এতে আমাদের বেশি কিছু সুবিধা আছে, প্রধান সুবিধে হলো, কমন জিনিস গুলো নিয়ে আমাদের পূর্বপুরুষ তৈরি করার কাজ একবার করে ফেললেই হচ্ছে, উত্তরপুরুষ গুলোতে আপনা আপনি সেই বৈশিষ্ট্যগুলো চলে আসবে। + +দুই, _**এনক্যাপসুলেশান-**_ মানে হলো জিনিসপত্র ক্যাপসুলের মধ্যে ভরে রাখা। আমরা অনেকেই ক্যাপসুল মেডিসিন খেয়েছি, এটির বাইরে একটা আবরণ দিয়ে সব কিছু ভেতরে আটকানো থাকে । ব্যাপারটি এমনি। + +তিন, _**পলিমরফিজম**_ – বহুরূপিতা। অর্থাৎ একি অঙ্গে নানা রূপ। একটা অবজেক্ট নানা সময় নানা রকম রূপ ধারণ করতে পারে। + +তবে কেন এই অবজেক্ট ওরিয়েন্টেড কনসেপ্ট লাগবে সেটি নিয়ে প্রশ্ন হতে পারে। এবার তাহলে এই প্রশ্নের উত্তর ব্যাখ্যা করা যাক। + +আমাদের পরিচিত প্রথাগত বা প্রসিডিউরাল প্রোগ্রামিং ল্যাংগুয়েজ যেমন- সি এর কিছু অসুবিধা রয়েছে। আমরা চাইলেই সহজে পুনরায় ব্যবহারযোগ্য কম্পোনেন্ট তৈরি করতে পারি না। সবচেয়ে বড় অসুবিধা হলো আমরা চাইলেই একটি প্রোগ্রাম থেকে একটি ফাংশান কপি করে অন্য একটি প্রোগ্রামে ব্যবহার করতে পারি না কারণ ফাংশন গুলো সাধারণত কিছু গ্লোবাল ভেরিয়েবল এবং অন্যান্য ফাংশন এর উপর নির্ভর করে। এই ল্যাংগুয়েজ গুলো হাই-লেভেল এবস্ট্রাকশান এর জন্যে মানানসই নয়। যেমন সি যে কম্পোনেন্ট গুলো ব্যবহার করে সেগুলো খুব লো-লেভেল-এর যা দিয়ে একটি বাস্তব জগতের সমস্যাকে খুব সহজে চিত্রায়ণ \(portray\) করা সম্ভব হয় না। কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট বা সিআরএম অথবা ফুটবল খেলাকে সহজে সি দিয়ে চিত্রায়ণ করা কঠিন। + +১৯৭০ সালের যুক্তরাষ্ট্রের প্রতিরক্ষা অদিদপ্তরের একটি টাস্কফোর্স তদন্ত করে বের করার চেষ্টা করে কেন আইটি\(IT\) বাজেট সবসময় নিয়ন্ত্রণ করা সম্ভব হয় না। সেগুলোর মধ্যে প্রধান গুলো এমন- ৮০% বাজেট শুধুমাত্র সফটওয়্যার এর জন্যে ব্যয় হয় আর বাকি ২০% ব্যয় হয় হার্ডওয়্যার এর জন্যে। এর মধ্যে ৮০% ব্যয় হয় শুধুমাত্র সফটওয়্যার মেইনটেইন করার জন্যে, বাকি ২০% ব্যয় হয় সফটওয়্যার তৈরি করার জন্যে। হার্ডওয়্যার গুলো সহজেই রিইউজ বা পুনরায় ব্যবহার করা যায় এবং এতে এদের ইন্টিগ্রিটি নষ্ট হয় না, এবং একটি হার্ডওয়্যার একটি বিশেষ অংশ নষ্ট হয়ে গেলে তা সহজেই আলাদা করে ফেলা যায় এবং নতুন একটি দিয়ে রিপ্লেস করা যায়। কিন্তু সফটওয়্যার এর ক্ষেত্রে এমন সম্ভব হয় না, একটি প্রোগ্রাম এর সমস্যার জন্যে অন্য প্রোগ্রাম এর সমস্যা তৈরি হয় ইত্যাদি। + +এই সমস্যা সমাধান করার জন্যে এই টাস্কফোর্স পরিশেষে প্রস্তাব করে যে সফটওয়্যার-ও হার্ডওয়্যার এর মতো হওয়া উচিৎ। পরবর্তীতে তারা তাদের সিস্টেম এর ৪৫০ টি প্রোগ্রামিং ল্যাংগুয়েজ রিপ্লেস করে এডা \(Ada\) নামে একটি অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাংগুয়েজ ব্যবহার করে। + +## চলবে ------- + diff --git a/6.1.md b/6.1.md index 3606eb9..4a23f46 100644 --- a/6.1.md +++ b/6.1.md @@ -1,16 +1,16 @@ -##এক্সেপশান হ্যান্ডেলিং: চলুন আরও একটু গভীরভাবে পর্যবেক্ষণ করি +# পাঠ ৬.১: ক্লোজার লুক -আমরা ইতিমধ্যে জেনে ফেলেছি যে, একটা সিস্টেম এ নানা রকম সমস্যা হতে পারে। একটি প্রোগ্রাম চলতে গিয়ে হঠাৎ করে থেমে যেতে পারে কিংবা ক্র্যাশ করতে পারে। কিন্তু আমরা যখন একটি প্রোগ্রাম লিখি, আমরা অবশ্যই চাই প্রোগ্রামটি ভাল ভাবে চলুক কোন রকম সমস্যা ছাড়ায়। কিন্তু সমস্যা হতেই পারে এবং এর জন্যে আমাদের প্রস্তুত হয়ে থাকাটা জরুরী। +আমরা ইতিমধ্যে জেনে ফেলেছি যে, একটা সিস্টেম এ নানা রকম সমস্যা হতে পারে। একটি প্রোগ্রাম চলতে গিয়ে হঠাৎ করে থেমে যেতে পারে কিংবা ক্র্যাশ করতে পারে। কিন্তু আমরা যখন একটি প্রোগ্রাম লিখি, আমরা অবশ্যই চাই প্রোগ্রামটি ভাল ভাবে চলুক কোন রকম সমস্যা ছাড়ায়। কিন্তু সমস্যা হতেই পারে এবং এর জন্যে আমাদের প্রস্তুত হয়ে থাকাটা জরুরী। শুরুতে একটি টার্ম সম্পর্কে পরিচয় করিয়ে দিই - Fault-tolerant -ফল্ট টলারেন্ট যার বাংলা হতে পারে সমস্যা সহিষ্ণু। আমরা যেহেতু জানি যে আমাদের প্রোগ্রাম-এ সমস্যা হতে পারে, এবং আমরা চাই যে সখন সমস্যাটি হবে- তখনও প্রোগ্রামটি বন্ধ না হয়ে অন্য কোন ভাবে চলতে থাকে। আমরা যদি এমন ভাবে প্রোগ্রামটি লিখতে পারি তাহলে সেই প্রোগ্রামকে ফল্ট টলারেন্ট প্রোগ্রাম লিখবো। +ফল্ট টলারেন্ট যার বাংলা হতে পারে সমস্যা সহিষ্ণু। আমরা যেহেতু জানি যে আমাদের প্রোগ্রাম-এ সমস্যা হতে পারে, এবং আমরা চাই যে সখন সমস্যাটি হবে- তখনও প্রোগ্রামটি বন্ধ না হয়ে অন্য কোন ভাবে চলতে থাকে। আমরা যদি এমন ভাবে প্রোগ্রামটি লিখতে পারি তাহলে সেই প্রোগ্রামকে ফল্ট টলারেন্ট প্রোগ্রাম লিখবো। -মনে করা যাক – আমাদের দেশে একটা সময় প্রতি ঘণ্টায় একবার করে চলে পাওয়ার যেত। এখন যদি কোন সিস্টেম তৈরি করি যা পাওয়ার এর উপর নির্ভরশীল, তাহলে যাখন পাওয়ার থাকবে না, তখন সিস্টিমটি কাজ করবে না। এজন্যে আমরা বিকল্প ব্যবস্থা হিসেবে জেনারেটর রাখতে পারি, যাতে করে যখন মেইন পাওয়ার লাইন থাকবে না, তখন জেনারেটরের মাধ্যমে আমাদের সিস্টেমটি চলতে থাকবে। এই সিস্টেমটিকে আমরা তখন ফল্ট টলারেন্ট সিস্টেম বলবো। +মনে করা যাক – আমাদের দেশে একটা সময় প্রতি ঘণ্টায় একবার করে চলে পাওয়ার যেত। এখন যদি কোন সিস্টেম তৈরি করি যা পাওয়ার এর উপর নির্ভরশীল, তাহলে যাখন পাওয়ার থাকবে না, তখন সিস্টিমটি কাজ করবে না। এজন্যে আমরা বিকল্প ব্যবস্থা হিসেবে জেনারেটর রাখতে পারি, যাতে করে যখন মেইন পাওয়ার লাইন থাকবে না, তখন জেনারেটরের মাধ্যমে আমাদের সিস্টেমটি চলতে থাকবে। এই সিস্টেমটিকে আমরা তখন ফল্ট টলারেন্ট সিস্টেম বলবো। -তো আমাদের এই টপিক এর উদ্দেশ্য হচ্ছে আমরা কিভাবে ফল্ট টলারেন্ট জাভা প্রোগ্রাম লিখতে পারি। +তো আমাদের এই টপিক এর উদ্দেশ্য হচ্ছে আমরা কিভাবে ফল্ট টলারেন্ট জাভা প্রোগ্রাম লিখতে পারি। -শুরুতে আমরা একটি প্রোগ্রাম দেখি যাতে একসেপশান হ্যান্ডেলিং ব্যবহার করা হয় নি। +শুরুতে আমরা একটি প্রোগ্রাম দেখি যাতে একসেপশান হ্যান্ডেলিং ব্যবহার করা হয় নি। নিচের প্রোগ্রামটি রান করুন- @@ -37,7 +37,8 @@ public class DivideByZeroNoExceptionHandling { ``` **Take 1** -``` + +```text Please enter an integer: 100 Please enter another integer: @@ -45,45 +46,48 @@ Please enter another integer: Result: 100/45 = 2 ``` -**Take# 2** +**Take\# 2** -``` +```text Please enter an integer: 100 Please enter another integer: 0 Exception in thread "main" java.lang.ArithmeticException: / by zero - at com.bazlur.tips.DivideByZeroNoExceptionHandling.divide(DivideByZeroNoExceptionHandling.java:11) - at com.bazlur.tips.DivideByZeroNoExceptionHandling.main(DivideByZeroNoExceptionHandling.java:22) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.lang.reflect.Method.invoke(Method.java:498) - at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) -```` + at com.bazlur.tips.DivideByZeroNoExceptionHandling.divide(DivideByZeroNoExceptionHandling.java:11) + at com.bazlur.tips.DivideByZeroNoExceptionHandling.main(DivideByZeroNoExceptionHandling.java:22) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) +` +``` -**Take # 3** +**Take \# 3** -``` +```text Please enter an integer: 100 Please enter another integer: bazlur Exception in thread "main" java.util.InputMismatchException - at java.util.Scanner.throwFor(Scanner.java:864) - at java.util.Scanner.next(Scanner.java:1485) - at java.util.Scanner.nextInt(Scanner.java:2117) - at java.util.Scanner.nextInt(Scanner.java:2076) - at com.bazlur.tips.DivideByZeroNoExceptionHandling.main(DivideByZeroNoExceptionHandling.java:20) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.lang.reflect.Method.invoke(Method.java:498) - at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) -```` - - -- Take #1 এ প্রোগ্রামটি খুব ভাল ভাবে রান করছে। -- Take #2 তে ইনপুট হিসেবে শূণ্য দেওয়াতে আমাদের প্রোগ্রামটি ঠিকভাবে কাজ করেনি বরং অনেকগুলো লাইন প্রিন্ট করেছে। -- Take #3 তে ইনপুন হিসেবে ইন্টিজার এর পরিবর্তে স্ট্রিং দেওয়ায় প্রোগ্রামটি কাজ করে নি, বরং অনেকগুলো লাইন প্রিন্ট করেছে যা কিনা বলছে ইনপুটি সঠিক হয় নি। -এই লাইনগুলোর + at java.util.Scanner.throwFor(Scanner.java:864) + at java.util.Scanner.next(Scanner.java:1485) + at java.util.Scanner.nextInt(Scanner.java:2117) + at java.util.Scanner.nextInt(Scanner.java:2076) + at com.bazlur.tips.DivideByZeroNoExceptionHandling.main(DivideByZeroNoExceptionHandling.java:20) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) +` +``` + +* Take \#1 এ প্রোগ্রামটি খুব ভাল ভাবে রান করছে। +* Take \#2 তে ইনপুট হিসেবে শূণ্য দেওয়াতে আমাদের প্রোগ্রামটি ঠিকভাবে কাজ করেনি বরং অনেকগুলো লাইন প্রিন্ট করেছে। +* Take \#3 তে ইনপুন হিসেবে ইন্টিজার এর পরিবর্তে স্ট্রিং দেওয়ায় প্রোগ্রামটি কাজ করে নি, বরং অনেকগুলো লাইন প্রিন্ট করেছে যা কিনা বলছে ইনপুটি সঠিক হয় নি। + + এই লাইনগুলোর + diff --git a/6.md b/6.md index cd5cd59..eee2241 100644 --- a/6.md +++ b/6.md @@ -8,15 +8,16 @@ * NullPointerException * ArrayIndexOutOfBoundsException * কিভাবে নিজস্ব এক্সেপশান লিখবো -* সারসংক্ষেপ +* সারসংক্ষেপ -আমরা একটি প্রোগ্রাম লিখি যার একটি নরমাল ফ্লো থাকে, তবে কোন কারণে যদি এই ফ্লো ব্যাহত হয় তাহলে জাভা রানটাইম একটি ইভেন্ট ফায়ার করে, একে এক্সেপশান বলা হয়। +আমরা একটি প্রোগ্রাম লিখি যার একটি নরমাল ফ্লো থাকে, তবে কোন কারণে যদি এই ফ্লো ব্যাহত হয় তাহলে জাভা রানটাইম একটি ইভেন্ট ফায়ার করে, একে এক্সেপশান বলা হয়। -সহজ কথায় এক্সেপশন হচ্ছে এক ধরণের ইরর যা কিনা প্রোগ্রাম চলাকালীন সময়ে দেখা দিতে পারে । - -একটি উদাহরণ দেখা যাক- +সহজ কথায় এক্সেপশন হচ্ছে এক ধরণের ইরর যা কিনা প্রোগ্রাম চলাকালীন সময়ে দেখা দিতে পারে । + +একটি উদাহরণ দেখা যাক- ‌‌ + ```java public class Main { @@ -32,31 +33,29 @@ public class Main { return a / b; } } - ``` -১. এখানে `divide()` মেথডটিতে a এবং b আর্গুমেন্ট পাস করা হলে মেথডটি প্রথম আর্গুমেন্টকে দ্বিতীয় আর্গুমেন্ট দিয়ে ভাগ করে ফলাফল ‌`result` ভ্যারিয়েবল-টিতে এসাইন করবে। +১. এখানে `divide()` মেথডটিতে a এবং b আর্গুমেন্ট পাস করা হলে মেথডটি প্রথম আর্গুমেন্টকে দ্বিতীয় আর্গুমেন্ট দিয়ে ভাগ করে ফলাফল ‌`result` ভ্যারিয়েবল-টিতে এসাইন করবে। -২. এখানে `result` এর মান প্রিন্ট করা হবে। +২. এখানে `result` এর মান প্রিন্ট করা হবে। -আমরা যদি এই প্রোগ্রামটি রান করি তাহলে console এ নিচের আউটপুট-টি পাবো- +আমরা যদি এই প্রোগ্রামটি রান করি তাহলে console এ নিচের আউটপুট-টি পাবো- ```java Exception in thread "main" java.lang.ArithmeticException: / by zero - at com.bazlur.exception.Main.divide(Main.java:18) - at com.bazlur.exception.Main.main(Main.java:13) - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.lang.reflect.Method.invoke(Method.java:483) - at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) + at com.bazlur.exception.Main.divide(Main.java:18) + at com.bazlur.exception.Main.main(Main.java:13) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:483) + at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134) ‌ ``` -এই আউটপুট থেকে আমরা বুঝতে পারি যে, আমাদের প্রোগ্রামটি-তে একটি সমস্যা হয়েছে এবং প্রোগ্রামটি এখানেই থেমে গেছে, `System.out.println("Result: " + result); ` এই লাইনটি এক্সিকিউট হয় নি। +এই আউটপুট থেকে আমরা বুঝতে পারি যে, আমাদের প্রোগ্রামটি-তে একটি সমস্যা হয়েছে এবং প্রোগ্রামটি এখানেই থেমে গেছে, `System.out.println("Result: " + result);` এই লাইনটি এক্সিকিউট হয় নি। - -এবার আমরা নিচের প্রোগ্রামটি রান করি- +এবার আমরা নিচের প্রোগ্রামটি রান করি- ```java public class Main { @@ -82,34 +81,32 @@ public class Main { } ``` -এবার **console** এ নিচের আউটপুটটি দেখবো - +এবার **console** এ নিচের আউটপুটটি দেখবো - > You can't divide 1 by 0 - +> > Result: 0 -এবার লক্ষ্য করুন। প্রোগ্রামটি কিন্তু থেমে যাই নি, বরং শুণ্য দিয়ে যে কোন সংখ্যাকে ভাগ করা যাবে না, তার জন্য একটি মেসেস প্রিন্ট করেছে এবং শেষ পর্যন্ত প্রত্যেকটি লাইন এক্সিকিউট হয়েছে। +এবার লক্ষ্য করুন। প্রোগ্রামটি কিন্তু থেমে যাই নি, বরং শুণ্য দিয়ে যে কোন সংখ্যাকে ভাগ করা যাবে না, তার জন্য একটি মেসেস প্রিন্ট করেছে এবং শেষ পর্যন্ত প্রত্যেকটি লাইন এক্সিকিউট হয়েছে। -এই প্রোগ্রামটিতে আমরা নতুন কিওয়ার্ড ব্যবহার করেছি, সেগুলো হলো- try, catch -এবং এগুলো দিয়ে আমাদের যে কোড ব্লকটিতে ইরর হওয়ার সম্ভবনা ছিল, সেই অংগটুকুকে wrap করেছি। এতে করে এই কোড ব্লক-এ যদি কোন ধরণের ইরর হয় তাহলে প্রোগ্রামটি catch ব্লক-এ চলে যায়, এবং এই ব্লক এর ইন্সট্রাকশন গুলো এক্সিকিউট করে এরপর নিচের কোড ব্লক এ চলে যায়। +এই প্রোগ্রামটিতে আমরা নতুন কিওয়ার্ড ব্যবহার করেছি, সেগুলো হলো- try, catch এবং এগুলো দিয়ে আমাদের যে কোড ব্লকটিতে ইরর হওয়ার সম্ভবনা ছিল, সেই অংগটুকুকে wrap করেছি। এতে করে এই কোড ব্লক-এ যদি কোন ধরণের ইরর হয় তাহলে প্রোগ্রামটি catch ব্লক-এ চলে যায়, এবং এই ব্লক এর ইন্সট্রাকশন গুলো এক্সিকিউট করে এরপর নিচের কোড ব্লক এ চলে যায়। -আর এই প্রক্রিয়াকে আমরা এক্সেপশন হ্যান্ডেলিং বলি, অর্থাৎ প্রোগ্রাম এর কোন অংশে যদি কোন ধরণের এক্সেপশন বা ইরর হয় তাহলে আমাদের প্রোগ্রামটি যাতে বন্ধ না হয় যায় বরং সেইসব অবস্থায় ইউজারকে যাতে করে অর্থপূর্ণ মেসেস দেওয়াকে এক্সেপশন হ্যান্ডেলিং বলে। +আর এই প্রক্রিয়াকে আমরা এক্সেপশন হ্যান্ডেলিং বলি, অর্থাৎ প্রোগ্রাম এর কোন অংশে যদি কোন ধরণের এক্সেপশন বা ইরর হয় তাহলে আমাদের প্রোগ্রামটি যাতে বন্ধ না হয় যায় বরং সেইসব অবস্থায় ইউজারকে যাতে করে অর্থপূর্ণ মেসেস দেওয়াকে এক্সেপশন হ্যান্ডেলিং বলে। **The try Block** -যদি কোন কোড ব্লক -এ যদি ইরর হওয়ার সম্ভবনা থাকে তাহলে আমরা সেই কেড ব্লক-কে `try` ব্লক দিয়ে ইনক্লােজ করতে হয়। -উদাহরণ- +যদি কোন কোড ব্লক -এ যদি ইরর হওয়ার সম্ভবনা থাকে তাহলে আমরা সেই কেড ব্লক-কে `try` ব্লক দিয়ে ইনক্লােজ করতে হয়। উদাহরণ- ```java try { code } catch and finally blocks . . . - ``` -এই `try` ব্লক এর মাঝে এক বা একাধিক লাইন কোড থাকতে পারে। catch এবং finally ব্লক পরের সেকশনে দেখানো হবে। -একটি উদাহরণ দেখা যাক- +এই `try` ব্লক এর মাঝে এক বা একাধিক লাইন কোড থাকতে পারে। catch এবং finally ব্লক পরের সেকশনে দেখানো হবে। + +একটি উদাহরণ দেখা যাক- ```java private List list; @@ -127,16 +124,14 @@ private List list; } catch (IOException e) { } } - ``` -উপরের প্রোগ্রামটিতে একটি মেথড আছে - writeList() যা কিনা একটি ফাইল এ একটি লিস্ট থেকে ভ্যালু পড়ে তা রাইট করে। এই মেথড-টি তে একাধিক এক্সেপশান বা ইরর হতে পারে। যেমন - -`out = new PrintWriter(new FileWriter("file.txt"));` এই লাইনটিতে আমরা একটি ফাইল অপেন করার চেষ্টা করেছি। কিন্তু এই ফাইলটি সিস্টেমে নাও থাকতে পারে, কিংবা থাকলেও সেটি অপেন করা যাচ্ছে না ইত্যাদি। সেক্ষেত্রে আমাদরে সিস্টেম `IOException` থ্রু করবে এবং প্রোগ্রামটি বন্ধ হয়ে যাবে। এছাড়াও আমরা একটি ফর লুপ ব্যবহার করেছি, এক্ষেত্রে ফাইল এ রাইট করার সময়ও ইরর বা এক্সেপশন হতে পারে। তাই এইসব ইরর বা এক্সেপশন কে হ্যান্ডেল করার জন্যে আমরা কোড ব্লকটিকে `try` ব্লক এর ভেতরে রেখেছি। -এখন প্রোগ্রামটি চলার সময় যদি কোন ইরর বা একসেপশন হয় তাহলে প্রোগ্রাম এক্সিকিশান সেখান থেকেই `catch` ব্লক এ চলে যাবে। +উপরের প্রোগ্রামটিতে একটি মেথড আছে - writeList\(\) যা কিনা একটি ফাইল এ একটি লিস্ট থেকে ভ্যালু পড়ে তা রাইট করে। এই মেথড-টি তে একাধিক এক্সেপশান বা ইরর হতে পারে। যেমন - +`out = new PrintWriter(new FileWriter("file.txt"));` এই লাইনটিতে আমরা একটি ফাইল অপেন করার চেষ্টা করেছি। কিন্তু এই ফাইলটি সিস্টেমে নাও থাকতে পারে, কিংবা থাকলেও সেটি অপেন করা যাচ্ছে না ইত্যাদি। সেক্ষেত্রে আমাদরে সিস্টেম `IOException` থ্রু করবে এবং প্রোগ্রামটি বন্ধ হয়ে যাবে। এছাড়াও আমরা একটি ফর লুপ ব্যবহার করেছি, এক্ষেত্রে ফাইল এ রাইট করার সময়ও ইরর বা এক্সেপশন হতে পারে। তাই এইসব ইরর বা এক্সেপশন কে হ্যান্ডেল করার জন্যে আমরা কোড ব্লকটিকে `try` ব্লক এর ভেতরে রেখেছি। এখন প্রোগ্রামটি চলার সময় যদি কোন ইরর বা একসেপশন হয় তাহলে প্রোগ্রাম এক্সিকিশান সেখান থেকেই `catch` ব্লক এ চলে যাবে। **The catch Blocks** -try ব্লক এর সাথেই catch ব্লক লিখতে হয়। তবে আমরা একটি try ব্লকের সাথে একাধিক catch ব্লক লিখতে পারি। উদাহরণ- +try ব্লক এর সাথেই catch ব্লক লিখতে হয়। তবে আমরা একটি try ব্লকের সাথে একাধিক catch ব্লক লিখতে পারি। উদাহরণ- ```java try { @@ -147,14 +142,15 @@ try { // catch blog # 1 } ``` -`catch` কিওয়ার্ড এর সাথে প্যারেন্থেসিস এর মাঝে আমরা আর্গুমেন্ট দিতে হয় যা কি টাইপ এক্সেপশন হ্যাল্ডেল করা হচ্ছে তা নির্দেশ করে। -এখানে ExceptionType একটি প্লেস হোল্ডার । এখানে যে কোন ক্লাস যা কিনা Throwable ক্লাস কে ইনহেরিট করে তা বসতে পারে। -try ব্লক এর কোন কোড-এ যদি কোন এরর বা এক্সিসেপশন হয় তাহলে প্রেগ্রামের এক্সিকিউশান পয়েন্ট `catch` ব্লকে চলে আসে এবং শুধুমাত্র তখনি `catch` ব্লক এর কোড এক্সিকিউট হয়। +`catch` কিওয়ার্ড এর সাথে প্যারেন্থেসিস এর মাঝে আমরা আর্গুমেন্ট দিতে হয় যা কি টাইপ এক্সেপশন হ্যাল্ডেল করা হচ্ছে তা নির্দেশ করে। এখানে ExceptionType একটি প্লেস হোল্ডার । এখানে যে কোন ক্লাস যা কিনা Throwable ক্লাস কে ইনহেরিট করে তা বসতে পারে। + +try ব্লক এর কোন কোড-এ যদি কোন এরর বা এক্সিসেপশন হয় তাহলে প্রেগ্রামের এক্সিকিউশান পয়েন্ট `catch` ব্লকে চলে আসে এবং শুধুমাত্র তখনি `catch` ব্লক এর কোড এক্সিকিউট হয়। -যদি একাধিক `catch` ব্লক থাকে তাহলে এক্সেপশন এর টাইপ অনুযায়ী ‌`catch` ব্লক সিলেকটেড হয়। +যদি একাধিক `catch` ব্লক থাকে তাহলে এক্সেপশন এর টাইপ অনুযায়ী ‌`catch` ব্লক সিলেকটেড হয়। ‌‌ + ```java try { @@ -164,21 +160,22 @@ try { System.err.println("Caught IOException: " + e.getMessage()); } ``` -এখানে `try` ব্লকে যদি `IndexOutOfBoundsException` হয় তাহলে প্রথম `catch` ব্লকটি এক্সিকিউট হবে । আর যদি IOException হয় তাহলে পরের `catch` ব্লকটি এক্সিকিউট হবে। -জাভা ৭ এবং পরবর্তি ভার্সন গুলোর জন্যে একটি নতুন ফিচার আছে যাতে করে একটি `catch` ব্লক দিয়ে অনেকগুলো এক্সেপশন হ্যান্ডেল করা যায়। উহারহণ - +এখানে `try` ব্লকে যদি `IndexOutOfBoundsException` হয় তাহলে প্রথম `catch` ব্লকটি এক্সিকিউট হবে । আর যদি IOException হয় তাহলে পরের `catch` ব্লকটি এক্সিকিউট হবে। +জাভা ৭ এবং পরবর্তি ভার্সন গুলোর জন্যে একটি নতুন ফিচার আছে যাতে করে একটি `catch` ব্লক দিয়ে অনেকগুলো এক্সেপশন হ্যান্ডেল করা যায়। উহারহণ - ```java catch (IOException|SQLException ex) { logger.log(ex); } ``` -এখানে catch ক্লজ-এ একাধিক এক্সেপশান একটি ভার্টিকেল বার (|) দিয়ে আলাদা করা হয়। + +এখানে catch ক্লজ-এ একাধিক এক্সেপশান একটি ভার্টিকেল বার \(\|\) দিয়ে আলাদা করা হয়। **The finally Block** -উপরের উদাহরণ গুলো থেকে দেখলাম যে , `try` ব্লক এর কোড -এ এক্সেসেপশন হলে শুধুমাত্র ‌`catch` ব্লকের কোড গুলো এক্সিকিউট হয়। তবে আমাদের এমন কোন সিচুয়েশন থাকতে পারে যখন আমরা চাই ইরর হোক বা না হোক, একটি কোড ব্লক আমরা সবসমই এক্সিকিউট করতে চাই , তাহলে আমরা finally ব্যবহার করি। +উপরের উদাহরণ গুলো থেকে দেখলাম যে , `try` ব্লক এর কোড -এ এক্সেসেপশন হলে শুধুমাত্র ‌`catch` ব্লকের কোড গুলো এক্সিকিউট হয়। তবে আমাদের এমন কোন সিচুয়েশন থাকতে পারে যখন আমরা চাই ইরর হোক বা না হোক, একটি কোড ব্লক আমরা সবসমই এক্সিকিউট করতে চাই , তাহলে আমরা finally ব্যবহার করি। ```java public void openFile() { @@ -204,15 +201,16 @@ public void openFile() { } } ``` -উপরের প্রোগ্রামটি তে আমরা একটি ফাইল অপেন করছি এবং কিছু কাজ করেছি। এজন্যে একটি FileReader ক্লাসের অবজেক্ট তৈরি করেছি। আমরা চাই এই FileReader অবজেক্টি কাজ শেষ হয়ে গেলে ক্লোজ করতে। এক্ষেত্রে আমরা finally ব্লক এ আমাদের একই ক্লোজিং এর কোডটি লিখেছি। এতে করে এই সুবিধা হচ্ছে যে, আমাদের এই ট্রাই ব্লক-এর কোড কাজ করুক আর না করুক, শেষে আমাদের FileReader এর অবজেক্টটি ক্লোজ হয়ে যাচ্ছে। -অর্থাৎ আমরা শুধুমাত্রে তখনি ফাইনালী ব্লক ব্যবহার করি যখন আমরা নো ম্যাটার হুয়াট, একটি কোড ব্লক সবসময়ই এক্সিকউট করতে চাই। +উপরের প্রোগ্রামটি তে আমরা একটি ফাইল অপেন করছি এবং কিছু কাজ করেছি। এজন্যে একটি FileReader ক্লাসের অবজেক্ট তৈরি করেছি। আমরা চাই এই FileReader অবজেক্টি কাজ শেষ হয়ে গেলে ক্লোজ করতে। এক্ষেত্রে আমরা finally ব্লক এ আমাদের একই ক্লোজিং এর কোডটি লিখেছি। এতে করে এই সুবিধা হচ্ছে যে, আমাদের এই ট্রাই ব্লক-এর কোড কাজ করুক আর না করুক, শেষে আমাদের FileReader এর অবজেক্টটি ক্লোজ হয়ে যাচ্ছে। + +অর্থাৎ আমরা শুধুমাত্রে তখনি ফাইনালী ব্লক ব্যবহার করি যখন আমরা নো ম্যাটার হুয়াট, একটি কোড ব্লক সবসময়ই এক্সিকউট করতে চাই। **Identifying Exception Point** `try` , `catch` এব`finally` ব্লক ব্যাবহার করে এক্সেপশন হ্যান্ডেল করার সময় আমাদের যে বিষয়টির উপর বিশেষ গুরুত্ব দিতে হবে সেটি হল নির্দিষ্ট পয়েন্টেই কেবল`try` এবং `catch` ব্যাবহার করা । ঠিক যেখানে এক্সেপশন ঘটবে বা ঘটার সম্ভাবনা থাকবে সেখানেই কেবল আমাদের প্রপার এক্সেপশন হ্যান্ডেলিং থাকা জরুরী । অন্যথায় কোড রান করবে কিন্তু কাঙ্খিত ফলাফল পাওয়া যাবেনা । -উদাহরন হিসাবে আমরা মনে করি আমাদের একটি মেথড লিখতে বলা হল যেটিতে একটি স্ট্রিং অ্যারে পাস করা হবে এবং সেই অ্যারে এর মাঝ থেকে যে স্ট্রিং গুলা ইন্টিজার নাম্বার রিপ্রেজেন্ট করে সেগুলার যোগফল রিটার্ন করতে হবে । আমরা যদি কোডটি এভাবে লিখিঃ +উদাহরন হিসাবে আমরা মনে করি আমাদের একটি মেথড লিখতে বলা হল যেটিতে একটি স্ট্রিং অ্যারে পাস করা হবে এবং সেই অ্যারে এর মাঝ থেকে যে স্ট্রিং গুলা ইন্টিজার নাম্বার রিপ্রেজেন্ট করে সেগুলার যোগফল রিটার্ন করতে হবে । আমরা যদি কোডটি এভাবে লিখিঃ ```java public class Main { @@ -222,27 +220,27 @@ public class Main { String[] strings = {"1", "2", "3", "4", "5", "6"}; System.out.println(new Main().getSum(strings)); } - + public int getSum(String[] strings){ - + int result = 0; - + try { - + for (String string : strings) { result += (Integer.valueOf(string)); } } catch (NumberFormatException e) { - + System.err.println(e); } - + return result; } } ``` -উপরের কোডটি 21 সংখ্যাটি প্রিন্ট করবে যেটি getSum নামক মেথটি রিটার্ন করছে । কিন্তু আমরা যদি ইনপুট স্ট্রিংটি একটু মডিফাই করে String[] strings = {"1", "2", "3", "four", "5", "6"}; করে দেই তাহলে প্রথমে প্রিন্ট করবে 6 এবং তারপর প্রিন্ট করবে `java.lang.NumberFormatException: For input string: "four` । কিন্তু প্রবলেম অনুযায়ী প্রিন্ট করা কথা ছিল 17 । কারন four বাদ দিলে বাকী যতগুলা স্ট্রিং ইন্টিজার নাম্বার রিপ্রেজেন্ট করে সেগুলার যোগফল । সেক্ষেত্রে আমরা যদি কোডটি একটু মডিফাই করে ঠিক যেখানে এক্সেপশন হওয়া সম্ভব সেখানেই `try` ব্লকটি ব্যাবহার করতাম তাহলে এই সমস্যা থেকে মুক্তি পাওয়া সম্ভব ছিল । কোডটি যদি এভাবে করিঃ +উপরের কোডটি 21 সংখ্যাটি প্রিন্ট করবে যেটি getSum নামক মেথটি রিটার্ন করছে । কিন্তু আমরা যদি ইনপুট স্ট্রিংটি একটু মডিফাই করে String\[\] strings = {"1", "2", "3", "four", "5", "6"}; করে দেই তাহলে প্রথমে প্রিন্ট করবে 6 এবং তারপর প্রিন্ট করবে `java.lang.NumberFormatException: For input string: "four` । কিন্তু প্রবলেম অনুযায়ী প্রিন্ট করা কথা ছিল 17 । কারন four বাদ দিলে বাকী যতগুলা স্ট্রিং ইন্টিজার নাম্বার রিপ্রেজেন্ট করে সেগুলার যোগফল । সেক্ষেত্রে আমরা যদি কোডটি একটু মডিফাই করে ঠিক যেখানে এক্সেপশন হওয়া সম্ভব সেখানেই `try` ব্লকটি ব্যাবহার করতাম তাহলে এই সমস্যা থেকে মুক্তি পাওয়া সম্ভব ছিল । কোডটি যদি এভাবে করিঃ ```java public class Main { @@ -273,17 +271,13 @@ public class Main { } ``` -এবার যদি আমরা String[] strings = {"1", "2", "3", "four", "5", "6"}; এই স্ট্রিংটি ইনপুট আকারে দেই তাহলে দেখবো একটা এক্সেপশন ঠিকই থ্রো করছে তবে রেজাল্ট হিসাবে আমরা যেটি চেয়েছিলাম সেটিও প্রিন্ট করছে । এভাবে আমরা ঠিক নির্দিষ্ট পয়েন্টে এক্সেপশন ডিটেক্ট করে হ্যান্ডেল করতে পারি । এতে করে ওভারঅল কোডের পার্ফরমেন্স যেমন বাড়বে তেমন কোড অনেক বেশি বাগফ্রী ও হবে । - +এবার যদি আমরা String\[\] strings = {"1", "2", "3", "four", "5", "6"}; এই স্ট্রিংটি ইনপুট আকারে দেই তাহলে দেখবো একটা এক্সেপশন ঠিকই থ্রো করছে তবে রেজাল্ট হিসাবে আমরা যেটি চেয়েছিলাম সেটিও প্রিন্ট করছে । এভাবে আমরা ঠিক নির্দিষ্ট পয়েন্টে এক্সেপশন ডিটেক্ট করে হ্যান্ডেল করতে পারি । এতে করে ওভারঅল কোডের পার্ফরমেন্স যেমন বাড়বে তেমন কোড অনেক বেশি বাগফ্রী ও হবে । **Checked or Unchecked Exceptions** -জাভাতে সব এক্সেপশান গুলো Throwable ক্লাসকে ইনহেরিট করে তৈরি। অর্থাৎ এক্সেপশান হাইআরকি এর একদপ উপরে এই Throwable ক্লাস এর অব্স্থান। এর ঠিক নিচেই দুটি সাব ক্লাস হলে - Exception এবং অন্যটি হলো RuntimeException । এবং এই দুটি ক্লাস দুটি আলাদা শ্রেণীবিভাগের সূচনা করেছে। তবে এই শ্রেণীবিভাগের আরেকটি শাখা আছে, সেটি হলো - Error -তবে এগুলো প্রোগ্রাম চলাকালিন সময়ে সাধারণত ধরা হয় না। এগুলো মূলত জাভা রানটাইম সিস্টেম নিজে থেকে হ্যান্ডেল করে এবং এটি আমাদের এই বইয়ের আলোচনার বাইরে। - -![Throwable](images/Throwable.png) - +জাভাতে সব এক্সেপশান গুলো Throwable ক্লাসকে ইনহেরিট করে তৈরি। অর্থাৎ এক্সেপশান হাইআরকি এর একদপ উপরে এই Throwable ক্লাস এর অব্স্থান। এর ঠিক নিচেই দুটি সাব ক্লাস হলে - Exception এবং অন্যটি হলো RuntimeException । এবং এই দুটি ক্লাস দুটি আলাদা শ্রেণীবিভাগের সূচনা করেছে। তবে এই শ্রেণীবিভাগের আরেকটি শাখা আছে, সেটি হলো - Error তবে এগুলো প্রোগ্রাম চলাকালিন সময়ে সাধারণত ধরা হয় না। এগুলো মূলত জাভা রানটাইম সিস্টেম নিজে থেকে হ্যান্ডেল করে এবং এটি আমাদের এই বইয়ের আলোচনার বাইরে। +![Throwable](.gitbook/assets/Throwable.png) ```java public class ExceptionDemo5 { @@ -346,25 +340,3 @@ public class UncheckedException extends RuntimeException { } ``` - - - - - - - - - - - - - - - - - - - - - - diff --git a/7.md b/7.md index eb4fed9..d41c0a8 100644 --- a/7.md +++ b/7.md @@ -1,4 +1,4 @@ -# পাঠ ৭: স্ট্রিং অপারেশান +# পাঠ ৭: স্ট্রিং অপারেশান * স্ট্রিং তেরি করা * স্ট্রিং লেন্থ এবং স্ট্রিং অপারেশান @@ -10,81 +10,71 @@ * স্ট্রিং বিউল্ডার * সারসংক্ষেপ - - জাভাতে স্ট্রিং ব্যাপকভাবে ব্যবহৃত একটি অবজেক্ট। স্ট্রিং হচ্ছে কতগুলো ক্যারেক্টার-এর সিকুয়েন্স বা অনুক্রম। -স্ট্রিং তৈরি করা খুব সহজ। -যেমন – +স্ট্রিং তৈরি করা খুব সহজ। যেমন – ‌ -```java - String greeting = "Hello world!"; +```java + String greeting = "Hello world!"; ``` +এখানে "Hello world!" হচ্ছে স্ট্রিং লিটারেল যা অকনেগুলো ক্যারেক্টার উদ্ধৃতি চিহ্নের \(“”\) মাঝে লিখতে হয়। -এখানে "Hello world!" হচ্ছে স্ট্রিং লিটারেল যা অকনেগুলো ক্যারেক্টার উদ্ধৃতি চিহ্নের (“”) মাঝে লিখতে হয়। - -জাভা কোডের মধ্যে কোন স্ট্রিং লিটারেল থাকলে কম্পাইলার সেটিকে String অবজেক্ট –এ পরিণত করে যার ভ্যালু হয় উদ্ধৃতি চিহ্নের (“”) মাঝের ক্যারেক্টার গুলো । +জাভা কোডের মধ্যে কোন স্ট্রিং লিটারেল থাকলে কম্পাইলার সেটিকে String অবজেক্ট –এ পরিণত করে যার ভ্যালু হয় উদ্ধৃতি চিহ্নের \(“”\) মাঝের ক্যারেক্টার গুলো । -তবে অন্যান্য অবজেক্ট এর মতো String ও new কিওয়ার্ড এবং কন্সট্রাকটর ব্যবহার করে তৈরি করতে পারি। String ক্লাসের ১৩ টি কনস্ট্রাকটর আছে। সুতরাং আমরা আরও ১৩ টি উপায়ে স্ট্রিং তৈরি করতে পারি। +তবে অন্যান্য অবজেক্ট এর মতো String ও new কিওয়ার্ড এবং কন্সট্রাকটর ব্যবহার করে তৈরি করতে পারি। String ক্লাসের ১৩ টি কনস্ট্রাকটর আছে। সুতরাং আমরা আরও ১৩ টি উপায়ে স্ট্রিং তৈরি করতে পারি। -উদাহরণ – +উদাহরণ – ```java - String str = new String("Hello world!"); + String str = new String("Hello world!"); char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.' }; String helloString = new String(helloArray); - ``` **String Length** -String ক্লাসের মধ্যে length() মেথড থাকে যা একটি স্ট্রিং এর মধ্যে কতগুলো ক্যারেক্টার থাকে তার সংখ্যা রিটার্ণ করে। -String loremIpsum ="Lorem ipsum dolor sit amet."; - -```java +String ক্লাসের মধ্যে length\(\) মেথড থাকে যা একটি স্ট্রিং এর মধ্যে কতগুলো ক্যারেক্টার থাকে তার সংখ্যা রিটার্ণ করে। String loremIpsum ="Lorem ipsum dolor sit amet."; + +```java int len = loremIpsum.length(); ``` **স্ট্রিং Concatenating** +আমরা বেশ কয়েকটি উপায়ে স্ট্রিং কনকেট করতে পারি - -আমরা বেশ কয়েকটি উপায়ে স্ট্রিং কনকেট করতে পারি - - -```java +```java string1.concat(string2); // concat()মেথড ব্যবহার করে "My name is ".concat("Rumplestiltskin"); // লিটারেল ব্যবহার করে - "Hello," + " world" + "!" // + অপারেটর ব্যবহার করে + "Hello," + " world" + "!" // + অপারেটর ব্যবহার করে ``` -স্ট্রিং এর ভেতর বেশ কিছু মেথড আছৈ যেগুলো ব্যবহার করে আমরা স্ট্রিং মেনুপুলেট করতে পারি। +স্ট্রিং এর ভেতর বেশ কিছু মেথড আছৈ যেগুলো ব্যবহার করে আমরা স্ট্রিং মেনুপুলেট করতে পারি। +charAt\(\) – এই মেথড ব্যবহার করে আমরা কোন ইনডেক্স এর ক্যারেক্টার আলাদা করতে পারি। উদাহরণ- -charAt() – এই মেথড ব্যবহার করে আমরা কোন ইনডেক্স এর ক্যারেক্টার আলাদা করতে পারি। উদাহরণ- - -```java +```java String hello = "Hello"; char getCharOfIndex2 = hello.charAt(2); ``` -substring() – এই মেথড ব্যবহার করে আমরা একটি স্ট্রিং থেকে এর সাব-স্ট্রিং বা কোন নির্দিষ্ট অংশ আলাদা করতে পারি। -উদাহরণ- +substring\(\) – এই মেথড ব্যবহার করে আমরা একটি স্ট্রিং থেকে এর সাব-স্ট্রিং বা কোন নির্দিষ্ট অংশ আলাদা করতে পারি। উদাহরণ- ```java - String str1 = "Hello world!"; - String hello =str1.substring(0,5); + String str1 = "Hello world!"; + String hello =str1.substring(0,5); ``` -toLowerCase() – লোওয়ারকেস লেটারে কনভার্ট করার জন্যে এই মেথড ব্যবহার করি। -toUpperCase() আপারকেস লেটারে কনভার্ট করার জন্যে এই মেথড ব্যবহার করি। +toLowerCase\(\) – লোওয়ারকেস লেটারে কনভার্ট করার জন্যে এই মেথড ব্যবহার করি। toUpperCase\(\) আপারকেস লেটারে কনভার্ট করার জন্যে এই মেথড ব্যবহার করি। উদাহরণ – ```java String hello = "Hello"; hello.toUpperCase(); // HELLO - hello.toLowerCase(); // hello + hello.toLowerCase(); // hello ``` নিচে আরও কিছু উদহরণ দেখানো হল- @@ -94,9 +84,7 @@ toUpperCase() আপারকেস লেটারে কনভার্ট ক int indexOfHaitch = str2.indexOf("H"); ``` - -###বিশেষভাবে লক্ষণীয় - +### বিশেষভাবে লক্ষণীয় জাভাতে স্ট্রিং ক্লাস **immutable**, এর মানে হচ্ছে, একবার কোন স্ট্রিং অবজেক্ট তৈরি করলে তাকে আর পরিবর্তন করা যাবে না। আমরা অনেক ক্লাস লিখি, তারপর এর মাঝে বিভিন্ন ভ্যারিয়েবল রাখি, অবজেক্ট তৈরি করার পর সেই অবজেক্টর এর ভেতরের ভ্যারিয়েবল গুলো বিভিন্ন সময় পরিবতর্তন করতে পারি। কিন্তু স্ট্রিং এর ক্ষেত্রে এটি সম্ভব নয়। অর্থাৎ আমরা যদি কোন একটি ভ্যালু দিয়ে একবার একটি স্ট্রিং অবজেক্ট তৈরি করি তাহলে সেটি আর পরিবর্তন করা যাবে না। @@ -107,17 +95,20 @@ toUpperCase() আপারকেস লেটারে কনভার্ট ক String str = "Hello "; str = str + "world"; -```` +` +``` এখানে যদিও মনে হচ্ছে আমরা স্ট্রিং এর ভ্যালু পরিবর্তন করে ফেলেছি। কিন্তু আসলে যা হচ্ছে তা হলো, আমরা প্রথমে একটি অবজেক্ট তৈরি করেছি, তারপর সেই অবেজক্টএর ভ্যালু এবং নতুন একটি ভ্যালু নিয়ে নতুন একটি অবজেক্ট তৈরি করেছি, এবং যা str এখন নতন সেই অবজেক্টকে রেফার করছে। আগের অবজেক্টটিকে গার্বেজ কালেক্টর নিয়ে চলে যাবে। এখন প্রশ্ন হচ্ছে, কেন এই **immutability** দরকার হয়। -স্ট্রিং পুল (**Stirng Pool**) সম্পর্কে হয়তো অনেকেই জানি। এটি একটি জাভা হিপ এর একটি স্পেশাল এরিয়া । আমাদের যদি নতুন একটি স্ট্রিং তৈরি করতে হয়, সেই স্ট্রিং যদি আগে থেকেই স্ট্রিং পুল এ থেকে থাকে, তাহলে নতুন করে আর তৈরি না করে আগের অবজেক্টটির রেফারেন্স দেওয়া হয়। এতে করে আমাদের মেমরি ফ্রুটপ্রিন্ট অনেক কমে যাচ্ছে। +স্ট্রিং পুল \(**Stirng Pool**\) সম্পর্কে হয়তো অনেকেই জানি। এটি একটি জাভা হিপ এর একটি স্পেশাল এরিয়া । আমাদের যদি নতুন একটি স্ট্রিং তৈরি করতে হয়, সেই স্ট্রিং যদি আগে থেকেই স্ট্রিং পুল এ থেকে থাকে, তাহলে নতুন করে আর তৈরি না করে আগের অবজেক্টটির রেফারেন্স দেওয়া হয়। এতে করে আমাদের মেমরি ফ্রুটপ্রিন্ট অনেক কমে যাচ্ছে। + ```java String string1 = "abcd"; String string2 = "abcd"; -```` +` +``` আমরা যদি এই দুটি লাইন লিখি, তাহলে আসলে জাভা হিপ এ একটি স্ট্রিং অবজেক্ট-ই থাকবে, দুটি তৈরি হবে না। যদি স্ট্রিং immutable না হয়, তাহলে একটি স্ট্রিং যদি পরিবর্তন করি, তাহলে আসলে অন্যান্য রেফারেন্স গুলোও পরিবর্তন হয়ে যাবে। @@ -127,11 +118,5 @@ String string2 = "abcd"; তাছাড়া স্ট্রিং **immutable** হওয়ায় এটি ন্যাচারালি থ্রেড সেইফ, এবং স্বাধীনভাবে যে কেন থ্রেড একসেস করে পারে আমাদেরকে কষ্ট করে এর থ্রেড সেইফটি নিয়ে চিন্তা করতে হয় না। - - ## চলবে ...... - - - - diff --git a/8.md b/8.md index 533d848..819a98e 100644 --- a/8.md +++ b/8.md @@ -1,16 +1,14 @@ # পাঠ ৮: জেনেরিকস -### জেনেরিকস ইন জাভা (Generics in Java) +## জেনেরিকস ইন জাভা \(Generics in Java\) -আমরা জাভা-এর টাইপ সিস্টেম সর্ম্পকে জানি। আমরা জানি জাভাতে কোন প্রোগ্রাম লিখতে হলে আমাদের কে টাইপ বলে দিতে হয় । যেমন আমরা যদি একটি মেথড লিখি তাহলে মেথডটি কি টাইপ প্যারামিটার এক্সেপ্ট করবে তা বলে দিতে হয়। +আমরা জাভা-এর টাইপ সিস্টেম সর্ম্পকে জানি। আমরা জানি জাভাতে কোন প্রোগ্রাম লিখতে হলে আমাদের কে টাইপ বলে দিতে হয় । যেমন আমরা যদি একটি মেথড লিখি তাহলে মেথডটি কি টাইপ প্যারামিটার এক্সেপ্ট করবে তা বলে দিতে হয়। -তবে জাভাতে একটি চমৎকার ফিচার আছে যাতে করে আমরা অনেক সময় টাইপ না বলে দিয়েই কোড লিখতে পারি। -আমরা জেনেরিকস শুরু করার আগে একটি গুরুত্বপূর্ণ তথ্য জেনে নিই- জাভা প্রোগ্রামিং ল্যাংগুয়েজ এ সব ক্লাস **java.lang.Object** ক্লাসটিকে ইনহেরিট করে। আমরা এটি নিয়ে অন্য কোন চ্যাপ্টারে আলোচনা করবো, তবে এখন আমাদের শুধু এই তথ্যটুকু মনে রাখলেই চলবে। +তবে জাভাতে একটি চমৎকার ফিচার আছে যাতে করে আমরা অনেক সময় টাইপ না বলে দিয়েই কোড লিখতে পারি। আমরা জেনেরিকস শুরু করার আগে একটি গুরুত্বপূর্ণ তথ্য জেনে নিই- জাভা প্রোগ্রামিং ল্যাংগুয়েজ এ সব ক্লাস **java.lang.Object** ক্লাসটিকে ইনহেরিট করে। আমরা এটি নিয়ে অন্য কোন চ্যাপ্টারে আলোচনা করবো, তবে এখন আমাদের শুধু এই তথ্যটুকু মনে রাখলেই চলবে। -সহজ কথায় যদি বলি, তাহলে জেনেরিকস দিয়ে আমরা যখন অবজেক্ট তৈরি করবো তখন টাইপ প্যারিমিটারাইজ করতে পারি। -অর্থাৎ আমরা যখন `new` অপারেটর দিয়ে অবজেক্ট তৈরি করবো তখন আসলে সিন্ধান্ত নেবো এটির টাইপ কি হবে। এর আগে আমরা এমন ভাবে একটা ক্লাস বা মেথড লিখে ফেলতে পারি যাতে করে এটি যে কোন টাইপ এর জন্যে কাজ করে। +সহজ কথায় যদি বলি, তাহলে জেনেরিকস দিয়ে আমরা যখন অবজেক্ট তৈরি করবো তখন টাইপ প্যারিমিটারাইজ করতে পারি। অর্থাৎ আমরা যখন `new` অপারেটর দিয়ে অবজেক্ট তৈরি করবো তখন আসলে সিন্ধান্ত নেবো এটির টাইপ কি হবে। এর আগে আমরা এমন ভাবে একটা ক্লাস বা মেথড লিখে ফেলতে পারি যাতে করে এটি যে কোন টাইপ এর জন্যে কাজ করে। -বরং একটা উদাহরণ দেখা যাক- +বরং একটা উদাহরণ দেখা যাক- ```java //একটি সিম্পল ক্লাস , এখানে T হচ্ছে টাইপ প্যারামিটার যা অবজেক্ট তৈরি করার সময় রিয়েল টাইপ দিয়ে রিপ্লেস হবে @@ -36,20 +34,20 @@ public static void main(String[] args) { - + // একটি ইন্টিজার এর রেফারেন্স Generic iObj; - + // অবজেক্ট তৈরি করি এবং iObj রেফারেন্স এ এসাইন করি এবং কনস্ট্রাকটর আর্গুমেন্ট হিসেবে 88 পাস করি iObj = new Generic(88); - + // রানটাইম-এ তাহলে জেনেরিক ক্লাসটিতে T obj একটি ইন্টিজার হয়ে যাওয়ার কথা, প্রিন্ট করে দেখা যাক iObj.showType(); - + int v = iObj.getObj(); // ইন্টিজার ভ্যালুটি এর ভ্যালু একসেস ককরে v তে রাখা হল - + System.out.println("value: " + v); // প্রিন্ট করি, যেখা যাক, আমরা এর ভ্যালু ঠিক ঠাক মতো পাওয়া যায় কিনা @@ -61,130 +59,132 @@ System.out.println("value: " + str); } } -```` - -এই প্রোগ্রামটি যদি রান করা হয়, তাহলে নিচের আউটপুট গুলো দেখা যাবে - +` +``` + +এই প্রোগ্রামটি যদি রান করা হয়, তাহলে নিচের আউটপুট গুলো দেখা যাবে - -> Type of T is: java.lang.Integer -> value: 88 -> Type of T is: java.lang.String -> value: This is a Generics Test +> Type of T is: java.lang.Integer value: 88 Type of T is: java.lang.String value: This is a Generics Test -আউটপুট গুলো থেকে বুঝা যাচ্ছে যে , আমাদের প্রোগ্রামটি সঠিক ভাবে কাজ করছে এবং একটি জেনেরিক ক্লাসে একটি ইন্টিজার এবং একটি স্ট্রিং প্যারামিটারাইজড করতে পেরেছি। +আউটপুট গুলো থেকে বুঝা যাচ্ছে যে , আমাদের প্রোগ্রামটি সঠিক ভাবে কাজ করছে এবং একটি জেনেরিক ক্লাসে একটি ইন্টিজার এবং একটি স্ট্রিং প্যারামিটারাইজড করতে পেরেছি। -এভাবে আমরা আরও অন্যান্য টাইপ-ও প্যারামিটারাইজড করে পারি। +এভাবে আমরা আরও অন্যান্য টাইপ-ও প্যারামিটারাইজড করে পারি। -এবার আরও ভালভাবে এই প্রোগ্রামটি খেয়াল করা যাক- +এবার আরও ভালভাবে এই প্রোগ্রামটি খেয়াল করা যাক- ```java public class Generic { } -```` +` +``` -এখানে` T` হচ্ছে টাইপ প্যারামিটার। এটি মূলত একটি প্লেস হোল্ডার। +এখানে`T` হচ্ছে টাইপ প্যারামিটার। এটি মূলত একটি প্লেস হোল্ডার। -লক্ষ্য করুন – এর `T` কিন্তু `<>` এর মধ্যে থাকে। +লক্ষ্য করুন – এর `T` কিন্তু `<>` এর মধ্যে থাকে। -আমরা সাধারণত যেভাবে ভ্যারিয়েবল ডিক্লেয়ার করি, সেভাবেই আমরা জেনেরিক্স-এ ভ্যারিয়েবল ডিক্লেয়ার করতে পারি। এর জন্যে আলাদা কোন নিয়ম নেই। +আমরা সাধারণত যেভাবে ভ্যারিয়েবল ডিক্লেয়ার করি, সেভাবেই আমরা জেনেরিক্স-এ ভ্যারিয়েবল ডিক্লেয়ার করতে পারি। এর জন্যে আলাদা কোন নিয়ম নেই। ```java T obj; ``` -এখানে T অবজেক্ট তৈরি করার সময় একটি রিয়েল অবজেক্ট অর্থাৎ আমরা যে অবজেক্ট প্যারিমিটারাইড করবো তা দ্বারা প্রতিস্থাপিত(replaced) হবে । - -আমরা জানি যে জাভা একটি স্ট্যাটিক টাইপ অর্থাৎ টাইপ সেইফ ল্যাংগুয়েজ। অর্থাৎ জাভা কোড কম্পাইল করার সময় এর টাইপ ইনফরমেশন ঠিক ঠাক আছে কিনা তা চেক করে নেয়। +এখানে T অবজেক্ট তৈরি করার সময় একটি রিয়েল অবজেক্ট অর্থাৎ আমরা যে অবজেক্ট প্যারিমিটারাইড করবো তা দ্বারা প্রতিস্থাপিত\(replaced\) হবে । + +আমরা জানি যে জাভা একটি স্ট্যাটিক টাইপ অর্থাৎ টাইপ সেইফ ল্যাংগুয়েজ। অর্থাৎ জাভা কোড কম্পাইল করার সময় এর টাইপ ইনফরমেশন ঠিক ঠাক আছে কিনা তা চেক করে নেয়। -অর্থাৎ - +অর্থাৎ - ```java - Generic iObj; + Generic iObj; ``` -এখানে `iObj` একটি ইন্টিজার প্যারমিটাইরজড অবজেক্ট রেফারেন্স । +এখানে `iObj` একটি ইন্টিজার প্যারমিটাইরজড অবজেক্ট রেফারেন্স । + ```java iObj = new Generic(88.0); // Error! -```` -এখন অবজেক্ট তৈরি করার সময় যদি ডাবল প্যারমিটাইরজড করি এবং `iObj` তে এসাইন করি, তাহলে +` +``` + +এখন অবজেক্ট তৈরি করার সময় যদি ডাবল প্যারমিটাইরজড করি এবং `iObj` তে এসাইন করি, তাহলে ```java Error:(24, 16) java: incompatible types: Generic cannot be converted to Generic -```` +` +``` -কম্পাইল করার সময় উপরের ইররটি দেখতে পাবো। +কম্পাইল করার সময় উপরের ইররটি দেখতে পাবো। -### জেনেরিকস শুধুমাত্র অজজেক্ট নিয়ে কাজ করে- +## জেনেরিকস শুধুমাত্র অজজেক্ট নিয়ে কাজ করে- -আমারা জানি যে, জাভা দুই ধরণের টাইপ সাপোর্ট করে- `PrimitiveType` এবং `ReferenceType`। -জেনেরিকস শুধুমাত্র ReferenceType অর্থাৎ শুধু মাত্র অবজেক্ট নিয়ে কাজ রে। +আমারা জানি যে, জাভা দুই ধরণের টাইপ সাপোর্ট করে- `PrimitiveType` এবং `ReferenceType`। জেনেরিকস শুধুমাত্র ReferenceType অর্থাৎ শুধু মাত্র অবজেক্ট নিয়ে কাজ রে। -তাই- +তাই- ```java Generic intObj = new Generic(50); -```` -এই স্ট্যাটমেন্ট টি ভ্যালিড নয়। অর্থাৎ প্রিমিটিভ টাই এর ক্ষেত্রে জেনেরিকস কাজ করবে না। +` +``` + +এই স্ট্যাটমেন্ট টি ভ্যালিড নয়। অর্থাৎ প্রিমিটিভ টাই এর ক্ষেত্রে জেনেরিকস কাজ করবে না। -জেনেরিক ক্লাস এর সিনট্যাক্স- +জেনেরিক ক্লাস এর সিনট্যাক্স- ```java class class-name {} -```` +` +``` -জেনেরিক ক্লাস ইনসটেনসিয়েট করার সিনটেক্স- +জেনেরিক ক্লাস ইনসটেনসিয়েট করার সিনটেক্স- ```java class-name var-name = new class-name(cons-arg-list); -```` +` +``` -আমরা চাইলে একাধিক জেনেরিক টাইপ প্যারমিটাইরজড করতে পারি। +আমরা চাইলে একাধিক জেনেরিক টাইপ প্যারমিটাইরজড করতে পারি। -এবার তাহলে দুটি টাইপ প্যারামিটার নিয়ে একটি উদাহরণ দেখা যাক- +এবার তাহলে দুটি টাইপ প্যারামিটার নিয়ে একটি উদাহরণ দেখা যাক- ```java public class Tuple { private X x; private Y y; - + public Tuple(X x, Y y) { this.x = x; this.y = y; } - + public X getX() { return x; } - + public Y getY() { return y; } - + public void showTypes() { System.out.println("Type of T is " + x.getClass().getName() + " and Value: " + x); System.out.println("Type of V is " + y.getClass().getName() + " and Value: " + y); } - + public static void main(String[] args) { Tuple tuple = new Tuple("Hello", "world"); tuple.showTypes(); - + Tuple person = new Tuple<>("Rahim", 45); person.showTypes(); } } -``` - -এই প্রোগ্রামটি রান করলে নিচের আউটপুট-টি পাওয়া যাবে – +``` -> Type of T is java.lang.String and Value: Hello -> Type of V is java.lang.String and Value: world -> Type of T is java.lang.String and Value: Rahim -> Type of V is java.lang.Integer and Value: 45 +এই প্রোগ্রামটি রান করলে নিচের আউটপুট-টি পাওয়া যাবে – +> Type of T is java.lang.String and Value: Hello Type of V is java.lang.String and Value: world Type of T is java.lang.String and Value: Rahim Type of V is java.lang.Integer and Value: 45 -একটি টাপলের মধ্যে আমরা চাইলে আরেকটি টাপল রাখে পারি - নিচের উদাহরণটি চমৎকার- +একটি টাপলের মধ্যে আমরা চাইলে আরেকটি টাপল রাখে পারি - নিচের উদাহরণটি চমৎকার- ```java Tuple> tupleInsideTuple = new Tuple>("Tuple", new Tuple(45, 89)); @@ -193,114 +193,112 @@ class-name var-name = new class-name(cons-arg-li তবে আমরা যদি জাভা ৭ অথবা ৮ ব্যবহার করি তাহলে উপরের লাইনটি সংক্ষিপ্তভাবে লিখতে পারি – ```java - Tuple> tupleInsideTuple = new Tuple<>("Tuple", new Tuple<>(45, 89)); -```` + Tuple> tupleInsideTuple = new Tuple<>("Tuple", new Tuple<>(45, 89)); +` +``` -`জাভা ৭` এ একটি নতুন অপারেটর সংযুক্ত হয়েছে যাকে বলা হয় ডায়মন্ড অপারেটর। এটি ব্যবহার করে আমরা জেনেরকস এ verbosity কিছুটা কমানো যায়। অর্থাৎ +`জাভা ৭` এ একটি নতুন অপারেটর সংযুক্ত হয়েছে যাকে বলা হয় ডায়মন্ড অপারেটর। এটি ব্যবহার করে আমরা জেনেরকস এ verbosity কিছুটা কমানো যায়। অর্থাৎ ```java - Map> anagrams = new HashMap>(); + Map> anagrams = new HashMap>(); ``` -এই স্ট্যাটমেন্ট-টি অনেকটাই বড়। এটি আমরা এভাবে লিখতে পারি – +এই স্ট্যাটমেন্ট-টি অনেকটাই বড়। এটি আমরা এভাবে লিখতে পারি – + ```java - Map> anagrams = new HashMap<>(); + Map> anagrams = new HashMap<>(); ``` -অর্থাৎ জেনেরিকস লেখার সময় বাম পাশে টাইপ প্যারামিটার ইনফরমেশন গুলো লিখলে ডান পাশে লিখতে হয় না । এটি অটোম্যাটিক্যালী ইনফার করতে পারে। +অর্থাৎ জেনেরিকস লেখার সময় বাম পাশে টাইপ প্যারামিটার ইনফরমেশন গুলো লিখলে ডান পাশে লিখতে হয় না । এটি অটোম্যাটিক্যালী ইনফার করতে পারে। +## Bounded Types -### Bounded Types - -আমরা উপরে দুটি উদাহরণ দেখেছি যেগুলোতে আমরা যে কোন ধরণের টাইপ প্যারামিটারাইউজড করতে পারি। কিন্তু কখনো কখনো আমাদের টাইপ restrict করতে হয়। যেমন- আমরা একটি জেনেরিক ক্লাস লিখতে চাই যা কিনা একটি এরে-তে রাখা কতগুলো নাম্বার-এর গড়(average) রিটার্ন করবে এবং আমরা চাই, এই এরে তে যে কোন ধরণের নাম্বার থাকতে পারে, যেমন- ইন্টিজার, ফ্লোটিং পয়েন্ট, ডাবল ইত্যাদি। আমরা টাইপ প্যারামিটার দিয়ে বলে দিতে চাই কখন কোনটা থাকবে। উদারহরণ দেখা যাক- +আমরা উপরে দুটি উদাহরণ দেখেছি যেগুলোতে আমরা যে কোন ধরণের টাইপ প্যারামিটারাইউজড করতে পারি। কিন্তু কখনো কখনো আমাদের টাইপ restrict করতে হয়। যেমন- আমরা একটি জেনেরিক ক্লাস লিখতে চাই যা কিনা একটি এরে-তে রাখা কতগুলো নাম্বার-এর গড়\(average\) রিটার্ন করবে এবং আমরা চাই, এই এরে তে যে কোন ধরণের নাম্বার থাকতে পারে, যেমন- ইন্টিজার, ফ্লোটিং পয়েন্ট, ডাবল ইত্যাদি। আমরা টাইপ প্যারামিটার দিয়ে বলে দিতে চাই কখন কোনটা থাকবে। উদারহরণ দেখা যাক- ```java public class Stats { T[] nums; - + public Stats(T[] nums) { this.nums = nums; } - + // Return type double in all cases. double average() { double sum = 0.0; for (T num : nums) { sum += num.doubleValue(); // Error!!! } - + return sum / nums.length; } } -```` - -এভারেজ ক্যালকুলেট করার জন্য আমাদের এভারেজ মেথড সবসময় এরে থেকে ডাবল ভ্যালু এক্সেপেক্ট করে। কিন্তু আমাদের এরে-এর টাইপ যেহেতু যে কোন রকম হতে পারে, সুতরাং সব অবজেক্ট থেকে ডাবল ভ্যালু পাওয়ার উপায় নেই। +` +``` -ইনফ্যাক্ট এই ক্লাসটি কিন্তু কম্পাইল হবে না। +এভারেজ ক্যালকুলেট করার জন্য আমাদের এভারেজ মেথড সবসময় এরে থেকে ডাবল ভ্যালু এক্সেপেক্ট করে। কিন্তু আমাদের এরে-এর টাইপ যেহেতু যে কোন রকম হতে পারে, সুতরাং সব অবজেক্ট থেকে ডাবল ভ্যালু পাওয়ার উপায় নেই। -এই ক্লাসটিতে আমরা একটি restriction এড করতে পারি যাতে করে এই টাইপ প্যারামিটার শুধুমাত্র নাম্বার(ইন্টিজার, ফ্লোটিং পয়েন্ট,ডাবল) হবে, নতুবা এটি কাজ করবে না। +ইনফ্যাক্ট এই ক্লাসটি কিন্তু কম্পাইল হবে না। -আমরা জানি যে সব নিউমেরিক অবজেক্ট গুলোর সুপার ক্লাস হচ্ছে `Number`. এবং `Number` এ `doubleValue()` মেথড ডিফাইন করা আছে। সুতরাং আমাদের ক্লাসটিকে একটু পরিবর্তন করি। +এই ক্লাসটিতে আমরা একটি restriction এড করতে পারি যাতে করে এই টাইপ প্যারামিটার শুধুমাত্র নাম্বার\(ইন্টিজার, ফ্লোটিং পয়েন্ট,ডাবল\) হবে, নতুবা এটি কাজ করবে না। +আমরা জানি যে সব নিউমেরিক অবজেক্ট গুলোর সুপার ক্লাস হচ্ছে `Number`. এবং `Number` এ `doubleValue()` মেথড ডিফাইন করা আছে। সুতরাং আমাদের ক্লাসটিকে একটু পরিবর্তন করি। ```java public class Stats { T[] nums; - + public Stats(T[] nums) { this.nums = nums; } - + // Return type double in all cases. double average() { double sum = 0.0; for (T num : nums) { sum += num.doubleValue(); // Error!!! } - + return sum / nums.length; } } ``` - -একটু লক্ষ্য করুন- +একটু লক্ষ্য করুন- ```java public class Stats{ } ``` -আমরা ক্লাস ডেফিনেশনে আমাদের টাইপ প্লেসহোল্ডার `T` নাম্বারকে extend করে। এটি আমাদের টাইপ প্যারামিটার পাস করতে restrict করে । অর্থাৎ আমরা শুধু মাত্র সেসব টাইপ পাস করতে পারবো যারা `Number` এর সাব টাইপ। - -সুতরাং আমাদের এই `Stats` ক্লাস এখন `Integer`, `Double`, `Float`, `Long`, `Short`, `BigInteger`, `BigDecimal`, `Byte` ইত্যাদি অবজেক্ট এর জন্যে কাজ করবে। +আমরা ক্লাস ডেফিনেশনে আমাদের টাইপ প্লেসহোল্ডার `T` নাম্বারকে extend করে। এটি আমাদের টাইপ প্যারামিটার পাস করতে restrict করে । অর্থাৎ আমরা শুধু মাত্র সেসব টাইপ পাস করতে পারবো যারা `Number` এর সাব টাইপ। -সুতরাং দেখা যাচ্ছে যে, জেনেরিকস এর সুবিধা ব্যবহার করে আমরা এই স্ট্যাট ক্লাসটি আলাদা আলাদা করে অনেকগুলো না লিখে একটি দিয়েই কাজ করে ফেলা সম্ভব হল। +সুতরাং আমাদের এই `Stats` ক্লাস এখন `Integer`, `Double`, `Float`, `Long`, `Short`, `BigInteger`, `BigDecimal`, `Byte` ইত্যাদি অবজেক্ট এর জন্যে কাজ করবে। +সুতরাং দেখা যাচ্ছে যে, জেনেরিকস এর সুবিধা ব্যবহার করে আমরা এই স্ট্যাট ক্লাসটি আলাদা আলাদা করে অনেকগুলো না লিখে একটি দিয়েই কাজ করে ফেলা সম্ভব হল। -### Wildcard Arguments +## Wildcard Arguments -নিচের উদাহরণটি লক্ষ্য করি- +নিচের উদাহরণটি লক্ষ্য করি- ```java - ArrayList lst = new ArrayList(); + ArrayList lst = new ArrayList(); ``` -এটি যদি কম্পাইল করতে চেষ্টা করি, তাহলে কম্পাইলার incompatible types ইরর দেবে। -কিন্তু আমরা জানি যে, সকল অবজেক্ট এর সুপার ক্লাস `Object`। তাছাড়া আমরা polymorphism থেকে জানি যে -আমরা সাব ক্লাসের রেফারেন্স কে সুপার ক্লাসের রেফারেন্স এ এসাইন করতে পারি। সুতরাং উপরের স্ট্যাটমেন্ট-টি কাজ করার কথা। +এটি যদি কম্পাইল করতে চেষ্টা করি, তাহলে কম্পাইলার incompatible types ইরর দেবে। কিন্তু আমরা জানি যে, সকল অবজেক্ট এর সুপার ক্লাস `Object`। তাছাড়া আমরা polymorphism থেকে জানি যে +আমরা সাব ক্লাসের রেফারেন্স কে সুপার ক্লাসের রেফারেন্স এ এসাইন করতে পারি। সুতরাং উপরের স্ট্যাটমেন্ট-টি কাজ করার কথা। -নিচের উদাহরণ দুটি লক্ষ্য করি - +নিচের উদাহরণ দুটি লক্ষ্য করি - ```java List strLst = new ArrayList(); // 1 List objLst = strList; // 2 - Compilation Error -```` - -২ নাম্বার লাইনটি কাজ করছে না । যদিও বা এটি কাজ করে এবং আর্বিট্রারি কোন একটি অবজেক্ট যদি `objLst` এড করা হয় তাহলে কিন্তু `strList` করাপ্টেড হয়ে যাবে এবং সেটি আর স্ট্রিং থাকবে না। +` +``` +২ নাম্বার লাইনটি কাজ করছে না । যদিও বা এটি কাজ করে এবং আর্বিট্রারি কোন একটি অবজেক্ট যদি `objLst` এড করা হয় তাহলে কিন্তু `strList` করাপ্টেড হয়ে যাবে এবং সেটি আর স্ট্রিং থাকবে না। -ধরা যাক, আমরা একটা print মেথড লিখতে চাই যা কিনা একটি লিস্ট এর ইলিমেন্ট গুলো প্রিন্ট করে। +ধরা যাক, আমরা একটা print মেথড লিখতে চাই যা কিনা একটি লিস্ট এর ইলিমেন্ট গুলো প্রিন্ট করে। ```java public static void print(List lst) { // accept List of Objects only, @@ -311,25 +309,25 @@ class-name var-name = new class-name(cons-arg-li } ``` -এটি কিন্তু শুধুমাত্র `List ` একসেপ্ট করবে , `List` অথবা `List` করবে না। +এটি কিন্তু শুধুমাত্র `List` একসেপ্ট করবে , `List` অথবা `List` করবে না। -উদাহরণ- +উদাহরণ- ```java public static void main(String[] args) { List objLst = new ArrayList(); objLst.add(new Integer(55)); printList(objLst); // matches - + List strLst = new ArrayList(); strLst.add("one"); printList(strLst); // compilation error } ``` -এই সমস্যা দূর করার জন্যে জাভাতে একটি একটি অপারেটর ব্যবহার করা হয় – যার নাম wildcard (?)। +এই সমস্যা দূর করার জন্যে জাভাতে একটি একটি অপারেটর ব্যবহার করা হয় – যার নাম wildcard \(?\)। -আমরা যদি আমাদের `print()` মেথডটি নিচের মতো করে লিখি, তাহলে কিন্তু আমাদের সমস্যা দূর হয়ে যাবে। +আমরা যদি আমাদের `print()` মেথডটি নিচের মতো করে লিখি, তাহলে কিন্তু আমাদের সমস্যা দূর হয়ে যাবে। ```java public static void print(List lst) { // accept List of Objects only, @@ -340,36 +338,32 @@ class-name var-name = new class-name(cons-arg-li } ``` -`List lst` এর মানে হচ্ছে আমরা এর টাইপ আমাদের জানা নেই, এটি যে কোন টাইপ হতে পারে। যেহেতু সব টাইপ এর সুপার ক্লাস Object সুতরাং এটি যেকোন টাইপ এর জন্যে কাজ করবে। - +`List lst` এর মানে হচ্ছে আমরা এর টাইপ আমাদের জানা নেই, এটি যে কোন টাইপ হতে পারে। যেহেতু সব টাইপ এর সুপার ক্লাস Object সুতরাং এটি যেকোন টাইপ এর জন্যে কাজ করবে। -Bounded Types এর মতো আমরা Wildcard Arguments কেও Bounded করে ফেলতে পারি । +Bounded Types এর মতো আমরা Wildcard Arguments কেও Bounded করে ফেলতে পারি । -উদাহরণ - +উদাহরণ - ```java - public static void process(List list) { /* ... */ } + public static void process(List list) { /* ... */ } ``` -এটি শুধু মাত্রে `Foo` এর সাব ক্লাস গুলো কে প্রসেস করতে পারবে। একে Upper Bounded Wildcards -বলে । +এটি শুধু মাত্রে `Foo` এর সাব ক্লাস গুলো কে প্রসেস করতে পারবে। একে Upper Bounded Wildcards বলে । -আমরা যদি এমন কোন মেথড লিখতে চাই যা শুধু মাত্র Integer, Number, and Object প্রসেস করবে অর্থাৎ Integerএবং এর সুপার ক্লাস প্রসেস করবে তাহলে - +আমরা যদি এমন কোন মেথড লিখতে চাই যা শুধু মাত্র Integer, Number, and Object প্রসেস করবে অর্থাৎ Integerএবং এর সুপার ক্লাস প্রসেস করবে তাহলে - ```java - public static void addNumbers(List list) { - } + public static void addNumbers(List list) { + } ``` -একে Lower Bounded Wildcards বলে। - - -### Generic Methods +একে Lower Bounded Wildcards বলে। -আমরা মূলত এতোক্ষণ জেনেরিক ক্লাস নিয়ে কথা বলেছি। আমরা একটি ক্লাসকে জেনেরিক না করে শুধুমাত্রে এর একটি বা একাধিক মেথড কে জেনেরিক করে লিখতে পারি। +## Generic Methods +আমরা মূলত এতোক্ষণ জেনেরিক ক্লাস নিয়ে কথা বলেছি। আমরা একটি ক্লাসকে জেনেরিক না করে শুধুমাত্রে এর একটি বা একাধিক মেথড কে জেনেরিক করে লিখতে পারি। -উদহরণ- +উদহরণ- ```java public class Util { @@ -381,33 +375,33 @@ Bounded Types এর মতো আমরা Wildcard Arguments কেও Bou } ``` -এটি একটি জেনেরিকম মেথড। +এটি একটি জেনেরিকম মেথড। -জেনেরিক মেথড-এ রিটার্নটাইপ এর আগে টাইপ-প্লেস হোল্ডার `<>` লিখতে হয়। +জেনেরিক মেথড-এ রিটার্নটাইপ এর আগে টাইপ-প্লেস হোল্ডার `<>` লিখতে হয়। -আমরা এবার চেষ্টা করবো কিভাবে আমরা একটি জেনেরিক সিংগলি লিংকলিস্ট লিখতে পারি -- +আমরা এবার চেষ্টা করবো কিভাবে আমরা একটি জেনেরিক সিংগলি লিংকলিস্ট লিখতে পারি -- ‌ + ```java - /** * @author Bazlur Rahman Rokon * @date 2/4/15. */ public class SinglyLinkedList { private long size; - + private Node head; private Node tail; - + public void addFirst(Type value) { addFirst(new Node<>(value)); } - + public void addLast(Type value) { addLast(new Node<>(value)); } - + private void addLast(Node node) { if (size == 0) { head = node; @@ -417,38 +411,38 @@ Bounded Types এর মতো আমরা Wildcard Arguments কেও Bou tail = node; size++; } - + public void addFirst(Node node) { Node temp = head; head = node; head.setNext(temp); - + size++; - + if (size == 1) { tail = head; } } - + public Node getHead() { return head; } - + public Node getTail() { return tail; } - + public void removeFirst() { if (size != 0) { head = head.getNext(); size--; } - + if (size == 0) { tail = null; } } - + public void removeLast() { if (size != 0) { if (size == 1) { @@ -456,66 +450,66 @@ Bounded Types এর মতো আমরা Wildcard Arguments কেও Bou tail = null; } else { Node current = head; - + while (current.getNext() != tail) { current = current.getNext(); } current.setNext(null); tail = current; - + } size--; } } - + public Type getFirst() { - + return getHead().getValue(); } - + // four scenario // 1. empty list- do nothing // 2. single node : ( previous is null) // 3. Many nodes // a. node to remove is first node // b. node to remove is the middle or last - + public boolean remove(Type type) { Node prev = null; Node current = head; - + while (current != null) { if (current.getValue().equals(type)) { if (prev != null) { - + // just skip the current node. it works fine prev.setNext(current.getNext()); - + if (current.getNext() == null) { tail = prev; } - + size--; } else { removeFirst(); } - + return true; } - + prev = current; current = current.getNext(); } - + return false; } - - + + public long getSize() { - + return size; } - + public void print() { System.out.print("Total elements : " + size + " -> "); Node node = head; @@ -525,7 +519,7 @@ Bounded Types এর মতো আমরা Wildcard Arguments কেও Bou } System.out.println(); } - + public void clear() { for (Node x = head; x != null; ) { Node next = x.next; @@ -533,32 +527,32 @@ Bounded Types এর মতো আমরা Wildcard Arguments কেও Bou x.value = null; x = next; } - + head = tail = null; size = 0; } - - + + private class Node { private Type value; private Node next; - + public Node(Type value) { this.value = value; } - + public Type getValue() { return value; } - + public void setValue(Type value) { this.value = value; } - + public Node getNext() { return next; } - + public void setNext(Node next) { this.next = next; } @@ -566,7 +560,7 @@ Bounded Types এর মতো আমরা Wildcard Arguments কেও Bou } ``` -এবার আমরা এটিকে রান করে দেখি- +এবার আমরা এটিকে রান করে দেখি- ```java /** @@ -580,20 +574,20 @@ Bounded Types এর মতো আমরা Wildcard Arguments কেও Bou integers.addFirst(3); integers.addFirst(2); integers.addFirst(1); - + integers.print(); - + System.out.println("Remove first and last elements.."); integers.removeFirst(); integers.removeLast(); integers.print(); - + System.out.println("add elements at last "); integers.addLast(5); integers.addLast(6); integers.addLast(7); integers.print(); - + SinglyLinkedList stringLinkedList = new SinglyLinkedList<>(); stringLinkedList.addFirst("abcd"); stringLinkedList.addFirst("efgh"); @@ -605,21 +599,7 @@ Bounded Types এর মতো আমরা Wildcard Arguments কেও Bou } ``` -Output: - -> Total elements : 4 - 1 ,2 ,3 ,4 , -> Remove first and last elements.. -> Total elements : 2 - 2 ,3 , -> add elements at last -> Total elements : 5 - 2 ,3 ,5 ,6 ,7 , -> Total elements : 5 - qrst ,mnop ,ijkl ,efgh ,abcd , - - - - - - - - +Output: +> Total elements : 4 - 1 ,2 ,3 ,4 , Remove first and last elements.. Total elements : 2 - 2 ,3 , add elements at last Total elements : 5 - 2 ,3 ,5 ,6 ,7 , Total elements : 5 - qrst ,mnop ,ijkl ,efgh ,abcd , diff --git a/9.md b/9.md index 25054f8..eb8f840 100644 --- a/9.md +++ b/9.md @@ -1,21 +1,21 @@ # পাঠ ৯: জাভা আই/ও -- স্ট্রিম -- বাইট স্ট্রিম -- ক্যারেক্টার স্ট্রিম -- বাফারড স্ট্রিম -- স্ক্যানিং এবং ফরমেটিং -- ডাটা স্ট্রিম -- ইনপুট স্ট্রিম -- আউটপুট স্ট্রিম -- ফাইল -- রিডিং এ টেক্সট ফাইল -- রাইটিং এ টেক্সট ফাইল -- সারসংক্ষেপ +* স্ট্রিম +* বাইট স্ট্রিম +* ক্যারেক্টার স্ট্রিম +* বাফারড স্ট্রিম +* স্ক্যানিং এবং ফরমেটিং +* ডাটা স্ট্রিম +* ইনপুট স্ট্রিম +* আউটপুট স্ট্রিম +* ফাইল +* রিডিং এ টেক্সট ফাইল +* রাইটিং এ টেক্সট ফাইল +* সারসংক্ষেপ -ইনপুট আউটপুট সংক্ষেপে যাকে আমারা বলি আই/ও (I/O) যে কোন কম্পিউটার সিস্টেম বা প্রোগ্রামিং ল্যাংগুজের একটি মৌলিক বিষয়। যে কোন প্রোগ্রাম লিখতে গেলেই আসলে আমাদের আই/ও দরকার হয়। তবে এই বিষয়টি ঠিক ততটা মজার না যতটা অন্যান্য বিষয় গুলো। খানিকটা ইলেক্ট্রিসিটিরর মতো। আমরা জানি প্রত্যেকটি বাড়িতেই এটি আছে, দরজা দিয়ে প্রবেশ করেই আমাদের হাত সুইচবোর্ডের দিকে চলে যায়, আমার সুইচ টিপ দিই, এবং লাইট জ্বলে উঠে। এর পেছনের ব্যপারগুলো নিয়ে যেমন ইলেক্ট্রিসিটি কোথা থেকে এলো, কিভাবে কাজ করে এসব নিয়ে আমাদের চিন্তা করতে হয় না। এগুলো নেপথ্যে থেকে ঠিক ঠাক মতো কাজ করে। আই/ও অনেকটা এরকম। +ইনপুট আউটপুট সংক্ষেপে যাকে আমারা বলি আই/ও \(I/O\) যে কোন কম্পিউটার সিস্টেম বা প্রোগ্রামিং ল্যাংগুজের একটি মৌলিক বিষয়। যে কোন প্রোগ্রাম লিখতে গেলেই আসলে আমাদের আই/ও দরকার হয়। তবে এই বিষয়টি ঠিক ততটা মজার না যতটা অন্যান্য বিষয় গুলো। খানিকটা ইলেক্ট্রিসিটিরর মতো। আমরা জানি প্রত্যেকটি বাড়িতেই এটি আছে, দরজা দিয়ে প্রবেশ করেই আমাদের হাত সুইচবোর্ডের দিকে চলে যায়, আমার সুইচ টিপ দিই, এবং লাইট জ্বলে উঠে। এর পেছনের ব্যপারগুলো নিয়ে যেমন ইলেক্ট্রিসিটি কোথা থেকে এলো, কিভাবে কাজ করে এসব নিয়ে আমাদের চিন্তা করতে হয় না। এগুলো নেপথ্যে থেকে ঠিক ঠাক মতো কাজ করে। আই/ও অনেকটা এরকম। -এবার ইনপুট আউটপুটকে সংজ্ঞায়িত করা যাক। একটি প্রোগ্রাম মূলত ডাটা আর ফাংশন এর সমষ্টি। অর্থাৎ ফাংশন ডাটা গুলো নিয়ে কাজ করে। তো এই ডাটা গুলো কোথাও থেকে তৈরি হয় এবং সেগুলোকে আমাদের প্রোগ্রাম ফাংশন প্রসেস করে । প্রসেসকৃত ডাটা গুলো হচ্ছে আউটপুট। সহজ করে বলা যেতে পারে, আমাদের প্রোগ্রাম কোন সোর্স থেকে ডাটা পড়ে এবং কোন একটা ডেস্টিনেশনে রাইট করে। উদাহরণ হিসেবে দেওয়া যেতে পারে- আমাদের কিবোর্ড একটি ডাটা সোর্স। আমরা একটা প্রোগ্রাম লিখতে পারি যা কি বোর্ড এ ডাটা টাইপ করছি তা ইনপুট হিসেবে নিচ্ছে এবং System.out.println() মেথড দিয়ে সেগুলো কনসোলে প্রিন্ট করতে পারি। +এবার ইনপুট আউটপুটকে সংজ্ঞায়িত করা যাক। একটি প্রোগ্রাম মূলত ডাটা আর ফাংশন এর সমষ্টি। অর্থাৎ ফাংশন ডাটা গুলো নিয়ে কাজ করে। তো এই ডাটা গুলো কোথাও থেকে তৈরি হয় এবং সেগুলোকে আমাদের প্রোগ্রাম ফাংশন প্রসেস করে । প্রসেসকৃত ডাটা গুলো হচ্ছে আউটপুট। সহজ করে বলা যেতে পারে, আমাদের প্রোগ্রাম কোন সোর্স থেকে ডাটা পড়ে এবং কোন একটা ডেস্টিনেশনে রাইট করে। উদাহরণ হিসেবে দেওয়া যেতে পারে- আমাদের কিবোর্ড একটি ডাটা সোর্স। আমরা একটা প্রোগ্রাম লিখতে পারি যা কি বোর্ড এ ডাটা টাইপ করছি তা ইনপুট হিসেবে নিচ্ছে এবং System.out.println\(\) মেথড দিয়ে সেগুলো কনসোলে প্রিন্ট করতে পারি। ```java import java.io.BufferedReader; @@ -23,60 +23,53 @@ import java.io.IOException; import java.io.InputStreamReader; public class StandardIOExample { - public static void main(String[] args) throws IOException { - BufferedReader reader; - reader = new BufferedReader(new InputStreamReader(System.in)); - String line; - do { - line = reader.readLine(); - line = line.toUpperCase(); - System.out.println(line); - } while (!line.equals("quit")); - } + public static void main(String[] args) throws IOException { + BufferedReader reader; + reader = new BufferedReader(new InputStreamReader(System.in)); + String line; + do { + line = reader.readLine(); + line = line.toUpperCase(); + System.out.println(line); + } while (!line.equals("quit")); + } } ``` -উপরের প্রোগ্রামটি কিবোর্ড থেকে একটি লাইন পড়ে সেটি আপারকেইস এ কনর্ভার্ট করে কনসোলে প্রিন্ট করে। একটি একটি সরলতম এবং খুবই প্রয়োজনীয় ইনপুট/আউটপুট এর উদাহরণ। -সাধারণত আমরা কোন একটি ফাইল থেকে ডাটা পড়ি এবং প্রয়োজনীয় প্রসেসিং এর পর অন্য একটি ফাইল এ রাইট করি। তবে ইনপুট আউটপুট শুধুমাত্র ফাইল এর মধ্যে সীমাবদ্ধ থাকবে এবন কোন কথা নেই। আমরা চাইলে একটা স্ট্রিং অবজেক্ট থেকে ডাটা পড়ে আরেকটি স্ট্রিং অবজেক্ট রাইট করতে পারি। এক্ষেত্রে ইনপুট হচ্ছে একটি স্ট্রিং অবজেক্ট এবং আউটপুটও একটি স্ট্রিং অবজেক্ট। আবার একটি ফাইল থেকে ডাটা পড়ে একটি স্ট্রিং অবজেক্ট এ রাখতে পারি। এভাবে অনেক গুলো কম্বিনেশান করতে পারি। তবে সব সময় যে ই্নপুট এবং আউটপুট এক সাথেই কাজ করতে হবে এমনটা নয়। কখনো কখনো শুধুমাত্র ইনপুট অথবা শুধুমাত্র আউটপুট নিয়ে একটি প্রোগ্রাম তৈরি হতে পারে। +উপরের প্রোগ্রামটি কিবোর্ড থেকে একটি লাইন পড়ে সেটি আপারকেইস এ কনর্ভার্ট করে কনসোলে প্রিন্ট করে। একটি একটি সরলতম এবং খুবই প্রয়োজনীয় ইনপুট/আউটপুট এর উদাহরণ। সাধারণত আমরা কোন একটি ফাইল থেকে ডাটা পড়ি এবং প্রয়োজনীয় প্রসেসিং এর পর অন্য একটি ফাইল এ রাইট করি। তবে ইনপুট আউটপুট শুধুমাত্র ফাইল এর মধ্যে সীমাবদ্ধ থাকবে এবন কোন কথা নেই। আমরা চাইলে একটা স্ট্রিং অবজেক্ট থেকে ডাটা পড়ে আরেকটি স্ট্রিং অবজেক্ট রাইট করতে পারি। এক্ষেত্রে ইনপুট হচ্ছে একটি স্ট্রিং অবজেক্ট এবং আউটপুটও একটি স্ট্রিং অবজেক্ট। আবার একটি ফাইল থেকে ডাটা পড়ে একটি স্ট্রিং অবজেক্ট এ রাখতে পারি। এভাবে অনেক গুলো কম্বিনেশান করতে পারি। তবে সব সময় যে ই্নপুট এবং আউটপুট এক সাথেই কাজ করতে হবে এমনটা নয়। কখনো কখনো শুধুমাত্র ইনপুট অথবা শুধুমাত্র আউটপুট নিয়ে একটি প্রোগ্রাম তৈরি হতে পারে। -তবে একজন জাভা প্রোগ্রামার এর কাছে আই/ও অনেক গুলো কারণেই গুরুত্বপূর্ণ হতে পারে। জাভাতে অনেক গুলো আই/ও ক্লাস এর কোর এপিআই এর সাথেই থাকে যার বেশির ভাগ – java.io প্যাকেজ-এ। তবে জাভাতে অধিকাংশ ক্ষেত্রেই আই/ও দুই ভাগে ভাগ করা হয়েছে। একটি হলো বাইট ভিত্তিক আই/ও যা input stream এবং output stream দিয়ে হ্যান্ডেল করা হয়, এবং অন্যটি হলো ক্যারেকটার ভিত্তিক যা readers এবং writers দিয়ে হ্যান্ডেল করা হয়। তবে দুই টাইপ-এ অ্যাবস্ট্রাকশন সরবরাহ করে যা দিয়ে সোর্সের সঠিক টাইপ না জেনেও পড়তে বা লিখতে পারি। এতে করে আমরা একি মেথড দিয়ে কনসোল থেকে ডাটা পড়তে পারছি আবার সেই মেথড দিয়ে আমরা নেটওয়ার্ক কানেকশন থেকেও পড়তে পারছি। -এতো হল টিপ অব দি আইসবার্গ। একবার আমরা অ্যাবস্ট্রাকশন এ অভ্যস্ত হয়ে গেলে যে কোন সোর্স থেকে ডাটা পড়তে পারবো, আমাদের আসলে খুব একটা কেয়ার করতে হবে না কিভাবে বা কোন সোর্স থেকে ডাটা আসছে বা যাচ্ছে। এখানে একটা গুরুত্বপূর্ণ কথা বলে রাখি, সেটা হলো, জাভা প্রোগ্রামারদের সব থেকে পছন্দের বিষয় হচ্ছে অ্যাবস্ট্রাকশন। -অনেক ভূমিকা হলো, এবার তাহলে আরো ভেতরে প্রবেশ করা যাক। শুরতেই ফাইল নিয়ে কাজ করা যাক। +তবে একজন জাভা প্রোগ্রামার এর কাছে আই/ও অনেক গুলো কারণেই গুরুত্বপূর্ণ হতে পারে। জাভাতে অনেক গুলো আই/ও ক্লাস এর কোর এপিআই এর সাথেই থাকে যার বেশির ভাগ – java.io প্যাকেজ-এ। তবে জাভাতে অধিকাংশ ক্ষেত্রেই আই/ও দুই ভাগে ভাগ করা হয়েছে। একটি হলো বাইট ভিত্তিক আই/ও যা input stream এবং output stream দিয়ে হ্যান্ডেল করা হয়, এবং অন্যটি হলো ক্যারেকটার ভিত্তিক যা readers এবং writers দিয়ে হ্যান্ডেল করা হয়। তবে দুই টাইপ-এ অ্যাবস্ট্রাকশন সরবরাহ করে যা দিয়ে সোর্সের সঠিক টাইপ না জেনেও পড়তে বা লিখতে পারি। এতে করে আমরা একি মেথড দিয়ে কনসোল থেকে ডাটা পড়তে পারছি আবার সেই মেথড দিয়ে আমরা নেটওয়ার্ক কানেকশন থেকেও পড়তে পারছি। এতো হল টিপ অব দি আইসবার্গ। একবার আমরা অ্যাবস্ট্রাকশন এ অভ্যস্ত হয়ে গেলে যে কোন সোর্স থেকে ডাটা পড়তে পারবো, আমাদের আসলে খুব একটা কেয়ার করতে হবে না কিভাবে বা কোন সোর্স থেকে ডাটা আসছে বা যাচ্ছে। এখানে একটা গুরুত্বপূর্ণ কথা বলে রাখি, সেটা হলো, জাভা প্রোগ্রামারদের সব থেকে পছন্দের বিষয় হচ্ছে অ্যাবস্ট্রাকশন। অনেক ভূমিকা হলো, এবার তাহলে আরো ভেতরে প্রবেশ করা যাক। শুরতেই ফাইল নিয়ে কাজ করা যাক। **ওয়ার্কিং উয়িদ ফাইল** -**পাথ** -প্রত্যেকটি ফাইল এর জন্যে একটি নির্দিষ্ট পাথ থাকে যাতে করে আমরা আলাদা করতে পারি। পাথ হচ্ছে কতগুলো ক্যারেকটার এর সমষ্টি এবং এতে ফাইলে এর নাম এবং ডিরেকটরী লোকাশান থাকে। যেমন ওয়িন্ডোস প্লাটফর্মের ক্ষেত্রে C:\users\rokonoid\hello.txt হচ্ছে hello.txt ফাইল এর পাথনেইম যা কিনা C ড্রাইভের users ডিরেকটরির মাঝে rokonoid ডিরেকটরিতে আছে। Unix প্লাটফর্মের ক্ষেত্রে /home/rokonoid/hello.txt হচ্ছে hello.txt এর পাথনেইম। +**পাথ** প্রত্যেকটি ফাইল এর জন্যে একটি নির্দিষ্ট পাথ থাকে যাতে করে আমরা আলাদা করতে পারি। পাথ হচ্ছে কতগুলো ক্যারেকটার এর সমষ্টি এবং এতে ফাইলে এর নাম এবং ডিরেকটরী লোকাশান থাকে। যেমন ওয়িন্ডোস প্লাটফর্মের ক্ষেত্রে C:\users\rokonoid\hello.txt হচ্ছে hello.txt ফাইল এর পাথনেইম যা কিনা C ড্রাইভের users ডিরেকটরির মাঝে rokonoid ডিরেকটরিতে আছে। Unix প্লাটফর্মের ক্ষেত্রে /home/rokonoid/hello.txt হচ্ছে hello.txt এর পাথনেইম। -পাথনেইম দুই প্রকার হতে পারে- absolute path এবং relative path. - Current working directory বলে একটা কনসেপ্ট আছে, আর সেটি হলো, আমরা যখন যে ডিরেকটরিতে কাজ করি। মনে করা যাক আমাদের জাভা প্রোগ্রামটি /home/rokonoid বা C:\users\rokonoid ডিরেকটরিতে আছে । তাহলে আমাদের কারেন্ট ওয়ার্কিং ডিরেকটরি হচ্ছে C:\users\rokonoid বা /home/rokonoid। এখন এই ডিরেকটরিতে যদি একটি hello.txt ফাইল থাকে, তাহলে এই ফাইল এর রিলেটিভ পাথ হবে hello.txt আর absolute path পাথ হবে C:\users\rokonoid\hello.txt বা /home/rokonoid/hello.txt । রিলেটিভ পাথ কারেন্ট ওয়ার্কিক ডিরেকটরি থেকে রিজলভ করা যায়। +পাথনেইম দুই প্রকার হতে পারে- absolute path এবং relative path. Current working directory বলে একটা কনসেপ্ট আছে, আর সেটি হলো, আমরা যখন যে ডিরেকটরিতে কাজ করি। মনে করা যাক আমাদের জাভা প্রোগ্রামটি /home/rokonoid বা C:\users\rokonoid ডিরেকটরিতে আছে । তাহলে আমাদের কারেন্ট ওয়ার্কিং ডিরেকটরি হচ্ছে C:\users\rokonoid বা /home/rokonoid। এখন এই ডিরেকটরিতে যদি একটি hello.txt ফাইল থাকে, তাহলে এই ফাইল এর রিলেটিভ পাথ হবে hello.txt আর absolute path পাথ হবে C:\users\rokonoid\hello.txt বা /home/rokonoid/hello.txt । রিলেটিভ পাথ কারেন্ট ওয়ার্কিক ডিরেকটরি থেকে রিজলভ করা যায়। **ফাইল তৈরি** -এবার দেখা যাক কিভাবে একটি ফাইল অবজেক্ট তৈরি করা যায়। -_java.io.File_ ক্লাসটি একটি পাথ এর ফাইল বা ডিরেকটরিকে রিপ্রেজেন্ট করে। -এ ক্লাসে বেশ কয়েকটি কনস্ট্রাকর রয়েছে,এর মানে বেশ কয়েক উপায়ে একটি ফাইল অবজেক্ট তৈরি করা যায়। +এবার দেখা যাক কিভাবে একটি ফাইল অবজেক্ট তৈরি করা যায়। _java.io.File_ ক্লাসটি একটি পাথ এর ফাইল বা ডিরেকটরিকে রিপ্রেজেন্ট করে। এ ক্লাসে বেশ কয়েকটি কনস্ট্রাকর রয়েছে,এর মানে বেশ কয়েক উপায়ে একটি ফাইল অবজেক্ট তৈরি করা যায়। ```java File(String pathname) File(File parent, String child) File(String parent, String child) -File(URI uri) +File(URI uri) ``` -এখন আমাদের একটি পাথনেইম যদি হয় hello.txt বা /home/rokonoid/hello.txt তাহলে আমরা নিচের মতো করে ফাইল অবজেক্ট তৈরি করতে পারি। +এখন আমাদের একটি পাথনেইম যদি হয় hello.txt বা /home/rokonoid/hello.txt তাহলে আমরা নিচের মতো করে ফাইল অবজেক্ট তৈরি করতে পারি। ```java File file = new File("hello.txt"); ``` -অথবা + +অথবা ```java File file = new File("/home/rokonoid/hello.txt"); ``` - -এই ফাইলটি আমাদের দেওয়া পাথ এ যে ফাইলটি আছে তাকে রিপ্রেজেন্ট করে। তবে মজার ব্যপার হচ্ছে ফাইল অবজেক্ট তৈরি করতে হলে এই পাথটি ফিজিক্যালি থাকতে হবে এমন কোন কথা নেই। File ক্লাসের বেশি কিছু মেথড আছে যেগুলো দিয়ে আমরা দেখতে পারি এই পাইলটি আসলেই আমরা যে পাথটি দিয়েছি সেখানে আছি কিনা। না থাকলে আমরা তৈরি করতে পারি। +এই ফাইলটি আমাদের দেওয়া পাথ এ যে ফাইলটি আছে তাকে রিপ্রেজেন্ট করে। তবে মজার ব্যপার হচ্ছে ফাইল অবজেক্ট তৈরি করতে হলে এই পাথটি ফিজিক্যালি থাকতে হবে এমন কোন কথা নেই। File ক্লাসের বেশি কিছু মেথড আছে যেগুলো দিয়ে আমরা দেখতে পারি এই পাইলটি আসলেই আমরা যে পাথটি দিয়েছি সেখানে আছি কিনা। না থাকলে আমরা তৈরি করতে পারি। ```java import java.io.File; @@ -84,39 +77,40 @@ import java.io.IOException; public class FileExample { - public static void main(String[] args) { - File file = new File("hello.txt"); - if (file.exists()) { - System.out.println("File exists"); - } else { - System.out.println("File does not exist,lets create one"); - try { - file.createNewFile(); - } catch (IOException e) { - e.printStackTrace(); - } - } - } + public static void main(String[] args) { + File file = new File("hello.txt"); + if (file.exists()) { + System.out.println("File exists"); + } else { + System.out.println("File does not exist,lets create one"); + try { + file.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } } ``` -উপরের উদহরণটিতে আমরা প্রথমে আমাদের দেওয়া পাথ দিয়ে একটি ফাইল অবজেক্ট তৈরি করেছি। তারপর দেখেছি এই ফাইটি আসলেই ফিজিক্যালি আমাদের দেওয়া পাথ এ আছে কিনা। যদি না থাকে, তাহলে সেই পাথ এ নতুন একটি ফাইল তৈরি করা হয়েছে। +উপরের উদহরণটিতে আমরা প্রথমে আমাদের দেওয়া পাথ দিয়ে একটি ফাইল অবজেক্ট তৈরি করেছি। তারপর দেখেছি এই ফাইটি আসলেই ফিজিক্যালি আমাদের দেওয়া পাথ এ আছে কিনা। যদি না থাকে, তাহলে সেই পাথ এ নতুন একটি ফাইল তৈরি করা হয়েছে। + +এছাড়াও আরও কিছু বেশ প্রয়োজনীয় মেথড যেমন- isFile\(\) এবং isDirectory\(\) আছে যেগুলো দিয়ে আমরা বের করতে পারি কোন পাথ ফাইল বা ডিরেকটরি কিনা। -এছাড়াও আরও কিছু বেশ প্রয়োজনীয় মেথড যেমন- isFile() এবং isDirectory() আছে যেগুলো দিয়ে আমরা বের করতে পারি কোন পাথ ফাইল বা ডিরেকটরি কিনা। +এছাড়াও কারেন্ট ওয়ার্কিং ডিরেকটি বের করা জন্যে একটি বিশেষ উপায় হলো - -এছাড়াও কারেন্ট ওয়ার্কিং ডিরেকটি বের করা জন্যে একটি বিশেষ উপায় হলো - ```java public class CurrentWorkingDirectory { - public static void main(String[] args) { - String workingDir = System.getProperty("user.dir"); - System.out.println(workingDir); - } + public static void main(String[] args) { + String workingDir = System.getProperty("user.dir"); + System.out.println(workingDir); + } } ``` -**পাথ সেপারেটর -** -একটি বিষয় মনে রাখতে হবে যে বিভিন্ন প্লাটপর্ম ফাইলের পাথ এর দুটি পার্ট আলাদা করার জন্যে আলাদা ক্যারেকটার ব্যবহার করে থাকে। যেমন- windows ব্যাকস্লেস (\) এবং unix সিস্টেম ফরওয়ার্ড স্লেস (/) ব্যবহার করে থাকে। সুতরাং পাথ তৈরি করতে হলে খেয়াল রাখা জরুরী কোন প্লাটফর্মে থেকে প্রোগ্রামটি রান করা হচ্ছে। কিন্তু আমাদের যেহেতু মূল উদ্দেশ্য প্লাটপর্ম স্পেসিফিক কোড না লেখা, সেক্ষত্রে নিজের উপায়টি ব্যবহার করা যেতে পারে। +**পাথ সেপারেটর** + +একটি বিষয় মনে রাখতে হবে যে বিভিন্ন প্লাটপর্ম ফাইলের পাথ এর দুটি পার্ট আলাদা করার জন্যে আলাদা ক্যারেকটার ব্যবহার করে থাকে। যেমন- windows ব্যাকস্লেস \(\) এবং unix সিস্টেম ফরওয়ার্ড স্লেস \(/\) ব্যবহার করে থাকে। সুতরাং পাথ তৈরি করতে হলে খেয়াল রাখা জরুরী কোন প্লাটফর্মে থেকে প্রোগ্রামটি রান করা হচ্ছে। কিন্তু আমাদের যেহেতু মূল উদ্দেশ্য প্লাটপর্ম স্পেসিফিক কোড না লেখা, সেক্ষত্রে নিজের উপায়টি ব্যবহার করা যেতে পারে। ```java String workingDir = System.getProperty("user.dir"); @@ -124,13 +118,11 @@ String newFile = workingDir + File.separator + "hellword.txt"; File file = new File(newFile); ``` -এখানে File.separator একটি কনস্ট্যান্ট যা যে প্লাটফর্মে প্রোগ্রামটি রান করছে তার উপর ভিত্তি করে সেপারেটর স্ট্রিং আকারে দিয়ে থাকে। +এখানে File.separator একটি কনস্ট্যান্ট যা যে প্লাটফর্মে প্রোগ্রামটি রান করছে তার উপর ভিত্তি করে সেপারেটর স্ট্রিং আকারে দিয়ে থাকে। **ডিরেকটরি তৈরি** - -File ক্লাসে এ mkdir() এবং mkdirs() দুটি মেথড আছে যেগুলো ব্যবহার করে আমরা একটি ডিরেকটরি তৈরি করতে পারি। এবং এদের মাঝে ফাইল তৈরি করতে পারি। - +File ক্লাসে এ mkdir\(\) এবং mkdirs\(\) দুটি মেথড আছে যেগুলো ব্যবহার করে আমরা একটি ডিরেকটরি তৈরি করতে পারি। এবং এদের মাঝে ফাইল তৈরি করতে পারি। ```java import java.io.File; @@ -156,17 +148,16 @@ public class DirectoryExample { } ``` -এই প্রোগ্রামটি রান করলে নিচের আউটপুট পাওয়া যাবে - +এই প্রোগ্রামটি রান করলে নিচের আউটপুট পাওয়া যাবে - -``` +```text Diectory Path: /home/rokonoid/myDir File Path: /home/rokonoid/myDir/hello.txt ``` -**ফাইল রিনেমিং , কপিং এবং ডিলেটিং ** - +**ফাইল রিনেমিং , কপিং এবং ডিলেটিং** -File ক্লাস এ renameTo() ব্যবহার করে আমরা ফাইল রিনেম করতে পারি। +File ক্লাস এ renameTo\(\) ব্যবহার করে আমরা ফাইল রিনেম করতে পারি। ```java import java.io.File; @@ -178,7 +169,7 @@ public class FileRenameExample { File newFile = new File("new_hello.txt"); boolean fileRenamed = oldFile.renameTo(newFile); - + if (fileRenamed) { System.out.println(oldFile + " renamed to " + newFile); } else { @@ -188,8 +179,7 @@ public class FileRenameExample { } ``` -ফাইল ডিলিট করার জন্যে দুটি মেথড রয়েছে- delete() এবং deleteOnExit() -এই মেথড দুটি দিয়ে ফাইল এবং ডিরেকটররী ডিলেট করা যায়। তবে ডিরেকটরী ডিলিট করতে হলে অবশ্যই ডিরেকটরি টি খালি থাকতে হবে, অর্থাৎ ডিরেকটরীতে যদি আরও ফাইল থাকে , তাহলে সেগুলো আগে ডিলিট করে ফেলতে হবে। delete() মেথডটি সাথে সাথেই কাজ করে তবে, deleteOnExit() মেথডটি যখন JVM টারমিনেট করে তখন ডিলেট করে। আমাদের অনেকসময় প্রোগ্রাম চলাকালিন টেম্পোরারি ফাইল তৈরি করার দরকার পরে যা প্রোগ্রাম টার্মিনেট হয়ে গেলে দরকার হয় না,সেসব ক্ষেত্রে এই মেথড ব্যবহার করা যেতে পারে। +ফাইল ডিলিট করার জন্যে দুটি মেথড রয়েছে- delete\(\) এবং deleteOnExit\(\) এই মেথড দুটি দিয়ে ফাইল এবং ডিরেকটররী ডিলেট করা যায়। তবে ডিরেকটরী ডিলিট করতে হলে অবশ্যই ডিরেকটরি টি খালি থাকতে হবে, অর্থাৎ ডিরেকটরীতে যদি আরও ফাইল থাকে , তাহলে সেগুলো আগে ডিলিট করে ফেলতে হবে। delete\(\) মেথডটি সাথে সাথেই কাজ করে তবে, deleteOnExit\(\) মেথডটি যখন JVM টারমিনেট করে তখন ডিলেট করে। আমাদের অনেকসময় প্রোগ্রাম চলাকালিন টেম্পোরারি ফাইল তৈরি করার দরকার পরে যা প্রোগ্রাম টার্মিনেট হয়ে গেলে দরকার হয় না,সেসব ক্ষেত্রে এই মেথড ব্যবহার করা যেতে পারে। ```java public class FileDeleteExample { @@ -197,7 +187,7 @@ public class FileDeleteExample { // To delete the hello.txt file immediately File file1 = new File("hello.txt"); file1.delete(); - + // To delete the hello.txt file when the JVM terminates File file2 = new File("hello.txt"); file2.deleteOnExit(); @@ -205,159 +195,134 @@ public class FileDeleteExample { } ``` -File ক্লাসে কোন মেথড নেই যাতে করে সরাসরি আমরা ফাইল কপি করতে পারি। একটি ফাইল কপি করতে হলে আমাদেরকে একটি নতুন ফাইল তৈরি করতে হবে এবং সেই ফাইল এর কন্টেন্ট গুলো রিড করে নতুন ফাইল এ রাইট করতে হবে। পরবর্তি চ্যাপ্টারে এ নিয়ে আলোচনা করা হবে। -লিস্টিং ফাইলস +File ক্লাসে কোন মেথড নেই যাতে করে সরাসরি আমরা ফাইল কপি করতে পারি। একটি ফাইল কপি করতে হলে আমাদেরকে একটি নতুন ফাইল তৈরি করতে হবে এবং সেই ফাইল এর কন্টেন্ট গুলো রিড করে নতুন ফাইল এ রাইট করতে হবে। পরবর্তি চ্যাপ্টারে এ নিয়ে আলোচনা করা হবে। লিস্টিং ফাইলস -আমরা একটি ডিরেকটরিতে কতগুলো ফাইল আছে তার লিস্ট listFiles() মেথড দিয়ে সহজেই বের করে ফেলতে পারি। উদাহরণ- +আমরা একটি ডিরেকটরিতে কতগুলো ফাইল আছে তার লিস্ট listFiles\(\) মেথড দিয়ে সহজেই বের করে ফেলতে পারি। উদাহরণ- ```java import java.io.File; public class ListingFiles { - public static void main(String[] args) { - File home = new File("/home/rokonoid/"); - - File[] listRoots = home.listFiles(); - for (File file : listRoots) { - System.out.println(file.getPath()); - } - } + public static void main(String[] args) { + File home = new File("/home/rokonoid/"); + + File[] listRoots = home.listFiles(); + for (File file : listRoots) { + System.out.println(file.getPath()); + } + } } - ``` -**ফাইল ফিল্টার -** +**ফাইল ফিল্টার** -তবে অনেক সময় আমাদের ফাইল ফিল্টারের প্রয়োজন হয়। মনে করা যাক একটি ডিরেকটরীতে শুধুমাত্র png ফাইল গুলো আমাদের দরকার। সেক্ষেত্রে - +তবে অনেক সময় আমাদের ফাইল ফিল্টারের প্রয়োজন হয়। মনে করা যাক একটি ডিরেকটরীতে শুধুমাত্র png ফাইল গুলো আমাদের দরকার। সেক্ষেত্রে - ```java import java.io.File; import java.io.FileFilter; public class FileFileterExample { - public static void main(String[] args) { - File home = new File("/home/rokonoid/Pictures"); - - FileFilter pngFlter = new FileFilter() { - - @Override - public boolean accept(File pathname) { - String fileName = pathname.getName(); - if (fileName.endsWith(".png")) { - return true; - } - return false; - } - }; - - File[] listRoots = home.listFiles(pngFlter); - for (File file : listRoots) { - System.out.println(file.getPath()); - } - } + public static void main(String[] args) { + File home = new File("/home/rokonoid/Pictures"); + + FileFilter pngFlter = new FileFilter() { + + @Override + public boolean accept(File pathname) { + String fileName = pathname.getName(); + if (fileName.endsWith(".png")) { + return true; + } + return false; + } + }; + + File[] listRoots = home.listFiles(pngFlter); + for (File file : listRoots) { + System.out.println(file.getPath()); + } + } } ``` -উপরের উদাহরণটিতে FileFilter এর একটি anonymous ক্লাস লেখা হয়েছে যা কিনা listFiles() মেথডটি paremeter হিসেবে নিচ্ছে । এই ফিল্টারের accept() মেথডটিতে আমরা আমাদের ফিল্টার লজিকটুকু লেখা হয়েছে যাতে করে এটি শুধুামাত্র png ফাইল গুলো লিস্টিং করে। +উপরের উদাহরণটিতে FileFilter এর একটি anonymous ক্লাস লেখা হয়েছে যা কিনা listFiles\(\) মেথডটি paremeter হিসেবে নিচ্ছে । এই ফিল্টারের accept\(\) মেথডটিতে আমরা আমাদের ফিল্টার লজিকটুকু লেখা হয়েছে যাতে করে এটি শুধুামাত্র png ফাইল গুলো লিস্টিং করে। **ইনপুুট/আউটপুট স্ট্রিম** -স্ট্রিম এরে আক্ষরিক অর্থ হচ্ছে প্রবাহ । এর মানে হচ্ছে অনেকটা পানির ধারার মতো একটি উৎস থেকে অবিরাম ভাবে প্রবাহ হচ্ছে এমন কিন্তু আমরা ঠিক ভাবে উৎসে কতটুকু পানি আছে জানি না। অর্থাৎ কনসেপচুয়ালি একটি অবিরাম ডাটা প্রবাহ। আমরা এই প্রবাহ থেকে ডাটা পড়তে বা লিখতে পারি। যে কোন স্ট্রিম একটি উৎস বা গন্তব্যস্থলের সাথে সংযুক্ত। উৎস কে বলা হয় ডাটা সোর্স এবং গন্তব্যস্থলকে বলা হয় ডাটা সিংক। - +স্ট্রিম এরে আক্ষরিক অর্থ হচ্ছে প্রবাহ । এর মানে হচ্ছে অনেকটা পানির ধারার মতো একটি উৎস থেকে অবিরাম ভাবে প্রবাহ হচ্ছে এমন কিন্তু আমরা ঠিক ভাবে উৎসে কতটুকু পানি আছে জানি না। অর্থাৎ কনসেপচুয়ালি একটি অবিরাম ডাটা প্রবাহ। আমরা এই প্রবাহ থেকে ডাটা পড়তে বা লিখতে পারি। যে কোন স্ট্রিম একটি উৎস বা গন্তব্যস্থলের সাথে সংযুক্ত। উৎস কে বলা হয় ডাটা সোর্স এবং গন্তব্যস্থলকে বলা হয় ডাটা সিংক। -![](images/InputOutputStream.png) +![](.gitbook/assets/InputOutputStream.png) -**ইনপুট স্ট্রিম তৈরি ** +**ইনপুট স্ট্রিম তৈরি** -ছবিতে দেখা যাচ্ছে একটি সোর্স থেকে প্রবাহ আকারে ডাটা ফ্লো হচ্ছে জাভা প্রোগ্রামে। এবং জাভা প্রোগ্রামটি আরেকটি ডাটা ফ্লো তৈরি করছে যা গন্তব্যে পৌছাচ্ছে। -তাহলে একটি সোর্স থেকে ডাটা পড়তে হলে আমাদেরকে কয়েকটি ধাপে যেতে হয় - -১. প্রথমে একটি সোর্স নির্ধারণ করতে হবে। সোর্স একটি স্ট্রিং হতে পারে, কিংবা একটি ফাইল অথবা একটি নেটওয়ার্ক কানেকশান। -২. সোর্স এর উপর ভিত্তি করে একটি ইনপুট স্ট্রিম তৈরি করতে হবে। -৩. ইনপুট স্ট্রিম থেকে ডাটা পড়া। সাধারণত একটু লুপ এর মধ্যে ইনপুট স্ট্রিম এর `read()` মেথড কল করতে হয় , এবং লুপটি ততক্ষণ পর্যন্ত চলে যতক্ষণ পর্যন্ত ডাটা পড়া শেষ না হয়। +ছবিতে দেখা যাচ্ছে একটি সোর্স থেকে প্রবাহ আকারে ডাটা ফ্লো হচ্ছে জাভা প্রোগ্রামে। এবং জাভা প্রোগ্রামটি আরেকটি ডাটা ফ্লো তৈরি করছে যা গন্তব্যে পৌছাচ্ছে। তাহলে একটি সোর্স থেকে ডাটা পড়তে হলে আমাদেরকে কয়েকটি ধাপে যেতে হয় - ১. প্রথমে একটি সোর্স নির্ধারণ করতে হবে। সোর্স একটি স্ট্রিং হতে পারে, কিংবা একটি ফাইল অথবা একটি নেটওয়ার্ক কানেকশান। ২. সোর্স এর উপর ভিত্তি করে একটি ইনপুট স্ট্রিম তৈরি করতে হবে। ৩. ইনপুট স্ট্রিম থেকে ডাটা পড়া। সাধারণত একটু লুপ এর মধ্যে ইনপুট স্ট্রিম এর `read()` মেথড কল করতে হয় , এবং লুপটি ততক্ষণ পর্যন্ত চলে যতক্ষণ পর্যন্ত ডাটা পড়া শেষ না হয়। -**ইনপুট স্ট্রিম থেকে ডাটা পড়া ** +**ইনপুট স্ট্রিম থেকে ডাটা পড়া** -স্ট্রিম দুই প্রকার হতে পারে- -1. বাইট স্ট্রিম -2. ক্যারেকটার স্ট্রিম। -বাইট স্ট্রিম +স্ট্রিম দুই প্রকার হতে পারে- 1. বাইট স্ট্রিম 2. ক্যারেকটার স্ট্রিম। বাইট স্ট্রিম -বাইট ভিত্তিক আই/ও নিয়ে কাজ করার জন্যে বাইট স্ট্রিম-এ বেশ সমৃদ্ধ ক্লাস আছে। সাধারণত বাইট স্ট্রিম যে কোন টাইপ অবজেক্ট ( যেমন বাইনারী ডাটা) তে ব্যবহার করা যায়। সব বাইট স্ট্রিম এর ক্লাস গুলো `InputStream` এবং `OutputStream` এর সাব ক্লাস। যদিও আরও অনেক বাইট স্ট্রিম ক্লাস আছে, কিন্তু যেহেতু এই দুটি ক্লাস সবার উপরে, আমরা শুরুতেই এই দুটি ক্লাস নিয়েই কথা বলবো। +বাইট ভিত্তিক আই/ও নিয়ে কাজ করার জন্যে বাইট স্ট্রিম-এ বেশ সমৃদ্ধ ক্লাস আছে। সাধারণত বাইট স্ট্রিম যে কোন টাইপ অবজেক্ট \( যেমন বাইনারী ডাটা\) তে ব্যবহার করা যায়। সব বাইট স্ট্রিম এর ক্লাস গুলো `InputStream` এবং `OutputStream` এর সাব ক্লাস। যদিও আরও অনেক বাইট স্ট্রিম ক্লাস আছে, কিন্তু যেহেতু এই দুটি ক্লাস সবার উপরে, আমরা শুরুতেই এই দুটি ক্লাস নিয়েই কথা বলবো। -java.io.InputStream এটি একটি অ্যাবস্ট্রাক্ট ক্লাস এবং সকল ইনপুট স্ট্রিম এর সুপার ক্লাস। এতে তিনটি বেসিক মেথড আছে যা কিনা কিভাবে ডাটা স্ট্রিম থেকে পড়তে হয় তা নিয়ে ডিল করে। এছাড়াও স্ট্রিম ক্লোস করা, ফ্লাস করা, এবং কতগুলো বাইট আরও পড়তে হবে ইত্যাদি নিয়ে কিছু মেথড আছে। এগুলো নিয়ে একটি ডিটেইল ব্যাংখ্যা করা যাক। read() মেথড: +java.io.InputStream এটি একটি অ্যাবস্ট্রাক্ট ক্লাস এবং সকল ইনপুট স্ট্রিম এর সুপার ক্লাস। এতে তিনটি বেসিক মেথড আছে যা কিনা কিভাবে ডাটা স্ট্রিম থেকে পড়তে হয় তা নিয়ে ডিল করে। এছাড়াও স্ট্রিম ক্লোস করা, ফ্লাস করা, এবং কতগুলো বাইট আরও পড়তে হবে ইত্যাদি নিয়ে কিছু মেথড আছে। এগুলো নিয়ে একটি ডিটেইল ব্যাংখ্যা করা যাক। read\(\) মেথড: ```java public abstract int read() throws IOException - ``` -এই মেথডটি ১ বাইট unsigned ডাটা পড়ে এবং এর ইন্টিজার ভ্যালু রিটার্ন করে যা কি না ০ থেকে 255 এর মধ্যে । যদি কোন বাইট না পাওয়া যায় তাহলে এটি -‌1 রিটার্ন করে এবং এতে করে আমরা বুঝতে পারি স্ট্রিম এর ডাটা শেষ হয় গেছে। আমরা একটি উদহারণ দেখি। -যেহেতু ইনপুট স্ট্রিম একটি অ্যাবস্ট্রাক্ট ক্লাস এবং এর বেশ কিছু সাব ক্লাস আছে, উদাহরণ দেওয়ার সুবিধার্থে আমরা একটি ফাইল ইনপুট স্ট্রিম ব্যবহার করি যা কিনা কোন একটি লোকেশানে রাখা একটি টেক্সট ফাইল পড়তে পারবে । -প্রথমে আমরা একটি টেক্টট ফাইল তৈরি করে কোন একটি লোকেশানে রাখি। সাধারণত প্রজেক্ট এর একটি ফোল্টার তৈরি করে তাতেও রাখা যেতে পারে। -এর পর এই ফাইল এ যে কোন একটি স্ট্রিং লিখি। এখানে আমার ফাইল এর নাম input.txt এতে নিচের লাইটি লিখেছি - The quick brown fox jumps over the lazy dog. -এবার নিচের কোডটি রান করি। +এই মেথডটি ১ বাইট unsigned ডাটা পড়ে এবং এর ইন্টিজার ভ্যালু রিটার্ন করে যা কি না ০ থেকে 255 এর মধ্যে । যদি কোন বাইট না পাওয়া যায় তাহলে এটি -‌1 রিটার্ন করে এবং এতে করে আমরা বুঝতে পারি স্ট্রিম এর ডাটা শেষ হয় গেছে। আমরা একটি উদহারণ দেখি। যেহেতু ইনপুট স্ট্রিম একটি অ্যাবস্ট্রাক্ট ক্লাস এবং এর বেশ কিছু সাব ক্লাস আছে, উদাহরণ দেওয়ার সুবিধার্থে আমরা একটি ফাইল ইনপুট স্ট্রিম ব্যবহার করি যা কিনা কোন একটি লোকেশানে রাখা একটি টেক্সট ফাইল পড়তে পারবে । প্রথমে আমরা একটি টেক্টট ফাইল তৈরি করে কোন একটি লোকেশানে রাখি। সাধারণত প্রজেক্ট এর একটি ফোল্টার তৈরি করে তাতেও রাখা যেতে পারে। এর পর এই ফাইল এ যে কোন একটি স্ট্রিং লিখি। এখানে আমার ফাইল এর নাম input.txt এতে নিচের লাইটি লিখেছি - The quick brown fox jumps over the lazy dog. এবার নিচের কোডটি রান করি। -```java +```java import java.io.FileInputStream; import java.io.IOException; public class InputStreamExample { - public static void main(String[] args) { - FileInputStream in = null; - try { - in = new FileInputStream("input.txt"); - int c; - - while ((c = in.read()) != -1) { - System.out.print(c + ","); - } - } catch (IOException e) { - System.err.println("Could not read file"); - } finally { - if (in != null) { - try { - in.close(); - } catch (IOException e1) { - System.err.println("Could close input stream"); - } - } - } - } + public static void main(String[] args) { + FileInputStream in = null; + try { + in = new FileInputStream("input.txt"); + int c; + + while ((c = in.read()) != -1) { + System.out.print(c + ","); + } + } catch (IOException e) { + System.err.println("Could not read file"); + } finally { + if (in != null) { + try { + in.close(); + } catch (IOException e1) { + System.err.println("Could close input stream"); + } + } + } + } } ``` -এখানে শুরুতে একটি `FileInputStream` ক্লাস এর ইনস্টেন্স ক্রিয়েট করো হয়েছে। যেহেতু `InputStream` একটি abstract ক্লাস, এবং আমাদের ডাটা সোর্স একটি ফাইল, সুতরাং কংক্রিট ক্লাস হিসেবে `FileInputStream` ব্যবহার করা হয়েছে। এতে আর্গুমেন্ট হিসেবে আমাদের টেক্সট ফাইলটির লোকেশান দেয়া হয়েছে। এখানে এটি রিলেটিভ পাথ। আমাদের ওয়ার্কিং ডিরেকটরী হচ্ছে প্রজেক্ট ডিরেকটরী, যেহেতু ফাইলটি প্রজেক্ট ডিরেক্টরীতেই রাখা আছে। যদি ফাইলটি অন্য ডিরেকটরীতে থাকে সেক্ষেত্রে absolute পাথ দিতে হবে। +এখানে শুরুতে একটি `FileInputStream` ক্লাস এর ইনস্টেন্স ক্রিয়েট করো হয়েছে। যেহেতু `InputStream` একটি abstract ক্লাস, এবং আমাদের ডাটা সোর্স একটি ফাইল, সুতরাং কংক্রিট ক্লাস হিসেবে `FileInputStream` ব্যবহার করা হয়েছে। এতে আর্গুমেন্ট হিসেবে আমাদের টেক্সট ফাইলটির লোকেশান দেয়া হয়েছে। এখানে এটি রিলেটিভ পাথ। আমাদের ওয়ার্কিং ডিরেকটরী হচ্ছে প্রজেক্ট ডিরেকটরী, যেহেতু ফাইলটি প্রজেক্ট ডিরেক্টরীতেই রাখা আছে। যদি ফাইলটি অন্য ডিরেকটরীতে থাকে সেক্ষেত্রে absolute পাথ দিতে হবে। -তারপর একটা int c ডিক্লেয়ার করা হয়েছে । এরপর একটি হুয়াইল লুপ রয়েছে। এতে প্রতিবার একটি করে বাইট রিড করে c তে এসাইন করা হচ্ছে এবং তা প্রিন্ট আউট করা হচ্চে। এই লুপটি ততক্ষণ পর্যন্ত চলবে যতক্ষণ পর্যন্ত read() মেথডটি -1 রিটার্ন না করে। ফাইল টি পড়া শেষ হয়ে গেলে এটি -1 রিটার্ন করবে। কোডটি একটি ট্রাই ক্যাচ ব্লক এর মধ্যে কারণ আমার জানি যে আই/ও আছে খুব লো-লেভেল থেকে কাজ করে । এর মাঝে কোন একটি সমস্য হতেই পারে এবং তা হলে JVM IOException থ্রু করবে এবং তা যাতে আমরা হ্যান্ডেল করতে পারি। এছাড়াও একটি ফাইনালি ব্লক আছে যেখানে আমরা স্ট্রিমটি বন্ধ করেছি। আমাদের খেয়াল রাখতে হবে যে, যখনি একটি স্ট্রিম এর কাজ শেষ হয়ে যাবে তখনি তা বন্ধ করে দিতে হবে। এটি অনেকটা আমাদের ওয়াশরুমের পানির টেপ এর মতো। কাজ শেষ হলে আমরা অফ করে দিই যাতে করে রিসোর্স নষ্ট না হয়। +তারপর একটা int c ডিক্লেয়ার করা হয়েছে । এরপর একটি হুয়াইল লুপ রয়েছে। এতে প্রতিবার একটি করে বাইট রিড করে c তে এসাইন করা হচ্ছে এবং তা প্রিন্ট আউট করা হচ্চে। এই লুপটি ততক্ষণ পর্যন্ত চলবে যতক্ষণ পর্যন্ত read\(\) মেথডটি -1 রিটার্ন না করে। ফাইল টি পড়া শেষ হয়ে গেলে এটি -1 রিটার্ন করবে। কোডটি একটি ট্রাই ক্যাচ ব্লক এর মধ্যে কারণ আমার জানি যে আই/ও আছে খুব লো-লেভেল থেকে কাজ করে । এর মাঝে কোন একটি সমস্য হতেই পারে এবং তা হলে JVM IOException থ্রু করবে এবং তা যাতে আমরা হ্যান্ডেল করতে পারি। এছাড়াও একটি ফাইনালি ব্লক আছে যেখানে আমরা স্ট্রিমটি বন্ধ করেছি। আমাদের খেয়াল রাখতে হবে যে, যখনি একটি স্ট্রিম এর কাজ শেষ হয়ে যাবে তখনি তা বন্ধ করে দিতে হবে। এটি অনেকটা আমাদের ওয়াশরুমের পানির টেপ এর মতো। কাজ শেষ হলে আমরা অফ করে দিই যাতে করে রিসোর্স নষ্ট না হয়। -এখন উপরের কোডটি যদি রান করি তাহলে কনসোলে আমরা নিচের আউটপুটটি দেখতে পাবো- -84,104,101,32,113,117,105,99,107,32,98,114,111,119,110,32,102,111,120,32,106,117,109,112,115,32,111,118,101,114,32,116,104,101,32,108,97,122,121,32,100,111,103,46, +এখন উপরের কোডটি যদি রান করি তাহলে কনসোলে আমরা নিচের আউটপুটটি দেখতে পাবো- 84,104,101,32,113,117,105,99,107,32,98,114,111,119,110,32,102,111,120,32,106,117,109,112,115,32,111,118,101,114,32,116,104,101,32,108,97,122,121,32,100,111,103,46, -এর কারণ হচ্ছে read() মেথডটি এক সাথে একটি বাইট পড়ে এবং এর ইন্টিজার রিপ্রেজেন্টেশান রিটার্ন করে। আমরা যদি একে ঠিক আমাদের input.txt এর স্ট্রিং এর মতো করে প্রিণ্ট করতে চাই তাহলে ইন্টিজারকে ক্যারেকটার এ কাস্ট করতে হবে। -System.out.print((char)c); +এর কারণ হচ্ছে read\(\) মেথডটি এক সাথে একটি বাইট পড়ে এবং এর ইন্টিজার রিপ্রেজেন্টেশান রিটার্ন করে। আমরা যদি একে ঠিক আমাদের input.txt এর স্ট্রিং এর মতো করে প্রিণ্ট করতে চাই তাহলে ইন্টিজারকে ক্যারেকটার এ কাস্ট করতে হবে। System.out.print\(\(char\)c\); **আউটপুট স্ট্রিম তৈরি** -ছবিতে দেখা যাচ্ছে যে জাভা প্রোগ্রামটি একটি আউটপুট স্ট্রিম ব্যবহার করে একটি ডাটা সিংক ডাটা ট্রান্সফার করছে। -আউটপুট স্ট্রিমএর মাধ্যমে প্রোগ্রাম থেকে ডাটা ডাটা সিংকে পাঠাতে হলে কয়েকটি ধাপ-এ যেতে হয়- -১. প্রথমে একটি ডাটা সিংক নির্ধারণ করতে হবে। এটি একটি ফাইল হতে পারে, কিংবা একটি স্ট্রিং অবজেক্ট বা নেটওয়ার্ক কানেকশান। -২. ডাটা সিংক ব্যবহার করে একটি আউটপুট স্ট্রিম অবজেক্ট তৈরি করতে হবে। -৩. এরপর আউটপুট স্ট্রিমটি ফ্লাস করতে হবে। -৪. এবং সবশেষে আউটপুট স্ট্রিমটি ক্লোজ করে দিতে হবে। +ছবিতে দেখা যাচ্ছে যে জাভা প্রোগ্রামটি একটি আউটপুট স্ট্রিম ব্যবহার করে একটি ডাটা সিংক ডাটা ট্রান্সফার করছে। আউটপুট স্ট্রিমএর মাধ্যমে প্রোগ্রাম থেকে ডাটা ডাটা সিংকে পাঠাতে হলে কয়েকটি ধাপ-এ যেতে হয়- ১. প্রথমে একটি ডাটা সিংক নির্ধারণ করতে হবে। এটি একটি ফাইল হতে পারে, কিংবা একটি স্ট্রিং অবজেক্ট বা নেটওয়ার্ক কানেকশান। ২. ডাটা সিংক ব্যবহার করে একটি আউটপুট স্ট্রিম অবজেক্ট তৈরি করতে হবে। ৩. এরপর আউটপুট স্ট্রিমটি ফ্লাস করতে হবে। ৪. এবং সবশেষে আউটপুট স্ট্রিমটি ক্লোজ করে দিতে হবে। -**আউটপুট স্ট্রিমে ডাটা রাইট করা ** +**আউটপুট স্ট্রিমে ডাটা রাইট করা** -এবার আমরা চেষ্টা করবো ডাটা কিভাবে ডাটা সিংকে রাইট করা যায় । এক্ষেত্রে ডাটা সিংক হিসেবে একটি ফাইল নিতে পারি। আউটপুট স্ট্রিম হিসেবে নিতে পারি FileOutputStream. OutputStream এর একটি একটি মেথড হচ্ছে write() যা দিয়ে আমরা ডাটা ফাইল এ রাইট করতে পারি। write() মেথড এর কগুলো অভারলোডিং আছে । এর যেকোন একটা ব্যবহার করতে পারি। -একটি স্ট্রিং অবজেক্ট থেকে আমরা সহজেই ডাটা বাইট আকারে একটি অ্যারেতে রাখতে পারি। +এবার আমরা চেষ্টা করবো ডাটা কিভাবে ডাটা সিংকে রাইট করা যায় । এক্ষেত্রে ডাটা সিংক হিসেবে একটি ফাইল নিতে পারি। আউটপুট স্ট্রিম হিসেবে নিতে পারি FileOutputStream. OutputStream এর একটি একটি মেথড হচ্ছে write\(\) যা দিয়ে আমরা ডাটা ফাইল এ রাইট করতে পারি। write\(\) মেথড এর কগুলো অভারলোডিং আছে । এর যেকোন একটা ব্যবহার করতে পারি। একটি স্ট্রিং অবজেক্ট থেকে আমরা সহজেই ডাটা বাইট আকারে একটি অ্যারেতে রাখতে পারি। ```java String text = "Hello"; -byte[] textBytes = text.getBytes(); +byte[] textBytes = text.getBytes(); ``` -এরপর এই বাইট অ্যারেকে আউটপুট স্ট্রিম এর আরইট মেথডে আর্গুমেন্ট হিসেবে পাস করতে পারি। -উদাহরণ- +এরপর এই বাইট অ্যারেকে আউটপুট স্ট্রিম এর আরইট মেথডে আর্গুমেন্ট হিসেবে পাস করতে পারি। উদাহরণ- ```java import java.io.FileOutputStream; @@ -378,23 +343,21 @@ public class OutputStreamExample { e.printStackTrace(); } } -} +} ``` -এরপর আউটপুট স্ট্রিমটিকে ফ্লাস করতে হয় flush() মেথড ব্যবহার করে। আমাদের উদ্দেশ্য হচ্ছে ডাটা সিংকে ডাটা রাইট করা। এক্ষেত্রে আমরা FileOutputStream এ ডাটা রাইট করছি যা কিনা একটি ফাইল এর অ্যাবস্ট্রাকশন। আউটপুট স্ট্রিম বাইট গুলোকে আপারেটিং সিস্টেম কে দেয় যে কিনা আসলে বাইট গুলো ফাইল এ রাইট করার জন্যে রেসপনসিবল। অপারেটিং সিস্টেম আসলে নির্ধারণ করে কখন বাইট গুলো ফাইল এ রাইট করবে কিন্তু আমাদের আগে সবগুলো বাইট অপারেটিং সিস্টেমকে দিতে হবে। আউটপুট স্ট্রিম এর যেহেতু অ্যাবস্ট্রাক্ট ক্লাস এবং এর অনেক গুলো কনক্রিট আছে, এদের কোন কোন ক্লাস নিজের মাঝে বাইট গুলোর বাফার রেখে দিতে পারে। সেক্ষেত্রে flush() মেথডটি বাফার ক্লিয়ার করে দেবে। +এরপর আউটপুট স্ট্রিমটিকে ফ্লাস করতে হয় flush\(\) মেথড ব্যবহার করে। আমাদের উদ্দেশ্য হচ্ছে ডাটা সিংকে ডাটা রাইট করা। এক্ষেত্রে আমরা FileOutputStream এ ডাটা রাইট করছি যা কিনা একটি ফাইল এর অ্যাবস্ট্রাকশন। আউটপুট স্ট্রিম বাইট গুলোকে আপারেটিং সিস্টেম কে দেয় যে কিনা আসলে বাইট গুলো ফাইল এ রাইট করার জন্যে রেসপনসিবল। অপারেটিং সিস্টেম আসলে নির্ধারণ করে কখন বাইট গুলো ফাইল এ রাইট করবে কিন্তু আমাদের আগে সবগুলো বাইট অপারেটিং সিস্টেমকে দিতে হবে। আউটপুট স্ট্রিম এর যেহেতু অ্যাবস্ট্রাক্ট ক্লাস এবং এর অনেক গুলো কনক্রিট আছে, এদের কোন কোন ক্লাস নিজের মাঝে বাইট গুলোর বাফার রেখে দিতে পারে। সেক্ষেত্রে flush\(\) মেথডটি বাফার ক্লিয়ার করে দেবে। -এবং কাজ শেষে আউটপুট স্ট্রিম টিকে ক্লোজ করে দিতে হবে। -আউটপুট স্ট্রিম এর আরও বেশ কিছু সাব ক্লাস হলো - +এবং কাজ শেষে আউটপুট স্ট্রিম টিকে ক্লোজ করে দিতে হবে। আউটপুট স্ট্রিম এর আরও বেশ কিছু সাব ক্লাস হলো - **ক্যারেকটার স্ট্রিম** -ক্যারেক্টার স্ট্রিম গুলো বাইট স্ট্রিম এর মতোই কাজ করে, তবে পার্থক্য শুধু এইটকুই যে এরা ক্যারেকটার নিয়ে কাজ করে। অর্থাৎ এগুলোকে শুধুামাত্র টেক্সট রিড এবং রাইট করার জন্যে লেখা হয়েছে। InputStream এবং OutputStream এর মতো এখানেও দুটি সুপার ক্লাস রয়েছে, যেগুলো হলো - Reader এবং Writer. +ক্যারেক্টার স্ট্রিম গুলো বাইট স্ট্রিম এর মতোই কাজ করে, তবে পার্থক্য শুধু এইটকুই যে এরা ক্যারেকটার নিয়ে কাজ করে। অর্থাৎ এগুলোকে শুধুামাত্র টেক্সট রিড এবং রাইট করার জন্যে লেখা হয়েছে। InputStream এবং OutputStream এর মতো এখানেও দুটি সুপার ক্লাস রয়েছে, যেগুলো হলো - Reader এবং Writer. -ক্যারেক্টার স্ট্রিম সঠিক ভাবে বুঝতে হলে আমাদের আগে জানতে হবে ক্যারেক্টার ইনকোডিং সম্পর্কে। আমরা জানি যে কম্পিউটার মূলত র (raw ) জিরো-ওয়ান নিয়ে কাজ করে। কিন্তু আমরা যখন কোন টেক্সট দেখি তা কিন্তু মোটেও জিরো-ওয়ান বাইনারী ডিজিট নয়, বরং রিয়েল ক্যারেকটার গুলোই দেখি। এই জিরো-ওয়ান বাইনারী ডাটা গুলোকে ইন্টারপ্রেট করার জন্যে এক ধরণের ম্যাপিং থাকে যাকে বলা হয় ক্যারেকটার ইনকোডিং। অনেক ধরণের ক্যারেকটার ইনকোডিং থাকলেও সাধারণত ASCII ও ইউনিকোড-বেইজড ইনকোডিং গুলো নিয়ে আমাদের সমচেয়ে বেশি কাজ করতে হয়। ASCII বা আস্কি - American Standard Code for Information Interchange এর সংক্ষিপ্ত রূপ। এটি একটি ক্যারেকটার ইনকোডিং পদ্ধতি যা ইংরেজী বর্ণ মালা গুলোকে নাম্বারের মাধ্যমে রিপ্রেজন্ট করে। প্রতিটি ইংরেজী বর্ণকে একটি করে নাম্বার (০-১২৭) দেওয়া হয়। এই ইনকোডিং পদ্ধতিতে মাত্র এক বাইট এর দরকার হয়। আস্কি দিয়ে শুধুমাত্র ইংরেজী টেক্সট নিয়ে কাজ করা গেলেও পৃথিবীতে অসংখ্য ভাষা এবং বর্ণমালা রয়েছে। পৃথিবীর সব আধুনিক বর্ণমালা এবং ঐতিহাসিক দলিল গুলো নিয়ে কাজ করার জন্য একটি নতুন পদ্ধতি উদ্ভাবন করা হয়, যার নাম ইউনিকোড। এই ইউনিকোড ইমপ্লিমেন্ট করার জন্যে অনেকগুলো ক্যারেকটার ইনকোডিং স্কিম বা পদ্ধতি রয়েছে, তবে সাধাণত UTF-8, UTF-16 বেশি ব্যবহৃত হয়। UTF-8 ইনকোডিং সিস্টেম এ একটি ক্যারেকটার ১ থেকে ৪ বাইট হতে পারে এবং এটি ওয়েব পেইজ বা ইমেইল ব্যবহৃত হয়। UTF-16 এর ক্ষত্রে তা দই বা ততোধিক বাইট হতে পারে। +ক্যারেক্টার স্ট্রিম সঠিক ভাবে বুঝতে হলে আমাদের আগে জানতে হবে ক্যারেক্টার ইনকোডিং সম্পর্কে। আমরা জানি যে কম্পিউটার মূলত র \(raw \) জিরো-ওয়ান নিয়ে কাজ করে। কিন্তু আমরা যখন কোন টেক্সট দেখি তা কিন্তু মোটেও জিরো-ওয়ান বাইনারী ডিজিট নয়, বরং রিয়েল ক্যারেকটার গুলোই দেখি। এই জিরো-ওয়ান বাইনারী ডাটা গুলোকে ইন্টারপ্রেট করার জন্যে এক ধরণের ম্যাপিং থাকে যাকে বলা হয় ক্যারেকটার ইনকোডিং। অনেক ধরণের ক্যারেকটার ইনকোডিং থাকলেও সাধারণত ASCII ও ইউনিকোড-বেইজড ইনকোডিং গুলো নিয়ে আমাদের সমচেয়ে বেশি কাজ করতে হয়। ASCII বা আস্কি - American Standard Code for Information Interchange এর সংক্ষিপ্ত রূপ। এটি একটি ক্যারেকটার ইনকোডিং পদ্ধতি যা ইংরেজী বর্ণ মালা গুলোকে নাম্বারের মাধ্যমে রিপ্রেজন্ট করে। প্রতিটি ইংরেজী বর্ণকে একটি করে নাম্বার \(০-১২৭\) দেওয়া হয়। এই ইনকোডিং পদ্ধতিতে মাত্র এক বাইট এর দরকার হয়। আস্কি দিয়ে শুধুমাত্র ইংরেজী টেক্সট নিয়ে কাজ করা গেলেও পৃথিবীতে অসংখ্য ভাষা এবং বর্ণমালা রয়েছে। পৃথিবীর সব আধুনিক বর্ণমালা এবং ঐতিহাসিক দলিল গুলো নিয়ে কাজ করার জন্য একটি নতুন পদ্ধতি উদ্ভাবন করা হয়, যার নাম ইউনিকোড। এই ইউনিকোড ইমপ্লিমেন্ট করার জন্যে অনেকগুলো ক্যারেকটার ইনকোডিং স্কিম বা পদ্ধতি রয়েছে, তবে সাধাণত UTF-8, UTF-16 বেশি ব্যবহৃত হয়। UTF-8 ইনকোডিং সিস্টেম এ একটি ক্যারেকটার ১ থেকে ৪ বাইট হতে পারে এবং এটি ওয়েব পেইজ বা ইমেইল ব্যবহৃত হয়। UTF-16 এর ক্ষত্রে তা দই বা ততোধিক বাইট হতে পারে। -অনেক সফটওয়্যার সিস্টেমই UTF ইনকোডিং স্কিম ব্যবহার করে টেক্সট স্টোর করে থাকে। যেহেতু এগুলো একটি ক্যারেকটার রিপ্রেজেন্ট করতে হলে ১ বা একাধিক বাইট দরকার হয়, সেহেতু এগুলো পড়ার সময় যদি আমরা ইনপুটস্ট্রিম ব্যবহার করে একবাইট করে পড়ি, এবং তা char এ কনভার্ট করি, তাহলে আমরা অনেক সময়ই সঠিক ভাবে ডাটা রিড করতে পারবো না। এই সসস্যা দূর করার জন্যে এবং সঠিক ভাবে টেক্সট রিড বা রাইট করার জন্যে Reader/Writer ক্লাস লেখা হয়েছে যা শুধুমাত্র টেক্সট নিয়ে কাজ করে। -মনে রাখতে হবে যে, InputStream এর read() মেথড প্রত্যেকবার এক বাইট করে রিটার্ন করে আর Reader ক্লাসের read() মেথড প্রতিবার একটি করে ক্যারেকটার রিটার্ন করে। একটি বাইট এর ভ্যালু ১-২৫৫ পর্যন্ত হতে পারে যেখানে একটি ক্যারেক্টার এর ভ্যালু ০ -৬৫৫৩৫ হতে পারে। তাহলে আমরা সহজ ভাবে বলতে পারি, ইনপুট স্ট্রিম/আউটপুট স্ট্রিম র-বাইনারী ডাটা নিয়ে কাজ করে আর রিডার/রাইটার শুধুমাত্র টেক্সট নিয়ে কাজ করে। -এই পার্থক্য ছাড়া ক্যারেক্টার স্ট্রিম নিয়ে কাজ করার সব স্টেপস গুলো ইনপুট/আউটপুট স্ট্রিম এর স্টেপস এর মতো। +অনেক সফটওয়্যার সিস্টেমই UTF ইনকোডিং স্কিম ব্যবহার করে টেক্সট স্টোর করে থাকে। যেহেতু এগুলো একটি ক্যারেকটার রিপ্রেজেন্ট করতে হলে ১ বা একাধিক বাইট দরকার হয়, সেহেতু এগুলো পড়ার সময় যদি আমরা ইনপুটস্ট্রিম ব্যবহার করে একবাইট করে পড়ি, এবং তা char এ কনভার্ট করি, তাহলে আমরা অনেক সময়ই সঠিক ভাবে ডাটা রিড করতে পারবো না। এই সসস্যা দূর করার জন্যে এবং সঠিক ভাবে টেক্সট রিড বা রাইট করার জন্যে Reader/Writer ক্লাস লেখা হয়েছে যা শুধুমাত্র টেক্সট নিয়ে কাজ করে। মনে রাখতে হবে যে, InputStream এর read\(\) মেথড প্রত্যেকবার এক বাইট করে রিটার্ন করে আর Reader ক্লাসের read\(\) মেথড প্রতিবার একটি করে ক্যারেকটার রিটার্ন করে। একটি বাইট এর ভ্যালু ১-২৫৫ পর্যন্ত হতে পারে যেখানে একটি ক্যারেক্টার এর ভ্যালু ০ -৬৫৫৩৫ হতে পারে। তাহলে আমরা সহজ ভাবে বলতে পারি, ইনপুট স্ট্রিম/আউটপুট স্ট্রিম র-বাইনারী ডাটা নিয়ে কাজ করে আর রিডার/রাইটার শুধুমাত্র টেক্সট নিয়ে কাজ করে। +এই পার্থক্য ছাড়া ক্যারেক্টার স্ট্রিম নিয়ে কাজ করার সব স্টেপস গুলো ইনপুট/আউটপুট স্ট্রিম এর স্টেপস এর মতো। **Read using Reader** @@ -404,33 +367,33 @@ import java.io.IOException; import java.io.Reader; public class ReaderExample { - public static void main(String[] args) { - Reader reader = null; - try { - reader = new FileReader("input.txt"); - int c; - while ((c = reader.read()) != -1) { - char ch = (char) c; - System.out.print(ch); - } - } catch (IOException e) { - e.printStackTrace(); - }finally{ - try { - if (reader!=null) { - reader.close(); - } - } catch (IOException e) { - e.printStackTrace(); - } - } - } + public static void main(String[] args) { + Reader reader = null; + try { + reader = new FileReader("input.txt"); + int c; + while ((c = reader.read()) != -1) { + char ch = (char) c; + System.out.print(ch); + } + } catch (IOException e) { + e.printStackTrace(); + }finally{ + try { + if (reader!=null) { + reader.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } } ``` -এতেও ইনপুট স্ট্রিম এর একটা করে বাইট রিড করতে হয় একটি লুপ এর মাঝে। +এতেও ইনপুট স্ট্রিম এর একটা করে বাইট রিড করতে হয় একটি লুপ এর মাঝে। -**Write using Writer ** +**Write using Writer** ```java import java.io.FileWriter; @@ -438,21 +401,21 @@ import java.io.IOException; import java.io.Writer; public class WriterExample { - public static void main(String[] args) { - Writer writer; - String text = "Lorem ipsum dolor sit amet," - + " consectetur adipiscing elit. " - + "Suspendisse at placerat ipsum. "; - - try { - writer = new FileWriter("output2.txt"); - writer.write(text); - writer.flush(); - writer.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } + public static void main(String[] args) { + Writer writer; + String text = "Lorem ipsum dolor sit amet," + + " consectetur adipiscing elit. " + + "Suspendisse at placerat ipsum. "; + + try { + writer = new FileWriter("output2.txt"); + writer.write(text); + writer.flush(); + writer.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } ```java @@ -467,23 +430,22 @@ System.in একটি ইনপুট স্ট্রিম যা কিনা ```java Scanner scanner = new Scanner(System.in); - + int a = scanner.nextInt(); double d = scanner.nextDouble(); -``` - -স্ক্যানার একটি ইউটিলিটি ক্লাস, যার সাহায্যে সহজেই আমরা কিবোর্ড থেকে ইন্টিজার বা ডাবল টাইপ ইনপুট নিতে পারি। স্ক্যানার কনস্ট্রাকর আর্গুমেন্ট হিসেবে একটি ইনপুট স্ট্রিম নেয়। এক্ষেত্রে আমরা System.in টি দিতে পারি যাতে করে এটি সরাসরি কিবোর্ড থেকে ডাটা পড়তে পারে। +``` -`System.out` হচ্ছে `System` ক্লাসের একটি স্যাটিক মেম্বার যা কিনা একটি প্রিন্টস্ট্রিম(`PrintStream`) । এটি যেকোন ডাটা কনসোল এ রাইট করে। এটিও একটি আউটপুট স্ট্রিম তবে এটি ডাটা ফরমেট করে দেখাতে সাহায্য করে। যেমন আমরা যখন কনসোল এ প্রিমিটিভ ডাটা প্রিন্ট করি, প্রিন্ট স্ট্রিম তাদের ফরমেটেড ডাটা গুলো প্রিন্ট করে, এদের বাইট ভ্যালু প্রিন্ট না করে। +স্ক্যানার একটি ইউটিলিটি ক্লাস, যার সাহায্যে সহজেই আমরা কিবোর্ড থেকে ইন্টিজার বা ডাবল টাইপ ইনপুট নিতে পারি। স্ক্যানার কনস্ট্রাকর আর্গুমেন্ট হিসেবে একটি ইনপুট স্ট্রিম নেয়। এক্ষেত্রে আমরা System.in টি দিতে পারি যাতে করে এটি সরাসরি কিবোর্ড থেকে ডাটা পড়তে পারে। -`System.err` ও একটি আউটপুট স্ট্রিম যা কিনা `System.out` স্ট্রিম এর মতোই কাজ করে , তবে এটি শুধুমাত্র ইরর প্রিন্ট করার জন্যে ব্যবহার করা হয়। কিছু কিছু আইডিই এই ইরর টেক্সট গুলো লাল রং-এ প্রিন্ট করে থাকে। +`System.out` হচ্ছে `System` ক্লাসের একটি স্যাটিক মেম্বার যা কিনা একটি প্রিন্টস্ট্রিম\(`PrintStream`\) । এটি যেকোন ডাটা কনসোল এ রাইট করে। এটিও একটি আউটপুট স্ট্রিম তবে এটি ডাটা ফরমেট করে দেখাতে সাহায্য করে। যেমন আমরা যখন কনসোল এ প্রিমিটিভ ডাটা প্রিন্ট করি, প্রিন্ট স্ট্রিম তাদের ফরমেটেড ডাটা গুলো প্রিন্ট করে, এদের বাইট ভ্যালু প্রিন্ট না করে। -**রিডিং/রাইটিং প্রিমিটিভ ডাটা -** +`System.err` ও একটি আউটপুট স্ট্রিম যা কিনা `System.out` স্ট্রিম এর মতোই কাজ করে , তবে এটি শুধুমাত্র ইরর প্রিন্ট করার জন্যে ব্যবহার করা হয়। কিছু কিছু আইডিই এই ইরর টেক্সট গুলো লাল রং-এ প্রিন্ট করে থাকে। -`DataInputStream` এবং `DataOutputStream` ক্লাস দুটি প্রিমিটিভ টাইপ ডাটা কাজ করার জন্যে ব্যবহার করা হয়। এতে বেশ কিছু `readxxx()` এবং `writexxx()` মেথড রয়েছে যে গুলো ব্যবহার করে যেকোন ধরণের প্রমিটিভ ডাটা আমরা রিড/রাইট করতে পারি। +**রিডিং/রাইটিং প্রিমিটিভ ডাটা** -উদাহরণ- +`DataInputStream` এবং `DataOutputStream` ক্লাস দুটি প্রিমিটিভ টাইপ ডাটা কাজ করার জন্যে ব্যবহার করা হয়। এতে বেশ কিছু `readxxx()` এবং `writexxx()` মেথড রয়েছে যে গুলো ব্যবহার করে যেকোন ধরণের প্রমিটিভ ডাটা আমরা রিড/রাইট করতে পারি। + +উদাহরণ- ```java import java.io.DataOutputStream; @@ -491,26 +453,26 @@ import java.io.FileOutputStream; import java.io.IOException; public class WritingPrimitivesExample { - public static void main(String[] args) { - String destFileName = "primitivs.data"; - - try { - DataOutputStream dos = new DataOutputStream(new FileOutputStream(destFileName)); - dos.writeInt(152); - dos.writeDouble(4.56); - dos.writeBoolean(true); - dos.writeLong(Long.MAX_VALUE); - - dos.flush(); - dos.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } + public static void main(String[] args) { + String destFileName = "primitivs.data"; + + try { + DataOutputStream dos = new DataOutputStream(new FileOutputStream(destFileName)); + dos.writeInt(152); + dos.writeDouble(4.56); + dos.writeBoolean(true); + dos.writeLong(Long.MAX_VALUE); + + dos.flush(); + dos.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } } ``` -উদাহরণটিতে `DataOutputStream` কনস্ট্রাকট আর্গুমেন্ট হিসেবে একটি আউটপুটস্ট্রিম নেয়,এখানে যেহেতু আমরা ফাইল এ রাইট করছি,সে জন্যে `FileOutputStream` ব্যবহার করা হয়েছে। +উদাহরণটিতে `DataOutputStream` কনস্ট্রাকট আর্গুমেন্ট হিসেবে একটি আউটপুটস্ট্রিম নেয়,এখানে যেহেতু আমরা ফাইল এ রাইট করছি,সে জন্যে `FileOutputStream` ব্যবহার করা হয়েছে। ```java import java.io.DataInputStream; @@ -519,27 +481,28 @@ import java.io.IOException; public class ReadingPrimitivesExample { - public static void main(String[] args) { - String sourceFile = "primitivs.data"; + public static void main(String[] args) { + String sourceFile = "primitivs.data"; - try { - DataInputStream dis = new DataInputStream(new FileInputStream(sourceFile)); + try { + DataInputStream dis = new DataInputStream(new FileInputStream(sourceFile)); - int intValue = dis.readInt(); - double doubleValue = dis.readDouble(); - boolean booleanValue = dis.readBoolean(); - long longValue = dis.readLong(); + int intValue = dis.readInt(); + double doubleValue = dis.readDouble(); + boolean booleanValue = dis.readBoolean(); + long longValue = dis.readLong(); - System.out.println(intValue); - System.out.println(doubleValue); - System.out.println(booleanValue); - System.out.println(longValue); + System.out.println(intValue); + System.out.println(doubleValue); + System.out.println(booleanValue); + System.out.println(longValue); - } catch (IOException e) { - e.printStackTrace(); - } - } + } catch (IOException e) { + e.printStackTrace(); + } + } } ``` -উদাহরণটিতে `DataInputStream` কনস্ট্রাকটর আর্গুমেন্ট হিসেবে একটি ইনপুটস্ট্রিম নেয়। যেহেতু আমরা ফাইল থেকে রিড করছি, সেহেতু ইনপুটস্ট্রিম হিসেবে `FileInputStream` ব্যবহার করা হয়েছে। +উদাহরণটিতে `DataInputStream` কনস্ট্রাকটর আর্গুমেন্ট হিসেবে একটি ইনপুটস্ট্রিম নেয়। যেহেতু আমরা ফাইল থেকে রিড করছি, সেহেতু ইনপুটস্ট্রিম হিসেবে `FileInputStream` ব্যবহার করা হয়েছে। + diff --git a/README.md b/README.md index 4fdcf57..c58ed8b 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,27 @@ -**প্রধান লেখক ও সমন্বয়ক** -[বজলুর রহমান](http://bazlur.com/) +# পরিচিতি -**অন্যান্য লেখক ও কন্ট্রিবিউটরদের তালিকা** -[বিস্তারিত এখানে](https://github.com/howtocode-dev/java.howtocode.dev/graphs/contributors?type=a) +**প্রধান লেখক ও সমন্বয়ক** +[বজলুর রহমান](http://bazlur.com/) +**অন্যান্য লেখক ও কন্ট্রিবিউটরদের তালিকা** +[বিস্তারিত এখানে](https://github.com/howtocode-dev/java.howtocode.dev/graphs/contributors?type=a) -**কোর্সের বর্ণনা:** জাভা বর্তমানে বহুল ব্যবহৃত একটি প্রোগ্রামিং ল্যাংগুয়েজ। এন্টারপ্রাইজ এপ্লিক্যাশান ডেভেলেপমেন্টে এখনো জাভার বিকল্প তৈরি হয়নি বলে ধরা হয়। জাভার জনপ্রিয়তার মুল কারণ এর portability, নিরাপত্তা, এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও ওয়েব প্রোগ্রামিং এর পরিপূর্ণ সাপোর্ট। এই কোর্সে জাভার অ আ ক খ থেকে শুরু করে এর ব্যবহারিক প্রয়োগ এবং অন্যন্য বিষয় গুলো নিয়ে আলোচনা করা হবে। +**কোর্সের বর্ণনা:** জাভা বর্তমানে বহুল ব্যবহৃত একটি প্রোগ্রামিং ল্যাংগুয়েজ। এন্টারপ্রাইজ এপ্লিক্যাশান ডেভেলেপমেন্টে এখনো জাভার বিকল্প তৈরি হয়নি বলে ধরা হয়। জাভার জনপ্রিয়তার মুল কারণ এর portability, নিরাপত্তা, এবং অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ও ওয়েব প্রোগ্রামিং এর পরিপূর্ণ সাপোর্ট। এই কোর্সে জাভার অ আ ক খ থেকে শুরু করে এর ব্যবহারিক প্রয়োগ এবং অন্যন্য বিষয় গুলো নিয়ে আলোচনা করা হবে। -**কাদের জন্যে কোর্স:** এই কোর্স মূলত বিশ্ববিদ্যালয় এর প্রথম বর্ষের ছাত্র-ছাত্রীদের জন্যে যারা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট শুরু করতে চায়। তবে যে কেও চাইলে এই কোর্সটি করতে পারে। ধরে নেওয়া হচ্ছে যে, শিক্ষার্থী অন্ত্যত যে কোন একটি প্রোগ্রামিং ল্যাংগুয়েজ (সি/সি++) সম্পর্কে আগে থেকেই ধারণা রাখে। +**কাদের জন্যে কোর্স:** এই কোর্স মূলত বিশ্ববিদ্যালয় এর প্রথম বর্ষের ছাত্র-ছাত্রীদের জন্যে যারা অবজেক্ট ওরিয়েন্টেড কনসেপ্ট শুরু করতে চায়। তবে যে কেও চাইলে এই কোর্সটি করতে পারে। ধরে নেওয়া হচ্ছে যে, শিক্ষার্থী অন্ত্যত যে কোন একটি প্রোগ্রামিং ল্যাংগুয়েজ \(সি/সি++\) সম্পর্কে আগে থেকেই ধারণা রাখে। > ## Statutory warning -> __This book may contain unexpected misspellings. Reader Feedback Requested.__ +> +> **This book may contain unexpected misspellings. Reader Feedback Requested.** -#### ওপেন সোর্স +### ওপেন সোর্স এই বইটি মূলত স্বেচ্ছাশ্রমে লেখা এবং বইটি সম্পূর্ন ওপেন সোর্স । এখানে তাই আপনিও অবদান রাখতে পারেন লেখক হিসেবে । আপনার কন্ট্রিবিউশান গৃহীত হলে অবদানকারীদের তালিকায় আপনার নাম যোগ করে দেওয়া হবে । -এটি মূলত একটি [গিটহাব রিপোজিটোরি](https://github.com/howtocode-com-bd/java.howtocode.com.bd) যেখানে এই বইয়ের আর্টিকেল গুলো মার্কডাউন ফরম্যাটে লেখা হচ্ছে । রিপোজটরিটি ফর্ক করে পুল রিকুয়েস্ট পাঠানোর মাধ্যমে আপনারাও অবদান রাখতে পারেন । বিস্তারিত দেখতে পারেন এই ভিডিওতে [Video](http://blog.howtocode.com.bd/?p=32) +এটি মূলত একটি [গিটহাব রিপোজিটোরি](https://github.com/howtocode-com-bd/java.howtocode.com.bd) যেখানে এই বইয়ের আর্টিকেল গুলো মার্কডাউন ফরম্যাটে লেখা হচ্ছে । রিপোজটরিটি ফর্ক করে পুল রিকুয়েস্ট পাঠানোর মাধ্যমে আপনারাও অবদান রাখতে পারেন । বিস্তারিত দেখতে পারেন এই ভিডিওতে [Video](http://blog.howtocode.com.bd/?p=32) + +> **বর্তমানে বইটির কন্টেন্ট বিভিন্ন কন্ট্রিবিউটর এবং নানা রকম সোর্স থেকে সংগৃহীত এবং সংকলিত।** -> **বর্তমানে বইটির কন্টেন্ট বিভিন্ন কন্ট্রিবিউটর এবং নানা রকম সোর্স থেকে সংগৃহীত এবং সংকলিত।** + +This work is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License](http://creativecommons.org/licenses/by-nc-nd/4.0/). -Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License. diff --git a/SUMMARY.md b/SUMMARY.md index 6b84485..b9e9e15 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -1,20 +1,20 @@ -# Summary +# Table of contents * [পরিচিতি](README.md) * [উপক্রমণিকা](introduction.md) * [পাঠ ১: তোমার প্রথম জাভা প্রোগ্রাম](1.md) * [পাঠ ২: সিনট্যাক্স](2.md) -* [পাঠ ৩: ডাটা টাইপস এবং অপারেটর](3.md) - * [পাঠ ৩.১: এরে](3.1.md) - * [ পাঠ ৩.২: এক্সপ্রেশান(Expressions), স্টেটমেন্ট (Statements) এবং ব্লক(Blocks)](3.2.md) +* [পাঠ ৩: ডাটা টাইপস এবং অপারেটর](3/README.md) + * [পাঠ ৩.১: এরে](3/3.1.md) + * [পাঠ ৩.২: এক্সপ্রেশান\(Expressions\), স্টেটমেন্ট \(Statements\) এবং ব্লক\(Blocks\)](3/3.2.md) * [পাঠ ৪: কন্ট্রোল ফ্লো -লুপিং- ব্রাঞ্চিং](4.md) -* [পাঠ ৫: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-১](5.md) - * [পাঠ ৫.১: ইনহেরিট্যান্স](5.1.md) - * [পাঠ ৫.২: পলিফরফিজম](5.2.md) - * [পাঠ ৫.৩: এনক্যাপসুলেশান](5.3.md) +* [পাঠ ৫: অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং-১](5/README.md) + * [পাঠ ৫.১: ইনহেরিট্যান্স](5/5.1.md) + * [পাঠ ৫.২: পলিফরফিজম](5/5.2.md) + * [পাঠ ৫.৩: এনক্যাপসুলেশান](5/5.3.md) * [পাঠ ৬: জাভা এক্সেপশান হ্যান্ডেলিং](6.md) * [পাঠ ৬.১: ক্লোজার লুক](6.1.md) -* [পাঠ ৭: স্ট্রিং অপারেশান ](7.md) +* [পাঠ ৭: স্ট্রিং অপারেশান](7.md) * [পাঠ ৮: জেনেরিকস](8.md) * [পাঠ ৯: জাভা আই/ও](9.md) * [পাঠ ১০: জাভা এন আই/ও](10.md) @@ -30,3 +30,4 @@ * [পাঠ ২০: Understanding performance tuning](20.md) * [পাঠ ২১: মডার্ন জাভা ইউজেস](21.md) * [অনুশীলন](exercises.md) + diff --git a/exercises.md b/exercises.md index f0c205a..3ee9b9f 100644 --- a/exercises.md +++ b/exercises.md @@ -1,20 +1,26 @@ -## অনুশীলন # ১ +# অনুশীলন -Design a class named Point which will model a 2D point with `X` and `Y` coordinates. +Design a class named Point which will model a 2D point with `X` and `Y` coordinates. -1. Two instance variable variables `X` (`int`) and `X` (`int`) -2. A "_no-argument_" (or "_no-arg_") constructor that construct a point at `(0, 0)`. +1. Two instance variable variables `X` \(`int`\) and `X` \(`int`\) +2. A "_no-argument_" \(or "_no-arg_"\) constructor that construct a point at `(0, 0)`. 3. A constructor that constructs a point with the given `x` and `y` coordinates. 4. Getter and setter for the instance variables `x` and y. 5. A method `setXY()` to set both x and y. -6. A `toString()` method that returns a string description of the instance in the format `"(x, -y)"`. +6. A `toString()` method that returns a string description of the instance in the format \`"\(x, + + y\)"\`. + 7. A method called `distance(int x, int y)` that returns the distance from this point to -another point at the given `(x, y)` coordinates. + + another point at the given `(x, y)` coordinates. + 8. An overloaded `distance(Point another)` that returns the distance from this point to -the given `Point` instance another. -For example - + the given `Point` instance another. + +For example - + ```java package bd.com.howtocode.java; @@ -70,5 +76,5 @@ public class Point { } ``` -Now write a program that allocates 10 points in an array of `Point`, and initializes to (1, 1), (2, -2), ... (10, 10). \ No newline at end of file +Now write a program that allocates 10 points in an array of `Point`, and initializes to \(1, 1\), \(2, 2\), ... \(10, 10\). + diff --git a/introduction.md b/introduction.md index fc50859..2dd7b0d 100644 --- a/introduction.md +++ b/introduction.md @@ -1,31 +1,28 @@ -### উপক্রমণিকা +# উপক্রমণিকা ১৯৯৫ সালের ২৩ শে মে। ঝকঝকে ঝলমলে চমৎকার একটি দিন। [জন গেইজ](https://en.wikipedia.org/wiki/John_Gage), ডিরেক্টর অব সান মাইক্রোসিস্টেম সাথে [Marc Andreesen](https://en.wikipedia.org/wiki/Marc_Andreessen), কো ফাওন্ডার এবং ভাইস প্রেসিডেন্ট অব নেটস্কেপ ঘোষণা দেন যে, জাভা টেকনোলজি মোটেই কোন উপকথা নয়, বরং এটিই বাস্তবতা এবং তারা এটি Netscape Navigator এর সাথে সংযুক্ত হতে যাচ্ছে। -সে সময় জাভাতে কাজ করে এমন লোকের সংখ্যা ত্রিশেরও কম। তারা কখনোই চিন্তা করে নি, তাদের এই টিম ভবিষ্যৎ পৃথিবীর প্রধানতম টেকনোলজি নির্ধারণ করতে যাচ্ছে। ২০০৪ সালের ৩ জানুয়ারী [Mars Exploration Rover](https://en.wikipedia.org/wiki/Mars_Exploration_Rover) মঙ্গল গ্রহের মাটিতে পা রাখে যার কন্ট্রোল সিস্টেম থেকে শুরু করে পৃথিবীর অধিকাংশ কনজুমার ইলেকট্রনিক্স - (ক্যাবল সেট-টব বক্স, ভিসিআর, টোস্টার, পিডিএ, স্মার্টফোন) ৯৭% এন্টারপ্রাইজ ডেস্কটপ ৮৯% ডেস্কটপ অব ইউএসএ, ৩ বিলিয়ন মোবাইল ফোন, ৫ বিলিয়ন জাভা কার্ড, ১২৫ মিলিয়ন টিভি ডিভাইস, ১০০% ব্লু-রে ডিস্ক প্লেয়ার … এই লিস্ট লম্বা হতেই থাকবে) জাভা রান করে। +সে সময় জাভাতে কাজ করে এমন লোকের সংখ্যা ত্রিশেরও কম। তারা কখনোই চিন্তা করে নি, তাদের এই টিম ভবিষ্যৎ পৃথিবীর প্রধানতম টেকনোলজি নির্ধারণ করতে যাচ্ছে। ২০০৪ সালের ৩ জানুয়ারী [Mars Exploration Rover](https://en.wikipedia.org/wiki/Mars_Exploration_Rover) মঙ্গল গ্রহের মাটিতে পা রাখে যার কন্ট্রোল সিস্টেম থেকে শুরু করে পৃথিবীর অধিকাংশ কনজুমার ইলেকট্রনিক্স - \(ক্যাবল সেট-টব বক্স, ভিসিআর, টোস্টার, পিডিএ, স্মার্টফোন\) ৯৭% এন্টারপ্রাইজ ডেস্কটপ ৮৯% ডেস্কটপ অব ইউএসএ, ৩ বিলিয়ন মোবাইল ফোন, ৫ বিলিয়ন জাভা কার্ড, ১২৫ মিলিয়ন টিভি ডিভাইস, ১০০% ব্লু-রে ডিস্ক প্লেয়ার … এই লিস্ট লম্বা হতেই থাকবে\) জাভা রান করে। নিচের ভিডিও টি চমৎকার। একবার দেখে নেওয়া যেতে পারে। - +চলুন একটু পেছনের ইতিহাস জেনে নেই। +তখন সি-প্লাস প্লাস এর একচ্ছত্রাধিপত্য। -চলুন একটু পেছনের ইতিহাস জেনে নেই। +সান মাইক্রাসিস্টেম- মূলত হার্ডওয়্যার কোম্পানী। ১৯৭২ থেকে ১৯৯১ সালে কম্পিউটারের হার্ডওয়্যারের এক রেভ্যুলেশান হয়। দ্রুত এবং উচ্চ ক্ষমতা সম্পন্ন হার্ডওয়্যার অল্প দামে পাওয়া যাচ্ছে এবং সেই সাথে কমপ্লেক্স সফটওয়্যারের চাহিদা দ্রুতই বেড়ে যাচ্ছে। ১৯৭২ সালে [Dennis Ritchie](https://en.wikipedia.org/wiki/Dennis_Ritchie) সি প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করেন যা প্রোগ্রামারদের মধ্যে সব থেকে জনপ্রিয়। কিন্তু ততদিনে প্রোগ্রামারদের কাছে সি -এর স্ট্রাকচার্ড প্রোগ্রামিং কিছুটা ক্লান্তিকর মনে হতে শুরু করেছে। এর ফলশ্রুতিতে [Bjarne Stroustrup](https://en.wikipedia.org/wiki/Bjarne_Stroustrup) 1979 সালে ডেভেলপ করে সি প্লাস প্লাস যা কিনা সি এর এনহান্সমেন্ট । এটি সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ধারণাকে পরিচিত করে তুলে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবিধে হচ্ছে প্রোগ্রামার পুনর্ব্যবহারযোগ্য\(reusable\) কোড লিখতে পারে যা কিনা পরে অন্য কাজে পুনরায় ব্যবহার করা যায়। -তখন সি-প্লাস প্লাস এর একচ্ছত্রাধিপত্য। +১৯৯০ সাল। সান মাইক্রাসিস্টেম -এ সি প্লাস প্লাস এর আধিপত্যে সি-তে লেখা টুল এবং এপিআই গুলো প্রায় অবস্যুলেট হতে শুরু করেছে। [Patrick Naughton](https://en.wikipedia.org/wiki/Patrick_Naughton), ইঞ্জিনিয়ার অব সান মাইক্রাসিস্টেম, মোটামুটি হতাশ এবং এক ধরণের অকওয়্যার্ড পরিস্থিতির স্বীকার। ততদিনে [স্টিভ জব](https://en.wikipedia.org/wiki/Steve_Jobs) অ্যাপল কম্পিউটার থেকে বিতাড়িত হয়ে NeXT Computer, Inc প্রতিষ্ঠা করে ফেলেছেন\( যা কিনা সফটওয়্যার ইন্ডাস্ট্রিতে বৈপ্লবিক পরিবর্তন আনতে যাচ্ছে এবং যার ফলশ্রুতিতে তৈরি হয়েছে আজকের ম্যাক-ওস\) এবং NeXTSTEP নামে একটি অপারেটিং সিস্টেম তৈরি করেন। এতে কিছু অসাধারণ ব্যাপার ছিল যার মধ্যে অবজেক্ট ওরিয়েন্টেড এপ্লিক্যশান লেয়ার এর ধারণাটি ছিল অসাধারণ যাতে কিনা অবজেক্ট ধরে ধরে কাস্টমাইজড সফটওয়্যার তৈরি করে ফেলা যায়। [Patrick Naughton](https://en.wikipedia.org/wiki/Patrick_Naughton) ইতিমধ্যে NeXT এর দিকে যাওয়ার জন্য মনস্থির করে ফেলেছেন কিন্তু তখন একবার তাকে শেষ সুযোগ হিসেবে একটি অতি গোপন প্রজেক্টের অনুমোদন দেওয়া হয় যার কথা কেউ জানতো না। কিছুদিন পরেই তার সাথে যুক্ত হয় [James Gosling](https://en.wikipedia.org/wiki/James_Gosling) এবং Mike Sheridan । তখন এর নাম দেওয়া হয় _গ্রিন প্রজেক্ট_। সময়ের সাথে _গ্রিন প্রজেক্ট_ এর দন্তোদ্গম হয় এবং তারা কম্পিউটার ছাড়াও বিভিন্ন ডিভাইস নিয়ে নার্চার করতে থাকে। -সান মাইক্রাসিস্টেম- মূলত হার্ডওয়্যার কোম্পানী। ১৯৭২ থেকে ১৯৯১ সালে কম্পিউটারের হার্ডওয়্যারের এক রেভ্যুলেশান হয়। দ্রুত এবং উচ্চ ক্ষমতা সম্পন্ন হার্ডওয়্যার অল্প দামে পাওয়া যাচ্ছে এবং সেই সাথে কমপ্লেক্স সফটওয়্যারের চাহিদা দ্রুতই বেড়ে যাচ্ছে। ১৯৭২ সালে [Dennis Ritchie](https://en.wikipedia.org/wiki/Dennis_Ritchie) সি প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করেন যা প্রোগ্রামারদের মধ্যে সব থেকে জনপ্রিয়। কিন্তু ততদিনে প্রোগ্রামারদের কাছে সি -এর স্ট্রাকচার্ড প্রোগ্রামিং কিছুটা ক্লান্তিকর মনে হতে শুরু করেছে। এর ফলশ্রুতিতে [Bjarne Stroustrup](https://en.wikipedia.org/wiki/Bjarne_Stroustrup) 1979 সালে ডেভেলপ করে সি প্লাস প্লাস যা কিনা সি এর এনহান্সমেন্ট । এটি সাথে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ধারণাকে পরিচিত করে তুলে। অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর সুবিধে হচ্ছে প্রোগ্রামার পুনর্ব্যবহারযোগ্য(reusable) কোড লিখতে পারে যা কিনা পরে অন্য কাজে পুনরায় ব্যবহার করা যায়। +এর মধ্যে ১৩ জন স্টাফ এই গ্রিন টিম ক্যালিফোর্নিয়ার মেনলো পার্কের সেন্ড হিল রোড এর একটি ছোট্ট অফিসে কাজ করতে থাকে। তাদের প্রধান উদ্দেশ্য সি প্লাস প্লাস এর একটি ভাল ভার্সন তৈরি করা যা কিনা হবে অনেক দ্রুতগামী এবং রেস্পন্সিভ। সেই সময়ে কম্পিউটার ছাড়াও কনজুমার ইলেকট্রনিক্স যেমন -পিডিএ, Cable-Set Top Box ইত্যাদির চাহিদা বেড়ে গেছে। একদল ইঞ্জিনিয়ার এক সাথে থাকলে যা হয়, তারা নানারকম জিনিস নিয়ে চিন্তা করতে থাকে, নানা রকম আইডিয়া তৈরি হয়, তা থেকে প্রোটোটাইপ তৈরি করতে থাকে। এর মধ্যে _জেমস গসলিং_ তার সি প্লাস প্লাস এনহান্সমেন্ট চালিয়ে যেতে থাকেন। তিনি এর নাম দেন _সি প্লাস প্লাস প্লাস প্লাস মাইনাস মাইনাস \(C++ ++ - -\)_ । এখানে বাড়তি ++ মানে হচ্ছে নতুন জিনিস যোগ করা এবং - - মানে হচ্ছে কিছু জিনিস ফেলে দেওয়া। _জেমস গসলিং_ এর জানালা দিয়ে একটি _ওক_ গাছ দেখা যায়। একদিন তিনি অফিস থেকে বের হয়ে ঐ গাছটির নিচে দাড়ান এবং সাথে সাথে _C++ ++ - -_ নাম পরিবর্তন করার সিন্ধান্ত নেন এবং নতুন নাম দেন _ওক_। -১৯৯০ সাল। সান মাইক্রাসিস্টেম -এ সি প্লাস প্লাস এর আধিপত্যে সি-তে লেখা টুল এবং এপিআই গুলো প্রায় অবস্যুলেট হতে শুরু করেছে। [Patrick Naughton](https://en.wikipedia.org/wiki/Patrick_Naughton), ইঞ্জিনিয়ার অব সান মাইক্রাসিস্টেম, মোটামুটি হতাশ এবং এক ধরণের অকওয়্যার্ড পরিস্থিতির স্বীকার। ততদিনে [স্টিভ জব](https://en.wikipedia.org/wiki/Steve_Jobs) অ্যাপল কম্পিউটার থেকে বিতাড়িত হয়ে NeXT Computer, Inc প্রতিষ্ঠা করে ফেলেছেন( যা কিনা সফটওয়্যার ইন্ডাস্ট্রিতে বৈপ্লবিক পরিবর্তন আনতে যাচ্ছে এবং যার ফলশ্রুতিতে তৈরি হয়েছে আজকের ম্যাক-ওস) এবং NeXTSTEP নামে একটি অপারেটিং সিস্টেম তৈরি করেন। এতে কিছু অসাধারণ ব্যাপার ছিল যার মধ্যে অবজেক্ট ওরিয়েন্টেড এপ্লিক্যশান লেয়ার এর ধারণাটি ছিল অসাধারণ যাতে কিনা অবজেক্ট ধরে ধরে কাস্টমাইজড সফটওয়্যার তৈরি করে ফেলা যায়। [Patrick Naughton](https://en.wikipedia.org/wiki/Patrick_Naughton) ইতিমধ্যে NeXT এর দিকে যাওয়ার জন্য মনস্থির করে ফেলেছেন কিন্তু তখন একবার তাকে শেষ সুযোগ হিসেবে একটি অতি গোপন প্রজেক্টের অনুমোদন দেওয়া হয় যার কথা কেউ জানতো না। কিছুদিন পরেই তার সাথে যুক্ত হয় [James Gosling](https://en.wikipedia.org/wiki/James_Gosling) এবং Mike Sheridan । তখন এর নাম দেওয়া হয় _গ্রিন প্রজেক্ট_। সময়ের সাথে _গ্রিন প্রজেক্ট_ এর দন্তোদ্গম হয় এবং তারা কম্পিউটার ছাড়াও বিভিন্ন ডিভাইস নিয়ে নার্চার করতে থাকে। +এর মধ্যে ইঞ্জিয়াররা মিলে এম্বেডেড সিস্টেম নিয়ে নার্চার করতে থাকা অবস্থায় নানা রকম সমস্যার সম্মুখীন হন। এম্বেডেড সিস্টেম এ মেমরি কম থাকে, প্রসেসিং পাওয়ারও কম থাকে। এই সিস্টেমে সি++ \(যা কিনা কম্পিউটার এর মতো বড় ফ্রুটিপ্রিন্টের হার্ডওয়্যারের জন্যে ডিজাইন করা\) চালাতে গিয়ে তারা অদ্ভুত অদ্ভুত সমস্যার সম্মুখীন হতে থাকে। এইসব সমস্যার সমাধান করার জন্যে _গ্রিন টিম_ নানা রকম চিন্তা ভাবনা করতে থাকে। এই সময়ে মানুষ পিডিএ, Cable-Set Top Box গুলোর মরণদশা দেখতে শুরু করে। কারণ, যদিও ওক নিয়ে যথেষ্ট এগিয়েছে কিন্তু এটি কোনভাবেই এদেরকে সাহায্য করতে পারছিল না। একমাত্র একটি অলৌকিক ঘটনায় পারে এই প্রজেক্ট সফল করতে। ঠিক তখনি সেই প্রতীক্ষিত প্রত্যাশা আলোর মুখ দেখে। জেমস গসলিং _আউট অব দ্যা বক্স_ একটা যুগান্তকারী ধারণা নিয়ে আসে। সেটি হলো ভার্চুয়াল মেশিন। অর্থাৎ আমরা একটাি কাল্পনিক মেশিনের জন্যে কোড লিখবো যা কিনা কম্পাইল হয়ে একটি অন্তর্বর্তীকালীন কোড তৈরি করবে। এবং জাভা ভার্চুয়াল মেশিন সেই অন্তর্বর্তীকালীন কোডকে রান টাইমে রিয়েল ডিভাইসের জন্যে প্রয়োজন অনুযায়ী মেশিন কোড তৈরি করবে। -এর মধ্যে ১৩ জন স্টাফ এই গ্রিন টিম ক্যালিফোর্নিয়ার মেনলো পার্কের সেন্ড হিল রোড এর একটি ছোট্ট অফিসে কাজ করতে থাকে। তাদের প্রধান উদ্দেশ্য সি প্লাস প্লাস এর একটি ভাল ভার্সন তৈরি করা যা কিনা হবে অনেক দ্রুতগামী এবং রেস্পন্সিভ। সেই সময়ে কম্পিউটার ছাড়াও কনজুমার ইলেকট্রনিক্স যেমন -পিডিএ, Cable-Set Top Box ইত্যাদির চাহিদা বেড়ে গেছে। একদল ইঞ্জিনিয়ার এক সাথে থাকলে যা হয়, তারা নানারকম জিনিস নিয়ে চিন্তা করতে থাকে, নানা রকম আইডিয়া তৈরি হয়, তা থেকে প্রোটোটাইপ তৈরি করতে থাকে। এর মধ্যে _জেমস গসলিং_ তার সি প্লাস প্লাস এনহান্সমেন্ট চালিয়ে যেতে থাকেন। তিনি এর নাম দেন _সি প্লাস প্লাস প্লাস প্লাস মাইনাস মাইনাস (C++ ++ - -)_ । এখানে বাড়তি ++ মানে হচ্ছে নতুন জিনিস যোগ করা এবং - - মানে হচ্ছে কিছু জিনিস ফেলে দেওয়া। _জেমস গসলিং_ এর জানালা দিয়ে একটি _ওক_ গাছ দেখা যায়। একদিন তিনি অফিস থেকে বের হয়ে ঐ গাছটির নিচে দাড়ান এবং সাথে সাথে _C++ ++ - -_ নাম পরিবর্তন করার সিন্ধান্ত নেন এবং নতুন নাম দেন _ওক_। +ঠিক সেই সময়েই [National Center for Supercomputing Applications \(NCSA\)](http://www.ncsa.illinois.edu/) একটি কমার্শিয়াল ওয়েব ব্রাউজার বের করে এবং তাদের টিম ইন্টারনেট এর ভবিষ্যৎ নিয়ে ভাবতে শুরু করে। তারা একটি নতুন ধারণা নিয়ে আসে সেটি হলো, একধরণের ছোট্ট প্রোগ্রাম যা কিনা ব্রাউজার এর মধ্যে চলবে - এর নাম দেয় অ্যাপলেট। অ্যাপলেট ধারণা থেকে তারা ঠিক করে অ্যাপলেট এর জন্যে কিছু স্ট্যাডার্ড – এটি হতে হবে ছোট্ট, খুব সিম্পল, এর স্ট্যাডার্ড এপিআই থাকতে হবে, এটি হবে প্লাটফর্ম ইন্ডিপেন্ডেন্ট, এবং আউট-অব-দ্যা বক্স নেটওয়ার্কিং প্রোগ্রামিং করা যাবে। তারা তখনকার সময়ের ইন্টারনেট বুমকে উদ্দ্যেশ্য করে নেক্সট জেনারেশান প্রোডাক্ট ডেভেলপ করতে চেয়েছিল। এই প্রজেক্ট এর কার্টুন নাম ছিল Duke \( যা কিনা এখন জাভা-এর মাস্কট হিসেবে চিনি\)। কিন্তু সমস্যা হচ্ছে এর কোনটিই ঠিক মতো সি++ দিয়ে করা যাচ্ছিল না। সুতরাং পরবর্তীতে তারা সিন্ধান্ত নেয় যে এমবেডেড সিস্টেমের সমস্যার সমাধানটি তারা ওয়েব ব্রাউজার এর ক্ষেত্রেও ব্যবহার করবে । সেই সময়ে মানুষ ওয়েব ব্রাউজার এর শুধুমাত্র স্ট্যাটিক পেইজ এ টেক্সট আর ইমেজ ছাড়া কিছু দেখতে পেত না। এই টেকনোলজি ব্যবহার করায় ব্রাউজার এনিমেশান থেকে শুরু করে ইন্টারেকটিভ অ্যাপলেট সকলের নজর কাড়ে যা কিনা জাভা প্রোগ্রামিং ল্যাংগুয়েজ এর সফলতার মূল কারণ। -এর মধ্যে ইঞ্জিয়াররা মিলে এম্বেডেড সিস্টেম নিয়ে নার্চার করতে থাকা অবস্থায় নানা রকম সমস্যার সম্মুখীন হন। এম্বেডেড সিস্টেম এ মেমরি কম থাকে, প্রসেসিং পাওয়ারও কম থাকে। এই সিস্টেমে সি++ (যা কিনা কম্পিউটার এর মতো বড় ফ্রুটিপ্রিন্টের হার্ডওয়্যারের জন্যে ডিজাইন করা) চালাতে গিয়ে তারা অদ্ভুত অদ্ভুত সমস্যার সম্মুখীন হতে থাকে। এইসব সমস্যার সমাধান করার জন্যে _গ্রিন টিম_ নানা রকম চিন্তা ভাবনা করতে থাকে। এই সময়ে মানুষ পিডিএ, Cable-Set Top Box গুলোর মরণদশা দেখতে শুরু করে। কারণ, যদিও ওক নিয়ে যথেষ্ট এগিয়েছে কিন্তু এটি কোনভাবেই এদেরকে সাহায্য করতে পারছিল না। একমাত্র একটি অলৌকিক ঘটনায় পারে এই প্রজেক্ট সফল করতে। ঠিক তখনি সেই প্রতীক্ষিত প্রত্যাশা আলোর মুখ দেখে। জেমস গসলিং _আউট অব দ্যা বক্স_ একটা যুগান্তকারী ধারণা নিয়ে আসে। সেটি হলো ভার্চুয়াল মেশিন। অর্থাৎ আমরা একটাি কাল্পনিক মেশিনের জন্যে কোড লিখবো যা কিনা কম্পাইল হয়ে একটি অন্তর্বর্তীকালীন কোড তৈরি করবে। এবং জাভা ভার্চুয়াল মেশিন সেই অন্তর্বর্তীকালীন কোডকে রান টাইমে রিয়েল ডিভাইসের জন্যে প্রয়োজন অনুযায়ী মেশিন কোড তৈরি করবে। - -ঠিক সেই সময়েই [National Center for Supercomputing Applications (NCSA)](http://www.ncsa.illinois.edu/) একটি কমার্শিয়াল ওয়েব ব্রাউজার বের করে এবং তাদের টিম ইন্টারনেট এর ভবিষ্যৎ নিয়ে ভাবতে শুরু করে। তারা একটি নতুন ধারণা নিয়ে আসে সেটি হলো, একধরণের ছোট্ট প্রোগ্রাম যা কিনা ব্রাউজার এর মধ্যে চলবে - এর নাম দেয় অ্যাপলেট। অ্যাপলেট ধারণা থেকে তারা ঠিক করে অ্যাপলেট এর জন্যে কিছু স্ট্যাডার্ড – এটি হতে হবে ছোট্ট, খুব সিম্পল, এর স্ট্যাডার্ড এপিআই থাকতে হবে, এটি হবে প্লাটফর্ম ইন্ডিপেন্ডেন্ট, এবং আউট-অব-দ্যা বক্স নেটওয়ার্কিং প্রোগ্রামিং করা যাবে। তারা তখনকার সময়ের ইন্টারনেট বুমকে উদ্দ্যেশ্য করে নেক্সট জেনারেশান প্রোডাক্ট ডেভেলপ করতে চেয়েছিল। এই প্রজেক্ট এর কার্টুন নাম ছিল Duke ( যা কিনা এখন জাভা-এর মাস্কট হিসেবে চিনি)। কিন্তু সমস্যা হচ্ছে এর কোনটিই ঠিক মতো সি++ দিয়ে করা যাচ্ছিল না। সুতরাং পরবর্তীতে তারা সিন্ধান্ত নেয় যে এমবেডেড সিস্টেমের সমস্যার সমাধানটি তারা ওয়েব ব্রাউজার এর ক্ষেত্রেও ব্যবহার করবে । সেই সময়ে মানুষ ওয়েব ব্রাউজার এর শুধুমাত্র স্ট্যাটিক পেইজ এ টেক্সট আর ইমেজ ছাড়া কিছু দেখতে পেত না। এই টেকনোলজি ব্যবহার করায় ব্রাউজার এনিমেশান থেকে শুরু করে ইন্টারেকটিভ অ্যাপলেট সকলের নজর কাড়ে যা কিনা জাভা প্রোগ্রামিং ল্যাংগুয়েজ এর সফলতার মূল কারণ। - -জেমস গসলিং এর এই ভার্চুয়াল মেশিন-এর সল্যুশান ছিল সত্যিকার অর্থেই যুগান্তকারী এবং `গ্রিন টিম` এর রিলিজ দিতে প্রস্তুত। কিন্তু তখন-ই নতুন ঝামেলার সূচনা হয়, lawyers এসে তাদের জানায় এর নাম Oak দেওয়া যাবে না, কারণ এটি ইতিমধ্যেই Oak Technologies এর ট্রেড মার্ক। সুতরাং নাম পরিবর্তন করতে হবে। শুরু হয় ব্রেইনস্টর্মিং । কিন্তু কোন ভাবেই একটি ভাল নাম নির্বাচন করা যাচ্ছিল না। অনেকেই অনেক ধরণের নাম উপস্থাপন করে, যেমন - DNA, Silk , Ruby, yuck, Silk, Lyric, Pepper, NetProse, Neon, Java ইত্যাদি ইত্যাদি। এর সব গুলো লিগাল ডিপার্টমেন্ট এ সাবমিট করার পর মাত্র Java, DNA, and Silk এই তিনটি নাম ফিরে আসে যা কিনা ক্লিন। নাম নিয়ে ঘণ্টার পর ঘণ্টার মিটিং চলতে থাকে। এর মধ্যে Chris Warth প্রপোজ করে Java, কারণ তখন তার হাতে ছিল এক কাপ গরম Peet's Java (কফি)। -শেষ পর্যন্ত নাম ঠিক করা হয় Java কারণ একমাত্র এই নামেই সব থেকে পজিটিভ রিএকশান পাওয়া যাচ্ছিল। +জেমস গসলিং এর এই ভার্চুয়াল মেশিন-এর সল্যুশান ছিল সত্যিকার অর্থেই যুগান্তকারী এবং `গ্রিন টিম` এর রিলিজ দিতে প্রস্তুত। কিন্তু তখন-ই নতুন ঝামেলার সূচনা হয়, lawyers এসে তাদের জানায় এর নাম Oak দেওয়া যাবে না, কারণ এটি ইতিমধ্যেই Oak Technologies এর ট্রেড মার্ক। সুতরাং নাম পরিবর্তন করতে হবে। শুরু হয় ব্রেইনস্টর্মিং । কিন্তু কোন ভাবেই একটি ভাল নাম নির্বাচন করা যাচ্ছিল না। অনেকেই অনেক ধরণের নাম উপস্থাপন করে, যেমন - DNA, Silk , Ruby, yuck, Silk, Lyric, Pepper, NetProse, Neon, Java ইত্যাদি ইত্যাদি। এর সব গুলো লিগাল ডিপার্টমেন্ট এ সাবমিট করার পর মাত্র Java, DNA, and Silk এই তিনটি নাম ফিরে আসে যা কিনা ক্লিন। নাম নিয়ে ঘণ্টার পর ঘণ্টার মিটিং চলতে থাকে। এর মধ্যে Chris Warth প্রপোজ করে Java, কারণ তখন তার হাতে ছিল এক কাপ গরম Peet's Java \(কফি\)। শেষ পর্যন্ত নাম ঠিক করা হয় Java কারণ একমাত্র এই নামেই সব থেকে পজিটিভ রিএকশান পাওয়া যাচ্ছিল। ‌১৯৯৫ সালের মে মাসে জাভা এর প্রথম পাবলিক ভার্সন রিলিজ হয়। এর পরের ইতিহাস আমরা সবাই জানি। জাভা হচ্ছে এই গ্রহের সবচেয়ে সফল প্রোগ্রামিং ভাষা। + pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy

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

(?S>|C! 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