공집합 LowerBound(_R, _S, _SubS)

Java & Project #1
2008. 3. 5. Thur.
EE411. Automata
Content
 JAVA
 Introduction – JAVA 언어의 설명
 Install 및 환경 설정
 Example
 Project Outline
 Project 별 Description
 Project #1
 Set/Element file
JAVA - Introduction
 Properties of JAVA
 Scalability- 기존 시스템과 쉽게 연동 가능
 Security- 보안 능력
 Universality- 운영체제에 independent
 Modularity- 재사용성
 Object-Oriented
 Interprreted Language
JAVA - Introduction
 Object-Oriented
실제
Object
Public class Account {
private String accoutnNum;
private String passwd;
protected restMoney;
public interest;
Abstract:
한 물체를 대표하는
명사와 동사의 추출
실제 Object: 계좌
public void saveMoney(long amount) {
restMoney = restMoney+amount;
}
}
Object 명: Account
명사: 계좌번호, 비밀번호, 잔고, 이율, 이체한도
동사: 입금하다. 출금하다. 조회하다…
JAVA - Starting
 Interpreted language
Source
code
C언어
JAVA
Hello.c
Hello.java
Source
code
compile
compile
Hello.o
Linking/loading
실행 프로그램
Hello.exe
Hello.class
실행 프로그램
C언어의 .exe와 같이 그냥 실행이
가능한 프로그램이 아니다.  돌려
줄 프로그램이 별도로 필요함
 Interpreter
JAVA - Starting
 Machine-Independent
JAVA
Hello.java
Source
code
compile
Hello.class
실행 프로그램
C언어의 .exe와 같이 그냥 실행이
가능한 프로그램이 아니다.  돌려
줄 프로그램이 별도로 필요함
 Interpreter
Interpreter:
Java Virtual Machine (JVM)
모든 Machine/OS에서 동일
Hello.class
JVM
Windows/Linux
OS마다 다른 JVM이 필요
JAVA - Setting


PATH: C:\j2sdk1.4.2_04\bin
CLASSPATH: 새로 만들기

C:\j2sdk1.4.2_04\lib;.;
JAVA - Setting
 Window 98
 Autoexec.bat에 다음 문장 추가
 PATH= C:\j2sdk1.4.2_04\bin;
 CLASSPATH = C:\j2sdk1.4.2_04\lib;.;
JAVA - Setting
 HelloWorldApp.java
public class HelloWorldApp {
public static void main (String args[]) {
System.out.println("Hello World!");
}
}
JAVA - Setting
 실행



Window98: MS Dos창
Window 2000/XP: 명령 프롬프트
javac HelloWorld.java (compile)  java HelloWorld
*.java
(Source Code)
javac
(compiler)
*.class
(Byte Code)
Java
(interpreter)
Run
JAVA - Example
 HelloWorldApp.java
public class HelloWorldApp {
public static void main (String args[]) {
System.out.println("Hello World!");
}
}
Interpreter에서 code를 실행가능하도록
만드는 것을 시작하는 부분.
JAVA - Example
 Class내에 main 함수가 없을 경우

다른 class에서 이 class의 instance를 활용: new
Public class Account {
private String accoutnNum;
private String passwd;
protected restMoney;
public interest;
public void saveMoney(long amount) {
restMoney = restMoney+amount;
}
}
다른 class.java에서
Account class 활용
Account x;
x = new Account();
x.saveMoney();
Method 접근 방식
Modifiers: public: 어느 class에서나 참조 가능
protected: 같은 package내의 class에서만 참조 가능
private: 같은 class 내에서만 참조 가능
Project Outline
 Project #1
a. Set Operation Implementation
b. Lattice Operation



Reflexive, symmetric, transitive…
UpperBound, LowerBound
Partition : Sum, Product
 Project #2
 Logic Implementation



Logic/Vector
Atomic Logic/Coupled Logic
Eveluate/BoolDiff
 Project #3
Project #1(a) – Set.java
 SET Operation Implementation
 Union, Intersect, difference, product
 Class Element: Element.java
 Class Set: Set.java
 Class Test: Test.java  For Test
Set
B
A
D
C
Element
Project #1(a) – Class Element
 Class Element
 Set의 원소로서의 Class
 Type
 Boolean, int, long, double, String,
 Set
 Vector: Product 계산에 쓰임
 길이가 가변적인 배열
Project #1(a) – Class Set
 Class Set
 제시 Method(Union, Intersect…)를 완성
 Member variables
 _Name: name of set
 _ETable: elements of set
 Attention
 Set의 Element의 type은 Set과 vector가 가능
하며, vector의 원소도 Element형이어야 한다.
Project #1(b) – Lattice.java
 Lattice Operation ( Lattice.java )
 Element.java
 Set.java
 Union, diff, intersect, product 구현
 Lattice.java
 구현해야할 method들의 집합
 Test.java
 Test vector 제공
Project #1(b)- Lattice.java
import java.util.Vector;
class Lattice {
static boolean isRelation(Set _R,Set _S) {
/* fill this Region */
}
static boolean isReflexive(Set _R,Set _S) {
/* fill this Region */
}
static boolean isIrreflexive(Set _R,Set _S) {
/* fill this Region */
}
static boolean isSymmetric(Set _R,Set _S) {
/* fill this Region */
}
…
…
};
Project #1(b) - relation
 구현해야할 operation






static
static
static
static
static
static
boolean
boolean
boolean
boolean
boolean
boolean
isRelation(Set _R,Set _S)
isReflexive(Set _R,Set _S)
isIrreflexive(Set _R,Set _S)
isSymmetric(Set _R,Set _S)
isAntisymmetric(Set _R,Set _S)
isTransitive(Set _R,Set _S)
정의된 Relation
정의된 relation _R이 정의된 Set _S에 대해서 를 만족하면
true를 return 한다
Ex) _R = { {“a”, “a” } , { “b”, “b” } }
_S = { “a”, “b”, “c” } 일 경우,
isRelation( _R, _S ) 의 return 값은 true가 된다.
정의된 Set
Project #1(b) - relation

static boolean isEquivalence(Set _R,Set _S)


_R이 _S에 대해 Equivalence 관계인지 판별
static boolean isPoset(Set _R,Set _S)


Poset = Partially Ordered Set
_R가 _S의 Poset인지를 판별
Project #1(b) - ordered


static Set Minimal(Set _R,Set _S)
static Set Maximal(Set _R,Set _S)




static Element Least(Set _R,Set _S)
static Element Greatest(Set _R,Set _S)





Relation _R이 정의된 set _S에서 minimal/maximal set을 반환
모든 set은 공집합이 아닌 minimal/maximal set을 가진다.
Relation _R이 정의된 set _S에서 least, greatest element를 반환
모든 set이 least/greatest element를 가지지는 않는다
 Element의 _Type이 0 (=null)인 정의 이용
static Set Partition_Product(Set _S1,Set _S2)
static Set Partition_Sum(Set _S1,Set _S2)

_S1과 _S2로 정의된 Partition에 대해 product, sum 연산한 결과를 반환
Project #1(b) - Lattice


static Set UpperBound(Set _R,Set _S,Set _SubS)
static Set LowerBound(Set _R,Set _S,Set _SubS)

Relation _R이 정의되어 있을 때, _SubS가 _S의 부분집합일 경우,
_SubS의 upper/lower bound인 _S의 element들의 집합을 반환
EX)
_S = {a,b,c,e,f}
_SubS= { a,b }
a
UpperBound(_R, _S, _SubS) = 공집합
LowerBound(_R, _S, _SubS) = {c,d,e}
c
e



b
f
static Element LeastUpperBound(Set _R,Set _S,Set _SubS)
static Element GreatestLowerBound(Set _R,Set _S,Set _SubS)
static boolean isLattice(Set _R,Set _S)
Project #1 - Notice


모든 경우에 있어서 공집합을 고려
_S의 element는 가능한 모든 형을 고려

Project #1(a)는 test.java의 test1()를 통해 체크하고 Project #1(b)의
test2()를 통해 체크한다.

Due Date – 3/27 자정까지
 Delay
 ~24시간: 5%
 ~48시간: 15%
 ~72시간: 40%

참고 – Textbook Chap 2.
Reference




http://java.sun.com/
http://java.sum.com/docs/books/tutorials/
http://www.javanuri.com/
http://www.publicclass.net/han-javaapi13