বিসমিল্লাহির রাহমানির রাহিম



Java Programming Basic Structure


উপরে দেখানো , Main Method হলো জাভা এর প্রধান মেথড , । আর বাকি  Method/Function হলো , সহকারি , এরকম অনেক মেথড থাকতে পারে । তবে মেইন মেথড একটাই থাকবে । প্রতিটি জাভা প্রোগ্রামে মেইন মেথড থাকবে ।


Print Key: (You Need To Write The Code ON Main Method )

System.out.println("Bismillahir Rahmanir Rahim");

Object Oriented Program Concept (এখানে অবজেক্ট অরিয়েন্টেড নিয়ে একটি ধারনা দেওয়া হল

উপরে যা দেখা যাচ্ছে তা হল , একটা ক্লাস এর ভিতরে অনেক কিছুই থাকতে পারে । হতে পারে তা , Variable , Method ইত্যাদি । সেই ক্লাস কে যখন আমি ভেরিয়েবল এ নিয়ে আসবে তখন সেটিকে বলা হয় অবজেক্ট ।

Class Control From Main Method Code:

javaclass AmarObject= new javaclass();  (এটি মেইন মেথডে লিখতে হবে , এবং সেই ক্লাসের নাম বসাতে হবে javaclass এর জায়গায় এবং অবজেক্ট  এর নাম যা ইচ্ছে তাই দিতে পারেন ।


For Example


Class এর কোন কিছু কল করার কোড

mclass shafivariable= new mclass();

        shafivariable.myfunction();


Function Parameter

INT + -

int a=10;

        int b=30;

        int c= a+b;

        

        System.out.println(c);

-----------------

এবার প্যারামিটার ব্যবহার করবো ।

mclass objectvariable= new mclass();

        objectvariable.myfunction(20 ,30 );

        objectvariable.myfunction(50 ,30);

এটি থাকবে , মেইন মেথডেএ ।

এবং mclass নামে ক্লাস এই ভাবে সাজাতে হবে ।

নিচের অংশে , ২ টি প্যারামিটার একটি ইন্টিজার ‍ এ , আরেকটি বি ।

এটির মানে এ এর মান , অজানা । সে টা যে কোন কিছু হতে পারে । ফাংশনে , এইভাবে ডিক্লার করার প্রক্রিয়া কে প্যারামিটার বলে ।

public void myfunction(int a, int b) {

        

        int c= a+b;

        

        System.out.println(c);

    }


Instance Variable



Instance Variable Basic Concept...

ইনস্ট্যান্ট ভেরিয়েবল ডিকলার করতে হয় ক্লাসের ভিতরে কিন্তু ফাংশনের বাহিরে




ফাংশনের বাহিরের কোন জিনিষ ফাংশনে কল করতে চাইলে তাহলে , অবশ্যই , this.(ভেরিয়েবল নাম) লিখতে হবে ।

যেমন


Class এ এটি থাকবে:

 public int a=10;

    public int b=12;

    public int c;

    

ক্লাসের মেথডে এটি থাকবে ।

this.c=this.a+ this.b;

এবং প্রিন্ট করার জন্য

System.out.println(this.c);

ইনর্স্ট্যন্স ভেরিয়েবল থেকে , যদি , আমি নির্দিষ্ট িএকটা ভেরিয়েবল কে যদি কল করতে যাই তাহলে , 

এটি কল করতে হবে আমাদের মেইন মেথডে:

System.out.println(objectvariable.a);


Local Variable


Local Variable এ কোন প্রকার এক্সেস মোডিফায়ার থাকেনা । যেমন , public int a= 10 , এইখানে , Public থাকবেনা । Local Variable শুধু মাত্র , যেই মেথডে বা যেই ফাংশনে ডিক্লার হবে , সেখানেই কাজ করবে ।


যেমন Class এ থাকবে এমন

    public void myfunction() {

    

        int a=100;

        int b=12;

        int c;

        c=a+b;

        System.out.println(c);

 

এবং মেইন মেথডে ,  শুধু কল করলেই কাজ হবে

        mclass objectvariable= new mclass();

        objectvariable.myfunction();


েএবার নির্দিষ্ট ভাবে একটা লোকাল ভেরিয়েবল কে যদি আমরা মেইন মেথড দিয়ে কন্ট্রোল করতে চাই তাহলে আবার ইন্সট্যান্ট ভেরিয়েবল লাগবে । যেমন


Class File

public class mclass {

    

   public int ins;

    

    public void myfunction() {

    

    int a=100;

    this.ins=a;

    int b=12;

    int c;

    c=a+b;

    

Main Method File:

public class Mpack {

    

    public int a;

    


    

    public static void main(String[] args) {

      

        mclass objectvariable= new mclass();

        objectvariable.myfunction();

       System.out.println(objectvariable.ins);

        

       




Local Variables Basic Concepts:


Static Variable And Static Method



Static Variable>>

Static Variable নিয়ে কাজ করতে গেলে কোন প্রকার অবজেক্ট ব্যবহার করার প্রয়োজন নেই ।

Static Variable করতে গেলে আমাদের যা করতে হবে তা হল ,

Class File


public class mclass {

    

   public static int a=10;

   public int b=12;

   public int c;

    

    public void myfunction() {

    

    this.c=this.a+ this.b;

    System.out.println(this.c);

    

        

        

    }


Mail Method:

public class Mpack {

    

    public int a;

    


    

    public static void main(String[] args) {

      

        System.out.println(mclass.a);

        

       

        

        

    }


Static Function>>

Static Function এর সুবিধা হল , এটিকে কল করার জন্য আলাদা অবজেক্ট এর প্রয়োজন নেই ।


Class Code:

public class mclass {

    

    public static void myfunction() {

    

    int a=10;

    int b=20;

    int c;

    c=a+b;

    System.out.println(c);

    

Main Method Code:

public class Mpack {

 

    public static void main(String[] args) {

      

        mclass.myfunction();

        

Inheritance


এখানে , Super Class এর উত্তরাধিকার সুত্রে পায় হলো Sub Class



এখানে দুইটা ক্লাস লাগবে একটা সুপার ক্লাস আরেকটি সাব ক্লাস

যেমন


Main Method Code:

public class Mpack {

    

    

    


    

    public static void main(String[] args) {

      

        

        Son SonObj =new Son();

        SonObj.add();


Super Class (Father) Code:

public class Father {

    

    public int a=10;

    public int b=20;

    public int c;

    

   public void add() {

       

       this.c=this.a+this.b;

       

        System.out.println(this.c);

   }

    

Sub Class SON code:

public class Son extends Father {

    

    

    

}


Method Overloading..

মেথড অভারলোডিং হলো যদি Super Class এ , একই নামে মেথড আবার Sub Class একই নামে মেথড থাকে আর দুইটা মেথডের কনটেন্ট যদি ভিন্নরকম থাকে তাহলে Sub Class টাই Program .

উপরের সব কোড ই সেইম থাকবে । তবে কিছু পরিবর্তন ।


Sub Class Code:

public class Son extends Father {

    

    public void add() {

    this.c=this.a+this.b;

       

        System.out.println(this.c);

    

    }

Super Class Code:

public class Father {

    

    public int a=10;

    public int b=20;

    public int c;

    

   public void add() {

       

       this.c=this.a+this.b;

       

        System.out.println(this.c);

   }

    

}

Method Overloading


সংখ্যা পরিবর্তনের  প্যারামিটার করে মেথড অভার লোডিং


এবার দেখি ডাটাটাইপ চেন্জ করে , মেথড অভারলোডিং



Constructure


যখন কোন Class এর নামে , New Keyword এর পরে যদি আমরা কোন মেথড তৈরি করবো ফাস্ট ব্রাকেট দিয়ে তখন তাকে বলা হয় Constructure Method .

যেমন

    My Obj = new My(); এখানে , My(); হলো কন্সট্রাক্টর মেথড ।

Contructure মেথড এটি নরমাল মেথড এর মত নয় এখানে রিটার্ন টাইপ থাকেনা ।

যখন আমরা কোন  Constructure Method এর মদ্ধ্যে , প্যারামিটার ঢুকাবো না তখন তাকে বলব Default Constructure Method

Normal Method এর নাম কক্ষনোও ক্লাসের নাম অনুসারে হয় না , আর Constructure Method এর নাম ক্লাসের নামে হয় ।



এবার দেখবো আমরা প্যারামিটার ব্যবহার করে Constructure


এবার দেখবো আমরা Constructure Method Overlaoding..





Interface In java


Interface Class এর মদ্ধ্যে একটি মেথড থাকবে তবে তার Body Part থাকবেনা । কোন একটি Interface কে যদি Class দ্বারা Implement করতে চাই তাহলে অবশ্যই Interface এর মদ্ধ্যে , যেই মেথড আছে তা অবশ্যই , Override করতে হবে । আবার যখন Method কে Override করতে তখন কিন্তু বডি থাকবে ।

Inteface তৈরির কারণ হলো প্রোগ্রামে কি কি মেথড থাকতেছে তার একটি সংক্ষিপ্ত কপি রেখে দেওয়ার জন্য ।


যেমন নিচের অংশটি দেখুন:



Interface এর মদ্ধ্যে , Method Override করে কাজ করা হয় যেভাবে .,






Abstract Class In Java


Abstract Class হল , এমন একটি ক্লাস , যার কোন অস্তিত্ব আউটপুটে আসবেনা । এটি  বিমুর্ত ।

এটিকে অস্তিত্বশীল করতে গেলে , ইনহেরিটেন্স এর মত করে নতুন ক্লাসের সাহায্য নিতে হবে ।

যেমন:-

 Abstruct Class:



Abstract Method এর কোন Body Part থাকেনা । Abstract Method এর  যেই ক্লাসে থাকবে , সেই ক্লাস কেও থাকতে হবে Abstract Class 

Abstract Method:



Access Modifier In Java


1. Private Access Modifier

এটি , আমরা যেখানে ব্যবহার করবো তখন , সেটি ঐ ক্লাস , ঐ মেথড এর ভিতরেই কাজ করবে অন্য কোথাও কাজ করবেনা ।

2. Default Access Modifier

কোন কিছু ডিক্লার না করলে সেটি ডিফল্ট এক্সেস মোডিফায়াার

3. Protected Access Modifier

এই পদ্ধতিতে , ঐ প্যাকেজের ভিতরেই ব্যবহার করতে পারবো । ভিন্ন প্যাকেজেও ব্যবহার করা যাবে যদি ইনহ্যারিটেন্স ওয়েই ব্যবহার করা হয় ।

4. Public Access Modifier

এটি সব জায়গাতেই ব্যবহার করা যায় । প্যাকেজের বাহিরে ভিতরে , ক্লাসের বাহিরে ভিতরে সবজায়গাতেই ব্যবহার হয় ।


Public Access Modifier Example:




Protected Access Modifier এর কাজ হলো , একই প্যাকেজে ভিন্ন , ক্লাসে কাজ করা সম্ভব কিন্তু ঐ ক্লাস কেই আবার আলাদা প্যাকেজে কল করলে সেটা সম্ভব নয় কারণ , 


Protected Access Modifier Example:



Default Access Modifier এ কোন কিছু ডিক্লার করতে হয় না । এটা একই প্যাকেজে ব্যবহার করা যায় কিন্তু ,ভিন্ন প্যাকেজে ব্যবহার করা যায় না ।


Private Access Modifier এর  মাদ্ধ্যমে , একই ক্লাসে কল করা যাবে কিন্তু ঐ ক্লাসের প্যাকেজে অন্য কোন ক্লাসে কল করতে পারবেন না , আর অন্য প্যাকেজে ব্যবহার করা তো স্বপ্নের ব্যাপার ।

Private Access Modifier Example:



Setter And Getter Method



গেটার মেথডের মাদ্ধ্যমে প্রাইভেট এক্সেস মোডিফায়ারের এক্সেস কে অন্য ক্লাসেও বা বাহিরে ব্যবহার করা যায় । বিস্তারিত দেখুন :

Example , Getter Method:




Setter Method Example:




Encapsulation In Java

এটি হল এমন একটি জিনিষ যা অনেকগুলো ডাটা কে বাইন্ড করে রাখে ক্যাপসুল এর মত ভেরিয়েবল এবং মেথড থাকে সেখানে ।





Multitasking In Java


জাভা একই সাথে মাল্টি টাস্কিং করতে পারেনা । জাভা কে ৩ টি কাজ দিলে েএকটি একটি করে ৩ টি কাজ করবে । কিন্তু একই সাথে ৩ টি কাজ করবেনা ।

আর যদি , করতে চাই তাহলে আমাদের Thread Class ব্যবহার করতে পারি । তাহলে একই সাথে একাধিক কাজ রানিং করা যায় ।

Thread Class দুইভাবে ব্যবহার করা যায় । একভাবে হল , ইনহেরিটেন্স এর মাদ্ধ্যমে আরেকটি হল ইন্টারফেস এর মাদ্ধ্যমে ।

আর এটি একটি টাস্ক এর প্রসেস বন্ধ হলে আরেকটি টাস্ক এ সেটি প্রভাব ফেলেনা ।


Single Tasking Example:


Multitasking Example:


এখানে , Sleep যেই কিওয়ার্ড ব্যবহার করা হয়েছে এটির মাদ্ধ্যমে আমরা ৫০০ মিলি সেকেন্ড আসতে আসতে কোড দেখতে পারবো ।িএটি না দিলেও হবে ।
আর মাল্টি টাস্কিং ক্ষেত্রে , অবজেক্ট কে ঐ একই নামে কল করা যাবেনা  Method।
এখানে run যেই মেথড টি আছে , এটি হল , Thread এর একটি মেথড সেটি এখানে অভাররাইট করা হয়েছে ।  Class কে Thread বানালেই সেখানে run method লাগবে ।






Interface ব্যবহার করে , মাল্টিটাস্কিং ।



একই কাজই অন্যভাবে করতে পারেন ....