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
© Copyright 2026 Paperzz