آيفونآيبودآبل

سلسلة دروس برمجة تطبيقات الآيفون (2)

آيفونآيبودآبل
This section contains some shortcodes that requries the Jannah Extinsions Plugin. You can install it from the Theme settings menu > Install Plugins.

1276627696_14277791302d16557a6fbo

هذا هو الدرس الثاني من سلسلة دروس برمجة تطبيقات الآيفون ( لمشاهدة الدرس الأول ) ،في البداية سأتفق معكم على بعض المصطلحات التي سأترجمها هنا، إلا أنني في الشرح سأستخدم المفردات الإنجليزية :

وذلك لأن التعامل مع هذه المصطلحات باللغة الإنجليزية سيكون أسهل لمن درس الحاسب أن يستوعب الدروس بشكل أكبر والنقطة الثانية عندما تتعود على هذه المصطلحات سيكون من السهل عليك عندما تعمل على البرنامج أن تجدها وتستوعب عملها.

نبدأ في الدرس سيكون درس اليوم نظري بحت والتطبيق غير داخل فيه.

عناوين اليوم:

  • نظرة عامة عن Object Oriented Programming
  • لغة الـ Object-C
  • الـ Classes الأساسية والشائعة

Line_thumb1

المفردات الأساسية في OOP :

  • Class :

هو تعريف لمجموعة من البيانات والأكواد وهي تحدد نوع Object

  • Instance :

هو المكان الموجود في الذاكرة والذي يحفظ فيه Object  من أي نوع من الـ Class

  • Method :

هي الـ function  التي يطلب منها الـ Object  عمل ما

  • Instance variable :

جزء محدد من البيانات تنتمي إلى الـ Object

  • Encapsulation :

هو التطبيق  أو جزء من الكود الذي يكون خاصًا ومفصولاً عن الواجهة Interface

  • Polymorphism :

هي عبارة عن Object  مختلفة  لها نفس الـ Methods

  • Inheritance :

أو التوارث هو تنظيم هرمي فيه مشاركة للأكواد و للـ behaviors  فالفئة الفرعية subclass  تتوارث كل البيانات والتعاريف من الفئة الأساسية Superclass

  • Objective-C :

هي لغة مأخوذة في الأساس من الـ C  وهي لغة سهلة لكن من ناحية الـ Syntax  تقريبا مختلفة  ولا تحتاج إلى تحديد نوع للـ Object  يكتفى فقط بتعريفها على أنها id يمكن فهم ذلك أكثر في التطبيق.

الأشياء المتغيرة على اللغة من ناحية الشكل النصي Syntax  :

  • أنواع جديدة: لدينا Class ونوع آخر وهو Selectors والأخير هو الرسائل التي ترسل للـ Object
  • الـ Syntax في تعريف الــ Classes
  • الـ syntax  عند مناداة Function للـ Object

Line_thumb1

Obj مع OOP

في الـ Objective-C  الـ classes  والـ Instance  كلها عبارة عن objects  لكن الـ Class  هو عبارة عن النسخة الأساسية  التي ينشأ  منها الـ Instances وهذه صورة توضيحة:

الـClass  تقوم بتعريف Variables  والـ Methods or Behaviors عندما نعرف Instance  أو Object من الـ Class يمكننا استخدام الـ Method فقط بمناداتها أما بالنسبة Variable  فيمكن التعديل عليها فقط من خلال Setter / Getter methods .

الشكل النصي للرسائل المتبادلة (Messaging syntax)

Class and instance methods :

  • فلدينا الـ Instance  يستجيب للـ instance methods مثال عليها:

-(id) init;

-(float)height;

-(void)walk;

هذه الطرق تسأل عن الطول وتطلب من الـ Instance المشي فنلاحظ أنها كأنها تخاطب شخص بعينه

  • ولدينا الـ Class وتستجيب فقد للـ Class methods مثال عليها:

+(id)alloc;

+(id)person;

+(person *)sharedPerson;

نلاحظ هنا أن الـ Methods منها مايطلب إنشاء وتعريف ومشاركة وكلها للـ Object  التابع للـ Class وليس في تفاصيل Object نفسه

ويتم التفريق بين الطريقيتين بعلامة – قبل Instance method وعلامة +  قبل Class method

كمثال على ماشرح عندما يكون لدينا Class من نوع سيارة فـ Methods التابعة لها هي إنشاء سيارة وتعريف للسيارة ولو أنشأنا Instance فـ Methods التابعة لها نوع السيارة طولها عرضها ولونها وغير ذلك.

الشكل النصي Message :

[receiver message]

[receiver message:argument]

[receiver message:argument1 andArg:argument2]

Person *Khaled;

هنا تعريف لـ Instance  وتم تسميته خالد//

[khaled  walk];

هنا تم مناداة Method تطلب من خالد المشي //

Int theAge = [khaled age];

هنا طلب من Method أن تعلم كم عمر خالد //

[khaled setAge:23];

أما هنا فطلب تثبيت عمر خالد23 //

Line_thumb1

أنواع التعاريف للـ Objective-C :

  • التعاريف الثابتة و�لمتغيرة (Dynamic and static typing):

عندما نعرف أي Object على أنه ID  فهذا تعريف Dynamic ويمكن إعطاء الـ Object  أي قيمه وبالأصح فهنا ال Object  بلا تعريف وبلا نوع ويكون بالشكل التالي:

id myObject;

أما عندما أعرف الـ Object باسم من Class  فعندها نسمي التعريف Static ويكون بالشكل التالي:

Person *myObject;

  • النوع الثاني من التعاريف هو Null :

فأي Object قد يحمل النوع أو القيمة Null ويمكن استخدامها في اختبار قيمة Object :

If ( person == nil) return;

أو بطريقة أخرى :

If(!person) return;

ويمكن أيضا أن نساوي Object بقيمة Null :

Person = nil;

[button setTarget:nil];

  • أيضا هناك نوع آخر وهو الـ Boolean type :

لتعريف متغير على أنه Boolean فيعرف بالطريقة التالية :

BOOL  flag = NO;

ويمكن اختبار المتغير على أنه BOOL بعدة طرق:

If(flag == YES)

If(flag)

If(!flag)

If(flag != YES)

flag= YES;

flag= 1;

  • نوع يسمى Selector :

أفضل شرح هذا النوع عند التطبيق ستكون الفكرة أوضح هناك بإذن الله.

التعامل مع الـClasses

يمكن سؤال الـ Object  عن نوع الـ Class التي ينتمي لها بهذه الطريقة:

Class myClass = [myObject class];

NSLog(@”MY class is %@”,[myObject className]);

أو أيضًا يمكن اختبار الـ Object هل يتبع إلى Class عامة أو إلى Class خاصة كما في المثاليين:

if ([myObject isKindOfClass:[UIControl class]]) { // something

}

if ([myObject isMemberOfClass:[NSString class]]) { // something string specific

التعامل مع الـ Object

يمكن اختبار أن اثنين من الـ Object هم نفس الـ Object بهذا الـ Syntax :

if (object1 == object2) {

NSLog(@”Same exact object instance”);

}

لكن إذا أردت اختبار اثنين من الـ Object على أنهم مختلفين من ناحية أنهم اثنين وليس واحد ولكن متساويين في القيم:

if ([object1 isEqual: object2]) {

NSLog(@”Logically equivalent, but may

be different object instances”);

}

Line_thumb1

الـ Classes الأساسية :

  • NSObject :

هي Class أساسية تنفذ العديد من الأساسيات كـ إدارة الذاكرة ومساواة الـ Object وغيرها.

  • NSString :

تستخدم في الأغراض العامة في ترميز النصوص “Unicode”  وأيضاً تستخدم بدلاً عن استخدام char*.

لتعريف String  :

NSString *aString = @”Hello World!”;

ولطباعتها نقول

NSString *log = [NSString stringWithFormat: @”It’s  %@”, aString];

ونلاحظ هنا أننا نستخدم %@

قبل طباعة الـ String Object Value

بالنسبة للـ NSString  تحوي العديد من الـ Methods  وغيرها سنتكلم عنها بالتفصيل في الدروس القادمة بإذن الله وفي مرحلة التطبيق.

بهذا نكون قد انتهينا من درسنا الثاني نتمنى أن نراكم في الدروس القادمة.

دمتم بود 🙂

الوسوم

16 رأي على “سلسلة دروس برمجة تطبيقات الآيفون (2)”

  1. شكرا لك أختي
    عندي سؤال هل يمكن عند برمجة تطبيقات الأيفون إستبدال الأيفون بأيبود تاتش طبعا مع وجود الماك أم يجب أن يكون أيفون مع الماك ؟؟؟؟

  2. جزاك الله خيرا ووفقك لما يحبه ويرضى
    وارجو المواصلة في ترجمة الشروحات

  3. كل الشكر أختي روان ونحن معك قلبا وقالباً
    اتمنى الاستمرار واقترح بأن يكون هذا العمل على شكل كتاب مطبوع بعد المراجعة والتنقيح فستكون الفائدة عظيمة لك وللمهتمين وتكون اضافة متميزة للمكتبة العربية. جعل الله ما تقدمين في موازين اعمالك

  4. أنا أعرف إن أبل سمحت بالبرمجة باستخدام سي و سي++ .. ولكن هل جميع إمكانيات الأيفون متاحة للتفاعل مع سي++ وكذلك الاس دي كي تبع الايفون

    لأنه هناك كثير من مبرمجي السي ++ والمتمكنين سلفا من هذه اللغة

    1. نعم يمكن استخدام الـ c++ مع الـ iphone لكن لعمل احترافي أكثر يفضل استخدام الـ objective-c والفرق بين الـ c++ والـ objective-c هو فقط في الـ syntax فهي مسألة وقت وسيكون استعمالها سهلاً بإذن الله.
      ويمكن استخدام الـc++ مع الـ objective-c بتغيير صيغة ملف الـ implementation من .m إلى .mm

  5. شكرا لكم على مجهوداتكم الجبارة وأرجوا منكم أن تستعجلوا لنا في الدروس القادمة إن أمكن .. ولو يكون كل يومين درس حلو مرررررره
    بارك الله فيكم وإلى الأمام.

  6. مشكووووووووورين جدا يا رواااااان على الإبداع الكبير الي تقدميه انتي والموقع

    واتمنى الإستمرارية وعدم اليأس حتى لو لم يكن هناك متابعين كثر
    تأكدوا اننا سوف نتابعكم حتى آخر لحضه

    وشكرا مره اخرى

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *