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

enum-typ with copy constructor برنامج بحاجة لمساعدة

مغلق
بدأه kousai في 31 مايو 2007 · 1 رد · 472 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

على طول معزبكم بأسئلتي الكثيرة

اليوم عندي كتابة برنامج على النحو التالي

السؤال الأول

يوجد لدينا كلاسس (2) واحدة تدعى Car والاخرى Engine من المفروض تنزيلهم على حاسوبك قبل البدء بصنع برنامجنا الجديد

لقد وضعت روابط لهده الكلاسس وسأقوم بكتابتها ككود

 

public class Engine {

 // the code of Motortyp :
 public static final int ENGINETYPE_UNKNOWN = -1; // 
 public static final int ENGINETYPE_OTTO = 0;	 // with benzin: Benzin
 public static final int ENGINETYPE_DIESEL = 1;   // with: Diesel, oil

 // the code of:
 public static final int FUELCODE_UNKNOWN = -1; // 
 public static final int FUELCODE_BENZINE = 0;  // Benzin
 public static final int FUELCODE_DIESEL = 1;   // Diesel
 public static final int FUELCODE_VEGOIL = 2;   // oil

 //  Cylinder - Minimum und Maximum :
 private static final int MIN_CYLINDER = 3;
 private static final int MAX_CYLINDER = 12;

 // Power in PS - Minimum und Maximum :
 private static final double MIN_POWER = 20.0;
 private static final double MAX_POWER = 400.0;

 // Standard-value :
 private static final double STANDARD_POWER = 40.0;
 private static final int STANDARD_FUEL = FUELCODE_BENZINE;
 private static final int STANDARD_CYLINDER = 4;

 // Instanz-variablen :
 private double power;
 private int fuel;
 private int cylinders;

 // Standard-construktor:
 public Engine() {
  this(STANDARD_CYLINDER);
 }

 //  Konstruktor:
 public Engine(int cylinder) {
  this(cylinder, STANDARD_FUEL);
 }

 //  Konstruktor:
 public Engine(int cylinder, int fuel) {
  this(cylinder, fuel, STANDARD_POWER);
 }

 //  Konstruktor:
 public Engine(int cylinder, int fuel, double power) {
  setCylinder(cylinder);
  setFuel(fuel);
  setPower(power);
 }

 // Methode zur Ermittlung des Motorentyps
 // (anhand des verwendeten Treibstoffs):
 public int getType() {
  switch (this.getFuel()) {
  case Engine.FUELCODE_BENZINE:
   return Engine.ENGINETYPE_OTTO;
  case Engine.FUELCODE_DIESEL:
   return Engine.ENGINETYPE_DIESEL;
  case Engine.FUELCODE_VEGOIL:
   return Engine.ENGINETYPE_DIESEL;
  case Engine.FUELCODE_UNKNOWN:
  default:
   return Engine.ENGINETYPE_UNKNOWN;
  }
 }


 public int getCylinder() {
  return this.cylinders;
 }

 public void setCylinder(int cylinder) {
  if (cylinder >= MIN_CYLINDER && cylinder <= MAX_CYLINDER) {
   this.cylinders = cylinder;
  } else {
   this.cylinders = STANDARD_CYLINDER;
  }
 }

 public int getFuel() {
  return this.fuel;
 }

 public void setFuel(int fuel) {
  switch (fuel) {
  case Engine.FUELCODE_BENZINE:
   break;
  case Engine.FUELCODE_DIESEL:
   break;
  case Engine.FUELCODE_VEGOIL:
   break;
  case Engine.FUELCODE_UNKNOWN:
  default:
   fuel = Engine.FUELCODE_UNKNOWN;
  }
  this.fuel = fuel;
 }

 public double getPower() {
  return this.power;
 }

 public void setPower(double power) {
  if (power > MIN_POWER && power <= MAX_POWER) {
   this.power = power;
  } else {
   this.power = STANDARD_POWER;
  }
 }

 // Ueberschriebene toString-Methode:
 public String toString() {
  return "Typ " + this.getType() + " (" + this.fuel + "), "
	+ (int) this.getPower() + " PS (" + this.getCylinder()
	+ " Zylinder)";
 }

}

وهنا الكلاسس Car

 

public class Car {

 public static final int CITY = 0;
 public static final int LAND = 1;
 public static final int HWAY = 2;

 private Engine engine;
 private double tank;
 private int mode;

 public Car() {
  this(new Engine());
 }

 public Car(Engine engine) {
  setEngine(engine);
  setTank(60.0);
  setMode(LAND);
 }

 //This Methode to calculate the usage with this formula 

 private double getUsageFromMode(int mode) {
  double usage = 0.004 * Math.pow(getEngine().getPower(), 1.4) + 4;
  switch (mode) {
   case HWAY:
	return usage;
   case LAND:
	return usage * 1.1;
   case CITY:
	return usage * 1.31;
   default: return 1.0;
  }
 }

 public double getRange() {
  double tank = this.tank;
  double usage = getUsageFromMode(this.mode);
  return (tank / usage) * 100;
 }

 public int getMode() {
  return this.mode;
 }

 public void setMode(int mode) {
  this.mode = mode;
 }

 public double getTank() {
  return this.tank;
 }

 public void setTank(double tank) {
  this.tank = tank;
 }

 public Engine getEngine() {
  return this.engine;
 }

 public void setEngine(Engine engine) {
  this.engine = engine;
 }

 //Ueberschriebene toString-Methode:
 public String toString() {
  return "Status:	  " + this.getMode() +
   "\nTankgroesse: " + this.getTank() + " Liter" +
   "\nMotordaten:  " + this.getEngine();
 }

}

والان بدأنا بالوظيفة

السؤال الاول:أكتب كلاس بأسم Fuel وهده الكلاس تصور ميزات وخصائص نوع ما من الوقود

وهده الميزات تتركز على مابلي

1.أسم الوقود

2. رقم الوقود un-number

3.رقم الخطر danger

4.نقطة الأشتعال flame

5. نوع الميوتور الذي ضمنه يحترق الوقود motortyp وهنا يمكنك ان تربط هده الكلاس بالكلاس Engine

السؤال التاني

اكتب اربعة كونستروكتور chaining constructor واربطها ببعضها ولتكن كما يلي

1.اول constructor يقيم الوقود بنزين

2.تاني constructor يعطي الوقود المنشئ كل صفاته وميزاته كمتغيرات parameter

3.ثالث constructor وهدا يجب ان يكون Copy constructor فان وظيفة هدا الكونستروكتور نسخ الوقود المعطى مع نفس القيم الواردة معه

4.رابع constructor يتلقى اسم وقود (مسمى) ويصنع منه عنصر من النوع Fuel-object ولهد الطلب من المستحسن ان تقرأ السؤال التالت قبل حله

السؤال التالت

ضع اسم الوقود بنزين وماروت وزيت Benzin ,Diesel , oil بمساعدة من النوع enum

ولهدا الاسماء قيم ثابتة وهدا القيم معطاه كما يلي

اولا البنزين

name = Benzin

un-number = 1203

danger =33

flame = -21

motortyp = ottomotor

تانيا المازوت

name = Diesel

un-number = 1202

danger =30

flame = 55

motortyp = Dieselmotor

تالتا الزيت

name = Rapsoil

un-number = K.A

danger =K.A

flame = 220

motortyp = Dieselmotor

ومن ثم اكتب ميثود private Fuel createFuel()

وهده الميثود تتركز وظيفتها في تلقي نوع الوقود واعطاء اوبجكت مع قيمه الثابتة.

السؤال الرابع

اكتب ميثود String toString()

التي تعطي اسم الوقود

انتهى السؤال

والأن اريد ان اكتب محاولتي التي تحتاج الى مساعدتكم

 

public class Fuel{

 public Name propellant;

 private  double un_number;

 private  double danger;

 private  double flame;

 private  String motortyp;

 private enum Name {

  BENZIN,

  DIESEL,

  RAPSOEL;

 }

//Set-Methode for un_number

 public void setUn_number(double un_number){

  this.un_number= un_number;

}

//Get-Methode for un_number

 public void getUn_number(){

  if (propellan== Name.RAPSOEL) {

 System.out.println("K.A.");

  }

else {

System.out.println(this.un_number);

}
 }

 //Set-Methode for danger

public void setDanger(double danger){

  this.danger = danger;

 }

//Get for danger

public void getdanger(){

if (propellan == Name.RAPSOEL) {

  System.out.println("K.A.");
 }

 else {
  System.out.println(this.danger);

  }
}

//Set For Flame.

public void setFlame(double flame){

 this.flame = flame;
 }


 //Get For Flame

public double getFlame(){

 return this.flame;
 }

 //Set for Motortyp

public void setMotortyp(String motortyp) {

  this.motortyp = motortyp;

 }

//Get for Motortyp

 public String getMotortyp(){

  return this.motortyp;
 }


 //Set for propellan

public void setPropellan(Name propellan){

  this.propellan = propellan;
 }

 //Get for propellan

public Name getPropellan(){

return this.propellan;
 }


public Fuel(){

this(Name.BENZIN, 1203, 33, -21, "Ottomotor");
 }

public Fuel(Name propellan, double un_number, double danger, double flame, String motortyp){

 setPropellan(propellan);

 setUn_number(un_number);

 setGeDanger(danger);

 setFlame(flame);

 setMotortyp(motortyp);
 }


 public Fuel(Fuel a){

this(a.propellan, a.un_number, a.danger, a.flame, a.motortyp);

}


public Fuel(Name propellan){

this(new Fuel());
 }



 public Fuel(Name propellan){

this(new Fuel());
 }



 private Fuel createFuel(Name propellan){

  if (propellan == Name.BENZIN) {

   return new Fuel(Name.BENZIN);
 }

 else if (propellan == Name.DIESEL){

 return new Fuel(Name.DIESEL);
 }

else {

return new Fuel(Name.RAPSOEL);
 }

 }

public String toString(){

  return("Fuel:"+ getPropellan());

 }
}

روابط الكلاسس

Engine

Car.java

Fuel.java

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

وشكرا لكم

#2

شو وين الشباب

ياجماعة والله السؤال مو كتير صعب

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

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