الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الفرق بين Abstract وinterface وorchestrating Class

بدأه التميمية في 5 ديسمبر 2009 · 28 رد · 3,732 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

حاليا أتلقى أساسيات البرمجة الشيئة واطبقها على برنامج البلو جي

وعندي لخبطة في مفهوم المصطلحات

interface in java

orchestrating class & instance

abstract class

مع شكري

** أرجو أن يكون الشرح بالعربية

#2

يمكن القول أن 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

1
#3

أشكرك جزيل الشكر

طيب ما الفرق بين polymorphism

والoverloading

أليس كل واحد منهم يعني أن methoodأو variable(بالنسبة لoverloading ) ممكن أن يكون له أكثر من معنى في نفس classيعني أن variableيخصص له قيمة معينة لكل action والmethod تظل بنفس اسمها مع اختلاف argument؟

مع شكري ثانية

تم تعديل هذه المشاركة بواسطة التميمية في 5 ديسمبر 2009 في 19:03

#4

لو ممكن تكتبي الكلمات الإنجليزية بالحروف اللاتينية لأنه يصعب فهم كلامك.

بالنسبة لفرق بين ال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

1
#5

ماهو orchestrating class؟

تحياتي

1
حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#6

ما أدري كيف أشكرك كلامك جدا سهل وواضح

لو تكرمت بتوضيح المصطلحين الباقيين

إذا ما عليك كلافة ولا تعب

#7
علاء الصالحي كتب:

ماهو orchestrating class؟

تحياتي

هذا المصطلح جاء في سياق

coordinating sequences of actions

#8

بالنسبة لل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");
	};
}
1
#9

شكرا شكرا

بالنسبة المصطلح الاخير حسب فهمي انه الكلاس التنظيمي بس ما فهمت عمله بالضبط

#10
اقتباس
ماهو orchestrating class؟

تحياتي

بحثت عنها و يبدو انها tool والله اعلم تتحدث عن اسلوب تنظيم عمل الكلاسات و الاستدعاء خلال ال java runtime

#11

orchestrating

كترجمة لهذا المصطلح هو مر معي بمعنى (اوركسترا) اي الفرقة الموسيقية او التناغم و ترتيب الظهور للفرقة الموسيقية ...

و المقصود الكلاس التناغمي او التنظيمي كما اشارت الاخت التميمة ...

المصطلح مر معي في J2EE عند الحديث عن تنظيم ترتيب استخدام الـ web services بمعنى من تنفذ اولاً و من التي تلي ...

اعتقد هنا ان orchestrating class سوف يكون الكلاس الذي ينظيم استخدام و إستدعاء الكلاسات الاخرى للمشروع ...

و هذا فقط إجتهاد مني .. :)

بالتوفيق

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#12

طيب شوفوا هالنص لو في احد ممكن يوضح لنا :

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

#13

وهذا أيضا

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.

#14

ما الموضوع الذي تقرئين عنه بالضبط

هل هناك كتاب معين لو كان هناك واحد ما اسم الكتاب

هذا يسهل علينا الفهم بشكل أكبر

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#15
بنت اليمن كتب:

اعتقد هنا ان orchestrating class سوف يكون الكلاس الذي ينظيم استخدام و إستدعاء الكلاسات الاخرى للمشروع ...

+1

بحثت في google قليلا لكن لم أجد شيئا مفيدا، لو كان عندك مثال مصاحب للكتاب أو المقال سيكون أفضل

#16
علاء الصالحي كتب:

ما الموضوع الذي تقرئين عنه بالضبط

هل هناك كتاب معين لو كان هناك واحد ما اسم الكتاب

هذا يسهل علينا الفهم بشكل أكبر

تحياتي

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

وهو مقرر

ويعتمد التعلم الذاتي

هو سهل لكن المشكلة في أن اللغة عندي ليست قوية بحيث أفهم كل ما أقرأ

وقد اقتبست منه ما وضعته لكم

#17

ما اسم الكتاب وفي أي مجال بالتحديد (برمجة design pattern ...)؟

وما الموضوع الذي أدرج تحته الكتاب orchestrating classmoz-screenshot.jpg

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#18

الكتاب اسمه OOP with Jave

تحت فصل Code Design and Class method

وتحت موضوع داخلي اسمه

Coordinating sequences of actions

وتحت عنوان جانبي

orchestrating behaiviour

بالمناسبة أنا أتساءل الآن عن الفرق بين الابستراكت والانترفيس

كلاهما نفس الطريقة الفرق أراه في

implements & interface

في الانترفيس كلاس

و

abstract في الابستراكت

وكلاهما الميثود فيهما دون تعريف إعلان فقط

فكيف أفرق

#19

في الinterface كل الميثود تكون معلنة فقط بدون كود داخلها

الabstract class يمكن أن تحتوي على ميثود عادية إلى جانب الميثود abstract

#20

ممتاز هل فيها 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

#21

نعم توجد الوراثة بين الinterface، يعني ممكن interface ترث من interface أخرى

recursive function تعني أن هذه الfunction تقوم بالمناداة على نفسها

تم تعديل هذه المشاركة بواسطة herch في 6 ديسمبر 2009 في 21:20

#22

طيب ممكن شرح المصطلح مطبقا على المثال مثل شرحك السابق حاولت افككها ما عرفت

#23

هذه مقالات كنت كتبتها عن المواضيع

الواجهات interfaces

الفئة ناقصة الأهلية(المجردة)

التعددية polymorphism

بالنسبة لموضوع Orchestration Class فلم أجد من يتكلم عنه

لو لديك نسخة إلكترونية من هذا الكتاب شاركينا فيها

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#24

سلام

herch كتب:

في الinterface كل الميثود تكون معلنة فقط بدون كود داخلها

الabstract class يمكن أن تحتوي على ميثود عادية إلى جانب الميثود abstract

بالنسبة للفرق بين ال

abstract classes and interfaces

lموضوع له ابعاد كثيرة

الينك هذا ممكن يوضح المقصود

http://mindprod.com/jgloss/interfacevsabstract.html

#25
اقتباس

Orchestrating class

من مجمل الحديث يبدو انك تتحدثين عن ال Command Pattern و عن العلاقة بين ال Invoker و ال Receiver

و يبدو ان الكتاب لم يذكرها صراحة و انما تحدث عن ال Participants فى هذا النمط

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 27 مايو 2010 في 13:01

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

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