简体   繁体   中英

Java - project, adding an object to class

I am currently struggling to figure out this problem for my project. I currently have a Food class that stores name, price and description with getters and setters and a toString. And a course class with subclasses (starter, main dessert). I am trying to figure out how to attach a Food to a Course.

public abstract class Course{
    //fields
    //protected only accessible to subclasses
    protected MenuList starter;
    protected MenuList main;
    protected MenuList dessert;
    protected MenuList drinks;

    //Constructor
    public Course(){
    starter = new MenuList();

        main = new MenuList();

        dessert = new MenuList();

        drinks = new MenuList();    
    }
    //getters and setters

    //methods
    public abstract MenuList getList();

    //add item
    public void addItem(String course, String foodName, double price, String description, int calories){
        this.addItem(course, foodName, price, description, calories);
    }   
}

starter subclass its the same with main and dessert subclasses

public class StarterFood extends Course{
        //fields

    //constructor
    public StarterFood(){
        //course, 
        starter.addItem("starter", "chicken wings", 2.30, "very nice", 150, false);

    }

    @Override
    public MenuList getList() {
        return starter;
    }
    //Constructors


    //getters and setters

    //methods
}

so far ive: adding food (with a name, price, description, calories) listing all food items adding courses searching for a course (by course number or name) listing all courses I only need to do this but I'm struggling any help is appreciated attaching food to courses

If your trying to add a Food to a Course, you should use a "has a" relationship for example:

public class Course {
    private Food food;

    public Course(Food food) {
        this.food = food;
    }

    public Course() {

    }

    public Food getFood() {
        return this.food;
    }

    public void setFood(Food food) {
        this.food = food;
    }
}

I also wouldn't use StarterFood to extend a Course, because extends is for and " is a " relationship, I would call it StarterCourse and then add a default food for that course in the constructor.

public class StarterCourse extends Course {

    public StarterCourse(Food food) {
        // here call the super classes constructor
        // add items via the Course constructor
        super(food);
    }
}

Then in your main class to test it out try this:

public class Main() {
    public static void main() {
        // First create new Food object
        Food food = new Food(); 
        // Create a new StarterCourse and add the Food object to it
        StarterCourse starterCourse = new StarterCourse(food);
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM