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

مشاكل في كود خاص بinterface

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

طبتم مساءا ..

جئتكم بسؤال جديد ، طمعان فيكم تساعدوني وها هو نص السؤال::

49c7e9yh809o.jpg

طبعا تطبيقي على مفهوم interface طبقت ما حاولت فهمه من السؤال لكن فهمي لinterface اصلا محدود فهل تساعدوني ،مع شرح عن الامور الناقصة ، وجزاكم الله كل خير وخير الناس انفعهم للناس.

المحاولات:

public interface fooditem   {
	public final int small=1;
	int meduim=2;
	int large=3;
	void setsize(int size);
	int getsize();
	double getprice();




}

public class drink implements fooditem {
	int size;
	double price;
	String name;
	double[] pricepersize;

	public double[] getPricepersize() {

		return pricepersize;
	}
	public void setPricepersize(double[] pricepersize) {
		for(int i=1;i<4;i++)
		this.pricepersize = pricepersize;
	}
	public String getname(){return name;}
	public void setsize(int size){this.size=size;}
public	int getsize(){return size;}
	public double getprice(){return price;}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}

}

public class pizza implements fooditem {


	int size;double price;
	String name,des;

	double[] pricepersize;

	public double[] getPricepersize() {
		return pricepersize;
	}
	public void setPricepersize(double[] pricepersize) {
		for(int i=1;i<4;i++)
		this.pricepersize = pricepersize;
	}
	public String getname(){return name;}
	public void setsize(int size){this.size=size;}
public	int getsize(){return size;}
public String getDes() {
	return des;
}
public void setDes(String des) {
	this.des = des;
}
public double getprice(){return price;}

}

public class topping {



}

public class main {


		public static void main(String[] args) {


	}

}
#2

بالنسبة للاخ ابلكوج ... تركت لك رسالة على حائط موقعك ... ارجو الرد .

#3

اخى الكريم ، المحاولات جديده جداً

ينفص فقط الكلاس الاخير Topping والكلاس الذى سيربط بينهم

ساضع الكود بعد التعديل ، اعتذر عن عدم وضوح الكود مسبقاً :)

1- Interface لا يحتاج إلى اى تعديل

package arabteam2000.pizzashop;

public interface FoodItem {

	public final int SMALL = 1;
	public final int MEDUIM = 2;
	public final int LARGE = 3;

	public int getSize();
	public void setSize(int size);
	public double getPrice();
}

2- Drink Class

package arabteam2000.pizzashop;

public class Drink implements FoodItem{

	private int size;
    private double price;
    private String name;
    private double[] pricePerSize;


    public Drink(String name){
    	this.name = name;
    }

    public void calculatePrice(){
    	price = getPricePerSize()[getSize() - 1];

    }
	public double getPrice() {
		return price;
	}
	public int getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}

	public String getName(){
		return name;
	}

	public void setPricePerSize(double[] pricePerSize){
		this.pricePerSize = pricePerSize;
	}

	public double[] getPricePerSize(){
		return pricePerSize;
	}

}

3- Pizza Class

package arabteam2000.pizzashop;

public class Pizza implements FoodItem{

	private int size;
	private double price;
	private String description;
	private Topping[] toppings = new Topping[0];
	private double[] pricePerSize;
	private String name;

	public void calculatePrice(){

		price = getPricePerSize()[getSize() -1];
	}
	public Pizza(String name){
		this.name = name;
	}

	public String getName(){
		return name;
	}
	public double getPrice() {
		return price;
	}

	public int getSize() {
		return size;
	}

	public void setSize(int size) {
		this.size = size;
	}

	public void setDescription(String description){
		this.description = description;
	}

	public String getDescription(){
		return description;
	}

	public double[] getPricePerSize(){
		return pricePerSize;
	}

	public void setPricePerSize(double [] pricePerSize){
		this.pricePerSize = pricePerSize;
	}

	public Topping[] getToppings(){
		return toppings;
	}

//	public void setFirstTopping(Topping t){
//		toppings = new to
//	}
	public void addTopping(Topping t){
		Topping[] temp = toppings;
		int size = toppings.length;
		toppings = new Topping[size+1];
		for (int i = 0; i < temp.length; i++) {
			toppings = temp;
		}

		toppings[size] = t;
	}

	public void removeTopping(Topping t){

		Topping[] temp = toppings;
		int size = toppings.length;
		toppings = new Topping[size-1];

		int arrayIndex = 0;

		for (int i = 0; i < temp.length; i++) {
			if(temp == t)
				continue;
			else{
				toppings[arrayIndex] = temp;
				arrayIndex++;
			}
		}
	}

}

4- Toppings

package arabteam2000.pizzashop;

public class Topping{

	private double[] toppingsCost;
	private int type;

	public final static int VEGETABLE = 1;
	public final static int MASHRUM = 2;
	public final static int PINEAPPLE = 3;

	public void setToppingType(int type){
		this.type = type;
	}

	public int getToppingType(){
		return type;
	}

	public void setToppingsCost(double[] toppingsCost){
		this.toppingsCost = toppingsCost;
	}

	public double[] getToppingCosts(){
		return toppingsCost;
	}

	public String getToppingName(){
		String name = "";
		switch (getToppingType()) {
		case VEGETABLE:
			name = "VEGETABLE";
			break;
		case MASHRUM:
			name = "MASHRUM";
			break;
		case PINEAPPLE:
			name = "PINEAPPLE";
			break;
		}
		return name;
	}
}

الكلاس الاخير ، ال Main

يمكنك تغير هذا الكلاس بالطبع حسب إحتياجك ، ولكنى ساضعة كمثال فقط

الكلاس يقوم بعمل pizza و drink ويضف 2 toppings إلى البيتزا

package arabteam2000.pizzashop;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Test {

	public static void main(String[] args) {
		double orderPrize = 0;
		try{

			//Read user's input
			BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));

			System.out.println("Making new pizza ... ");
			int answer = 0; //User input

			//Pizza
			Pizza myPizza = new Pizza("Pizza");
			myPizza.setDescription("This is a pizza");
			myPizza.setPricePerSize(new double[]{10,15,20});
			System.out.println("Select Pizza size (type size number): ");
			System.out.println(" 1 - Small, 2- Medim, 3- Large");
			System.out.println("Pizza prices per size");
			for (int i = 0; i < myPizza.getPricePerSize().length; i++) {
				System.out.print(myPizza.getPricePerSize() + "$  |  ");
			}
			System.out.println("\n");
			answer = Integer.parseInt(userInput.readLine());

			switch (answer) {
			case FoodItem.LARGE:
				myPizza.setSize(FoodItem.LARGE);
				break;
			case FoodItem.MEDUIM:
				myPizza.setSize(FoodItem.MEDUIM);
				break;
			case FoodItem.SMALL:
				myPizza.setSize(FoodItem.SMALL);
				break;
			}



			//Toppings
			Topping myTopping = new Topping();
			myTopping.setToppingsCost(new double[]{2,3,4});

			System.out.println("Select Topping (type topping number): ");
			System.out.println(" 1 - Vegetable, 2- Mashrum, 3- Pineapple");
			System.out.println("Topping prices");
			for (int i = 0; i < myTopping.getToppingCosts().length; i++) {
				System.out.print(myTopping.getToppingCosts() + "$  |  ");
			}
			System.out.println("\n");
			answer = Integer.parseInt(userInput.readLine());
			switch (answer) {
			case Topping.VEGETABLE:
				myTopping.setToppingType(Topping.VEGETABLE);
				break;
			case Topping.MASHRUM:
				myTopping.setToppingType(Topping.MASHRUM);
				break;
			case Topping.PINEAPPLE:
				myTopping.setToppingType(Topping.PINEAPPLE);
				break;
			}
			myPizza.addTopping(myTopping);


			//Toping 2
			Topping myTopping2 = new Topping();
			myTopping2.setToppingsCost(new double[]{2,3,4});

			System.out.println("Select another Topping (type topping number): ");
			System.out.println(" 1 - Vegetable, 2- Mashrum, 3- Pineapple");
			System.out.println("Topping prices");
			for (int i = 0; i < myTopping2.getToppingCosts().length; i++) {
				System.out.print(myTopping2.getToppingCosts() + "$  |  ");
			}
			System.out.println("\n");
			answer = Integer.parseInt(userInput.readLine());
			switch (answer) {
			case Topping.VEGETABLE:
				myTopping2.setToppingType(Topping.VEGETABLE);
				break;
			case Topping.MASHRUM:
				myTopping2.setToppingType(Topping.MASHRUM);
				break;
			case Topping.PINEAPPLE:
				myTopping2.setToppingType(Topping.PINEAPPLE);
				break;
			}
			myPizza.addTopping(myTopping2);





			// Drink
			Drink myDrink = new Drink("Mango Juice");

			myDrink.setPricePerSize(new double[]{1,2,5});

			System.out.println("Select drink size (type size number): ");
			System.out.println(" 1 - Small, 2- Medim, 3- Large");
			System.out.println("Drink prices per size");

			for (int i = 0; i < myDrink.getPricePerSize().length; i++) {
				System.out.print(myDrink.getPricePerSize() + "$  |   " );
			}
			System.out.println("\n");

			answer = Integer.parseInt(userInput.readLine());
			switch (answer) {
			case FoodItem.LARGE:
				myDrink.setSize(FoodItem.LARGE);
				break;
			case FoodItem.MEDUIM:
				myDrink.setSize(FoodItem.MEDUIM);
				break;
			case FoodItem.SMALL:
				myDrink.setSize(FoodItem.SMALL);
				break;
			}

			myDrink.calculatePrice();
			orderPrize += myDrink.getPrice();

			myPizza.calculatePrice();
			orderPrize += myPizza.getPrice();



			//

			System.out.println("***********************************");
			System.out.println("You order: ");
			System.out.println("\t" + myPizza.getName() + "\t\t: " + myPizza.getPrice() + " $");
			Topping[] pizzaToppings = myPizza.getToppings();
			for(int i = 0 ; i < pizzaToppings.length; i++){
				System.out.println("\t" + myPizza.getToppings().getToppingName() + " topping : " + pizzaToppings.getToppingCosts()[pizzaToppings.getToppingType() - 1] + "$");
				orderPrize += pizzaToppings.getToppingCosts()[pizzaToppings.getToppingType() - 1] ;
			}
			System.out.println("\t" + myDrink.getName() + " \t: " + myDrink.getPrice() + " $");
			System.out.println("\t------------------------------------------------------------");
			System.out.println("\tTotal = " + orderPrize);


			userInput.close();
		}catch (Exception e) {
			e.printStackTrace();
		}


	}
}

الناتج من الكلاس :

Making new pizza ... 
Select Pizza size (type size number): 
 1 - Small, 2- Medim, 3- Large
Pizza prices per size
10.0$  |  15.0$  |  20.0$  |  

2
Select Topping (type topping number): 
 1 - Vegetable, 2- Mashrum, 3- Pineapple
Topping prices
2.0$  |  3.0$  |  4.0$  |  

1
Select another Topping (type topping number): 
 1 - Vegetable, 2- Mashrum, 3- Pineapple
Topping prices
2.0$  |  3.0$  |  4.0$  |  

3
Select drink size (type size number): 
 1 - Small, 2- Medim, 3- Large
Drink prices per size
1.0$  |   2.0$  |   5.0$  |   

3
***********************************
You order: 
	Pizza		: 15.0 $
	VEGETABLE topping : 2.0$
	PINEAPPLE topping : 4.0$
	Mango Juice 	: 5.0 $
	------------------------------------------------------------
	Total = 26.0

راجع الاكواد و سانتظر إستفساراتك أو اسئلتك اذا يوجد

خالد

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