OpenFrameWork

오픈프레임워크_Day11

px 2015. 4. 20. 11:17
### : 목차 구분 기호
--- : 목차 내에 항목 구분 기호

목차
1. 이론 및 정보
2. 설정 및 그 밖에
3. 소스코드
4. 과제

###################################
1. 이론 및 정보
----------------------------------- 
패키지
1. 묶음 : 클래스
2. 효과
     1) 필요한 클래스를 적재 적소에 사용가능
     2) 이름 충돌 방지

3. 재료 : 폴더

*.jar
          1) 압축할 때 : cvf
          2) 압축풀 때 : xvf

패키지 사용법 주의 사항, 원칙
- 모든 패키지 안에 있는 클래스들은 패키지 상위 폴더에서 실행해야 한다.
- 패키지가 달린 클래스는 반드시 패키지까지 포함된 이름이 완전한 이름이다.
----------------------------------- 
클래스 패스(Class Path)
내가 원하는 클래스를 아무데서나 실행시킬 수 있도록 하기 위해서 사용!!!
*압축 안할때에는 상위 폴더에 클래스 패스
*압축 했을때에는 압축파일이 있는 위치까지 경로를 잡음
----------------------------------- 
protected 
어떤 의도로 코드를 짰는지 알 수 있음.

2. Access Modifier(접근 지정자)
              1) default(anonymous) : 부분 허용 (같은 폴더 내에 만 접근 가능)
              2) public : 완전 허용
              3) private : 완전 불가
              4) protected : 부분 불가 (다른 패키지에서 접근 불가, 같은 패키지 접근 가능)
----------------------------------- 
java.lang은 기본 패키지로
생략 가능!!
필수 클래스만 모아놓음

java.util 은 도움이 많이 되는 클래스가 많다
----------------------------------- 
toString은 Object가 가지는 걸로 모든 객체가 가지고 있고 사용가능
-----------------------------------  
-----------------------------------  
-----------------------------------  
-----------------------------------  

###################################
2. 설정 및 그 밖에
-----------------------------------
C:\Program Files\Java\jdk1.8.0_40\bin\jar.exe 로 압축을 함
이걸로 압축을 하면 압축을 풀지 않아도 됨
----------------------------------- 
시스템 변수 새로 추가
이름 : CLASSPATH 
변수 : .;F:\study\java\day10
Path에 ;%CLASSPATH% 추가
하고 Dos창 새로 킨뒤 아무데서나
java BookPack.BookTest
----------------------------------- 
기존꺼는 이번 수업을 위해서 쓰고 지움
아래의 시스템 변수를 사용

시스템 변수 새로 추가
이름 : CLASSPATH 
변수 : .;%JAVA_HOME%\lib\tools.jar
Path에 ;%CLASSPATH% 추가

----------------------------------- 
확장자는 상관없음

F:\study\java\day10\BookPack>cd ../
F:\study\java\day10>jar cvf bookpack.jar BookPack
Manifest를 추가함
추가하는 중: BookPack/(입력 = 0) (출력 = 0)(0%를 저장함)
추가하는 중: BookPack/Book.class(입력 = 890) (출력 = 535)(39%를 감소함)
추가하는 중: BookPack/BookTest.class(입력 = 697) (출력 = 532)(23%를 감소함
추가하는 중: BookPack/BookTest.java(입력 = 964) (출력 = 440)(54%를 감소함)

BookPack 폴더 지움

*압축 안할때에는 상위 폴더에 클래스 패스
*압축 했을때에는 압축파일이 있는 위치까지 경로를 잡음

시스템 변수 변경
이름 : CLASSPATH 
변수 : .;%JAVA_HOME%\lib\tools.jar
;F:\study\java\day10\bookpack.jar
추가
-----------------------------------  
C:\Program Files\Java\jdk1.8.0_40\src.zip
파일 보면 java.lang.System이 보임
지금까지 위 패키지를 불러다가 쓴 것임
-----------------------------------  
패키지 이름은 반드시 소문자
-----------------------------------  
배포할 때 사용하는 Utility
Jsmooth 같은 유틸
install shield 같은 유료도 있음

그냥 압축 / 실행 가능하게 압축 두가지 선택가능

원하는 프로그램을 한번 실행 시킨 뒤에
프로젝트 우클릭 - EXPORT - JAVA - Runnable JAR file

파일을 원하는 곳으로 옮김
위치는 되도록 영어로만 되어 있는 곳으로 정함.

아래와 같이 실행
F:\>java -jar UtilTest1.jar
-----------------------------------  
-----------------------------------  
----------------------------------- 
----------------------------------- 
----------------------------------- 
----------------------------------- 
----------------------------------- 

###################################
3. 소스코드
-----------------------------------
~\study\java\day10
~\study\java\day10\BookPack\BookTest.java

~\study\java\day10\BookPack
java BookTest.java
cd ../
java BookPack.BookTest

클래스 패스 설정 후 
아무데서나 
java BookPack.BookTest
가능

package BookPack;
class Book{
     private String title;
     private String author;
     private int pubData;
    
     Book(String title, String author, int pubData){
          this.title = title;
          this.author = author;
          this.pubData = pubData;
     }
    
     void Show(){
          System.out.println("책제목 : " + title);
          System.out.println("작가명 : " + author);
          System.out.println("출판년도: " + pubData);         
     }
}
class BookTest{
     public static void main(String args[]){
          Book books[] = new Book[4];
          books[0= new Book("java를 자바라""홍길동"1999);
          books[1= new Book("jsp정복""임꺽정"2002);
          books[2= new Book("안드로이드기초""신윤복"2004);
          books[3= new Book("배우기 쉬운 스프링""김홍도"2010);
          for(int i = 0; i < books.length; i++){
               books[i].Show();
          }
     }
}

----------------------------------- 
F:\study\java\day10\BookPack\Book.java

package BookPack;
public class Book{
     private String title;
     private String author;
     private int pubData;
     
     public Book(String title, String author, int pubData){
          this.title = title;
          this.author = author;
          this.pubData = pubData;
     }
     
     public void show(){
          System.out.println("책제목: " + title);
          System.out.println("작가명 : " + author);
          System.out.println("출판년도 : " + pubData);     
     }
}

----------------------------------- 
F:\study\java\day10\BookTest.java

import BookPack.Book; 
class BookTest{
     public static void main(String args[]){
          Book books[] = new Book[4];
          books[0= new Book("java를 자바라""홍길동"1999);
          books[1= new Book("jsp정복""임꺽정"2002);
          books[2= new Book("안드로이드기초""신윤복"2004);
          books[3= new Book("배우기 쉬운 스프링""김홍도"2010);
          for(int i = 0; i < books.length; i++){
               books[i].show();
          }
     }
}

----------------------------------- 
F:\study\java\day10\PackageTest.java

package first.second.third.forth.fifth;
class PackageTest{     
     public static void main(String[] args){
          java.lang.System.out.println("Hello World!");
     }
}
/*
javac -d . PackageTest.java
자동으로 패키지 폴더들이 생김
*/

-----------------------------------
F:\study\java\day10\BookTest.java

아래 예제에 title 값을 변경하는 것은 안됨 
이유는 protected

import BookPack.Book;
 
class BookExt extends Book{
    private String publisher;
    
    BookExt(String title, String author, int pubData, String publisher){
        this.title = title;
        this.author = author;
        this.pubData = pubData;        
        this.publisher = publisher;
    }
    
    public void show(){
        super.show();
        System.out.println("출판사명 : " + publisher);   
    }
}
 
class BookTest{
     public static void main(String args[]){
          BookExt books[] = new BookExt[4];
          books[0= new BookExt("java를 자바라""홍길동"1999"홍익");
          books[1= new BookExt("jsp정복""임꺽정"2002"영진");
          books[2= new BookExt("안드로이드기초""신윤복"2004"가남");
          books[3= new BookExt("배우기 쉬운 스프링""김홍도"2010"한빛");
          for(int i = 0; i < books.length; i++){
               books[i].show();
          }          
          //books[0].title = "java를 놔줘라";
     }
}
 
----------------------------------- 
F:\study\java\day10\BookPack\Book.java

package BookPack;
 
public class Book{
     protected String title;
     protected String author;
     protected int pubData;
     
     public Book(){}
     
     public Book(String title, String author, int pubData){
          this.title = title;
          this.author = author;
          this.pubData = pubData;
     }
     
     public void show(){
          System.out.println("책제목: " + title);
          System.out.println("작가명 : " + author);
          System.out.println("출판년도 : " + pubData);     
     }
}
 
----------------------------------- 
/day10/src/utility/UtilTest1.java
cmd에서 실행 시켜보기
F:\study\java\JavaseWork\day10\bin>java utility.UtilTest1

package utility;

public class UtilTest1 {

     public static void main(String[] args) {
          // TODO Auto-generated method stub
          System.out.println("나 출력되니?");
     }

}

package utility;
 
import java.util.Calendar;
import java.util.Date;
 
public class UtilTest1 {
 
    public static void main(String[] args) {
        // TODO Data와 Calendar
        // toString은 Object가 가지는 걸로 모든 객체가 가지고 있고 사용가능
        // System.out.println(new Date().toString());
        // 매번 인스턴스 생성해서 써야함
        System.out.println(new Date());
        System.out.println("------------------------------");
        
        // Singleton
        // 인스턴스 생성되지 않음
        Calendar cal = Calendar.getInstance();
        System.out.println(cal.getTime());
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;
        int date = cal.get(Calendar.DATE);
        int hour = cal.get(Calendar.HOUR);
        int min = cal.get(Calendar.MINUTE);
        int sec = cal.get(Calendar.SECOND);
        System.out.println("오늘은 " + year + "년 " + month + "월 " + date + "일 "
                + hour + "시 " + min + "분 " + sec + "초 " + "입니다.");
    }
 
}
 
----------------------------------- 
###################################
4. 과제
-----------------------------------
----------------------------------- 
----------------------------------- 
###################################
5. 과제 해결
-----------------------------------
-----------------------------------
-----------------------------------

-----------------------------------