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

للمبرمجين: الدرس الثاني: برمجة وبناء Classes وإنشاء Objects

مغلق
بدأه حسام الملحم في 18 مارس 2002 · 6 رد · 5,076 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

هذا هو الدرس الثاني للمبرمجين:

الرجاء الاطلاع على

الفهرس العام لدروس جافا للمبتدئين والمحترفين لمعرفة كيفية تصفح هذه الدروس.

بناء أول برنامج يستخدم ما تعلمناه في الجزء الأول: ماهو الـ Object؟ الدرس الأول تعريف الـObject ومكوناته و عملياته

الهدف من البرنامج: استخدام Objects نصنعها بأنفسنا عن طريق إنشاء Class معين.

المصباح: هو Object

مكون من: قوة إضاءة، وحجم معين، واسم، وخاصية (مفتوح أو مغلق)

العمل:

افتح المصباح:open(); // method

أغلق المصباح: close(); // method

زد قوة المصباح: increasePower(double e); // method

ماهي القوة؟: getPower(); // method

ماهو الاسم؟: getName();// method

ماهي البيانات: toString(); //method

هل هو مفتوح؟: isOpen(); //method

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

#2

أردت تحميل الملف الكود للصف مصباح Class Lamp

ولكني لم أستطع

على كل حال سوف نتحدث عنه قريباً.

#3

هذا هو الصف مصباح، سنستخدم هذا الصف لإنشاء مصابيح لعمل البرنامج المطلوب

هذا ليس هو البرنامج، كما قلنا سابقاً فإن هذا الصف سنستعمله في برنامجنا الذي وظيفته هو إجراء بعض عمليات الإدخال والإخراج ونختبر هذا الصف.

البرنامج سيكون في الدرس القادم

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

كل ما يتعلق بالملفات سيتم شرح ذلك قريباً في دروس قادمة. تابعوا الفهرس العام.

public class Lamp{ 	 //الصف مصباح


    //مكونات المصباح 
	private final int size;  //حجم
	private double power;  //قوة
	private boolean open;  //مفتوح أو مغلق
	private String name;  //اسم المصباح

	private static int numberOfLamps=0;  //static ليس من مكونات أي مصباح بل يتبع للصف فقط

	public Lamp(String name,int s){  // Constructor هذا يصنع مصباح جديد
  size = s;
  open = false;
  power=0;
  this.name = name;   //(this) to diffrentiate between this lamps' name and name.  للتفرقة
  numberOfLamps++;   // numberOfLamps = numberOfLamps + 1
	}

	public Lamp(String n){	//  Constructor هذا يصنع مصباح جديد
  this(n,10);  // ينادي الصانع الآخر  
	}


	public void open(){  //Method عمل يفتح المصباح
  open=true;
  power = 10*size;
	}

	public void close(){	//Method عمل يغلق المصباح
  open=false;
  power=0;
	}

	public boolean isOpen(){	//Method عمل يسأل عن إذا ماكان المصباح مفتوحاً
  return open;
	}

	public String toString(){	//Method عمل يعطي مواصفات هذا المصباح
  if( isOpen() ){
 	 return "Name: "+name + "tSize = " + size +  "t Is Open? : " 
    + isOpen() + "tPower = " + power;
  }else{
 	 return "Name: "+name + "tSize = " + size +  "tIs Open? : " 
    + isOpen();
  }
  
	}

	public String getName(){	//Method عمل يعطي اسم المصباح
  return "The name of this lamp is "+name;
	}

	public void increasePower(double pow){	//Method عمل يزيد قوة المصباح
  if( isOpen() ) power = power + pow*size;
	}

	public static int getNumberOfLamps(){  // ليس له علاقة بأي مصباح static
  return numberOfLamps; 	 
	}

	public double getPower(){
  return power;
	}

}

ملاحظة:

static Fields : مكونات للصف مصباح وليست للمصابيح الناتجة منه

not static Fields: مكونات للمصابيح الناتجة من الصف مصباح وليست ببصف بعينه

static Methods : وسائل للصف مصباح،

non static Methods: وسائل للمصابيح الناتجة من الصف مصباح، فكل مصباح له getName() خاصة به.

سيتم شرح ذلك بطريقة الأمثلة لاحقاً وفي الدرس الأول من ما هو الـ Object?

تم تعديل هذه المشاركة بواسطة ORWA في 29 يناير 2005 في 14:43

#4

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

لاحظ أن اسم البرنامج على اسم الصف Test مع ملاحظة أن أول وسيلة أو دالة يستعملها أي برنامج هي main();

لاحظ أيضاً أن جميع الدوال المعرفة هي static لأن لا نية لنا في استخدام Object Test من هذا الصف.

ملاحظة أخرى أن الدالة main() غير مسؤولة عن أي خطأ ناتج عن أي دالة ترمي IOException

import java.io.*;   //استعمل المكتبة أو الحزمةjava.io المختصة بالإدخال والإخراج 
public class Test {

	private static BufferedReader reader;	// reader تابع للصف Test
        //main غير مسؤولة عن أي خطأ ناتج عن خطأ في الإدخال أو الإخراج
	public static void main(String[]args) throws IOException{
  reader=new BufferedReader(new InputStreamReader(System.in));
  
  Lamp lamp1= getNewLamp();  //call Test.getNewLamp();
  
  System.out.println(lamp1.toString());	//اطبع الناتج على شاشة الدوس
  lamp1.open();   	 //افتح المصباح
  System.out.println(lamp1.getName() +" is now opened.");
  System.out.println(lamp1);   	 //نفس عمل السابق
  
  Lamp [] arrayOfLamps = new Lamp[3];  // create an empty array that holds 3 lamps only, starting with 0 and ending with 2.
  
  for(int i = 0; i < arrayOfLamps.length; i++){  //جملة for
 	 arrayOfLamps  = Test.getNewLamp();	//call Test.getNewLamp();
 	 arrayOfLamps .open();
 	 arrayOfLamps .increasePower(2);  //زد الطاقة
 	 
  }
  
  printLamps(arrayOfLamps);  // call Test.printLamps
  System.out.println("Turning lamps who have higher power than 100...");
  turnLampOffWhosPowerIsLargerThan(arrayOfLamps,100);  //calls Test.turnLampOffWhosPowerIsLargerThan
  
  Test.printLamps(arrayOfLamps);  // call Test.printLamps
  
  System.out.println( Lamp.getNumberOfLamps() + " has been created.");
	}

    //returns a new Lamp specified by the user.
	public static Lamp getNewLamp() throws IOException{	//غير مسؤولة عن أي خطأ getNewLamp
  
  System.out.print("Please Enter a name for the lamp: ");
  String lampName = reader.readLine();
  
  System.out.print("Please Enter a size for your lamp: ");
  String size = reader.readLine();       
  
  int lampSize = Integer.parseInt(size);
  
  Lamp lamp= new Lamp(lampName , lampSize);
  
  return lamp;
	}

	public static void printLamps(Lamp [] lamps){
  for(int i = 0; i < lamps.length; i++)  //جملة for
 	 System.out.println( lamps  );  //اطبع على شاشة الدوس
	}

	public static void turnLampOffWhosPowerIsLargerThan(Lamp[] lamps,double power){
  for(int i = 0; i < lamps.length; i++)  //جملة for
 	 if( lamps.getPower() >= power ) lamps.close();         //جملة if
 	 
	}

}


OutPut: 
Please Enter a name for the lamp: Lamp 1
Please Enter a size for your lamp: 20
Name: Lamp 1	Size = 20	Is Open? : false
The name of this lamp is Lamp 1 is now opened.
Name: Lamp 1	Size = 20  Is Open? : true	Power = 200.0
Please Enter a name for the lamp: Lamp 2
Please Enter a size for your lamp: 50
Please Enter a name for the lamp: Lamp 3
Please Enter a size for your lamp: 7
Please Enter a name for the lamp: Lamp 4
Please Enter a size for your lamp: 90
Name: Lamp 2	Size = 50  Is Open? : true	Power = 600.0
Name: Lamp 3	Size = 7  Is Open? : true	Power = 84.0
Name: Lamp 4	Size = 90  Is Open? : true	Power = 1080.0
Turning lamps who have higher power than 100...
Name: Lamp 2	Size = 50	Is Open? : false
Name: Lamp 3	Size = 7  Is Open? : true	Power = 84.0
Name: Lamp 4	Size = 90	Is Open? : false
4 has been created.

أرجو أن يعطيكم هذا فكرة واضحة في استخدام الـClass و Object والفروق بينهم.

كما أتمنى معرفة ذلك منكم. فهل فهم الفرق أحد منكم من هذه الأمثلة الآن؟

الرجاء مراجعة الدرس الأول أو السؤال هنا عن أية مشكلة تتعلق بفهم Object و Class.

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

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

وشكراً

تم تعديل هذه المشاركة بواسطة ORWA في 29 يناير 2005 في 14:44

#5

الى الاخوان :

كيف اقدر اكتب الكود و اخلي الكلام من الشمال الى اليمين !!

#6

شكككككككككككككررررررررررررررررررررراااااااااااااااااااااا

عالدرس

وتقبل تحياتي

اختكم

الاعصار

#7

جزاك الله خيراً

الحمد لله الذى هدانا لهذا وما كنا لنتهتدى لولا أن هدانا الله

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

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