[ 프로젝트이름 ] : Project_Car [ 프로젝트를만든목적 ] : 임의의자동차판매소가있다고가정하고, 고객이원하는자동차의각부분을 Java 를이용하여객 체로생성하고, 그것을제어하는메소드를이용하여자동차객체를생성하는것이목표이다. [ 프로젝트패키지와클래스의내용설명 ] [Car 패키지 ] : Body, Engine, Seat, Tire, SpeedGauge, Vendor, Car, CarMain 클래스를포함한다. 설문조사로얻은고객의데이터로실제자동차를생성한다. 자동차의각부분을생성하고 main 메소드를실행한다. CarMain (class) : 설문조사를실시하고, 자동차를생성및테스트를하는클래스. Car (class) : 모든객체를통합하여자동차를생성하는클래스. Body (class) : 자동차의차제를생성하는클래스. Engine (class) : 자동차의엔진을생성하는클래스. Seat (class) : 자동차의시트를생성하는클래스. Tire (class) : 자동차의타이어를생성하는클래스. SpeedGauge (class) : 자동차의속도계를생성하는클래스. Vendor (class) : 자동차의브랜드명을지정하는클래스. [Doc 패키지 ] : DocBody, DocEngine, DocSeat, DocSpeedGauge, DocTire, DocVendor 인터페이스를포함하고있으며, 이를상속하는 DocCar 인터페이스와 DocCar 를실제구현하는 Doc 클래스를포함한다. 고객이원하는자동차를만들기위한설문조사를담당하는모듈이다. Doc (class) : 실제각설문조사메소드를구현하는클래스로서 DocCar 인터페이스를구현한다. 자동
차판매회사에서사용할수있는계약서메소드의리스트이다. DocCar (interface) : Doc 패키지내의모든인터페이스를상속받아하나의통합된인터페이스를만 든다. DocBody (interface) : 자동체의차체설정에관한설문조사메소드를포함하는인터페이스. DocEngine (interface) : 자동차의엔진설정에관한설문조사메소드를포함하는인터페이스. DocSeat (interface) : 자동차의좌석설정에관한설문조사메소드를포함하는인터페이스. DocSpeedGauge (interface) : 자동차의속도계의설정에관한설문조사메소드를포함하는인터페 이스. DocTire (interface) : 자동차의바퀴설정에관한설문조사메소드를포함하는인터페이스. DocVendor (interface) : 자동차의벤더명설정에관한설문조사메소드를포함하는인터페이스. [Test 패키지 ] : Speed 인터페이스를포함하고, 이를상속하는 TestCar 인터페이스와 TestCar 를상속받아실제구현하는 Test 클래스를포함한다. 고객이원하는자동차를만든시실제로운전하는테스트드라이빙을담당하는모듈이다. Test (class) : 실제각테스트메소드를구현하는클래스로서 TestCar 인터페이스를구현한다. TestCar (interface) : Test 패키지에있는모든인터페이스를상속받아하나의통합된인터페이스를 만든다. Speed (interface) : 자동차의속도계테스트에관한메소드를포함하는인터페이스. [ 객체상관관계 ] [Car 패키지 ] Body Engine Seat Tire SpeedGauge Vendor Car
[Doc 패키지 ] DocBody DocEngine DocSeat DocSpeedGauge DocTire DocVendor DocCar Doc [Test 패키지 ] Speed TestCar Test [Main 메소드 ] Test Car Doc CarMain [ 각객체별멤버변수및메소드소개 ] [Package Car] (Body) String material : 차제의재질을저장하는변수 Body() : 생성자. 멤버변수를초기화한다. void setbody(string data) : 차제의재질을설정하는메소드. 인자값으로차체의재질을
String getbody() 변경한다. : 차체의재질을반환하는메소드. 리턴값으로재질의설정값을 리턴한다. (Engine) int cylinder int max_cylinder : 실린더의갯수를저장하는변수 : 설정할수있는최대실린더의수 Engine() : 생성자. 멤버변수를초기화한다. boolean setcylinder(int number) : 실린더의갯수를설정하는메소드. 실린더의갯수가너무적거나많을경우에러메시지를출력한다. 정상종료시 true 를반환. 오류일경우 false 를반환. int getcylinder() : 실린더의갯수를반환하는메소드. 리턴값으로실린더의갯수를리턴한다. (Seat) int seat_number : 시트의갯수를저장하는변수 Seat() : 생성자. 멤버변수를초기화한다. boolean setseat(int number) int getseat() : 시트의갯수를설정하는메소드. 인자값으로들어온수만큼시트의갯수를설정한다. 정상종료시 true, 그외의경우에는 false 를리턴한다. : 시트의갯수를반환하는메소드. 리턴값으로시트의갯수를리턴한다. (SpeedGauge) int max_speed int current_speed int distance : 최대속도를저장하는변수 : 현재속도를저장하는변수 : 주행거리를저장하는변수 SpeedGauge() : 생성자. 변수를초기화한다. 최대속도를설정한다. boolean accelspeed(int speed) : 엑셀메소드. 현재속도와이동거리를증가시킨다. 만약현재 속도보다높은속도가인자값으로들어오지않을경우에러메
boolean breakspeed(int speed) int getspeed() int getdistance() 시지를 Dp한다. 정상종료시 true, 그외의모든경우에 false 를리턴한다. : 브레이크메소드. 현재속도를감소시키고이동거리를증가시킨다. 만약현재속도보다높은값이나오거나마이너스값이인자값으로들어올경우에러메시지를 Dp한다. 정상종료시 true, 그외의모든경우에 false 를리턴한다. : 현재스피드를반환하는메소드. 리턴값으로 current_speed 값을반환한다. : 현재주행거리를반환하는메소드. 리턴값으로 distance 값을반환한다. (Tire) int tire_number int max_tire : 타이어의갯수를저장하는변수 : 타이어의최대갯수를저장하는변수 Tire() : 생성자. 변수를초기화한다. boolean settire(int number) : 타이어의갯수를설정하는메소드. max_tire 의값과비교하여설정가능한갯수인지확인하고오류시에러메시지를 DP 한다. 정상종료시 true, 그외의모든경우에 false 를리턴한다. int gettire() : 타이어의갯수를반환하는메소드. (Vendor) String vendor_name : 벤더명을저장하는변수 Vendor() : 생성자. 변수를초기화한다. void setvendor(string name) : 벤더명을설정하는메소드. String getvendor() : 벤더명을반환하는메소드. vendor_name 값을확인하여 NULL 값일경우에러메시지를 DP 하고 NULL 값을리턴한다. (Car) static Engine engine : Engine 객체.
static Body body : Body 객체. static Seat seat : Seat 객체. static SpeedGauge speedgauge : SpeedGauge 객체. static Tire tire : Tire 객체. static Vendor vendor : Vendor 객체. Car() : 생성자. 각객체들을생성한다. boolean engineset(int cylindernum) : engine 객체를이용하여엔진의기통수를설정한다. 정상종료시 true, 그외의경우에는 false 를리턴한다. void engineget() : engine 객체를이용하여엔진의기통수를리턴한다. void bodyset(string name) : body 객체를이용하여차제의재질을설정한다. void bodyget() :body 객체를이용하여차체의재질을리턴한다. boolean seatset(int number) : seat 객체를이용하여시트의갯수를설정한다. 정상종료시 true, 그외의경우에는 false 를리턴한다. void seatget() : seat 객체를이용하여시트의갯수를리턴한다. boolean speedgaugeaccel(int accel) : speedgauge 객체를이용하여현재속도를증가한다. 정상종료시 true, 그외의경우에는 false 를리턴한다. boolean speedgaugebreak(int breaks) : speedgauge 객체를이용하여현재속도를감소한다. 정상종료시 true, 그외의경우에는 false 를리턴한다. boolean tireset(int tirenum) : tire 객체를이용하여타이어의갯수를설정한다. 정상종료시 true, 그외의경우에는 false 를리턴한다. void tireget() : tire 객체를이용하여타이의갯수를리턴한다. void vendorset(string vendorname) : vendor 객체를이용하여벤더명을설정한다. void venderget() :vendor 객체를이용하여벤더명을리턴한다. [Package Doc] (DocBody) String docgetbody() : 차체의재질설문조사를위한추상메소드. (DocEngine) int docgetengine() : 자동차의엔진기통설문조사를위한추상메소드. (DocSeat) int docgetseat() : 자동차의좌석갯수설문조사를위한추상메소드.
(DocSpeedGauge) void docgetspeedgauge() : 자동차의속도계설정설문조사를위한추상메소드. (DocTire) int docgettire() : 자동차의바퀴갯수설문조사를위한추상메소드. (DocVendor) String docgetvendor() : 자동차의벤더명설문조사를위한추상메소드. (DocCar) : 인터페이스를통합해주는인터페이스. (Doc) String docgetbody() : 고객으로부터원하는차체의재질을입력받는메소드. 입력받은재질값을 String 의형태로리턴한다. int docgetengine() : 고객으로부터원하는엔진의기통수를입력받는메소 드. 입력받은기통수를 int 의형태로리턴한다. int docgetseat() : 고객으로부터원하는좌석의갯수를입력받는메소드. 입력받은좌석수를 int 의형태로리턴한다. void docgetspeedgauge() : 고객으로부터속도계의옵션을입력받는메소드. 현재로서는아무런역할이없다. String docgetvendor() : 고객으로부터원하는벤더의이름을입력받는메소드. 입력받은벤더명을 String 의형태로리턴한다. int docgettire() : 고객으로부터원하는바퀴의갯수를입력받는메소드. 입력받은바퀴의갯수를 int 의형태로리턴한다.
[Package Test] (Speed) int setspeed() : 자동차의속도를조절하는추상메소드. (TestCar) : 인터페이스를통합해주는인터페이스. (Test) int setspeed() : 사용자로부터원하는속도를입려받아입력받은값을 int 의형태로리턴한다.
[Package Car] (Body.java) package Car; /* * Body.java * Written by 200301582 ST. Kim * Discription : body class * create body of car. */ public class Body { String material; public Body() { //System.out.println("Body Class!"); material = null; void setbody(string data) { material = data; String getbody() { if(material == null) { System.out.println("Choice material!"); return null; else return material;
(Car.java) package Car; /* * Car.java * Written by 200301582 ST. Kim * Discription : car class * create all of car. */ public class Car { static Engine engine; static Body body; static Seat seat; static SpeedGauge speedgauge; static Tire tire; static Vendor vendor; public Car() { //System.out.println("Car Class!"); engine = new Engine(); body = new Body(); seat = new Seat(); speedgauge = new SpeedGauge(); tire = new Tire(); vendor = new Vendor(); boolean engineset(int cylindernum) { return this.engine.setcylinder(cylindernum); void engineget() { System.out.println("engine set : " + engine.getcylinder()); void bodyset(string name) { this.body.setbody(name); void bodyget() { System.out.println("body set : " + body.getbody()); boolean seatset(int number) { return this.seat.setseat(number); void seatget() { System.out.println("seat set : " + this.seat.getseat()); boolean speedgaugeaccel(int accel) { if(this.speedgauge.accelspeed(accel) == false)
else { System.out.println("speedGauge : " + this.speedgauge.getspeed()); System.out.println("speedGaugeDistance : " + this.speedgauge.getdistance()); return true; boolean speedgaugebreak(int breaks) { if(this.speedgauge.breakspeed(breaks) == false) else { System.out.println("speedGauge : " + this.speedgauge.getspeed()); System.out.println("speedGaugeDistance : " + this.speedgauge.getdistance()); return true; boolean tireset(int tirenum) { return this.tire.settire(tirenum); void tireget() { System.out.println("tire number : " + this.tire.gettire()); void vendorset(string vendorname) { this.vendor.setvendor(vendorname); void venderget() { System.out.println("vendor name : " + this.vendor.getvendor());
(CarMain.java) package Car; import Doc.Doc; import Test.Test; /* * CarMain.java * Written by 200301582 ST. Kim * Discription : CarMain class * just main. */ public class CarMain { /** * @param args */ public static void main(string[] args) { // TODO Auto-generated method stub boolean a = false; System.out.println(" 안녕하세요!"); System.out.println(" 저희정통자동차판매소에오신것을환영합니다!"); System.out.println(" 지금부터고객님의요구에맞는자동차를제작할테니묻는말에대답해."); System.out.println(" 대금은일시불로 only 현찰, 가격문의는안받습니다.\n"); Doc doct Test test Car car = new Doc(); = new Test(); = new Car(); car.vendorset(doct.docgetvendor()); while(a == false) { System.out.println(); a = car.engineset(doct.docgetengine()); a = false; System.out.println(); car.bodyset(doct.docgetbody()); System.out.println(); doct.docgetspeedgauge(); while(a == false){ System.out.println(); a = car.tireset(doct.docgettire()); a = false; \n"); System.out.println(); System.out.println(" 지금부터주문하신내역에대한정리를해드리겠습니다. car.venderget(); car.engineget(); car.bodyget(); car.tireget();
System.out.println(); System.out.println(" 지금부터간단한시승 Test 를하겠습니다."); System.out.println(" 먼저엑셀을밟아보세요."); System.out.println(); while(a == false) { a = car.speedgaugeaccel(test.setspeed()); a = false; System.out.println(" 잘나가는군요. 그럼이번엔브레이크를밟아보세요."); System.out.println(); while(a == false) { a = car.speedgaugebreak(test.setspeed()); System.out.println(); System.out.println(" 마음에드시나요?"); System.out.println(" 새로운자동차의오너가되신것을축하드립니다!");
(Engine.java) package Car; /* * Engine.java * Written by 200301582 ST. Kim * Discription : engine class * create engine of car. */ public class Engine { int cylinder; of cylinder int max_cylinder; maxium cylinder public Engine() { //System.out.println("Engine class!"); max_cylinder = 10; cylinder = 0; public boolean setcylinder(int number) { cylinder number // number // number of // constructor // setting of if(number > max_cylinder) { System.out.println("too many cylinder. please choice 1 ~" + max_cylinder); else if(number <= 0) { System.out.println("too low cylinder. please choice 1 ~" + max_cylinder); else { cylinder = number; return true; public int getcylinder() { cylinder number return cylinder; // getting of
(Seat.java) package Car; /* * Seat.java * Written by 200301582 ST. Kim * Discription : seat class * create seat of car. */ public class Seat { seat int seat_number; // number of public Seat() { // constructor // System.out.println("Seat Class!"); seat_number = 0; boolean setseat(int number) { // setting of seat number if(number < 0) { System.out.println(" 알맞은숫자를입력하세요. (0 ~ 10)"); else if(number > 10) { System.out.println(" 알맞은숫자를입력하세요. (0 ~ 10)"); seat_number = number; return true; int getseat() { // getting of seat number return seat_number;
(SpeedGauge.java) package Car; /* * SpeedGauge.java * Written by 200301582 ST. Kim * Discription : speedgauge class * create speedgauge of car. */ public class SpeedGauge { // constructor int max_speed; // max of speed int current_speed; // current speed int distance; // cureent distance public SpeedGauge() { //System.out.println("SpeedGuage Class!"); max_speed = 300; current_speed = 0; distance = 0; // constructor boolean accelspeed(int speed) { // setting of accel if(speed > max_speed) { System.out.println("too high speed. please choice 0 ~ " + max_speed); else if(speed <= 0) { System.out.println("please. this car is only go."); else if(speed <= current_speed) { System.out.println("please. use breakspeed()"); else { for(int i = 0; current_speed < speed; current_speed++) { distance++; return true; break boolean breakspeed(int speed) { if(speed >= current_speed) { System.out.println("please. use accelspeed()"); else if(speed < 0) { System.out.println("please. this car is only go."); else { // setting of
distance += current_speed - speed; current_speed = speed; return true; int getspeed() { current speed return current_speed; // getting of int getdistance() { return distance;
(Tire.java) package Car; /* * Tire.java * Written by 200301582 ST. Kim * Discription : tire class * create tire of car. */ public class Tire { int tire_number; tire int max_tire; of maxium tire // number of // number public Tire() { // constructor // System.out.println("Tire Class!"); tire_number = 0; max_tire = 10; boolean settire(int number) { // setting of tire number if(number > max_tire) { System.out.println("too many tire. please choice 4 ~ " + max_tire); else if(number < 4) { System.out.println("too low tire. please choice 4 ~ " + max_tire); tire_number = number; return true; int gettire() { // setting of tire number if(tire_number == 0) { System.out.println("please. make tire!"); return 0; else return tire_number;
(Vendor.java) package Car; /* * Vendor.java * Written by 200301582 ST. Kim * Discription : vendor class * create vendor of car. */ public class Vendor { String vendor_name; public Vendor() { //System.out.println("Vendor Class!"); vendor_name = null; void setvendor(string name) { vendor_name = name; String getvendor() { if(vendor_name == null) { System.out.println("please. make vendor!"); return null; else return vendor_name;
[Package Doc] (Doc.java) package Doc; import java.util.scanner; public class Doc implements DocCar { Scanner s = new Scanner(System.in); String temp; String check; public String docgetbody() { System.out.println(" 원하시는차체의재질을입력하세요."); System.out.print(" 차체의재질 : "); try { temp = s.next(); catch (Exception e) { e.printstacktrace(); return temp; public int docgetengine() { int cylinder = 0; System.out.println(" 원하시는엔진의기통수를입력하세요."); System.out.print(" 기통수 : "); try { check = s.next(); cylinder = Integer.parseInt(check); catch (Exception e) { System.out.println(" 올바른숫자를입력해주세요."); return (int)(cylinder); public int docgetseat() { int seat = 0; System.out.println(" 원하시는시트의갯수를입력하세요."); System.out.print(" 시트수 : "); try { check = s.next(); seat = Integer.parseInt(check); catch (Exception e) { System.out.println(" 올바른숫자를입력해주세요."); return seat;
public void docgetspeedgauge() { 다."); System.out.println(" 죄송합니다."); System.out.println(" 속도계에대해서는사용자가조정할수있는부분이없습니 public String docgetvendor() { int a = 0; int i = 1; while(i > 0) { "); System.out.println(" 원하시는벤더명을입력하세요."); System.out.println("1.HyunDie, 2.Ventz, 3.SsanSung, 4.ETC... System.out.print(" 어느것을원하세요? 번호선택 : "); try { check = s.next(); a = Integer.parseInt(check); //a = s.nextint(); catch (Exception e) { System.out.println(" 올바른숫자를입력해주세요."); if(a == 1) { temp = "HyunDie"; break; else if(a == 2) { temp = "Ventz"; break; else if(a == 3) { temp = "SsanSung"; break; else if(a == 4) { System.out.println("' 아무거나 ' 를선택하셨네요!"); System.out.println(" 벤더명은 ' 아무거나 ' 입니다!"); temp = " 아무거나 "; break; else { if( i == 1) { System.out.println(" 엉뚱한짓말고번호나찍으라구!"); i++; else System.out.println(" 형아화낸다?"); return temp; public int docgettire() {
Integer tire = 0; System.out.println(" 원하시는바퀴의갯수를입력하세요."); System.out.print(" 바퀴수 : "); try { check = s.next(); tire = Integer.parseInt(check); catch (Exception e) { System.out.println(" 올바른숫자를입력해주세요."); return tire;
(DocBody.java) package Doc; public interface DocBody { abstract String docgetbody(); // DocBody interface. // get the Body. and return it. (DocCar.java) package Doc; public interface DocCar extends DocBody, DocEngine, DocSeat, DocSpeedGauge, DocVendor, DocTire { (DocEngine.java) package Doc; public interface DocEngine { int docgetengine(); and return it. // DocEngine interface. // get the engine cylinder. (DocSeat.java) package Doc; public interface DocSeat { int docgetseat(); // DocSeat interface. // get Seat number. and return it. (DocSpeedGauge.java) package Doc; public interface DocSpeedGauge { void docgetspeedgauge();
(DocTire.java) package Doc; public interface DocTire { int docgettire(); (DocVendor.java) package Doc; public interface DocVendor { abstract String docgetvendor(); return it. // DocVendor interface. // get the vendorname. and
[Package Test] (Test.java) package Test; import java.util.scanner; public class Test implements TestCar { Scanner s = new Scanner(System.in); String check; public int setspeed() { int speed = 0; System.out.println(); System.out.println(" 원하시는속도를입력하세요."); System.out.print("SPEED : "); try { check = s.next(); speed = Integer.parseInt(check); catch(exception e) { System.out.println(" 올바른속도를입력하세요. (0 ~ 300)"); return -1; return speed; (TestCar.java) package Test; public interface TestCar extends Speed{ (Speed.java) package Test; public interface Speed { int setspeed();