diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..32858aa --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +*.class + +# Mobile Tools for Java (J2ME) +.mtj.tmp/ + +# Package Files # +*.jar +*.war +*.ear + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* diff --git a/OOAD/.classpath b/OOAD/.classpath new file mode 100644 index 0000000..fceb480 --- /dev/null +++ b/OOAD/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/OOAD/.project b/OOAD/.project new file mode 100644 index 0000000..f4dc31e --- /dev/null +++ b/OOAD/.project @@ -0,0 +1,17 @@ + + + OOAD + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/OOAD/.settings/org.eclipse.jdt.core.prefs b/OOAD/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..3a21537 --- /dev/null +++ b/OOAD/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/OOAD/bin/.gitignore b/OOAD/bin/.gitignore new file mode 100644 index 0000000..c2d9872 --- /dev/null +++ b/OOAD/bin/.gitignore @@ -0,0 +1 @@ +/com/ diff --git a/OOAD/src/com/boutiquelab/ooad/ch1/Builder.java b/OOAD/src/com/boutiquelab/ooad/ch1/Builder.java new file mode 100644 index 0000000..bd6e2b2 --- /dev/null +++ b/OOAD/src/com/boutiquelab/ooad/ch1/Builder.java @@ -0,0 +1,29 @@ +package com.boutiquelab.ooad.ch1; + +public enum Builder { + + FENDER, MARTIN, GIBSON, COLLINGS, OLSON, RYAN, PRS, ANY; + + public String toString() { + switch(this) { + case FENDER: + return "Fender"; + case MARTIN: + return "Martin"; + case GIBSON: + return "Gibson"; + case COLLINGS: + return "Collings"; + case OLSON: + return "Olson"; + case RYAN: + return "Ryan"; + case PRS: + return "Prs"; + case ANY: + return "Any"; + default: + return "none"; + } + } +} diff --git a/OOAD/src/com/boutiquelab/ooad/ch1/FindGuitarTester.java b/OOAD/src/com/boutiquelab/ooad/ch1/FindGuitarTester.java new file mode 100644 index 0000000..f12698a --- /dev/null +++ b/OOAD/src/com/boutiquelab/ooad/ch1/FindGuitarTester.java @@ -0,0 +1,40 @@ +package com.boutiquelab.ooad.ch1; +import java.util.Iterator; +import java.util.List; + + +public class FindGuitarTester { + + public static void main(String[] args) { + // 릭의 기타 재고 목록 셋업(초기화) + Inventory inventory = new Inventory(); + initializeInventory(inventory); + + GuitarSpec whatErinLikes = new GuitarSpec(Builder.FENDER, "Stratocaster", Type.ELECTRIC, 12, Wood.ALDER, Wood.ALDER); + + List matchingGuitars = inventory.search(whatErinLikes); + if (!matchingGuitars.isEmpty()) { + System.out.println("Erin, you might like these guitars:"); + for (Iterator i = matchingGuitars.iterator(); i.hasNext(); ) { + Guitar guitar = (Guitar)i.next(); + GuitarSpec spec = guitar.getSpec(); + System.out.println(" We have a " + + spec.getBuilder() + " " + spec.getModel() + " " + + spec.getType() + " guitar:\n " + + spec.getBackWood() + " back and sides,\n " + + spec.getTopWood() + " top.\nYou can have it for only $" + + guitar.getPrice() + "!\n ----"); + } + } else { + System.out.println("Sorry, Erin, we have nothing for you."); + } + } + + private static void initializeInventory(Inventory inventory) { + // 기타들을 재고 목록에 등 + GuitarSpec spec = new GuitarSpec(Builder.FENDER, "Stratocaster", Type.ELECTRIC, 12, Wood.ALDER, Wood.ALDER); + inventory.addGuitar("V95693", 1499.95, spec); + inventory.addGuitar("V9512", 1549.95, spec); + } + +} diff --git a/OOAD/src/com/boutiquelab/ooad/ch1/Guitar.java b/OOAD/src/com/boutiquelab/ooad/ch1/Guitar.java new file mode 100644 index 0000000..895e8ea --- /dev/null +++ b/OOAD/src/com/boutiquelab/ooad/ch1/Guitar.java @@ -0,0 +1,30 @@ +package com.boutiquelab.ooad.ch1; + +public class Guitar { + + private String serialNumber; + private double price; + private GuitarSpec spec; + + public Guitar(String serialNumber, double price, GuitarSpec spec) { + this.serialNumber = serialNumber; + this.price = price; + this.spec = spec; + } + + public String getSerialNumber() { + return serialNumber; + } + + public double getPrice() { + return price; + } + + public void setPrice(float newPrice) { + this.price = newPrice; + } + + public GuitarSpec getSpec() { + return spec; + } +} diff --git a/OOAD/src/com/boutiquelab/ooad/ch1/GuitarSpec.java b/OOAD/src/com/boutiquelab/ooad/ch1/GuitarSpec.java new file mode 100644 index 0000000..414bc3b --- /dev/null +++ b/OOAD/src/com/boutiquelab/ooad/ch1/GuitarSpec.java @@ -0,0 +1,59 @@ +package com.boutiquelab.ooad.ch1; + +public class GuitarSpec { + + private Builder builder; + private String model; + private Type type; + private int numStrings; + private Wood backWood; + private Wood topWood; + + public GuitarSpec(Builder builder, String model, Type type, int numStrings, Wood backWood, + Wood topWood) { + this.builder = builder; + this.model = model; + this.type = type; + this.numStrings = numStrings; + this.backWood = backWood; + this.topWood = topWood; + } + + public Builder getBuilder() { + return builder; + } + + public String getModel() { + return model; + } + + public Type getType() { + return type; + } + + public int getNumStrings() { + return numStrings; + } + + public Wood getBackWood() { + return backWood; + } + + public Wood getTopWood() { + return topWood; + } + + public boolean matches(GuitarSpec otherSpec) { + if (builder != otherSpec.builder) + return false; + if ((model != null) && (!model.equals("")) && (!model.equals(otherSpec.model))) + return false; + if (type != otherSpec.type) + return false; + if (backWood != otherSpec.backWood) + return false; + if (topWood != otherSpec.topWood) + return false; + return true; + } +} diff --git a/OOAD/src/com/boutiquelab/ooad/ch1/Inventory.java b/OOAD/src/com/boutiquelab/ooad/ch1/Inventory.java new file mode 100644 index 0000000..61ff368 --- /dev/null +++ b/OOAD/src/com/boutiquelab/ooad/ch1/Inventory.java @@ -0,0 +1,43 @@ +package com.boutiquelab.ooad.ch1; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + + +public class Inventory { + private List guitars; + + public Inventory() { + guitars = new LinkedList(); + } + + public void addGuitar(String serialNumber, double price, GuitarSpec spec) { + Guitar guitar = new Guitar(serialNumber, price, spec); + guitars.add(guitar); + } + + public Guitar getGuitar(String serialNumber) { + for (Iterator i = guitars.iterator(); i.hasNext(); ) { + Guitar guitar = (Guitar)i.next(); + if (guitar.getSerialNumber().equals(serialNumber)) { + return guitar; + } + } + return null; + } + + public List search(GuitarSpec searchSpec) { + List matchingGuitars = new LinkedList(); + for (Iterator i = guitars.iterator(); i.hasNext(); ) { + Guitar guitar = (Guitar)i.next(); + if (guitar.getSpec().matches(searchSpec)) { + matchingGuitars.add(guitar); + } + } + return matchingGuitars; + } +} + + + + diff --git a/OOAD/src/com/boutiquelab/ooad/ch1/Type.java b/OOAD/src/com/boutiquelab/ooad/ch1/Type.java new file mode 100644 index 0000000..6b8039c --- /dev/null +++ b/OOAD/src/com/boutiquelab/ooad/ch1/Type.java @@ -0,0 +1,17 @@ +package com.boutiquelab.ooad.ch1; + +public enum Type { + + ACOUSTIC, ELECTRIC; + + public String toString() { + switch(this) { + case ACOUSTIC: + return "acoustic"; + case ELECTRIC: + return "electric"; + default: + return "none"; + } + } +} diff --git a/OOAD/src/com/boutiquelab/ooad/ch1/Wood.java b/OOAD/src/com/boutiquelab/ooad/ch1/Wood.java new file mode 100644 index 0000000..2c4688e --- /dev/null +++ b/OOAD/src/com/boutiquelab/ooad/ch1/Wood.java @@ -0,0 +1,30 @@ +package com.boutiquelab.ooad.ch1; + +public enum Wood { + + INDIAN_ROSEWOOD, BRAZILIAN_ROSEWOOD, MAHOGANY, MAPLE, COCOBOLO, CEDAR, ADIRONDACK, ALDER, SITKA; + public String toString() { + switch(this) { + case INDIAN_ROSEWOOD: + return "Indian Rosewood"; + case BRAZILIAN_ROSEWOOD: + return "Brazilian Rosewood"; + case MAHOGANY: + return "Mahogany"; + case MAPLE: + return "Maple"; + case COCOBOLO: + return "Cocobolo"; + case CEDAR: + return "Cedar"; + case ADIRONDACK: + return "Adirondack"; + case ALDER: + return "Alder"; + case SITKA: + return "Sitka"; + default: + return "none"; + } + } +} diff --git a/OOAD/src/com/boutiquelab/ooad/ch2/DogDoor.java b/OOAD/src/com/boutiquelab/ooad/ch2/DogDoor.java new file mode 100644 index 0000000..840cac9 --- /dev/null +++ b/OOAD/src/com/boutiquelab/ooad/ch2/DogDoor.java @@ -0,0 +1,23 @@ +package com.boutiquelab.ooad.ch2; + +public class DogDoor { + private boolean open; + + public DogDoor() { + this.open = false; + } + + public void open() { + System.out.println("The dog door opens."); + open = true; + } + + public void close() { + System.out.println("The dog door closes."); + open = false; + } + + public boolean isOpen() { + return open; + } +} diff --git a/OOAD/src/com/boutiquelab/ooad/ch2/DogDoorSimulator.java b/OOAD/src/com/boutiquelab/ooad/ch2/DogDoorSimulator.java new file mode 100644 index 0000000..bf9b6de --- /dev/null +++ b/OOAD/src/com/boutiquelab/ooad/ch2/DogDoorSimulator.java @@ -0,0 +1,24 @@ +package com.boutiquelab.ooad.ch2; + +public class DogDoorSimulator { + public static void main(String[] args) { + DogDoor door = new DogDoor(); + Remote remote = new Remote(door); + System.out.println("Fido barks to go outside..."); + remote.pressButton(); + System.out.println("\nFido has gone outside..."); + System.out.println("\nFido's all done..."); + + try { + Thread.currentThread(); + Thread.sleep(10000); + } catch (InterruptedException e) {} + + System.out.println("...but he's stuck outside!"); + System.out.println("\nFido starts barking..."); + System.out.println("...so Gina grabs the remote control."); + remote.pressButton(); + System.out.println("\nFido's back inside..."); + + } +} diff --git a/OOAD/src/com/boutiquelab/ooad/ch2/Remote.java b/OOAD/src/com/boutiquelab/ooad/ch2/Remote.java new file mode 100644 index 0000000..8c94437 --- /dev/null +++ b/OOAD/src/com/boutiquelab/ooad/ch2/Remote.java @@ -0,0 +1,29 @@ +package com.boutiquelab.ooad.ch2; + +import java.util.Timer; +import java.util.TimerTask; + +public class Remote { + private DogDoor door; + + public Remote(DogDoor door) { + this.door = door; + } + + public void pressButton() { + System.out.println("Pressing the remote control button..."); + if (door.isOpen()) { + door.close(); + } else { + door.open(); + + final Timer timer = new Timer(); + timer.schedule(new TimerTask() { + public void run() { + door.close(); + timer.cancel(); + } + }, 5000); + } + } +} diff --git a/python/argparse b/python/argparse new file mode 100755 index 0000000..fbe00ab --- /dev/null +++ b/python/argparse @@ -0,0 +1,33 @@ +#!/usr/bin/python + +import argparse + +def main(): + commands = { + '1.0': { + 'integrate': 'IntegrateMethod', + 'cherrypick': 'CherrypickMethod', + }, + '2.0': { + 'integrate': 'IntegrateMethod', + }, + } + + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='version') + + for key in commands.keys(): + subparser = subparsers.add_parser(key) + subparser.add_argument('command', choices=commands[key].keys(), help='method for ' + key) + args = parser.parse_args() + print args + +def IntegrateMethod(): + print "IntegrateMethod" + +def CherrypickMethod(): + print "CherrypickMethod" + +if __name__ == "__main__": + main() +