Skip to content

Instantly share code, notes, and snippets.

@zhenyanghua
Last active September 7, 2018 17:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zhenyanghua/63094acc65c20ec83bda0cfe26ba91b7 to your computer and use it in GitHub Desktop.
Save zhenyanghua/63094acc65c20ec83bda0cfe26ba91b7 to your computer and use it in GitHub Desktop.
OOA&D wk1
import java.util.List;
import java.util.LinkedList;
class ArtWork {
private String serialNumber;
private double price;
private String material;
private String type;
private String series;
ArtWork(String serialNumber, double price, String material,
String type, String series) {
this.serialNumber = serialNumber;
this.price = price;
this.material = material;
this.type = type;
this.series = series;
}
String getSerialNumber() {
return serialNumber;
}
double getPrice() {
return price;
}
void setPrice(double price) {
this.price = price;
}
String getMaterial() {
return material;
}
String getType() {
return type;
}
String getSeries() {
return series;
}
@Override
public String toString() {
return "Material: " + material +
"\tType: " + type +
"\tSeries: " + series;
}
}
class Inventory {
private List<ArtWork> artworks;
Inventory() {
artworks = new LinkedList<>();
}
void addArtWork(String serialNumber, double price, String material,
String type, String series) {
ArtWork artwork = new ArtWork(serialNumber, price,
material, type, series);
artworks.add(artwork);
}
List<ArtWork> search(ArtWork artwork) {
List<ArtWork> results = new LinkedList<>();
for (ArtWork a: artworks) {
if (a.getMaterial() == null || a.getMaterial().isEmpty() ||
!a.getMaterial().equals(artwork.getMaterial()))
continue;
if (a.getType() == null || a.getType().isEmpty() ||
!a.getType().equals(artwork.getType()))
continue;
if (a.getSeries() == null || a.getSeries().isEmpty() ||
!a.getSeries().equals(artwork.getSeries()))
continue;
results.add(a);
}
return results;
}
}
class SearchArtTest {
public static void main(String... args) {
Inventory inventory = new Inventory();
inventory.addArtWork("sksf00001", 25, "Silk",
"scarf", "Awake");
inventory.addArtWork("pt00001", 200, "Sister",
"paper", "Summer");
ArtWork artwork = new ArtWork("", 0, "silk", "scarf", "Awake");
List<ArtWork> results = inventory.search(artwork);
if (results.isEmpty()) {
System.out.println("Sorry, we found nothing for you");
} else {
for(ArtWork a: results)
System.out.println("Found: " + a);
}
}
}
import java.util.List;
import java.util.LinkedList;
enum Materials {
SILK,
NONSILK;
@Override
public String toString() {
return this.name().toLowerCase();
}
}
enum Types {
PAINT,
SCARF,
PURSE;
@Override
public String toString() {
return this.name().toLowerCase();
}
}
enum Series {
SUMMER,
SUNSET;
@Override
public String toString() {
return this.name().toLowerCase();
}
}
class ArtWorkSpecs {
private Materials material;
private Types type;
private Series series;
ArtWorkSpecs(Materials material,
Types type, Series series) {
this.material = material;
this.type = type;
this.series = series;
}
Materials getMaterial() {
return material;
}
Types getType() {
return type;
}
Series getSeries() {
return series;
}
boolean match(ArtWorkSpecs specs) {
if (specs.getMaterial() == null ||
!specs.getMaterial().equals(material))
return false;
if (specs.getType() == null ||
!specs.getType().equals(type))
return false;
if (specs.getSeries() == null ||
!specs.getSeries().equals(series))
return false;
return true;
}
@Override
public String toString() {
return "Material: " + material +
"\tType: " + type +
"\tSeries: " + series;
}
}
class ArtWork {
private String serialNumber;
private double price;
private ArtWorkSpecs specs;
ArtWork(String serialNumber, double price, ArtWorkSpecs specs) {
this.serialNumber = serialNumber;
this.price = price;
this.specs = specs;
}
String getSerialNumber() {
return serialNumber;
}
double getPrice() {
return price;
}
void setPrice(double price) {
this.price = price;
}
ArtWorkSpecs getSpecs() {
return new ArtWorkSpecs(
specs.getMaterial(),
specs.getType(),
specs.getSeries());
}
@Override
public String toString() {
return specs.toString();
}
}
class Inventory {
private List<ArtWork> artworks;
Inventory() {
artworks = new LinkedList<>();
}
void addArtWork(String serialNumber, double price, Materials material,
Types type, Series series) {
ArtWork artwork = new ArtWork(serialNumber, price,
new ArtWorkSpecs(material, type, series));
artworks.add(artwork);
}
List<ArtWork> search(ArtWorkSpecs specs) {
List<ArtWork> results = new LinkedList<>();
for (ArtWork a: artworks) {
if (specs.match(a.getSpecs()))
results.add(a);
}
return results;
}
}
class SearchArtTest {
public static void main(String... args) {
Inventory inventory = new Inventory();
inventory.addArtWork("sksf00001", 25, Materials.SILK, Types.SCARF, Series.SUNSET);
inventory.addArtWork("pt00001", 200, Materials.NONSILK, Types.PAINT, Series.SUMMER);
ArtWorkSpecs specs = new ArtWorkSpecs(Materials.SILK, Types.SCARF, Series.SUNSET);
List<ArtWork> results = inventory.search(specs);
if (results.isEmpty()) {
System.out.println("Sorry, we found nothing for you");
} else {
for(ArtWork a: results)
System.out.println("Found: " + a);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment