বাংলায় অবজেক্টিভ-সি, সুইফট এবং iOS অ্যাপ ও গেম ডেভ
  • ভূমিকা
  • অবজেক্টিভ-সি ব্যাসিক
    • প্রাথমিক ধারনা এবং Xcode
    • Objective-C এর ভিতরে আমাদের প্রিয় C
    • ফাংশন ও এর ব্যবহার
    • ক্লাস ও অবজেক্ট
    • প্রোপার্টি ও এর অ্যাট্রিবিউটের ব্যবহার
    • মেথড ও এর বিস্তারিত
    • প্রোটোকল
    • ক্যাটাগরি
    • ব্লক ও এর ব্যবহার
    • এক্সেপশন ও এরর হ্যান্ডেলিং
  • অ্যাপ ডেভেলপমেন্ট
    • টুলস সেটআপ এবং একটি সাধারণ হ্যালো ওয়ার্ল্ড অ্যাপ তৈরি
    • iOS অ্যাপে ব্যাসিক ইনপুট আউটপুট ও কিবোর্ড হ্যান্ডেলিং
    • আরও চ্যাপ্টার আসছে ...
  • সুইফ্ট ব্যাসিক
    • সুইফ্ট – অ্যাপলের নতুন চমক, পরিচিতি ও অন্যান্য
    • স্ট্রিং ও ক্যারেকটার টাইপ ভ্যারিয়েবল
    • কালেকশনস (অ্যারে ও ডিকশনারী), ইনুমারেশন ও ক্লোজার
    • ব্রাঞ্চিং ও লুপিং
    • ফাংশন ও মেথড
    • ক্লাস এবং স্ট্রাকচারের মধ্যে পার্থক্য
    • প্রোপার্টি
    • ইনহেরিটেন্স
    • ইনিশিয়ালাইজেশন, ডি-ইনিশিয়ালাইজেশন ও অপশনাল চেইনিং
    • এক্সটেনশন ও প্রোটোকল
  • গেম ডেভেলপমেন্ট
    • গেমস বনাম আপ্লিকেশন্স, গেমস বনাম গেমস (গেমসের প্রকারভেদ)
    • অতিরিক্ত প্রয়োজনীয় টুলস এবং তাদের পরিচিতি, ফ্রেমওয়ার্ক নির্বাচন (স্প্রাইটকিট, কোকোস-২D, ...)
    • স্থানাংক ব্যাবস্থা, দেয়ালের প্রথম ইট
    • ব্যাসিক কিছু ধারনাঃ স্প্রাইট(ছবি), অ্যানিমেশন, ফন্ট, সাউন্ড(শব্দ)
    • গেমঃ মহাকাশ-যুদ্ধ
      • একটি স্পেসশিপ তৈরি
      • গুলি ছোঁড়া
      • প্রতিপক্ষ স্পেসশিপ(গুলো)
      • আক্রমণ
    • গেম-সেন্টার
      • লিডার-বোর্ড (সেরাদের-তালিকা)
      • অ্যাচিভমেন্টস (অর্জন)
      • চ্যালেঞ্জ
  • অ্যাপ্লিকেশন সাবমিট, প্রচার ও সাফল্য
    • অ্যাপল ডেভেলপের আইডি খোলা
    • আসল ডিভাইসে অ্যাপ রান এর পদ্ধতি
    • আরও চ্যাপ্টার আসছে ...
  • অতিরিক্তঃ কিছু সাধারণ প্রশ্ন ও উত্তর
    • অবজেক্টিভ-সি (Objective-C) নাকি সুইফ্ট (Swift)?
    • আরও চ্যাপ্টার আসছে ...
Powered by GitBook
On this page
  1. অবজেক্টিভ-সি ব্যাসিক

প্রাথমিক ধারনা এবং Xcode

Previousঅবজেক্টিভ-সি ব্যাসিকNextObjective-C এর ভিতরে আমাদের প্রিয় C

Last updated 6 years ago

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

Objective-C হচ্ছে iOS এবং OSX অপারেটিং সিস্টেমের জন্য ন্যাটিভ প্রোগ্রামিং ল্যাঙ্গুয়েজ। এটা একটা কম্পাইল্ড ল্যাঙ্গুয়েজ। অর্থাৎ পুরো কোড আগে কম্পাইল হয়ে তারপর সেখান থেকে বিল্ড এবং রান হয়। Objective-C তৈরি করা হয়েছে C প্রোগ্রামিং ল্যাঙ্গুয়েজকে অবজেক্ট ওরিয়েন্টেড ফিচার দিয়ে। C এর তুলনায় Objective-C এর সিনট্যাক্সকে আরও বেশি হিউম্যান রিডেবল মনে করা হয়।

তুলনামুলক সিম্পল সিনট্যাক্স এর এই ল্যাঙ্গুয়েজ এর পিছনে আরও অবদান রয়েছে বিশাল বিস্তৃত কিছু লাইব্রেরীর। যদিও ল্যাঙ্গুয়েজের শেখার দৃষ্টিকোণ থেকে দেখতে গেলে ওই লাইব্রেরী গুলো সম্পর্কে এখনি জানা বাধ্যতামূলক নয় কিন্তু কিছুটা আইডিয়া রাখা ভালো। অনেক লাইব্রেরীর মধ্যে Apple এর Cocoa এবং Cocoa Touch ফ্রেমওয়ার্ক হচ্ছে বহুল পরিচিত। এগুলো কিছু API ডিফাইন করে যা দিয়ে যথাক্রমে OSX এবং iOS এর জন্য অ্যাপ্লিকেশন তৈরি করা সহজ হয়ে যায়। Foundation, UIKit, AppKit, CoreData QuartzCore, AVFoundation হচ্ছে তেমন কিছু ফ্রেমওয়ার্ক। Objective-C তে পারদর্শী হবার পর উপরে আলোচিত টুলস গুলো হচ্ছে iOS এবং OSX এর জন্য অ্যাপ তৈরির ক্ষেত্রে প্রয়োজনীয় জিনিষ। আপাতত এই ল্যাঙ্গুয়েজ নিয়ে ঘাটা ঘাটি করতে আমরা শুধুমাত্র Foundation ফ্রেমওয়ার্ক ব্যবহার করতে পারি।

Xcode: যদিও Objective-C কোড কম্পাইল করার জন্য আরও অনেক পথ আছে কিন্তু আমরা এই সিরিজে শুরু থেকেই Xcode ব্যবহার করবো কারন শেষ নাগাদ iOS, OSX অ্যাপ ডেভেলপ করাই আমাদের উদ্দেশ্য এবং তার জন্য Xocode এর সাথে পরিচিত থাকা অবশ্যই উপকারী। Xcode হচ্ছে Apple এর একটি IDE (Integrated Development Environment). তাছাড়াও এটা একটা কোড এডিটর, ডিবাগার টুল, অ্যাপ এর GU ইন্টারফেস বিল্ডার এবং এর সাথে সিমুলেটরও আছে।

Objective-C প্র্যাকটিসের উপযোগী অ্যাপ/এনভায়র্নমেন্ট তৈরিঃ iOS এবং OSX অ্যাপ তৈরি শুরু করার জন্য Xcode আমাদেরকে অনেক রকম টেম্পলেট করে দিতে পারে। আমরা আমাদের এই টিউটোরিয়াল সিরিজের স্বার্থে, Command Line Tool টাইপের অ্যাপ টেম্পলেট ব্যাবহার করবো। এতে করে আমরা iOS/OSX অ্যাপ তৈরির জন্য অন্যসব টুলস থেকে দুরে থাকতে পারবো এবং শুধুমাত্র Obejctive-C সম্পর্কে জানার জন্য যতটুকু পরিবেশ দরকার সেটাই তৈরি করে আগাবো। Xcode এর File->New->Project এ গেলে নিচের মত উইন্ডো আসবে। সেখানকার বাম পাস থেকে OSX : Application সিলেক্ট করে ডান পাস থেকে Command Line Tool সিলেক্ট করে Next করলে নিচের মত আরেকটি উইন্ডো আসবে। এখানে অ্যাপ এর ব্যাসিক কিছু সেটিংস কনফিগার করা হয়। Product Name এবং Organization Name এ যা খুশি দিতে পারেন এবং Company Identifier এ edu.self দিতে পারেন private use identifier হিসেবে, যদি আপনার দেয়ার মত কোন ইউনিক রিভার্স ডোমেইন না থাকে। Type ফিল্ড থেকে Foundation সিলেক্ট করুন কারন আমরা সামনে এই ফ্রেমওয়ার্কে ডিফাইন করা বেশ কিছু ক্লাসের ব্যবহার পাবো। এখন Next ক্লিক করে প্রজেক্ট শেভ লোকেশন দেখিয়ে দিন।

Create বাটনে ক্লিক করার পর Xcode এর বাম পাশের ন্যাভিগেটর-এ main.m ফাইল সহ আরও কিছু ফাইল ফোল্ডার দেখতে পাবেন। আপাতত এই main.m ফাইলটাই গুরুত্বপূর্ণ। কারন iOS, OSX এমনকি Command Line Tool টাইপের অ্যাপ রান করার সময় এখান থেকেই ঘটনা শুরু হয় :) আর হ্যাঁ, .m হচ্ছে Objective-C এর সোর্স ফাইলের এক্সটেনশন।

main() ঘটনাঃ আগেই বলা হয়েছে, main() ফাংশন যেকোনো রকম Objective-C অ্যাপ এর রুট হিসেবে কাজ করে। Xcode প্রায় সব সবরকম অ্যাপ টেম্পলেট তৈরি করার সময় তার জন্য একটি main.m ফাইল বানায় যেখানে একটি main() ফাংশন ডিফাইন করা থাকে। ফাইলটি খুললে নিচের মত কোড দেখা যাবেঃ

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

    @autoreleasepool {

        // insert code here...
        NSLog(@"Hello, World!");

    }
    return 0;
}

তো, @autoreleasepool এর কথা আপাতত মাথা থেকে বাদ দিলে বলা যায় যে, main() ফাংশন সিমপ্লি NSLog() নামের একটা গ্লোবাল ফাংশনকে কল করে যেটা Foundation ফ্রেমওয়ার্কে এ ডিফাইন করা আছে। Xcode console এ ম্যাসেজ প্রিন্ট করার জন্য এটা ব্যবহার করা হয়। শুরুতে @ চিহ্ন ব্যবহার করে Objective-C string টাইপের ভ্যালু ডিফাইন করা হয়, যেটা পাঠানো হচ্ছে NSLog() এর প্যারামিটার হিসেবে।

পরের পোস্টে ব্যাসিক সিনট্যাক্স, ভ্যারিয়েবল, কন্ডিশন, লুপ, ম্যাক্রো, ডাটা স্ট্রাকচার নিয়ে আলোচনা হবে।

@autoreleasepool ব্লকের মধ্যে আমরা আমাদের সবরকম প্র্যাকটিস কোড লিখবো। @autoreleasepool হচ্ছে মেমোরি লিক প্রতিহত করার একটা উপায়। যদিও এটা আমাদের টিউটোরিয়াল সিরিজের মুল বিষয় থেকে আলাদা, তবুও এই বিষয়ে জানতে পারেন । Apple ডকু থেকে - "The @autoreleasepool statement is there to support memory management for your app. Automatic Reference Counting (ARC) makes memory management straightforward by getting the compiler to do the work of keeping track of who owns an object; @autoreleasepool is part of the memory management infrastructure."

Command+R চেপে অ্যাপটি রান করালে Xcode এর Editor এরিয়ার নিচের ডিবাগ কনসোলে নিচের মত ম্যাসেজ দেখা যাবে। এই টিউটোরিয়াল সিরিজে আমরা main.m ফাইল এডিট করে করে Objective-C ল্যাঙ্গুয়েজ ফিচার টেস্ট করবো। কিন্তু বাস্তবে iOS/OSX অ্যাপ তৈরির সময় এই ফাইলে হাত দেয়ার দরকার পরবে না। কারন, Xcode দিয়ে অন্য টাইপের অ্যাপ টেম্পলেট তৈরি করলে দেখবেন main() ফাংশনের মধ্যে application object এবং app delegate ইন্সট্যান্স তৈরি করে পুরো প্রোগ্রাম এর কন্ট্রোল ছেড়ে দেয়া হচ্ছে Application Delegate এর কাছে এবং এটা করেই main() এর কাজ শেষ। তো, ব্যাপার হচ্ছে, এটাও আপাতত গবেষণার বিষয় না। আপাতত আমরা ল্যাঙ্গুয়েজ হিসেবে Objective-C এর ফিচার টেস্ট করবো, অ্যাপ ডেভেলপমেন্ট নয়।

Originally Posted

এখানে
Here
উইকি
Screen Shot 2014-05-05 at 5.36.09 PM
Screen Shot 2014-05-05 at 5.34.53 PM
Screen Shot 2014-05-05 at 6.00.24 PM
Screen Shot 2014-05-05 at 5.35.32 PM