الاثنين، 25 أكتوبر 2010

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

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

Link to عالم آبل

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

Posted: 25 Oct 2010 09:00 AM PDT

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  وغيرها سنتكلم عنها بالتفصيل في الدروس القادمة بإذن الله وفي مرحلة التطبيق.

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

دمتم بود :)

مواضيع مشابهة:


VLC : متوفر الأن للآيفون

Posted: 25 Oct 2010 07:40 AM PDT

المشغل العملاق VLC media player متاحاً للآيفون بعد ما كان مخصص للآيباد فقط، وكان هناك استعراض قبل عدة ايام لبرنامج الـ VLC وهاهو اليوم يصدر للآيفون.

المواصفات الجديدة :

  • متاح للايفون 4 ,و3Gs.
  • اصبح بلامكان حذف الملفات من الايفون.
  • يتميز بالسرعة.
  • اصبح البرنامج شامل Universal اي يعني نسخة واحده للآيباد وللآيفون

بإمكانك تحميل البرنامج بشكل مباشر من متجر البرامج :

مواضيع مشابهة:


آي موفي 11 : تصدير الأفلام بدقة 1080p

Posted: 24 Oct 2010 12:00 PM PDT

أصبح بإمكان مستخدمين الآي موفي 11 الجديد بتصدير افلامهم لليوتيوب بدقة 1080p مباشرة من البرنامج بعدها كانت في الآي موفي 09 بدقة 720p فقط.

خيار جيد لمن يريد الدقة الأعلى عن خيار 720p لتصدير الأفلام لليوتيوب.

المصدر.

مواضيع مشابهة:


جوبز: لن يكون هناك خيار بين كتم الصوت او قفل الشاشة في الايباد

Posted: 24 Oct 2010 11:19 AM PDT

orientation

في شهر يناير 2010 أعلنت ابل ان زر كتم الصوت لن يكون كما في الايفون , وقبل اطلاق اي باد في شهر مارس , كشفت ابل ان زر كتم الصوت تحول الى قفل الشاشة (Orientation-lock) , والان مع نظام التشغيل iOS 4.2 للاي باد , قامت ابل بتحويل هذا الزر الى كتم الصوة فقط , وكما نعرف انه يكمن قفل الشاشة عن طريق تعدد المهام .

واذا كانت ابل قادرة على تحويل هذا الزر فاذن يمكن لآبل ان تقوم باضافة خيار للمستخدم بالاختيار بين هذين الخيارين .

قام شخص اسمه روبرت , بأرسال ايميل لستيف جوبز يسأله :

هل في نظام iOS 4.2 للاي باد سيتحول زر قفل الشاشة الى كتم الصوت.

أجاب جوبز :

نعم.

ثم قام روبرت بسوال :

هل ستقوم بأضافة خاصية الاختيار للمستخدم.

اجاب جوبز :

لا.

اذن زر قفل الشاشة لن يصبح زر قفل الشاشة بعد الان، حسب ستيف جوبز.

المصدر.

مواضيع مشابهة: