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를 구분하지않음)
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
}
}
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
}
}