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

سؤال في الواجهات

بدأه vector_ever في 3 مايو 2011 · 8 رد · 653 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أخواني الاكارم قد شارفت على النهاية في مشروعي ولكن لدي مشكلة اخيرة وذلك لدى عمل الواجهة كي يتعامل معها المستخدم

قد اتممت كتابة الكود لكل اجزاء البرنامج ولكن ما استعصى علي لقلة خبرتي(واملي كبيرة بمساعدة الاخوة) ساشرحه كما يلي.

حاليا لدي كود مؤلف من عدد من الـ classes لكن ما يهمني هو class Input (الفئة المسؤولة عن البيانات الاولية المدخلة) والـ class Main طبعا الفئة الرئيسية التي ستقوم بالتشغيل

post-152477-097606300 1304379837_thumb.j

طبعا الـ class Inpu تأخذ البيانات من ملف اكسل

الذي حصل هو أنه صار مطلوب مني أن اقوم بعمل اضافةتسمح المستخدم قادرا على اضافة البيانات المدخلة بشكل يدوي

post-152477-039008000 1304379974_thumb.j

كما واضح بالشكل عند الضغط على الزر الاول browse سنقوم بالبحث عن ملف الاكسل وتحميله كي تتم قراءة البيانات منه

الزر الثاني المفروض عند الضغط عليه ان اكون قادرا على ادخال البيانات يدويا ( الكود الخاص بذلك جاهز ولا مشكلة به)

المشكلة هي انه كيف ساقوم بعمل ذلك

هل ساقوم بعمل فئة جديدة للكود المسؤول عن الادخال اليدوي ام انه سيتم التعديل على الـ class Input ؟

وفي كلا الحالتين كيف أقوم بذلك

يرجى الأخذ بالحسبان انه البيانات المدخلة سيتم استخدامها من فئات اخرى لعمل حسابات معينة

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

وشكرا

Input.java

Main.java

المرفقات
2 classes.jpginput.jpg

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#2

اين المكتبه xls

albert_einstein.jpg

Untitled-AE.jpg
#3
pro.fahd كتب:

اين المكتبه xls

تفضل أخي المكتبة بالمرفقات

jxl.jar

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#4

يا أخى ...

يوجد مبدا إسمه Single Responsibility principle و مرتبط بيه ال Cohesion.. و Coupling..

حاول أن تجعل لكل فئة مسئوليه واحده فقط ... و بذلك يكون الترابط (Cohesion) بين مكونات الفئه من الدرجه العاليه ...

قم بالقراءه في الروابط بالأعلى .. سوف تفيدك جدا ..

1
#5
هويدي كتب:

يا أخى ...

يوجد مبدا إسمه Single Responsibility principle و مرتبط بيه ال Cohesion.. و Coupling..

حاول أن تجعل لكل فئة مسئوليه واحده فقط ... و بذلك يكون الترابط (Cohesion) بين مكونات الفئه من الدرجه العاليه ...

قم بالقراءه في الروابط بالأعلى .. سوف تفيدك جدا ..

شكرا لردك اخي

هو بالاساس لدي كل فئة لديها فقط مهمة واحدة ولكني كما قمت بالشرح في سؤالي صار مطلوب مني طريقة لأخرى لادخال البيانات

وهذا لا يعني انه صار للفئة اكتر من مهمة فتبقى المهمة هي المسؤولية عن ادخال البيانات

وحتى اذا صار اكتر من مهمة او أي تداخل كان سؤالي اذا امكن انه اعمل فئة اخرى

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#6
اقتباس

هل ساقوم بعمل فئة جديدة للكود المسؤول عن الادخال اليدوي ام انه سيتم التعديل على الـ class Input ؟

وفي كلا الحالتين كيف أقوم بذلك

يرجى الأخذ بالحسبان انه البيانات المدخلة سيتم استخدامها من فئات اخرى لعمل حسابات معينة

قم بعمل فئة جديدة للادخال اليدوى وترسل البيانات الى الفئات الاخرى التى تستخدمها فى عمليات حسابية

واكمل البرنامج بصورة طبيعية

بالتوفيق


﴿وَمَا كَانَ اللَّهُ لِيُعَذِّبَهُمْ وَأَنْتَ فِيهِمْ ۚ وَمَا كَانَ اللَّهُ مُعَذِّبَهُمْ وَهُمْ يَسْتَغْفِرُونَ﴾

الأنفال ۳۳                                  
 

#7
MOHAMED FATHEI كتب:

قم بعمل فئة جديدة للادخال اليدوى وترسل البيانات الى الفئات الاخرى التى تستخدمها فى عمليات حسابية

واكمل البرنامج بصورة طبيعية

بالتوفيق

حسنا اخي بسيطة بس المشكلة انه باقي الفئات تتعامل مع الفئة input بشكل مباشر

طيب لو عملت فئة جديدة (طبعا باسم جديد) كيف سيتم التعامل مع باقي الفئات

يعني كيف باقي الفئات ستعرف مع من تتعامل

لا ادري ان كانت الفكرة قد وصلتك؟

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


#8

لم تصل الفكره كامله ..

لكن ..

إجعل Input تتعامل مع باقى الفئات كما هى ....

و كذلك تتعامل مع الفئه الجديده..

و إستخدم ال Composition+Delegation لإرسال الطلبات من Input للفئة الجديده..

فمثلا لو كانت الفئة الجديده إسمها ManualInput ... و شكلها هو التالي:

class ManualInput
{
	void getValuesFromTextBoxes()
	{

	}

	void processValues()
	{

	}
}

قم بتغير الفئة Input و اضف التالى:

class Input
{
	private ManualInput manualInputDelegate = new ManualInput();

	void getValuesFromTextBoxes()
	{
		this.manualInputDelegate.getValuesFromTextBoxes();
	}

	String processValues()
	{
		return this.manualInputDelegate.processValues();
	}

	// other code here...
}

و بالتالى قمت بفصل ال business الجديد في فئة وحدها ... و حافظت على كون ال Input هو الواجهه الوحيده التى يتعامل معها باقى فئات النظام..

1
#9

شكرا أخي هويدي على ردك بس لم اتدارك كل النقاط لانه يمكن الكود متداخل بين اكثر من كلاس وتبقى النقطة الرئيسية يعني حتى من بعد ما عدلت بالكود متل ما حضرتك كتبت بردك الاخير

فكيف سيكون الكلاس الجديد هو المسؤول عن الادخال وليس الكلاس القديم

على كل حال سأضع بالمرفقات الكود كاملا دون أي تعديل عليهم طبعا قمت ياضافة الكلاس ManualInput لكن لم تتم اضافته للـ main class لذلك لا عمل له حتى الآن وما أرجو هو كيفية عمل التعديل بين الكواد الكلاسات الثلاثة ManualInput و الـ Input والـ Main وكما اشرت في أول الموضوع انه اريد عمل فريم فيه زرين الاول عند الضغط عليه استطيع اختيار ملف الاكسل وقراءة البيانات منها

والزر الثاني عند الضغط عليه استطيع ادخال البيانات بشكل يدوي

وهذا ما اريد فعله

طبعا الفريم لم اقم ببنائه لاني حتى هذه اللحظة لا اعرف اين ساضعه وكيف ساوزع احداث الضغط على الازرار بين الكلاسين المختلفين

فهل الآن الصورة أصبحت واضحة وكاملة

أرجو المساعدة وشكرا

code.rar

إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً         فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ


 


 


رسم المخططات البيانية بواسطة الجافا


 


كتاب تحليل وتصميم نظم المعلومات


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