السلام عليكم
حاليا أتلقى أساسيات البرمجة الشيئة واطبقها على برنامج البلو جي
وعندي لخبطة في مفهوم المصطلحات
interface in java
orchestrating class & instance
abstract class
مع شكري
** أرجو أن يكون الشرح بالعربية
السلام عليكم
حاليا أتلقى أساسيات البرمجة الشيئة واطبقها على برنامج البلو جي
وعندي لخبطة في مفهوم المصطلحات
interface in java
orchestrating class & instance
abstract class
مع شكري
** أرجو أن يكون الشرح بالعربية
يمكن القول أن interface هي بمثابة العقد الذي يربط مجموعة من الكلاسات، وكل كلاس تريد أن تنتمي إلى هذه المجموعة يجب أن تطبق هذا العقد. وتفيدنا هذه المسألة في عملية الpolymorphism
مثلا لدينا الinterface Car والتي تمثل مجموعة السيارات
public interface Car {
public void whoAmI();
public void maxSpeed();
}هذا هو العقد، وكل كلاس تريد الإنتماء مجموعة السيارات يجب أن تطبقه.
مثلا
public class BMW implements Car {
public void whoAmI() {
System.out.println("I am a BMW");
}
public void maxSpeed() {
System.out.println("I run like the wind");
}
}public class Mercedes implements Car{
public void whoAmI() {
System.out.println("I am a Mercedes");
}
public void maxSpeed() {
System.out.println("I am as fast as the thunder");
}
}public class Renault implements Car {
public void whoAmI() {
System.out.println("I am a Renault");
}
public void maxSpeed() {
System.out.println("I am as fast as a turtle");
}
}كل هذه الكلاسات تطبق عقد الinterface Car، لكنها كل واحدة تطبقه بطريقة مختلفة
الآن ما تطبيق ذلك في الpolymorphisme؟
هذا مثال يعطي تطبيقا باستعمال الكلاسات التي كتبنا
public class TestPoly {
public static void main(String[] args) {
Car[] cars = new Car[3];
cars[0] = new BMW();
cars[1] = new Mercedes();
cars[2] = new Renault();
for (int i = 0; i < cars.length; i++) {
cars.whoAmI();
}
}
}بما أن كل هذه الكلاسات تنتمي لمجموعة لسيارات، فيمكننا تخزينها في مصفوفة من صنف Car
أشكرك جزيل الشكر
طيب ما الفرق بين polymorphism
والoverloading
أليس كل واحد منهم يعني أن methoodأو variable(بالنسبة لoverloading ) ممكن أن يكون له أكثر من معنى في نفس classيعني أن variableيخصص له قيمة معينة لكل action والmethod تظل بنفس اسمها مع اختلاف argument؟
مع شكري ثانية
تم تعديل هذه المشاركة بواسطة التميمية في 5 ديسمبر 2009 في 19:03
لو ممكن تكتبي الكلمات الإنجليزية بالحروف اللاتينية لأنه يصعب فهم كلامك.
بالنسبة لفرق بين الpolymorphism والoverloading، فالأول يسمح بأن يكون لنفس الميثود تصرفات مختلفة، مثلا في المثال السابق
for (int i = 0; i < cars.length; i++) {
cars.whoAmI();
}قمنا بالمناداة على نفس الميثود، لكن النتائج كانت مختلفة
I am a BMW
I am a Mercedes
I am a Renault
أما الoverloading فهو كتابة methods لها نفس الإسم لكنها تختلف في عدد الarguments أو صنفها، وبالتالي فكل method مستقلة عن الأخرى، مثلا
public class Calculator {
public int add(int a, int b) {
return a+b;
}
public int add(int a, int b, int c) {
return a+b+c;
}
public float add(float a, float b) {
return a+b;
}
}الmethod الأولى تنتظر 2 arguments من صنف int والثانية تنتظر 3 arguments من صنف int بينما الثالثة تنتظر 2 arguments من صنف float
تم تعديل هذه المشاركة بواسطة herch في 5 ديسمبر 2009 في 18:56
ما أدري كيف أشكرك كلامك جدا سهل وواضح
لو تكرمت بتوضيح المصطلحين الباقيين
إذا ما عليك كلافة ولا تعب
علاء الصالحي كتب:ماهو orchestrating class؟
تحياتي
هذا المصطلح جاء في سياق
coordinating sequences of actions
بالنسبة للorchestrating Class فليست لدي أدنى فكرة
بالنسبة لabstract class فهي كلاس عادية لكنها تحتوي على abstract method، ولا يمكن عمل instance لهذه الكلاس.
ما الفرق بين abstract method وmethod عادية؟
الفرق هو أن الabstract method تكون خالية، أي أنها لا تحتوي على كود
public abstract void aMethod();
هذا يعني أن اي كلاس ترث من الabstract class يجب أن تعرف هذه الabstract method، أي أن تضع بعض الكود داخل الميثود.
لماذا سنترك ميثود فارغة؟
الأمر له علاقة بالوراثة. مثلا لدينا كلاس أم تجمع الخصائص والتصرفات العامة، نفترض مثلا الكلاس Animal
public abstract class Animal {
String color;
int age;
//....
public void walk() {
System.out.println("I am walking");
}
public void run() {
System.out.println("I am running");
}
public void eat() {
System.out.println("I am eating");
}
public abstract void talk() {};
}لماذا الميثود talk جعلناها abstract؟ لأننا لا نعرف ماذا يجب أن نضع داخلها، فلا يوجد صوت موحد للحيوانات، فكل حيوان له صوت محدد، لذلك جعلناها abstract، وبالتالي فيجب على كل كلاس ترث من Animal أن تعرف هذه الميثود
public class Dog extends Animal {
public void talk() {
System.out.println("Ouaf ... Ouaf");
};
}public class Cat extends Animal {
public void talk() {
System.out.println("Miao ... Miao");
};
}شكرا شكرا
بالنسبة المصطلح الاخير حسب فهمي انه الكلاس التنظيمي بس ما فهمت عمله بالضبط
اقتباسماهو orchestrating class؟تحياتي
بحثت عنها و يبدو انها tool والله اعلم تتحدث عن اسلوب تنظيم عمل الكلاسات و الاستدعاء خلال ال java runtime
orchestrating
كترجمة لهذا المصطلح هو مر معي بمعنى (اوركسترا) اي الفرقة الموسيقية او التناغم و ترتيب الظهور للفرقة الموسيقية ...
و المقصود الكلاس التناغمي او التنظيمي كما اشارت الاخت التميمة ...
المصطلح مر معي في J2EE عند الحديث عن تنظيم ترتيب استخدام الـ web services بمعنى من تنفذ اولاً و من التي تلي ...
اعتقد هنا ان orchestrating class سوف يكون الكلاس الذي ينظيم استخدام و إستدعاء الكلاسات الاخرى للمشروع ...
و هذا فقط إجتهاد مني .. :)
بالتوفيق
لا اله الا الله .. محمد رسول الله
(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)
يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين
طيب شوفوا هالنص لو في احد ممكن يوضح لنا :
There are several ways where work can be done in O.O. Programs as described in previous sections. Now to make any program readable and easy to maintain, you need to structure the actions, statements of the code using the below approaches:
1. The simplest approach is to write a complex sequence of actions as a single method.
2. Organise a complex sequence of actions as two or more methods. This is to improve clarity and remove duplications.
3. Distribute complex actions over appropriate classes. This is used in case when complex sequence of actions involves objects of more than one class. (i.e. MetOffice, WeatherFrog, Daisy classes, the MetOffice send messages to other classes and do not care about how objects of these classes will reach according to changing the weather.)
4. Coordinate actions by identifying and using a missing class. Where a new class is defined to handle the organization of a sequence of actions. The coordinator is known as Orchestrating class and is needed to tie together the different parts of a complicated interaction that does not seem belong to any single one of objects obviously involved. (i.e. organizing more than one frog do dance movements, so the coordinator will say which sequences to do in turn without the need for a dancer to know anything about any other object.)
تم تعديل هذه المشاركة بواسطة التميمية في 5 ديسمبر 2009 في 20:39
وهذا أيضا
An orchestrating instance which is an object of orchestrating class is often the sole instance of a class which models the way in which other objects can be coordinated. The roles of this instance are:
• Coordinating the interaction between objects under its supervision by sending the appropriate messages to them
• It must encode one or more sequences of interactions between participating objects in one or more methods.
ما الموضوع الذي تقرئين عنه بالضبط
هل هناك كتاب معين لو كان هناك واحد ما اسم الكتاب
هذا يسهل علينا الفهم بشكل أكبر
تحياتي
بنت اليمن كتب:اعتقد هنا ان orchestrating class سوف يكون الكلاس الذي ينظيم استخدام و إستدعاء الكلاسات الاخرى للمشروع ...
+1
بحثت في google قليلا لكن لم أجد شيئا مفيدا، لو كان عندك مثال مصاحب للكتاب أو المقال سيكون أفضل
علاء الصالحي كتب:ما الموضوع الذي تقرئين عنه بالضبط
هل هناك كتاب معين لو كان هناك واحد ما اسم الكتاب
هذا يسهل علينا الفهم بشكل أكبر
تحياتي
الكتاب هو كتاب أكاديمي أجنبي من الجامعة المفتوحة ببريطانيا
وهو مقرر
ويعتمد التعلم الذاتي
هو سهل لكن المشكلة في أن اللغة عندي ليست قوية بحيث أفهم كل ما أقرأ
وقد اقتبست منه ما وضعته لكم
ما اسم الكتاب وفي أي مجال بالتحديد (برمجة design pattern ...)؟
وما الموضوع الذي أدرج تحته الكتاب orchestrating class
تحياتي
الكتاب اسمه OOP with Jave
تحت فصل Code Design and Class method
وتحت موضوع داخلي اسمه
Coordinating sequences of actions
وتحت عنوان جانبي
orchestrating behaiviour
بالمناسبة أنا أتساءل الآن عن الفرق بين الابستراكت والانترفيس
كلاهما نفس الطريقة الفرق أراه في
implements & interface
في الانترفيس كلاس
و
abstract في الابستراكت
وكلاهما الميثود فيهما دون تعريف إعلان فقط
فكيف أفرق
في الinterface كل الميثود تكون معلنة فقط بدون كود داخلها
الabstract class يمكن أن تحتوي على ميثود عادية إلى جانب الميثود abstract
ممتاز هل فيها inhiret الانترفيس؟ مثل الابستراكت وعندي سؤال ثاني لو ما عليك كلافة
static int x(int n)
{
if(n ==1)
return 1;
else
return n + x(n-1)
}ما قيمة الX وفقا لـ recursive function ما فهمتها صراحة
تم تعديل هذه المشاركة بواسطة herch في 6 ديسمبر 2009 في 21:22
نعم توجد الوراثة بين الinterface، يعني ممكن interface ترث من interface أخرى
recursive function تعني أن هذه الfunction تقوم بالمناداة على نفسها
تم تعديل هذه المشاركة بواسطة herch في 6 ديسمبر 2009 في 21:20
طيب ممكن شرح المصطلح مطبقا على المثال مثل شرحك السابق حاولت افككها ما عرفت
هذه مقالات كنت كتبتها عن المواضيع
بالنسبة لموضوع Orchestration Class فلم أجد من يتكلم عنه
لو لديك نسخة إلكترونية من هذا الكتاب شاركينا فيها
تحياتي
سلام
herch كتب:في الinterface كل الميثود تكون معلنة فقط بدون كود داخلها
الabstract class يمكن أن تحتوي على ميثود عادية إلى جانب الميثود abstract
بالنسبة للفرق بين ال
abstract classes and interfaces
lموضوع له ابعاد كثيرة
الينك هذا ممكن يوضح المقصود
اقتباسOrchestrating class
من مجمل الحديث يبدو انك تتحدثين عن ال Command Pattern و عن العلاقة بين ال Invoker و ال Receiver
و يبدو ان الكتاب لم يذكرها صراحة و انما تحدث عن ال Participants فى هذا النمط
تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 27 مايو 2010 في 13:01
Technical Lead Developer
اللهم قنى شر الجهل و الجهلاء
( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}