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

برنامج للتنظيم بضائع شحنة بحرية في مستودع البواخر

بدأه kousai في 31 مايو 2008 · 8 رد · 1,332 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مرحبا للجميع كالعادة حابب اعرض موضوع برنامج الجديد ورح ابلش فيو هلق وبس اتوصل لنتيجة بدي ارفع الكود عالموقع لمناقشته بس قبل ما اوضع وظيفة البرنامج الذي يوجب برمجته عندي كم سؤال

  • ليش منستخدم الانترفيس
  • ماهوي الفائدة من كتابة راس الميثود فقط داخل الانترفيس
  • كيف يمكن استخدام الانترفيس كصيغة او نوع Data-type

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

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

مع مراعاة بأننا لا نعلم ماهي البضائع والعناصر المراد شحنها لهدا يجب ايجاد برنامج يمثل عملية التنظيم

الطلب الاول : حدد ضمن انترفيس بأسم Stockable صفات البضائع والعناصر القابلة للشحن

  1. لهده العناصر رقم يدعى رقم الشحن و وزن يمثل في الطن بالمتر المكعب ...... يجب ان تكون هده الصفات قابلة للتغيير من خارج الانترفيس
    كل سلعة او باكيت من البضاعة يأخد مكان من غرفة المستودع يقدر هدا لامكان بالمتر المكعب
  2. يجب ان يكون البرنامج قادرة على حساب الوزن الاجمالي الكلي للشحنة بأكملها عن طريق الميثود double getFullWeight()
  3. مطلوب ايضا كتابة ميثود String to String() التي تقوم بأعطائنا معلومات عن الشحنة كالمثال التالي

    Charge 123 (80.0m^3, 40.25 t)


    نظم جميع الميثودات داخل الانترفيس لتتمكن من تحديد الصفات المطلوبة

الطلب الثاني : أكتب برنامج ادارة تنظيم المستودع من خلال الكلاس StockManager على ان يمثل هدا الكلاس المستودع ومابداخله من بضائع

استخدم كونستكتور constructor لتحديد حجم المستودع

ملاحظة : يجب ان تحفظ البضائع ضمن مصفوفة

  1. أكتب ميثود بأسم

    boolean stock(stockable)


    وظيفةهده الميثود هي وضع البضاعة ضمن المستودع في حال وجود مكان كاف لها مع مراعاة مايلي
    في حال وجود مكان كاف للبضاعة ضمن المستودع يجب ان ترجع الميثود true
    في حال عدم وجود مكان كاف يجب ان ترجع false
    وايضا يجب ان ترجع الميثود معلومات عن الشحنة كما يلي
    Charge 123 (80.0m^3, 1000.0t)->to stock
    Charge 666 (30.0m^3, 84.0t)->to stock
    Charge 777 (60.0m^3, 471.9t)->to stock
    Charge 234 (170.0m^3, 2686.0t)->not to stock Volume-size too big

  2. حتى لا ترهق الباخرة يجب ان نكتب ميثود مراقبة تفوم بحساب الوزن الاجمالي الكلي للبضاعة ضمن المستودع
    لذا اصنع ميثود تقوم بهذه المهمة وليكن اسمها

    double calculateWeight()


  3. أنشا ميثود

    toString()

    التي تقوم بأرجاع قائمة الشحنات مع الوزن الكلي كما يلي

    Charge 123 (80.0m^3, 1000.0t)


    Charge 666 (30.0m^3, 84.0t)


    Charge 777 (60.0m^3, 471.9t)


    [The total weight is : 1555.9t]


الطلب الثالث : انشأ كلاستين للبضاعة المراد شحنها واحدة تكون لمواد البناء الخشبية wood والاخرى لمواد البناء الحجرية Bricks

وهاتين الكلاستين قادرتين على تعديل خصائص النترفيس Stockable

انشأ constructor لكل كلاس الدي يأخد قيم جميع خصائص وميزات السلع المراد شحنها

انتبه في حساب الوزن للبضائع فهناك اختلاف بين wood & Bricks فلحساب وزن مواد ال Bricks يكفي معرفة الوزن بكل متر مكعب مع الحجم اما عند حساب وزن المواد الخشبية فيجب التمييز بين نوعين من الخشب اولا الخشب المخزن والخشب جديد الصنع فهنا يعامل الحشب المخزن معاملة ال Bricks اما الحشب جديد الصنع فيزاد 20% على الوزن

الطلب الأخير : انشأ كلاس فحص البرنامج وهي Freighter التي تحتوي على سفينة شحن وبضائع واكتب ال main method ضمن هده الكلاس

هيــــــــــــــــــــــــــــــــــــــك بكون خلص شرح البرنامج المراد

انا رح ابلش هلق وكل شي بتوصلو رح انزلو على نفس هي الصفحة

يا ريت ازا بتساعدوني بس بملاحضاتكم حول مفهوم الانترفيس وما المقصود باستخدام الانترفيس كنوع وكيف بقدر اضع البضاعة ضمن مصفوفة Array

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

#2

بالنسبة للواجهات intefaces

فالعمل الأهم لها

هو تنظيم الشيفرة خاصتك

مثلاً عندك واجهة مدرسة

كل المدارس تمارس عملية التعليم

وتقسيم الحصص واستخدام الدرجات كوسية تقييم

لهذا يجتمعون تحت واجهة School

لكنهم مختلفين أيضاً

فيمكنك تقسيم المدارس على حسب ما تركز عليه مناهجها

فهناك مدارس دينية ومدارس تربوية ومدارس موسيقية

ربما يكمنك التقسيم على حسب نوع الطلبة

فهناك مدارس ابتدائية وإعدادية وثانوية وجامعية

ماذا أستفيد لو استخدمت الواجهة؟

polymrphisem

تستطيع استخدام مؤشر من الواجهة

يحتوي على كائن من الابن

يمكنك استخدام الدوال الموجود رأسها في الواجهة فقط

أما باقي الدوال فهي غير مرأية بالنسبة لمؤشر الواجهة

ملاحظة: لايمكنك عمل كائن من الواجهة

ماذا أستفيد من كتابة رأس الدالة في الواجهة؟

عندما تقوم ببناء هذه الواجهة يجب أن تقوم ببناء هذه الدالة بنفس الرأس

لهذا عندما نقوم باستخدام المؤشر الخاص بالواجهة

فنحن متأكدين من أن الدالة موجودة في الكائن المشتق من الفئة التي قامت ببناء الواجهة

أظن إجابة السؤال الأخير في السؤال السابق

ماذا أستفيد من وضع كائن من الفئة التي تقوم ببناء الواجهة في مؤشر من نوع الواجهة؟

تخيل معي التالي في برنامج الرسام

لدي مجموعة من الأشكال

كلها تشترك في شيء واحد

هو أني أريد رسمها

وتحديث عملية الرسم كلما قمت بتصغير وتكبير الشاشة

لهذا أقوم بتخزين كل الأشكال

في مصفوفة من النوع شكل

والذي هوه عبارة عن واجهة

يقوم الجميع ببنائها

بالتالي في البرمجة

أنا أتعامل مع مصفوفة وحيدة

تسهل علي البرمجة

بدلا من أن يكون لدي مصفوفة للمربعات

ومصفوفة للمستطيلات

تحياتي

أي استفسار أنا جاهز

تحياتي

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

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

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

728x90.png

#3
alaadiaa كتب:
لهذا أقوم بتخزين كل الأشكال

في مصفوفة من النوع شكل

والذي هوه عبارة عن واجهة

يقوم الجميع ببنائها

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

شــــــــــكرا مرة تانية

#4

عندي سؤال رح يجنني

كيف بقدر ادخل السلعة داخل المصفوفة في حال انو كان حجمها مناسب

انا قدرت اعمل ميثود منشان حساب الحجم داخل المستودع وحجم السلعة المراد شحنها

بس في حال ان الحجم مناسب كيف بقدر اوضع السلعة داخل المصفوفة (المستودع)

رح اوضع الكود اللي توصلتلو

package exercise1;

public interface Stockable {

 public void setNumber_Of_Charge(int number_Of_Charge);
 public int getNumber_Of_Charge();
 public void setFullWeight(double weight);
 public double getFullWeight();
 public void setVolume(double volume);
 public double getVolume();
 public String toString();

}

package exercise1;

public class StockManager implements Stockable {
 int number_Of_Charge;
 double fullWeight;
 double volume;
 double size;
 Stockable[] ware = new Stockable[100];

 public void setNumber_Of_Charge(int number_Of_Charge) {
  this.number_Of_Charge = number_Of_Charge;

 }
 public int getNumber_Of_Charge() {
  return number_Of_Charge;
 }

 public void setVolume(double volume) {
  this.volume = volume;

 }

 public double getVolume() {

  return volume;
 }

 public void setFullWeight(double weight) {
  this.fullWeight = fullWeight;

 }

 public double getFullWeight() {
  return fullWeight;
 }


 public double getCurrentVolume(){
  for (int i = 0; i<= ware .length; i++){
   volume= (ware.getVolume() + ware[i+1].getVolume());
  }
  return volume;
 }


 //constructor
 public StockManager (double size){
   this.size = size;
 }

 public boolean stock(Stockable s){
  if ((s.getVolume() + getCurrentVolume()) <= size){
   System.out.println("Charge" + number_Of_Charge + "(" + volume + "m^3" + ","+ fullWeight + "t )" + "\n" + "-> to stock");

   return true;
  }
  else{ 
   System.out.println("Charge" + number_Of_Charge + "(" + volume + "m^3" + ","+ fullWeight + "t )" + "\n" + "-> not to stock !! Volume-Size is too big");
   return false;
  }

 }

 public double calculateWeight(){
  for (int c = 0; c<ware.length; c++){
   fullWeight = (ware[c].getFullWeight() + ware[c+1].getFullWeight());
  }
  return fullWeight;
 }

 public String toString(){
  System.out.println("Stock-list \n" + "Charge" + number_Of_Charge + "(" + volume + "m^3" + ","+ fullWeight + "t) \n" + "[Total Weight : " + calculateWeight()+ "t]");
  return null;

 }


}

تم تعديل هذه المشاركة بواسطة kousai في 1 يونيو 2008 في 16:22

#5

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

package exercise1;

public interface Stockable {

 public void setNumber_Of_Charge(int number_Of_Charge);
 public int getNumber_Of_Charge();
 public void setFullWeight(double weight);
 public double getFullWeight();
 public void setVolume(double volume);
 public double getVolume();
 public String toString();

}

package exercise1;

public class StockManager  {

 double size;
 Stockable[] ware = new Stockable[100];


 public double getCurrentVolume(){
  double volume=0;
  for (int i = 0; i<= ware .length; i++){
   volume= (ware.getVolume() + ware[i+1].getVolume());
  }
  return volume;
 }


 //constructor
 public StockManager (double size){
   this.size = size;
 }

 public boolean stock(Stockable s){

   ware[0].setFullWeight(s.getFullWeight());
   ware[0].setNumber_Of_Charge(s.getNumber_Of_Charge());
   ware[0].setVolume(s.getVolume());

  if ((s.getVolume() + getCurrentVolume()) <= size){
   System.out.println("Charge" + ware[0].getNumber_Of_Charge() + "(" + ware[0].getVolume() + "m^3" + ","+ ware[0].getFullWeight() + "t )" + "\n" + "-> to stock");

   return true;
  }
  else{ 
   System.out.println("Charge" + ware[0].getNumber_Of_Charge() + "(" + ware[0].getVolume() + "m^3" + ","+ ware[0].getFullWeight() + "t )" + "\n" + "-> not to stock !! Volume-Size is too big");
   return false;
  }

 }

 public double calculateWeight(){
  double fullWeight=0;
  for (int c = 0; c<ware.length; c++){
   fullWeight = (ware[c].getFullWeight() + ware[c+1].getFullWeight());
  }
  return fullWeight;
 }

 public String toString(){
  return("Stock-list \n" + "Charge" + ware[0].getNumber_Of_Charge() + "(" + ware[0].getVolume() + "m^3" + ","+ ware[0].getFullWeight() + "t) \n" + "[Total Weight : " + calculateWeight()+ "t]");

 }


}

package exercise1;

public class Bricks implements Stockable{
 int number_Of_Charge;
 double fullWeight;
 double volume;


 public int getNumber_Of_Charge() {
  return number_Of_Charge;
 }


 public double getVolume() {
  return volume;
 }


 public double getFullWeight() {
  return fullWeight;
 }


 public void setNumber_Of_Charge(int number_Of_Charge) {
  this.number_Of_Charge= number_Of_Charge;
 }


 public void setVolume(double volume) {
  this.volume = volume;
 }


 public void setFullWeight(double fullWeight) {
  this.fullWeight = fullWeight;
 }

}

package exercise1;

public class Wood implements Stockable{

 int number_Of_Charge;
 double fullWeight;
 double volume;

 public int getNumber_Of_Charge() {
  return number_Of_Charge;
 }


 public double getVolume() {
  return volume;
 }


 public double getFullWeight() {
  return fullWeight;
 }


 public void setNumber_Of_Charge(int number_Of_Charge) {
  this.number_Of_Charge= number_Of_Charge;
 }


 public void setVolume(double volume) {
  this.volume = volume;
 }


 public void setFullWeight(double fullWeight) {
  this.fullWeight = fullWeight;
 }
}
#6

تقصد أن المصفوفة ممتلئة بالعناصر؟

تحياتي

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

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

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

728x90.png

#7

في صراع مستمر مع الجافا قدرت اتوصل ل 90%من البرنامج.......بصراحة البرنامج خلص بس ماعم يشتغل كالمطلوب ياريت تعطوني بس ملاحظات حول الاخطاء اللي عملتا

package exercise1;

public interface Stockable {

 public void setNumber_Of_Charge(int number_Of_Charge);
 public int getNumber_Of_Charge();
 public void setFullWeight(double weight);
 public double getFullWeight();
 public void setVolume(double volume);
 public double getVolume();
 public String toString();

}

الاخطاء بالكلاس التالي

package exercise1;

public class StockManager  {

 double size;
 Stockable[] ware = new Stockable[100];
 int count;


 public Stockable[] getStockable(){
  return ware;
 }
 public void setStockable(Stockable[] stockable) {
  this.ware = stockable;
 }
 public int getCount() {
  return count;
 }


 public void setCount(int count) {
  this.count = count;
 }


 //constructor
 public StockManager (double size){
   this.size = size;
 }


 public boolean stock(Stockable s){

  if (s.getVolume() <= size){
   System.out.println("Charge" + ware[0].getNumber_Of_Charge() + "(" + ware[0].getVolume() + "m^3" + ","+ ware[0].getFullWeight() + "t )" + "\n" + "-> to stock");
   size = (size - s.getVolume());
   ware[count]=s;
   count++;
   return true;

  }
  else{ 
   System.out.println("Charge" + ware[0].getNumber_Of_Charge() + "(" + ware[0].getVolume() + "m^3" + ","+ ware[0].getFullWeight() + "t )" + "\n" + "-> not to stock !! Volume-Size is too big");
   return false;
  }

 }

 public double calculateWeight(){
  double fullWeight=0;
  for (int c = 0; c<getCount(); c++){
   fullWeight = (fullWeight + ware[c].getFullWeight());
  }
  return fullWeight;
 }

 public String toString(){
  for(int i = 0; i<getCount(); i++){
  System.out.println("Stock-list \n" + "Charge" + ware.getNumber_Of_Charge() + "(" + ware.getVolume() + "m^3" + ","+ ware.getFullWeight() + "t) \n" + "[Total Weight : " + calculateWeight()+ "t]");
  }
  return "";
 }


}

package exercise1;

public class Bricks implements Stockable{
 int number_Of_Charge;
 double fullWeight;
 double volume;



 public int getNumber_Of_Charge() {
  return number_Of_Charge;
 }


 public double getVolume() {
  return volume;
 }


 public double getFullWeight() {
   return fullWeight;
 }


 public void setNumber_Of_Charge(int number_Of_Charge) {
  this.number_Of_Charge= number_Of_Charge;
 }


 public void setVolume(double volume) {
  this.volume = volume;
 }


 public void setFullWeight(double fullWeight) {
  this.fullWeight = fullWeight;
 }

 public Bricks(int number_Of_Charge, double fullWeight, double volume ){
  this.fullWeight= fullWeight;
  this.number_Of_Charge=number_Of_Charge;
  this.volume= volume;


 }

}

package exercise1;

public class Wood implements Stockable{

 int number_Of_Charge;
 double fullWeight;
 double volume;
 boolean watery;

 public int getNumber_Of_Charge() {
  return number_Of_Charge;
 }


 public double getVolume() {
  return volume;
 }


 public double getFullWeight() {
  if(watery == true){
   return ((fullWeight * 20)/100);

  }
  return fullWeight;
 }


 public void setNumber_Of_Charge(int number_Of_Charge) {
  this.number_Of_Charge= number_Of_Charge;
 }


 public void setVolume(double volume) {
  this.volume = volume;
 }


 public void setFullWeight(double fullWeight) {
  this.fullWeight = fullWeight;
 }
 public Wood(int number_Of_Charge, double fullWeight, double volume, boolean watery){
  this.fullWeight=fullWeight;
  this.number_Of_Charge=number_Of_Charge;
  this.volume=volume;
  this.watery=watery;
 }
}

package exercise1;

public class Freighter {
 public static void main(String []args){
  Stockable ware1 = new Wood(123, 40.25,  80.0, false );
  Stockable ware2 = new Wood(666, 84.0,   30.0, false );
  Stockable ware3 = new Wood(777, 471.9,  60.5, false );
  Stockable ware4 = new Wood(234, 2686.0, 170.0, false );

  Stockable ware5 = new Bricks(645, 42.95, 50.0);
  Stockable ware6 = new Bricks(908, 22.45, 48.5);

  StockManager sm = new StockManager(100);
  Stockable[] stock = {ware1, ware2, ware3, ware4, ware5, ware6}; 
  sm.setStockable(stock);


  System.out.println(sm.size);
  System.out.println(sm.stock(ware1));
  System.out.println(sm.stock(ware2));
  System.out.println(sm.stock(ware3));

  System.out.println(sm.toString());
 }
 

}
#8

البرنامج صار جاهز على اكمل وجه

اللي عندو اي ملاحظة او سؤال او اي معلومة بخصوص الكود انا جاهز

package exercise1;

public interface Stockable {

 public void setNumber_Of_Charge(int number_Of_Charge);
 public int getNumber_Of_Charge();
 public void setFullWeight(double weight);
 public double getFullWeight();
 public void setVolume(double volume);
 public double getVolume();
 public String toString();

}

package exercise1;

public class StockManager  {

 double size;
 Stockable[] ware = new Stockable[100];
 int count;


 public Stockable[] getStockable(){
  return ware;
 }
 public void setStockable(Stockable[] stockable) {
  this.ware = stockable;
 }
 public int getCount() {
  return count;
 }


 public void setCount(int count) {
  this.count = count;
 }


 //constructor
 public StockManager (double size){
   this.size = size;
 }


 public boolean stock(Stockable s){

  if (s.getVolume() <= size){
   System.out.println("Charge" + ware[count].getNumber_Of_Charge() + "(" + ware[count].getVolume() + "m^3" + ","+ ware[count].getFullWeight() + "t )" + "\n" + "-> to stock");
   size = (size - s.getVolume());
   ware[count]=s;
   count++;
   return true;

  }
  else{ 
   System.out.println("Charge" + ware[count].getNumber_Of_Charge() + "(" + ware[count].getVolume() + "m^3" + ","+ ware[count].getFullWeight() + "t )" + "\n" + "-> not to stock !! Volume-Size is too big");
   return false;
  }

 }

 public double calculateWeight(){
  double fullWeight=0;
  for (int c = 0; c<getCount(); c++){
   fullWeight = (fullWeight + ware[c].getFullWeight());
  }
  return fullWeight;
 }

 public String toString(){
  System.out.println("Stock-list \n" );
  for(int i = 0; i<getCount(); i++){
  System.out.println( "Charge" + ware.getNumber_Of_Charge() + "(" + ware.getVolume() + "m^3" + ","+ ware.getFullWeight() + "t) )" );

  }
  System.out.println( "[Total Weight : " + calculateWeight()+ "t]");
  return "";
 }


}

package exercise1;

public class Bricks implements Stockable{
 int number_Of_Charge;
 double fullWeight;
 double volume;



 public int getNumber_Of_Charge() {
  return number_Of_Charge;
 }


 public double getVolume() {
  return volume;
 }


 public double getFullWeight() {
   return fullWeight;
 }


 public void setNumber_Of_Charge(int number_Of_Charge) {
  this.number_Of_Charge= number_Of_Charge;
 }


 public void setVolume(double volume) {
  this.volume = volume;
 }


 public void setFullWeight(double fullWeight) {
  this.fullWeight = fullWeight;
 }

 public Bricks(int number_Of_Charge, double fullWeight, double volume ){
  this.fullWeight= fullWeight;
  this.number_Of_Charge=number_Of_Charge;
  this.volume= volume;


 }

}

package exercise1;

public class Wood implements Stockable{

 int number_Of_Charge;
 double fullWeight;
 double volume;
 boolean watery;

 public int getNumber_Of_Charge() {
  return number_Of_Charge;
 }


 public double getVolume() {
  return volume;
 }


 public double getFullWeight() {
  if(watery == true){
   return ((fullWeight * 20)/100);

  }
  return fullWeight;
 }


 public void setNumber_Of_Charge(int number_Of_Charge) {
  this.number_Of_Charge= number_Of_Charge;
 }


 public void setVolume(double volume) {
  this.volume = volume;
 }


 public void setFullWeight(double fullWeight) {
  this.fullWeight = fullWeight;
 }
 public Wood(int number_Of_Charge, double fullWeight, double volume, boolean watery){
  this.fullWeight=fullWeight;
  this.number_Of_Charge=number_Of_Charge;
  this.volume=volume;
  this.watery=watery;
 }
}

package exercise1;


public class Freighter {

public static void main(String []args){

Stockable ware1 = new Wood(123, 40.25, 80.0, false );

Stockable ware2 = new Wood(666, 84.0, 30.0, false );

Stockable ware3 = new Wood(777, 471.9, 60.5, false );

Stockable ware4 = new Wood(234, 2686.0, 170.0, false );


Stockable ware5 = new Bricks(645, 42.95, 50.0);

Stockable ware6 = new Bricks(908, 22.45, 48.5);


StockManager sm = new StockManager(160);

Stockable[] stock = {ware1, ware2, ware3, ware4, ware5, ware6}; 

sm.setStockable(stock);

 

System.out.println(sm.size);

System.out.println(sm.stock(ware1));

System.out.println(sm.stock(ware2));

System.out.println(sm.stock(ware3));


System.out.println(sm.toString());

}

 

}
#9

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

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

ready to do full students projects

digitalscenter@hotmail.com

+966530357742

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

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

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

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

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