'JAVA 계열/자바 & 안드로이드 교육'에 해당되는 글 83건

  1. 2015.08.10 8월 2주차 1일 (6주)
  2. 2015.08.07 8월 1주차 5일 (5주)
  3. 2015.08.06 8월 1주차 4일 (5주)
  4. 2015.08.05 8월 1주차 3일 (5주)
  5. 2015.08.04 8월 1주차 2일 (5주)
  6. 2015.08.03 8월 1주차 1일 (5주)
  7. 2015.07.31 7월 4주차 5일 (4주)
  8. 2015.07.30 7월 4주차 4일 (4주)
  9. 2015.07.29 7월 4주차 3일 (4주)
  10. 2015.07.28 7월 4주차 2일 (4주)

계좌관리 영속성 처리!!


기존의 모든 데이터관리는 모두 메모리상에서 관리 되고있다.

입출력을 통해서 파일에 데이터를 기록한다.


String의 종류

1. 바이트 - 1바이트 단위

2. 문자(2바이트) - 인코딩, 디코딩

3. 객체(Object) 스트림 - 아직 안배움


하지만 객체 스트림이 필요하다. 앞에껄론느 못하는건 아니지만 어렵다.


랜덤엑세스파일 클래스가 아주 최적화되어있다.


문자스트림을 계좌 시스템에 쓸수없다. 바이트스트림을 사용해야한다.

하지만 단방향이기때문에 블락에 걸린다.(스레드)

그래서 randomaccesefile 클래스를 사용한다. 양방향 입출력이 가능하다.

이름대로 임의접근이 가능하다. 그래서 버퍼드 인웃, 아웃풋의 기능을 가지고있다.

바이트 스트림에 관한 모든 기능을 가지고있다.


스트림의 모든 기능을 수집해서 제공한다. 거의 유틸클래스라고 볼수 있다.

제약사항 - 오직 파일에만 엑세스할 수 있다. 고로 다른형식의 접근이 필요한경우 부적절할수 있다. 


저장된 파일 맨 앞에 4바이트 레코드수의를 저장하는 영역으로 사용한다.



AMS 메모리에 저장하는것 파일 저장으로 바꿈











'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 2주차 3일 (6주)  (0) 2015.08.12
8월 2주차 2일 (6주)  (0) 2015.08.11
8월 1주차 5일 (5주)  (0) 2015.08.07
8월 1주차 4일 (5주)  (0) 2015.08.06
8월 1주차 3일 (5주)  (0) 2015.08.05
Posted by moyaiori
,

Calendar cal = Calendar.getInstance();

cal.setTimeInMillis(file.lastModified());

System.out.println(String.format("%1$tF %1$tT", cal));


밀리세컨드 현재시간으로 반환


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


텍스트 파일를 읽을때는 BufferdReader 를 생각하자

디코딩을알아서 해오고 라인별로 읽어온다.



텍스트 파일을 쓸때는 printWirter를 생각하자.

쉽고 유연해서 강력하다.



---------


자바로 메모장 만들기 연습


StringBuffer - 동기화처리

StringBuilder - 비동기화

DAO - 데이터 엑세스 오브젝트


각 객체가 가지고있는 역할에만 충실할 수 있도록 만들어보자

출력이면 출력, 데이터 처리면 데이터 처리


메서드에서 trhows로 처리해줄경우

안에서 예외처리를 해야될경우 try ~ finaly 구문을 쓸수 있다.


단축키 설정

setAcll~~ 찾아보기



'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 2주차 2일 (6주)  (0) 2015.08.11
8월 2주차 1일 (6주)  (0) 2015.08.10
8월 1주차 4일 (5주)  (0) 2015.08.06
8월 1주차 3일 (5주)  (0) 2015.08.05
8월 1주차 2일 (5주)  (0) 2015.08.04
Posted by moyaiori
,

- 스레드 동기화 예제 2

Account 예제 : ATM을 통해 동기화 알아보기


동기화의 이유 : 공유된 객체를 다른 스레드로 접근할시 공유도니 데이터처리가 섞일경우 데이터의 무결성을 유지할수 없기때문에 동기화가 필요하다


동기화 처리는 호출하는쪽이나 호출당하는쪽 어느쪽에 해줘도 상관없지만 보통 호출당하는쪽에서 해주는곳 즉 처리메서드가 돌아가는곳에서 해주느것이 좋다.


스레드는 CPU를 추상화하여 만든 객체이다.


wait는 동기화처리가 되어있는곳에서만 사용한다. 다른곳에서 사용하면 예외처리가 발생한다.


wait가 정확히는 스레드함수가 아니고 Object의 메서드 이다.


wait를 받은 스레드는 notify로 큐로 가서 대기할수 있다.


- 파일 입출력

Stream API 소개

시냇물(Stream) 개념을 추상화환 Stream APIs를 제공한다.

키보드로부터 받는 입력(표준입력)

모니터로 보여주는 출력(표준출력)


- Stream API의 특징

입출력 대상에 상관없이 일관된 방법으로 데이터를 읽고, 쓸 수 있다.

스트림은 단방향이다.

스트림은 FiFO(Fist In First Out) 구조이다.

" 스트림은 연속적인 일련의 데이터(바이트) 흐름이다."


바이트스트림은 인코딩 & 디코딩이 없다

인코딩 & 디코딩이 첨부되어있는게 문자 스트림이다.

문자 스트림은 1바이트씩 읽으면안된다. 한글은 2바이트


- 입출력 방향에 따른 분류

입력(insputStream, FileinputStream등)

출력(outputStream, fileOutputStream등)


- 데이터종류에 대한 분류

바이트, 객체, 문자<-- 3가지가 있다.스트림의 종류


- 입출력 스트림의 용도에 따른 분류

노드(Node)스트림 : 단순히 입출력만 담당

필터(Filter)스트림 : 스트림의 데이터를 조작



available() 은 read 하기전에 찍으면 파일크기이지만 read가 끝난후에 찎으면 0이 된다.


read는 반드시 예외처리시에 finally에서 close를 해줘야한다.


FileInputStream, FileoutputStream 은 노드스트림


버퍼 스트림의 목적 : 임의접근


BufferedInputStream은 생성자 메게변수로 input 스트림을 따로 받아야 한다.



system.in 의 in의 속성은 BufferedInputStream이다.

표준입력은 이미 만들어져있다.


out 은 PrintStream이다.

도스콘솔에 출력하기위해 미리 만들어져(static)있다.

system,out.println은 printStream객체를 말하는거다.


- File 클래스

파일이나 디렉토리에 대한 기본정보 크기를 제공하거나 관리할 수 있다.



file.exists 실제 물리적인 경로에 대한것이다.











'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 2주차 1일 (6주)  (0) 2015.08.10
8월 1주차 5일 (5주)  (0) 2015.08.07
8월 1주차 3일 (5주)  (0) 2015.08.05
8월 1주차 2일 (5주)  (0) 2015.08.04
8월 1주차 1일 (5주)  (0) 2015.08.03
Posted by moyaiori
,

IMS 마무리 및 제출


- 멀티 스레드(Multi-Thread) 프로그래밍

스레드란? - 실행중인 하나의 프로그램(프로세스) 내에서 독립적으로 실행되는 연속적인 작업 흐름(일련의 수행코드)을 의미한다.


JVM에 의해서 하나의 스레드가 만들어진다. 메인스레드라고한다. 단일 스레드방식(현재까지) 단일 스레드를 메인스레드라고한다. 메인스레드에 의해 main()(메인메서드)이 호출된다.


운영체제는 멀티 태스킹을 자바에서는 멀티 스레드를 가능하도록한다.

멀티태스킹 - 독립된 메모리에 존재하여 OS가 프로그램을 제어한다.

멀티스레드 - 메모리 공유자원을 절약, 여러개의 코드가 실행될수있다. 자원절약과 효율적인 병행 프로그래밍 가능하다.

논리적으로는 병행되지만 물리적으로 한주기에는 하나의 동작만 수행된다. 매우 짧은 순간 마다 하나의 실행이 수행된다.


JVM 자체도 멀티스레드로 동작한다.

사용자 정의 스레드의 엔트리포인트는 run이고 꼭 필요하다.


스레드 시작시 바로 그시점에서 시작되지않는다. 시작되는대까지 시간이 약간있다.


그냥 this는 현재 클래스에 대한정보를 가져오지만

클래스명.this 하면 대상 클래스의 래퍼런스를 가져온다.


이름없는 지역 내부 클래스로 구현가능하다.


- 스래드의 생명주기(life cycle)

생성(new) -> 실행대기(Runnable) -> 실행(Running) -> 종료(Dead)

            start() : 실행가능상태

        스캐줄러 관리


생명주기를 배우는 가장큰의미는 다음과같다

블락상태 : 대기, 수면, 유보, 봉쇄의 4가지상태를 알아야한다.


stop() 도 Deprecated되었다.

유보 : suspend(), resume()은 Deprecated되엇다.


yield()를 호출하면 바로 실행대기상태로 간다.


Dead된 스레드는 다시시작할 수 없다.


스레드로 디지털시계 만들기

while문안에서 repaint를 호출, paint안에서 캘린더를 새로그릴때마다 받아와서 넣어준다.


- 스레드 동기화

공유된 객체를 접근할때 작업을 마무리할수있도록 자물쇠를 잠그는것


synchronized 키워드를 클래스명 앞에 붙여주면 클래스 자체가 동기화된다.











'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 1주차 5일 (5주)  (0) 2015.08.07
8월 1주차 4일 (5주)  (0) 2015.08.06
8월 1주차 2일 (5주)  (0) 2015.08.04
8월 1주차 1일 (5주)  (0) 2015.08.03
7월 4주차 5일 (4주)  (0) 2015.07.31
Posted by moyaiori
,

IMA(악기관리시스템) 3일차!


5단계 내부구조 완성

GUI 구성중


이후 이벤트 연결 예정



패널 자체는 플로우 레이아웃이 기본이라 보더 레이아웃을 지정해줘야


탭팬이 제대로뜬다

'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 1주차 4일 (5주)  (0) 2015.08.06
8월 1주차 3일 (5주)  (0) 2015.08.05
8월 1주차 1일 (5주)  (0) 2015.08.03
7월 4주차 5일 (4주)  (0) 2015.07.31
7월 4주차 4일 (4주)  (0) 2015.07.30
Posted by moyaiori
,

IMS 4, 5, 6 단계


- 4단계

상속은 설계적인 기법으로 사용하면안된다.

프로그래밍 기법으로 사용된다.


설계시에는 상속을 고려하지않고 만들어야한다. 그러는게좋다.


- 5단계

해쉬맵으로 관리한다.


화면 구성까지



검색시 악기종류, 제조사, 모델명, 가격 으로 AND 연산으로 검색한다.



검색시에 가격은 화면에서 제거한다.

따로 할경우 가격을 범위로 줘서 검색할수 있도록 구성할수있으면 한다.



'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 1주차 3일 (5주)  (0) 2015.08.05
8월 1주차 2일 (5주)  (0) 2015.08.04
7월 4주차 5일 (4주)  (0) 2015.07.31
7월 4주차 4일 (4주)  (0) 2015.07.30
7월 4주차 3일 (4주)  (0) 2015.07.29
Posted by moyaiori
,

2일 분량의 간이프로젝트 시작!


프로젝트 요구사항

악기 관리 시스템

OOP적인 구성


총 6단계 중 오늘은 3단계까지


검색 -> 기타 객체를 받는다. 객체의 값이 뭐가 들어있는지 모르는대 거기에 들어있는 값이 2개인경우 2개의 값으로 검색한다.

전달 인자의 속성중에 null이 아닌걸 모두 비교해서 똑같은걸 찾는다. (and 조건 &&)


2단계

Guitar들의 속성들은 어느정도 정해져있는 데이터이기때문에

enum으로 변경한다.


3단계

기타에 대한 명세를 표현할수 있는 새로운 클래스를 만들어야한다.

각 속성당 꼭 필수인지 선택인지 구분하여


선택(null이 될가능성이 높은것)하지않아도되는것들을 찾아야한다.












'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 1주차 2일 (5주)  (0) 2015.08.04
8월 1주차 1일 (5주)  (0) 2015.08.03
7월 4주차 4일 (4주)  (0) 2015.07.30
7월 4주차 3일 (4주)  (0) 2015.07.29
7월 4주차 2일 (4주)  (0) 2015.07.28
Posted by moyaiori
,
오전시작!!


- Account  분석
Account를 Frame 과 Panel로 분리
생성자에서 manager로 메게변수로 받아서 사용한다.

3항 연산자
account instanceof MinusAccount ? " 마이너스" : "입출금계좌;

금액에 대한 format을 활용하여 기본자릿수 확보("%, -10d")

입력후 텍스트 필드 초기화 - 현재 컴포넌트의 모든 컴포넌트를 가져와서 비교후 TF만 seText("")시켜준다.



- 리플랙션 API

프로그램 실행시 메모리상에 생성도니 객체와 관련된 클래스 관련 정보를 분석해내는 기법 


클래스(설계도, 객체, static에 할당된것)의 정보를 class 클래스를 자동으로 생성해준다.

앞에 클래스와 뒤에 클래스는 다르다.


생성된 객체는 원본객체(클래스)의 정보를 알고싶으면 Class 클래스(객체)를 통해서 접근한다.


- Class 인스턴스 취득을 위한 3가지 방법

1. Class c = new To().getClass();

2. Class c = Class.forName("패키지명포함 클래스 풀네임");

3. Class c = Top.class


하나의 객체생성방법 = Class 클래스 활용

인스턴스명.newInstace(); // 디폴트 생성자로 객체호출


동적으로 클래스 타입을 결정할 수 있기때문에

Class.forName("객체명");


객체명이 String 타입이기때문에 다양한 상황에서 가공하여 객체 종류를 걸졍하여 생성할 수 있다.


이미지를 jar로 포함하여 만들어 보낼때

getClass().getResroce("프로젝트 내부 이미지 좌표");  // 절대좌표


icon = new ImageIcon("classes/images/image.gif");  // 이클립스 내부에서는 된다.

icon2 = new ImageIcon(getClass)(getResource("/images/image.gif"); // 익스포트 해도된다.


- tree

Jtree 구현 예제


------------ 오전끝

오후시작!!


- 그래픽처리

글자, 도형, 이미지 등을 화면에 직접 표현하는것

context : 묶음


그래픽 대상 : AWT/Swing의 모든 컴포넌트와 이미지등이 그래픽 대상이 될 수 있다.

java.awt.component 클래스에서는 paint(Graphics g)메소드가 정의되어 있다.(콜백메서드)


canvas를 이용하여 그릴수 있다.


- repaint 메소드

다시그리기(갱신)



바이트 코드를 컴파일하여 class파일을 생성했을꼉우

메인클래스명$1.class로 내부 클래스가 생성된다.

$1이 이름없는 내부클래스명이다.















'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

8월 1주차 1일 (5주)  (0) 2015.08.03
7월 4주차 5일 (4주)  (0) 2015.07.31
7월 4주차 3일 (4주)  (0) 2015.07.29
7월 4주차 2일 (4주)  (0) 2015.07.28
7월 4주차 1일 (4주)  (0) 2015.07.27
Posted by moyaiori
,

각 메소드를 캡슐화를 시켜야 차후 재사용성이 올라간다.


다양한 랜더를 활용하여 swing 인터페이스를 구성할 수 있다.


목록을 활용하기위한 swing의 jTable을 활용하기


Vector<Vector<String>> cellDatas; <-- 2차원 백터 활용, 실제론쓰지는않고 하나의 데이터 클래스를 만들어서 사용한다.

Vector<Student> cellDatas;


모델 <- 데이터를 처리해준다. 상호작용을 해주기 위함이다.


자바에는 클래스 구성요소들을 추상화해서 만든 클래스들이있다 -> 통칭 리플랙션 API라고한다. 


이클립스에서 리플랙션 API로 만든 기능 -> 자동완성 및 찾아주기(메서드)


-----------


오후는 모델과 AMS 프로젝트 연결


----


예외처리

1. 전체누르고 할시

2. 신규 등록시, 테이블에 바로 전체리스트 보여주기, 팝업보여주기

3. 각각의 TextFile 지정값이나 그외 값을 넣지않을경우 예외처리(옵션필드), 유효성검증

4. 콤보박스로 구분해서 조회, 검색, 삭제


'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

7월 4주차 5일 (4주)  (0) 2015.07.31
7월 4주차 4일 (4주)  (0) 2015.07.30
7월 4주차 2일 (4주)  (0) 2015.07.28
7월 4주차 1일 (4주)  (0) 2015.07.27
7월 3주차 4일 (3주)  (0) 2015.07.23
Posted by moyaiori
,

- 오전!!

Swing API 고급기능 활용!!


awt와 swing에 동시에 있는 컴포넌트들 위주로 수업 ( 1 ~ 2 시간)

가장큰 특징 : awt 컨테이너의 자식이다.


J컴포넌트의 스트링은 모두 html태그를 먹는다.


프로그램 실행중 동적으로 외관(테마, Look&Feel)을 교체할 수 있다.


viewport (창틀)을 통해서 스크롤바를 동적으로 할당할 수 있다.


- Swing에서만 있는 컴포넌트들!!

예제 소스 참조(배포소스)


-----------


MVC 모델의 목적 : 확장성, 수정하기 쉽도록


Model - 논리적인 데이터를 저장한다. 쉽게말해 데이터들 관리

View - 시각적인 표현, 화면 출력을 관리하는 객채이다. 화면관리

Controller - 모델에 의해 표현된 데이터를 사용자!!! 가 변경할수 있도록 사용자 상호작용(User Interaction)을 제공하는 객체이다.


Swing에서의 MVC구조는 상태부분(Model)과 표현부분(View + Controller = UI)으로 구분함으로써 다음과 같은 특징을 갖는다.

- 같은 모델에 여러개의 뷰를 동시에 만들 수 있다.



valtate.java <-- static 메소드, 유효성 검증 기능만 가진 클래스 





'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글

7월 4주차 4일 (4주)  (0) 2015.07.30
7월 4주차 3일 (4주)  (0) 2015.07.29
7월 4주차 1일 (4주)  (0) 2015.07.27
7월 3주차 4일 (3주)  (0) 2015.07.23
7월 3주차 2일 (3주)  (0) 2015.07.21
Posted by moyaiori
,