Nayana
Nayana

Reputation: 147

Access existing objects in another class Java

I'm using Bluej to create a basic Java project which I'm not supposed to use Arrays or collections and I'm having difficulty to understand how I can display a specific existing object from another class.

Here's my Class Listing:

public class Listing
{
    //name of the listing
    private String listingName;
    //number of the listing
    private int listingNumb = 0;
    //price of the listing
    private double price;
    //checks if the listing is for sale
    private boolean isForSale;
    //House data of the listing
    private HouseData housedata;
    
    private boolean isSold;

    /**
     * Constructor for objects of class Listing
     */
    public Listing(String newListing, double newPrice, HouseData housedata)
    {
        listingName = newListing;
        listingNumb++;
        price = newPrice;
        isForSale = false;
        this.housedata = housedata;
        isSold = false;
    }

    //Returns if the listing is sold or not
    public boolean getIsSold(){
    
    return isSold;
    }
    
    //Set the listing as sold or not
    public boolean setIsSold(){
        isSold = true;
    return isSold;
    }
    
    //returns if the listing is for sale or not
    public boolean getIsForSale(){
        return isForSale;
    }

    //set the listing for sale or not
    public boolean setIsForSale(boolean sale){
        isForSale = sale;
        return isForSale;
    }

    //Return the price of the listing
    public double getPrice(){
        return price;
    }

    //Return the listing name
    public String getListingName(){
        return listingName;
    }

    //Return the listing number
    public int getListingNumb(){
        return listingNumb;
    }

    //checks if the listing is located at a specific city
    public boolean isLocatedAt(String city){

        if(housedata.city() == city){
            return true;
        }else{
            return false;}}

    public double getSurface(){
    return housedata.getSurface();
    }
    
}

Here's my Class RealEstateAgency where I want to call the objects from class Listing:

public class RealEstateAgency
{

    //the name of the agency
    private String agency;
    //the amount of profit from property sales
    private double profit;
    //identifies the seller of the property
    private String agent;

    private boolean isOnSale;

    //the name of the property
    private Listing listing;
    
    private Listings lists;
    /**
     * Constructor for objects of class RealEstateAgency
     */
    public RealEstateAgency()
    {
        profit = 0;
    }

    //Returns total profit from agency
    public double getProfit(){
    return profit;
    }

  //Display listing that is on sale with the name of one city
//This is the method where I want to retrieve all listing existing objects that have a specific city
    public void displayListingsLocatedAt(String city){
       
          System.out.println("The available listings for this city are: " +  ;
    }

}

And this is the main class where I initialize the objects:

public class AppStart
{
    public static void main(String[] args)
    {
        Address address1 = new Address("street", "postalcode", "city");
        HouseData house1 = new HouseData(2, true, address1);
        Listing list1 = new Listing("Imóvel1", 9000, house1);
        Listing list2 = new Listing("Imóvel2", 9000, house1);
        Listing list3 = new Listing("Imóvel3", 8000, house1);
        RealEstateAgency real1 = new RealEstateAgency();    
    }
}

Upvotes: 0

Views: 131

Answers (1)

kry
kry

Reputation: 362

Thing is, you are creating these Listing classes that are not part of any class. After your initialization of RealEstateAgency, there should be a call something like this:

real1.listing = list1;

(I think it will work, altough it's set to private...)

It will add your list1 into your real1 object, then able to call it's getters like

real1.listing.getPrice();

Or something like this.

Thing is, you can reach the class variables by the dot selector, even if that variable is an another class, in that case you can use your selectors as a chain.

However, with your current setup, you can hold only 1 Listing in each RealEstateAgency, plus I don't think "Listings lists" works. Either that's an errorenous code, or part of your code is missing that explains that line.

An another note, your listingNumb currently does nothing, since it's held by the Listing class, so after calling the constructor of a Listing, it will be just set to 1 all the time.

Upvotes: 1

Related Questions