요구사항 정의서

  • 진행하는 프로젝트의 기능에 대한 나열
  • 최소한의 분류 및 고유 ID 할당 정도의 내용을 포함
  •  

 


요구사항 명세서

  • 기능 / 보완 / 퍼포먼스 개선
  • 중요도 상, 필수 : 관리자 , 회원가입, 로그인
  • 중요도 중 , 프로젝트 주제에 맞는 것
  • 중요도 하 : 있으면 좋지만 없어도 문제되지 않음
  • 외부 API 구현, 게시판,
  • 유효성 검사에 대한 항목 추가해야함 (비밀번호 글자수 등...)


 

 

objectAID

이클립스 마켓플레이스

플러그인 설치


  1. 이클립스를 연다

  2. 최상단 메뉴에서 [Help] - [Install New Software..] 클릭

  3. [Add] 버튼 클릭

  4. 내용 입력 후 [OK] 버튼 클릭

    - Name : ObjectAid UML Explorer

    - Location : http://www.objectaid.com/update/current

  5. 체크 후 설치 진행

     


UML 유니파이드 모델링 언어

 

패키지 > new > Other...
드래그 해서 끌어오기

package kh.uml.e00.basic;

public class Notation {
	private int _private; 		// -
	int _default;				// ~
	protected int _protected;  	// #
	public int _public;			// +
	
	public Notation() {}
	
	private void _privateF() {}
	void _defaultF() {}
	protected void _protectedF() {}
	public void _publicF() {}
}

일반화 Generalization

 

package kh.uml.e01.generalization;

public class Member {
	private int id;
	private String name;
	private double point;
	
	public Member() {}
	public Member(int id, String name, double point) {
		super();
		this.id =id;
		this.name =name;
		this.point =point;
		
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public double getPoint() {
		return point;
	}
	public void setPoint(double point) {
		this.point = point;
	}

}
package kh.uml.e01.generalization;

public class Silver extends Member{

}
package kh.uml.e01.generalization;

public class Gold extends Member {

}

- 실버는 멤버로 일반화 된다.

- 골드는 멤버로 일반화 된다.

 

* 화살표 방향을 외워야 함


realization

 

미래의 유지보수, 버전 업 / 패치 고려

 

설계를 위한 클래스 (추상체)

 

class 상속 : 상위 클래스의 기능을 물려 받는다

interface 상속 : 완전추상체 상속(기능이 없음), 다형성을 얻는다.

package kh.uml.e02.realization;

public interface USBType {
	public void bootUP();
}

package kh.uml.e02.realization;

public class SmartPhone implements USBType {


@Override
public void bootUP() {
	// Ctrl + SpaceBar
	System.out.println("스마트폰 연결 완료");
}
}
package kh.uml.e02.realization;

public class ExternalStorage implements USBType{

	public void bootUP() {
		System.out.println("폴더를 열어 내용 보기");
	};
	
}

 

화살표(점선) - realization, 구체화, 실체화

스마트폰이 USB타입을 실체화 하였다.


Dependency 의존하는

 

Chef는 Fire를 의존한다.

화살표 점선 + 헤드부분이 열려있음 : Dependency 관계

Dependency 의 종류도 함께 표기할수도 있음 : 스테리오 타입 <<Create>> <<Local>> <<Parameter>>

package kh.uml.e03.dependency;

public class Fire {

}
package kh.uml.e03.dependency;

public class Chief {
	public Fire makeFire() {
		return new Fire(); // 스테레오 타입 : <<create>>
	}
	
	public void cooking1() {
		Fire f = new Fire(); // 스테레오 타입 : <<local>>
		//f.......요리를 만든다.
	}
	
	public void cooking2(Fire f) {
		// 스테레오 타입 : <<parameter>>
	}
	
}

(* objectAID에서는 초기설정에선 안보임, 오른쪽 클릭 > add > Dependency )


association_aggregation

 

  • 디팬던시와는 다름! 디팬던시에서는 지역변수,매개변수로만 쓰이고 사라짐
  • 멤버필드로 값을 가짐  association
  • 인스턴스의 생성방식이 컨스트럭트나 setter를 통해 받는 경우 aggregation
package kh.uml.e04.association_aggregation;

public class Person {

		private Glasses glasses;
		private Watch watch;
		
		
		public Person() {super();}

		public Person(Glasses glasses, Watch watch) {
			super();
			this.glasses = glasses;
			this.watch = watch;
		}
		
		public Glasses getGlasses() {
			return glasses;
		}
		public void setGlasses(Glasses glasses) {
			this.glasses = glasses;
		}
		public Watch getWatch() {
			return watch;
		}
		public void setWatch(Watch watch) {
			this.watch = watch;
		}
		
}
package kh.uml.e04.association_aggregation;

public class Watch {

}
package kh.uml.e04.association_aggregation;

public class Glasses {

}

 

Cardinality

0..1 : 인스턴스를 안가질수도 있고 1개만 가질 수도 있다.

0..* : 안가질수도 있고 무제한으로 가질 수도 있다.

 

*aggregation은 뒤쪽에 다이아몬드 모양 열린화살표 (objectAid의 한계)

 


association_composition

 

package kh.uml.e05.association_composition;

public class Person {
	private Eyes eyes = new Eyes();
	private Heart heart = new Heart();
}
package kh.uml.e05.association_composition;

public class Eyes {

}
package kh.uml.e05.association_composition;

public class Heart {

}

생성 위치가 외부가 아니라 클래스 내부 - 생성주기가 일치함 : composition 구성하다.

* 색칠된 마름모에 이어지는 화살표 composition (objectAid는 aggregation과 composition를 구분하지않음)

 

그냥 association은 그림과 같은 화살표


퀴즈1

더보기
package kh.uml.q01_animal;

public class Animal {
	private String name;
}
package kh.uml.q01_animal;

public class Cat extends Animal{

}
package kh.uml.q01_animal;

public class Dog extends Animal{

}

퀴즈2

 

 

더보기
package kh.uml.q02_car;



public class Car {
	private Wheel wheel;
	private Engine engine; 
	private Frame frame;
	
	public Car(Wheel wheel, Engine engine, Frame frame) {
		super();
		this.wheel = wheel;
		this.engine = engine;
		this.frame = frame;
		
	}
		
}
package kh.uml.q02_car;

public class Wheel {

}
package kh.uml.q02_car;

public class Engine {

}
package kh.uml.q02_car;

public class Frame {

}

퀴즈3

더보기
package kh.uml.q03_vehicle;

public interface Vehicle {
	public void engineOn();
	public void engineOff();
}
package kh.uml.q03_vehicle;

public class Train implements Vehicle {
	public Train() {
		// TODO Auto-generated constructor stub
	}
	@Override
	public void engineOff() {
		// TODO Auto-generated method stub

	}@Override
	public void engineOn() {
		// TODO Auto-generated method stub

	}
}
package kh.uml.q03_vehicle;

public class Car implements Vehicle {
	public Car() {
		// TODO Auto-generated constructor stub
	}
@Override
public void engineOff() {
	// TODO Auto-generated method stub
	
}
@Override
	public void engineOn() {
		// TODO Auto-generated method stub
		
	}
}
package kh.uml.q03_vehicle;

public class Motorcycle implements Vehicle{
	public Motorcycle() {
		// TODO Auto-generated constructor stub
	}
@Override
public void engineOff() {
	// TODO Auto-generated method stub
	
}
@Override
	public void engineOn() {
		// TODO Auto-generated method stub
		
	}
}

퀴즈4

더보기
package kh.uml.q04_smartphone;

public interface Calculator {
	public void calculate();
}
package kh.uml.q04_smartphone;

public interface MultiMedia {
	public void youtube();
	public void movie();
	public void music();

}
package kh.uml.q04_smartphone;

public interface Camera {
	public void takepicture();
}
package kh.uml.q04_smartphone;

public interface Telephone {
	public void call();
	public void sms();

}
package kh.uml.q04_smartphone;

public class Smartphone implements Telephone, Calculator, MultiMedia, Camera{

	public Smartphone() {
		// TODO Auto-generated constructor stub
	}
	@Override
	public void call() {
		// TODO Auto-generated method stub

	}
	@Override
	public void sms() {
		// TODO Auto-generated method stub

	}
	@Override
	public void youtube() {
		// TODO Auto-generated method stub

	}
	@Override
	public void movie() {
		// TODO Auto-generated method stub

	}
	@Override
	public void music() {
		// TODO Auto-generated method stub

	}
	@Override
	public void takepicture() {
		// TODO Auto-generated method stub

	}
	@Override
	public void calculate() {
		// TODO Auto-generated method stub

	}



}

퀴즈05

더보기
package kh.uml.q05_shopping;

public class Calculator {

	public Calculator() {
		super();
		// TODO Auto-generated constructor stub
	}

	public int calculate() {
		return calculate();
	}
}
package kh.uml.q05_shopping;

import java.util.List;

public class Cart {

	
	private List<Item> items ;
	
	public Cart() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Cart(List<Item> items) {
		super();
		this.items = items;
	}

	public List<Item> getItems() {
		return items;
	}

	public void setItems(List<Item> items) {
		this.items = items;
	}


	public void addItem(Item item) {}
	
}
package kh.uml.q05_shopping;

public class Food extends Item{

	public Food() {
		super();
		// TODO Auto-generated constructor stub
	}

	
}
package kh.uml.q05_shopping;

public class Item {

	private String category;
	private String itemCode;
	private String itemName;
	private String itemPrice;
	public Item() {
		super();
		// TODO Auto-generated constructor stub
	}
	public Item(String category, String itemCode, String itemName, String itemPrice) {
		super();
		this.category = category;
		this.itemCode = itemCode;
		this.itemName = itemName;
		this.itemPrice = itemPrice;
	}
	public String getCategory() {
		return category;
	}
	public void setCategory(String category) {
		this.category = category;
	}
	public String getItemCode() {
		return itemCode;
	}
	public void setItemCode(String itemCode) {
		this.itemCode = itemCode;
	}
	public String getItemName() {
		return itemName;
	}
	public void setItemName(String itemName) {
		this.itemName = itemName;
	}
	public String getItemPrice() {
		return itemPrice;
	}
	public void setItemPrice(String itemPrice) {
		this.itemPrice = itemPrice;
	}
	
	
	
}
package kh.uml.q05_shopping;

public class Shoes extends Item{

	public Shoes() {
		super();
		// TODO Auto-generated constructor stub
	}

	
}
package kh.uml.q05_shopping;

public class ShopKeeper {

	private Cart cart;

	public ShopKeeper() {
		super();
		// TODO Auto-generated constructor stub
	}
	public int makeBillPaper() {
		return makeBillPaper();
	}
	public Cart getCart() {
		return cart;
	}
	public void setCart(Cart cart) {
		this.cart = cart;
	}

	public void calculate(Calculator c) {
		
	}
}
package kh.uml.q05_shopping;

public class Tv extends Item{

	public Tv() {
		super();
		// TODO Auto-generated constructor stub
	}

}

발표전날 : 프로젝트 통으로 ObjectAid 돌리기, PPT에는 넣지말고 첨부문서로

+ Recent posts