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

هل يمكن تقسيم كود الى عدة كلاسات مرتبطة ببعضها تؤدي نفس النتيجة ؟

بدأه thesharp في 2 سبتمبر 2009 · 8 رد · 960 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الاخوة الفضلاء بارك الله فيكم

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

والكود شغال تمام ولكن حبيت اطور فيه و اغير الاسلوب

المطلوب انظر الى الكود التالي :



import java.util.Scanner;
class yourbody{

public static void main ( String[] args ){

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ـــــــــــــــــــــــــــ


float result2;
Scanner scanner = new Scanner(System.in);
System.out.print("Enter your tall : ");
float altool=scanner.nextInt();
System.out.print("Enter your weight : ");
int wazin=scanner.nextInt();


ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ــــــــــــــــــــــــــــ

altool=altool/100;
altool=(altool*altool);
result2=(wazin/altool);

ــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــ
ـــــــــــــــــــــــــــ


if ( result2 < 25)
System.out.println("wooow you are very tabetic");
else if(result2 >25)
System.out.println("wooow you are very fat");
else if (result2 ==25)
System.out.println("goooood you are nice ");
System.out.println(" your result = "+result2);
}}

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

يعني انا ابغى اسويها بكلاسين او ثلاث كلاسات

انا سويتها بكلاسين حطيت كلاس ثاني واستدعيت الكلاس الاول وطبع لي نفس الناتج ولكن من غير ما اسوي اي تعديل على الكلاس الاول

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

اتمنى ان سؤالي وضح ولكم جزيل الشكر

اتمنى من الاخوة وضع الحلول الممكنة لذلك ولكم جزيل الشكر

#2

وعليكــم السـلام ورحمة الله وبركاتـه..

لا يفضل تقسيم هذه المهام الى في كلاسات مختلفة والسبب أنها بسيطة للغاية ،، الكلاس عادة تقوم ببنائه لأنه يمثل مفهوم معين مثلا Stack/Student/Socket أو لكي تجمع عدة دوال خدمية تساعدك في أداء مهام متشابه مثلا الكلاس Math يحتوي على مجموعة من الدوال الرياضية static method ولذلك تم جمعهم في الكلاس Math . أيضا سبب أخر في بناء الكلاس هو مساعدتك في أمور كثيرة تجمعها كلها في منطقة ما Helper Class مثلا كانت لديك مهمه أخد أسماء لملفات ومن ثم فتحها وقرائتها واضافة علامة في نهايه كل ملف ، الأن يمكنك بناء كلاس يساعدك في هذه المهمه وتكون دالة البناء فيه تستقبل أسماء الملفات ، وكل ما عليك لإستخدام هذا الكلاس في الدالة الرئيسية هو انشاء كائن وتمرير أسماء الملفات وهو يتولي الباقي ..

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

والله أعلم ،،

بالتوفيق ،،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#3

السلام عليكم

مشكور اخي الكريم على الرد

ولكن الان لو طلب مني اضعها في كلاسين كيف راح يكون شكلها

من وين راح يبدا الكلاس الثاني هل اضع المين بكلاس والباقي بكلاس

او اسوي كائن من نفس الكلاس الاول؟

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

#4

عفوا للرد استاذ وجدي :happy:

لكن قد تهبط عزائم الرجل بردك وشرحك وهكذا نخسر زبون جافا مع ان الزباين تتطاير

الموضوع او الشرح الذي شرحته كبير على السؤال نوعا ما ...وهذا ما جعلني ارد ..فنحن مبتدئين نفهم على بعض :happy:

الموضوع اضنه يتعلق بمبادئ OOP وهذا هوا سؤال الاخ لا يتعدى هذه النقطة ابدا

اخي الكريم ..اذا كان استفسارك لاكتساب خبرة عن جمع classes وتنويعها وتشتيتها ثم جمعها في one classe

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

فتسطيع ذلك ببرنامجك ..

كما ذكرت انت قمت بانشاء tow classes اضن ثانيهما Main

بالتالي ايضا تستطيع ان تقوم بخلق classe خاص لعملية الادخال , classe اخر خاص بعمليات رياضية تجريها على الاطوال

classe ثالث لطرح النتيجة ,classe رابع للـ Main

لكن عليك ان تتبع اصول البرمجة من اشياء تسمى packag تجمع هذه الـ classes فيها وتسورد (import) ما تحتاجه من بعض الـ classes في classe الذي تحت حقل التجارب حاليا

وهكذا ...

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

بالتوفيق

الله معك

#5

السلام عليكم

اشكركم على مروركم

ما يحتاج packag ولا شي

لا تروح بعيد انزل لمستواي اكثر انا ابي ابسط من كذا

الان لو اعطيتك هذا الكود اللي سبق وقلت لك حطه في كلاسين ايش راح تسوي بابسط صورة؟

بس هذا اللي ابي

#6

والله يا اخي الشرح مفهوم

اجابة على سؤالك

اقوم بوضع ما يقوم به برنامجي بـ class

واقوم بوضع الــ Main بـ class Main

وانشئ objectمن class الاول في class الثاني الي هو Main

واقوم بالتنفيذ

بالتوفيق

الله معك

#7

السلام عليكم

اخي الفاضل هذا اللي انا مسويه ما فيه جديد

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

#8
اقتباس
لا يفضل تقسيم هذه المهام الى في كلاسات مختلفة والسبب أنها بسيطة للغاية ،، الكلاس عادة تقوم ببنائه لأنه يمثل مفهوم معين مثلا Stack/Student/Socket أو لكي تجمع عدة دوال خدمية تساعدك في أداء مهام متشابه مثلا الكلاس Math يحتوي على مجموعة من الدوال الرياضية static method ولذلك تم جمعهم في الكلاس Math . أيضا سبب أخر في بناء الكلاس هو مساعدتك في أمور كثيرة تجمعها كلها في منطقة ما Helper Class

من وجهة نظرى كمصمم فلنفترض انى اعمل فى مشروع كبير و يعمل على احد المهام (كتابة فئة خاصة للعمليات الحسابية) فريقين كل منهم يعمل بعيداً عن الاخر

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

ّإذاً فى هذه الحالة الافضل ان يتم فصل كل مجموعة دوال فى ملفات منفصلة تحت نفس اسم الفئة

مثال لما اقصده بالسى شارب C# عن طريق استخدام Partial Classes و هى غير مدعمة فى الجافا

  1.  
  2. public partial class Math
  3. {
  4. public Integration()
  5. {
  6. // Write Implementation Here.
  7. }
  8. }
  9. public partial class Math
  10. {
  11. public Trigonometric()
  12. {
  13. // Write Implementation Here
  14. }
  15. }
  16.  
  17.  
  18.  

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 9 سبتمبر 2009 في 15:39 — السبب: تصحيح لغوى

Technical Lead Developer

My LinkedIn Profile

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

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

#9

رائع أخ طارق

هل يمكن أن تخبرنا بالفائدة الموجودة هنا من partial

هل يمكنني أن أنادي الدوال كمجموعة واحدة أقصد باستخدام الفئة Math

بأمانة هناك نقطة غير موجودة في جافا

بالنسبة لي في جافا سأضطر أنا أفرد لكل من Integration و Trigonometric فئة خاصة بها

ولكي أستطيع استخدام الدوال الموجودة في كل منهما معاً أحتاج التوجه إلى design pattern

لكن تظل هناك مشكلة في partial لو وجدت دوال بنفس الاسم في الفئتين الجزئيتين Integration و Trigonometric

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

أجده حلاً سيئاً

هل هناك حلول أخرى لهذه المشكلة؟؟؟

تحياتي

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

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

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

728x90.png

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…