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

برنامج محول الاصدارة الأولى

مغلق
بدأه OMLX في 16 أغسطس 2005 · 17 رد · 7,684 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لطما راودني أمنية منذ أن بدأت بتعلم لغة جافا،أن أصمم برنامج مشابه لبرنامج محول القياسات التي تنتجه شركة صخر، و الذي هو في الأصل برنامج تجاري لا يمكنك استخدامه إلا بعد أن تشتري مجموعة برامج الأسرة كاملة، بالإضافة إلى أنه لا يعمل إلا على منصة ويندوز فقط، أمام نظام المفضل لينكس فتظهر الخطوط وكأنها طلاسم،، حتى جاء اليوم والذي قررت فيه أنا و الأخ زايد السعيدي بتصميم برنامج "محول" للقياسات العالمية خصيصا لأرابيان لينكس، من أهم ميزاته أنه يعمل على جميع المنصات المعروفة بسبب اعتماده على مكتبة الجافا القياسية، بالإضافة إلى ميزاته الكبرى أنه برنامج حر ، يعطيك الحرية في نسخه وتوزيعة و بيعه و التعديل فيه، وهو مجاني تحت ترخيص رخصة جنو العمومية GPL

وهذا البرنامج على بساطته يحتوي على أكثر من 300 معادلة حسابية للتحويل بين القياسات و أكثر من 3000 سطر برمجي مكتوب بالجافا وهو يتطلب مكتبة 1.5 من الجافا لتشغيله و لا يعمل على الإصدارات السابقة، وقد استخدمنا بيئة التطوير المفتوحة المصدر NetBeans الإصدارة 4.1 لتطوير البرنامج على منصة أرابيان 0.6 بيتا 3 المفضلة لدي ، آملين من الله المولى القدير أن يسهم برنامجنا هذا في نشر البرامج الحرة بين أمتنا العربية والإسلامية و أن يرفع روح الهمة لدى شبابها لينهضوا في سبيل رقيهم ، مع توفير البديل الطيب للبرامج التجارية المحتكرة ...

لتنزيل البرنامج من هنا

لتنزيل المصدر من هنا

أشياء للتطوير :

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

#2

مجهود أكثر من رائع...

تشكر عليه جزيل الشكر...

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

http://www.shbab1.com/2minutes.htm

#3

السلام عليكم

اخيى شكرا لك على هذا المجهود الاكثر من رائع...

ولكن لدي سؤال ما هي الملفات المرفقه والتي تنتهي بFIRM

زورو موقعنا

www.algabal.com

#4

هذه الملفات تستخدمها بيئة التطوير netbeans لعمل فريم

#5

البرنامج مفيد جدا،، لكن بما أنك عرضت البرنامج هنا في منتدى برمجة،، سأحاول النظر إلى الشفرة وليس البرنامج!

ترقب النقد في الشفرة!!

:)

#6

بعض الملاحظات:

1- شفرة البرنامج أخي فهد، فيها التكرار واستعمال أساليب ليست شيئية التوجه مما يزيد عليك حجم الكتابة.

2- كل تحويل برمجته في JFrame مختلف.

3- البرنامج مكون من عدة برامج ملصقة مع بعضها. لا تتعامل في ما بينها، فكل من التحويلات قد يعمل لوحده!

4- كتابة منطق البرنامج في فئة JFrame وكان عليك أن تكتب المنطق والمعادلات في مكان آخر.. (ربما أردت تطوير الJFrame فقط)

... توجد ملاحظات أخرى،، وإن أردت تحليل للبرنامج أكثر فلا تتردد..

إهداء خاص إلى فهد وزايد. أحب أن تنظرا إلى كيفية كتابة شفرة هذا البرنامج. نسخت المعادلات من برنامجكما! وأحب أن أسمع تعليقكما على الشفرة وتصميمها، أتمنى أن تستفيدوا منها!

إليكم الإصدار الثاني من برنامج المحول.

تطوير حسام الملحم

1- يتفوق الإصدار الثاني فقط في كتابة الشفرة. فهي منظمة أكثر، والشفرة لا تزيد عن 500 سطر!

2- الواجهة الرسومية في الإصدار الأول أفضل من الإصدار الثاني.

3- حجم البرنامج أصغر.

4- سهولة استعمال البرنامج مقارنة بالأول.

5- موجود بصيغة Applet

مع الشكر والتقدير لكل من زايد وفهد.

لمشاهدة البرنامج على المتصفح:

بريمج المحول على المتصفح Applet

سأحاول شرح الشفرة إن أردتم، فهي مبنية على الطريقة الشيئية أو الكائنية التوجه! أتمنى أن تتقنوها!!

حمل البرنامج والشفرة: اضغط هنا للحصول على آخر إصدار

Conversions.zip

res.zip

تم تعديل هذه المشاركة بواسطة أبومازن في 20 أغسطس 2005 في 12:52

#7

مشكور اخي ولكن هل أرفقت السورس الكود ، بحثت عنه ولم أجده ...؟؟

سأعلق على ملاحظاتك ...

تحياتي

#8

أسف أدرجت res بدل من src

سوف تجد كل شيء في صفحتي.

حمل الإصدار الأخير من البرنامج أو الشفرة من صفحتي..

http://faculty.kfupm.edu.sa/MISAC/hussam/I...nverter_Program

تم تعديل هذه المشاركة بواسطة أبومازن في 20 أغسطس 2005 في 12:50

#9

السلام عليكم ،،

أود أن أشكر الاستاذ حسام الملحم (أبو مازن) على ما قدمه لنا من إرشادات قيمة،ولي عدة تعليقات على ملاحظاته:

-كان من أهم أهدافنا لما أردنا أن نبرمج برنامج محول البساطة في كل شيء مع الأداء الجيد، البساطة في المنظر و السهولة التعامل ، للأسف الإصدارة الثانية مالت إلى التعقيد قليلا، وكنا قادرين على أن نعمل محول على نفس طراز برنامج المحول التابع لBabylon ولكن رأينا أنه معقد ليس سهل الإستخدام مثل برنامج محول التابع لشركة صخر، وثانيا يفتقر إلى ميزة إذا أراد المستخدم أن يستخدم أكثر من تحويله في المرة الواحدة مثلا أراد أن يعمل على تحويل الطول والوزن معا فهذا لا يمكن مع الإصدارة الثانية و لكنها ممكنه (وقد خصص لها) ولذلك تفهم تكرار الشفرة أكثر من مرة، وفوق ذلك يمتاز البرنامج محول الإصدارة بالسهولة و المقرؤئية أكثر من الإصدارة الثانية من ناحية التكويد، فالمعلومات أكثر سهولة في المأخذ من الإصدارة الثانية أعتقد أن لهذا دور كبير في عدم تعقيد من يقرأ الكود من بعدنا..

- البرمجة الشيئة لها ميزاتها الكثيرة، ولكن ينبغى أن لا نسرف فيها فهي تجعل الكود أكثر تعقيدا، فانظر مثلا السي والسي بلاس بلاس ، هذا رأيي، فأنا في رأيي أن نلجاء إليها فقط إذا كانت توفر لنا إيجابيات لا توفرها البرمجة غير الشيئية وهذا ينطبق فقط في حالة إنشاء كلاسات جديدة تؤدي أغراض جديدة، أما إذا كانت البرمجة عبارة عن بعض الدوال فلا أظن أنها تحتاج إلى بذل جهد كبير..

- بصراحة الإصدارة الثانية لم أفهم منها شيء كيف أمكنك اختصار أكثر من 300 معادلة إلى 123 معادلة أو أقل ،، ولاحظت أيضا أنك تستخدم وبكثرة صيغ لا تستخدمها كتب الجافا التي قرأتها من مثل:

Converter <Double,Double>converter=new Converter<Double,Double>("Time");

للأسف الكتب التي قرأتها كانت تتكلم عن جافا 1.2 و ما دونها..

ولا أخفيك سرا أن البرمجة الشيئية التي كتبت بها الإصدارة لا أتقنها إطلاقا، فأنا أعرف الوارثة و تعدد الأشكال و الكلاسات و الاصناف،، أما غيرها فلا،، فهل تتكرم وتشرح لنا كيفية فهم مثل هذه التقنيات و ما هي الكتب التي تنصح بها، فأنا في الحقيقة مبتدأ في الجافا و لا تتعدى معرفتي قراءة كتاب أو كتابين فقط ...

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

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

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

field.setDocument(new javax.swing.text.PlainDocument(){
          public void insertString(int offs, String str, javax.swing.text.AttributeSet a) throws javax.swing.text.BadLocationException{
         	 for(char c:str.toCharArray()){
            if(c<'0' || c>'9')if(c!=',' && c!='.' && c!='-')return;
         	 }
         	 super.insertString(offs, str, a);
          }
         });
#10

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

لنبدأ من البداية...

أنت تريد تصميم برنامج يقوم بالتحويلات، (التحويل من متر إلى كيلومتر والعكس) التحويل من (لتر إلى متر مكعب والعكس)، وهكذا..

ومن أهداف النظام أن تدخل له معلومة معينة فيقوم النظام بنشر جميع التحويلات: يعني لو أدخلت 4 متر، فسيعرض النظام 400 سم، و4000 ملم... وهكذا.... ولو أدخلت 100 سم لعرض لك 1 متر، و 1000 سم،، وهكذا...

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

افتح الشفرة المصدرية للإصدار الثاني, انظر إلى المجلد infraStructure ستجد المحرك ويحوي 3 ملفات رئيسية.

((التحويل من شيء إلى شيء آخر))،،، هذا هو أساس البرنامج. البرنامج يحول لنا أرقاما من نظام إلى نظام. وطبعا يستطيع عكس الآلية.

التحويل هي (معادلة أو دالة) عبارة أن أقول لك: خذ 4 متر، وتقول لي تفضل 400 سم... قد يتطور البرنامج فيم بعد ليحول بين أشياء عجيبة.. لكن يكفينا الآن أن نركز على أننا سنحول من رقم إلى رقم آخر والعكس.

public interface Formula{
public double encode(double value);
public double decode(double result);

مثلا: دالة تحويل المتر إلى سم هي

public class MeterToCentiMeter implements Formula{
public double encode(double value){
return value*100;
}
public double decode(double result){
return result/100;
}
}

وهكذا باقي الدوال.

لاحظ معي نقطة معينة،،، سنصنع دالة التحويل من (متر إلى سم) من (متر إلى ملم) من (متر إلى كم)

المتر هو المحور الأساسي،، فلن نسنع دالة للتحويل من (سم إلى كم) أو من (ملم إلى سم)

تقول لي: لكننا نريد أن نحول من (سم إلى ملم) أقول لك حسنا،، حول (سم إلى متر والمتر إلى ملم) لاحظ معي الآن وظيفة encode و decode.

على فرض أنه يوجد لدي كائنين: 1- عبارة عن محول من متر إلى سم، 2- عبارة عن محمول من متر إلى ملم:

وطبعا هما على هذا الشكل

encode وظيفتها ترجع لي قيمة سم.

decode ترجع لي قيمة متر.

إذا أردت التحويل من سم إلى ملم، إذا:

حول من سم إلى متر:

   double meter = MeterFormula.decode(value);

بعد ذلك حول الناتج من متر إلى ملم:

result = MeterFormula.encode(meter);

اتباع هذه الطريقة سيوفر الكثير من المعادلات، كما أشار أخي فهد من 300 معادلة إلى القليل من المعادلات. فنحن لن نكتب معادلة للتحويل بين الملم والسم مثلا وغيرها الكثير..

----------

البرنامج كما شاهدتموه يقوم بإعادة حساب ليس فقط من سم إلى ملم... بل يقوم بتحويل سم إلى كل الأنظمة تقريبا (متر ، ملم، كم)

كيف يفعل هذا؟ كما في الطريقة السابقة. ندخل رقم بال(سم) ليتحول بعد ذلك إلى (متر).. وبعد ذلك نحول هذه القيمة من (متر) إلى سم من جديد إضافة إلى ملم، كم ، وغيرهم....

double meter=centiMeterToMeterFormula.decode(cintiMeterValue);

double miliMeter = miliMeterToMeterFormula.encode(meter);
double km = kMeterToMeterFormula.encode(meter);
double mile=mileToMeterFormula.encode(meter);
.....
....

لاحظ معي منطق البرنامج.. لاحظ أن محور التحويلات هو المتر!! لاحظ أني تعاملت مع 3 معادلات Formula وطبعا ستزيد المعادلات كلما أردت إضافة نواتج جديدة.

#11

لتسهيل التعامل مع عدة معادلات لمجموعة معينة قمنا بصنع فئة خاصة بذلك اسمها Converter.. هذه الفئة تحوي baseValue وهو المحور الذي كنا نتحدث عنه، وبالأخص (المتر) .. Converter يأخذ عددا من Formulas للتحويل بين (المتر) وأي شيء آخر) أو بين (المتر مربع) وأي حساب مساحة أخرى)

افتح الشفرة المصدرية Converter

public class Converter{
double baseValue;//This will be in Meters

public void addFormula(Formula f){  //you can add Formula to convert Meter to Mile

}
public void setValue(String formulaName, double value){
Formula formula = // get the required formula
baseValue = formula.decode(value);
}
public double getValue(String formulaName){
Formula f = //getRequired Formula
return f.encode(baseValue);
}
}

إذا أردت إدخال 200 (سنتمتر) لتعرف التحويلات الأخرى، فاستعمل

converter.setValue("centiMeter Formula", 200);

أدرج اسم التحويل وهو طبعا تحويل سم إلى متر... ستقوم هذه الطريقة بمناداة decode من centimeter Formula، ستضع الناتج في BaseValue بالمتر.

طبعا استعمل

double mili=converter.getValue("milimeter Formula");

لتأخذ الناتج بال(ملم)... ضع اسم المعادلة التي تريد... بدورها سوف تقوم الطريقة getValue بمناداة الطريقة decode من المعادلة Formula المتعلقة بين المتر وال(ملم).. وستحول baseValue إلى الناتج بال(ملم).

ماذا نستفيد من Converter؟؟ هذه الفئة ستعطينا محورا يتأثر كل الحسابات فيه بشكل تلقائي... إذا أعطيناه 10 كلم، فستتأثر جميع القيم مباشرة (سم،ملم،ميل وغيرها)

#12

الفئتين السابقتين هما المحرك الذي سنستعمله في أي برنامج تحويل...

لكن ينقصنا الآن (المعادلات بأنواعها) أو بمعنى آخر بيانات البرنامج التي لا غنى عنها،،،

صنعنا فئة جديدة باسم ConverterFactory.. هذا علارة عن مصنع من Converter جاهزة،، حتى لا يضطر المبرمج لاحقا بضبط Converter معين... المصنع وظيفته إعطاؤنا التحويل الخاص بالأطوال مثلا.. هذا التحويل سيكون فيه (المتر، ملم، سم، كم ميل، بوصة .....الخ) هذا التحويل Converter سيتكون من عدة Formulas بالطبع...

ملاحظة: لاحظت أن جميع المعادلات عبارة عن ضرب قيمة معينة وإضافة رفم آخر، مثلا:

الناتج = القيمة * رقم أ + رقم ب

سم = متر * 100 + صفر.. encode

متر = (سم - صفر) \ 100

لاحظ معي أن أي معادلة، أحتاج فيها القيمة أ والقيمة ب

لهذا عملت فئة جديدة خفية تقوم بإنتاج Formula ببساطة جديدة لأي شيء أريده.

	private static class MyDoubleFormula implements Formula{
  String name;
  double slope;
  double cross;
  MyDoubleFormula(String name, double slope){
 	 this(name, slope, 0);
  }
  MyDoubleFormula(String name, double slope, double cross){
 	 this.name=name;
 	 this.slope=slope;
 	 this.cross=cross;
  }
  public String getName(){
 	 return name;
  }
  public Double encode(Double original){
 	 return original*slope + cross;
  }
  public Double decode(Double result){
 	 return (result-cross)/slope;
  }
	}

لاحظ معي أن هذه الفئة خاصة أو Private لن يستطيع أحد معرفة ما هي... لكنها في النهاية عبارة عن Formula الكل يستطيع التعامل معها كــ Formula..

بعد هذا نضيف أمرا مثل هذا:

	public static Converter<Double, Double> getLengthConverter(){
  Converter <Double,Double>converter=new Converter<Double,Double>("ÇáÃØæÇá");
  converter.addFormula(new MyDoubleFormula("متر", 1d));
  converter.addFormula(new MyDoubleFormula("كلم", .001d));
  converter.addFormula(new MyDoubleFormula("سم", 100d));
  converter.addFormula(new MyDoubleFormula("ملم", 1000d));
  converter.addFormula(new MyDoubleFormula("ميل", 1/1609.3));
  converter.addFormula(new MyDoubleFormula("يارد", 1/0.9144));
  converter.addFormula(new MyDoubleFormula("قدم", 1/0.3048));
  converter.addFormula(new MyDoubleFormula("بوصة", 1/0.00254));

  return converter;
	}

طبعا الآن يمكنك نشر المحرك باستعمال واجهة رسومية أو سطر أوامر أو خادم في شبكة... لاحظ معي أنك لن تكتب معادلات في فئات JFrame أو غيرها.. كل ما عليك هو إيصال كل حقل كلمات مع الذي تريد!!

أسأل الله أن يكون الشرح وافيا... وإن كانت لديكم أسئلة فاسألوا...

#13

أرجو أن تراجعوا البرنامج والشفرة ذات الإصدار الثاني المطور تطويرا بسيطا التجريبي!

الشفرة المصدرية والبرنامج التشغيلي والبرنامج على المتصفح اضغط هنا

اقتباس
وثانيا يفتقر إلى ميزة إذا أراد المستخدم أن يستخدم أكثر من تحويله في المرة الواحدة مثلا أراد أن يعمل على تحويل الطول والوزن معا فهذا لا يمكن مع الإصدارة الثانية و لكنها ممكنه (وقد خصص لها) ولذلك تفهم تكرار الشفرة أكثر من مرة،

أما الآن، نريد أن نصنع واجهة رسومية.... افتح الشفرة ConverterPanel

هذه عبارة عن JPanel تأخذ Converter ويعمل مباشرة..

كل ما عليك هو أن تستعمل الأمر

Converter converter= ConverterFactory.getLengthConverter();
JPanel panel = new ConverterPanel(converter);
JFrame frame=new JFrame("محول الأطوال");
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);

انظر إلى بساطة الموضوع،، هل تريد نوافذ أخرى؟؟ فقط قم بتغيير converter وكرر الشفرة!!

لاحظ أننا لم نكتب إلا شفرة واحدة ل JFrame واحد أوJPanel واحد.. وبعد هذا نصنع new جديد متى أردنا ذلك....

عندما انتقد الإصدار الأول، قلت أنا أن الواجهة الرسومية للإصدار الأول أفضل من الإصدار الثاني.. وعندما كنت أنتقد التصميم،، لم أكن أنتقد تصميم الواجهة الرسومية، لكنني كنت أنتقد تصميم الشفرة ذاتها. وهذا ما أصبوا إليه... لقد عدلت قليلا في البرنامج،، لاحظ أنني لم أغير الفئات والمعادلات Formula Converter ConverterFactory... ولكنني فقط أعدل في النوافذ وأغير بسهولة وسرعة ليس لها نظير!!

افرض مثلا أني أريد أن أضيف معادلة جديدة تحول بين السنة الضوئية وهي من الأطوال؟ ماذا ستفعل؟؟

في الإصدار الأول: ستذهب إلى 8 دوال مختلفة وتضيف معادلة التحويل بين كل من متر ، سم ، ملم إلى سنة ضوئية،، أضف إلى ذلك دالة تاسعة خاصة بتغيير السنة الضوئية إلى كل من الأطوال الأخرى... لا تنس أنك ستحتاج إلى إضافة صندوق نص جديد، وقد تغير موقعه ومواقع الحقول الأخرى!!

أما في الإصدار الثاني: أضف في فئة ConverterFactory في الطريقة getLengthConverter() الأمر

  converter.addFormula(new MyDoubleFormula("سنة ضوئية", قيمة التحويل));

فقط............. وسيقوم هذا بكل شيء!! الفئة ConverterPanel ستأخذ Converter وتقرأ منها جميع المعادلات، وكل معادلة ستنشئ لها ذاتيا حقل نصي جاهز للاستعمال!! كل هذا بجملة واحدة! ليس هذا فقط،، حتى البريمج لا أغير فيه شيئا!! وهكذا....

لا أنكر أن هذه تحتاج إلى تدريب، والبرمجة الشيئية التوجه تحتاج إلى التدرب والقراءة،،،

إذا أعجبكم هذا الشرح، وأردتم الاستفادة القصوى، خذ الشفرة وادرسها،، طبقها على واجهة رسومية مختلفة، وانظر إلى سرعة إنتاجيتك... أسأل الله أن يزيدنا قوة في هذا العلم وباقي العلوم!

أتمنى أن تواصل المسير أخي فهد وباقي الأعضاء،، يكفيك فخرا أنك صاحب أول خطوة في إنتاج برامج متنوعة تعمل على مختلف المنصات باللغة العربية!!!

الله يوفقك ويبارك فيك!

#14
اقتباس
ولاحظت أيضا أنك تستخدم وبكثرة صيغ لا تستخدمها كتب الجافا التي قرأتها من مثل:

Converter <Double,Double>converter=new Converter<Double,Double>("Time");

أخي فهد،، إذا كنت لا تستخدم إمكانيات جافا 5 أو 1,5 مثل Genirics أو الأجناس... ومثل for each أو مثل الصندقة AutoBoxing وغيرها وغيرها... فلماذا تجعل برامجك تحتاج إلى منصة جافا 5....

اذهب إذا بيئة التطوير ولتكن Netbeans واختر أن يتم ترجمة برنامجك ليعمل على منصة 1،3 على الأقل،، وبهذا سيعمل برنامج على الأجهزة التي فيها 1,3 وما فوق، وبهذا سوقك سيكون أكبر.

إلا إذا كنت ستستخدم Generics والأشياء الأخرى المتوفرة فقط في Java 5. وقد لاحظت أنك لا تستخدمها،،،

أنا أترجم المشاريع التي لا أحتاج فيها إلى هذه الإمكانيات إلى 1،3 في الغالب... وأستطيع أن أجعل برنامج الكاتب بدون Generics التي رأيتها مثل <Double, Double>

عموما،، لا تستعجل،، فلن تحتاج إلى هذه الإمكانيات إذا كنت لم تتقن البرمجة الشيئية بعد... اقرأ الكتاب Thinking in Java المجاني ، فهو رائع،، وأكمل عمل البرامج الجديدة،، فعمل المشاريع أفضل من يعلمك كتابة أفضل الشفرات.. فأنا لم أتعلم في يوم وليلة،، لكن كثرة كتابتي ساعدتني كثيرا!!

نصيحة أخيرة إذا كنت لم تتقن بعد البرمجة الشيئية التوجه: لا تستعمل بيئة تطوير رسومية!! لا تستعمل بيئة تطوير رسومية!! لا تستعمل بيئة تطوير رسومية!! حتى تتمكن من البرمجة ببيئة تطوير عادية.. وخاصة البرمجة الشيئية التوجه!!

الإصدار الثاني صنعته بمساعدة JCreator!!

أتمنى لك التوفيق،، وإن أردت أي مساعدة أو أسئلة فنحن في الخدمة،، واستمر في التطوير!!!

تم تعديل هذه المشاركة بواسطة أبومازن في 20 أغسطس 2005 في 12:22

#15
اقتباس
استفدت من الكود كيفية عمل مرشح للنصوص كنت لم أفهمه من قبل ، فشكرا لك ..

لقد استخدمت مرشح النصوص أيضا في برنامج الكاتب الإصدار الثاني! فهو الذي يرشح اللغة الانجليزية ويقلبها عربية!

حمل الشفرة من هنا

http://faculty.kfupm.edu.sa/MISAC/hussam/I...l-Kateb_Program

واقرأ شفرة الفئة LanguageFilterDocument

بالنسبة لل Generics لقد تكلم عنها المهندس محمد حسام الدين هنا

/index.php?showtopic=73178

وهذا هو الجزء الثاني

/index.php?showtopic=73212

هي بال VB.Net لكن ربما تفهمها فهي تعمل بنفس المبدأ..

تم تعديل هذه المشاركة بواسطة أبومازن في 20 أغسطس 2005 في 13:34

#16

لا أعرف كيف أشكرك أخي و أستاذي حسام ،، على هذا الشرح الرائع ،،،

وقد أقنعتني بالبرمجة الشيئية ، ولقد رايت بنفسي السهولة التي تجنيها منها،،، ولكن بعد دواخت راس :blink:

ساحاول أن أقرا الكتاب Thinking in Java الجميع ينصحون به لا أدري ما السر فيه ؟؟؟

و أنا الآن أفكر في مشروع جديد سيعجبك جدا ،، بإذن الله تعالى ولكن حتى اتقن البرمجة الشيئية سيتأخر قليلا ...

سأحاول أن أراسلك على بريدك الإلكتروني حتى أستفيد من خبراتك في هذا المجال

و إلى اللقاء...

#17

حياك الله أخوي في أي وقت... وأتمنى من الله لك التفوق والإبداع!!

#18

مشكورين أخوتي الأعزاء .... و خاصة للأخ فهد السعيدي على جهده الرائع و الى الأخ أبو مازن على المتابعة الجيدة

مدونتي

http://mbnoimi.net

هذا الموضوع مغلق.

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