Note that there are some explanatory texts on larger screens.

plurals
  1. PONot Understanding guitar example of Head first OOAD book
    primarykey
    data
    text
    <p>I have read Head First OOAD first chapter it has Guitar example, </p> <p>Guitar Class </p> <pre><code>public class Guitar { private String serialNumber; private double price; private String model; private Type type; private Builder builder; private Wood backWood; private Wood topWood; } </code></pre> <p>In above class Builder, Wood and Type are enum types. An Inventory class has list of Guitar and provide add, search and get methods.</p> <p>Inventory Class</p> <pre><code>class Inventory { List&lt;Guitar&gt; guitarList; public Inventory() { guitarList = new ArrayList&lt;Guitar&gt;(); } public boolean addGuitar(Guitar guitar){ return guitarList.add(guitar); } public Guitar getGuitar(Guitar guitar) { for(Guitar guitarData : guitarList ) { if(guitarData.getSerialNumber().equals(guitar.getSerialNumber())){ return guitarData; } } return null; } public List&lt;Guitar&gt; search(Guitar guitar) { List&lt;Guitar&gt; list = new ArrayList&lt;Guitar&gt;(); for(Guitar guitarData : guitarList ) { if(guitar.getBuilder() == null || !guitar.getBuilder().equals(guitarData.getBuilder())) { continue; } if(guitar.getTopWood() == null || !guitar.getTopWood().equals(guitarData.getTopWood())) { continue; } if(guitar.getBackWood() == null || !guitar.getBackWood().equals(guitarData.getBackWood())) { continue; } if(guitar.getType() == null || !guitar.getType().equals(guitarData.getType())) { continue; } if(guitar.getModel() == null || !guitar.getModel().equals(guitarData.getModel())) { continue; } list.add(guitarData); } return list; } } </code></pre> <p>In book, create another class GuitarSpec for search method in inventory because in this method client never provide serial Number and price for Guitar.</p> <p>Updated Classes :</p> <p>Guitar Class </p> <pre><code>class Guitar { private String serialNumber; private double price; private GuitarSpec guitarSpec; public String getSerialNumber() { return serialNumber; } public double getPrice() { return price; } public GuitarSpec getGuitarSpec() { return guitarSpec; } } </code></pre> <p>Guitar Spec Class :</p> <pre><code>class GuitarSpec { private String model; private Type type; private Builder builder; private Wood backWood; private Wood topWood; public String getModel() { return model; } public Type getType() { return type; } public Builder getBuilder() { return builder; } public Wood getBackWood() { return backWood; } public Wood getTopWood() { return topWood; } } </code></pre> <p>and Change in Inventory class search method,</p> <pre><code>public List&lt;Guitar&gt; search(GuitarSpec searchSpec) { List&lt;Guitar&gt; list = new ArrayList&lt;GuitarSpec&gt;(); for(Guitar guitar : guitarList ) { GuitarSpec guitarSpec = guitar.getGuitarSpec(); if(searchSpec.getBuilder() == null || !searchSpec.getBuilder().equals(guitarSpec.getBuilder())) { continue; } if(searchSpec.getTopWood() == null || !searchSpec.getTopWood().equals(guitarSpec.getTopWood())) { continue; } if(searchSpec.getBackWood() == null || !searchSpec.getBackWood().equals(guitarSpec.getBackWood())) { continue; } if(searchSpec.getType() == null || !searchSpec.getType().equals(guitarSpec.getType())) { continue; } if(searchSpec.getModel() == null || !searchSpec.getModel().equals(guitarSpec.getModel())) { continue; } list.add(guitar); } return list; } </code></pre> <p>I am not understanding why new GuitarSpec is Created, As per oops is this required ? </p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload