12Àå PDF

Size: px
Start display at page:

Download "12Àå PDF"

Transcription

1 547 CHAPTER 12 라이브폴더 10 장에서는안드로이드에서의 OpenGL 인터페이스에대해자세히설명했으며, 11 장에서 는안드로이드플랫폼에서애플리케이션의환경설정을관리하는방법을설명했다. 본 장에서는안드로이드플랫폼에서의또한가지고급주제인라이브폴더 live folder 에대해설명하겠다. 라이브폴더는안드로이드 SDK 1.5 버전부터도입되었으며, 개발자는라이브폴더를통해기기의기본시작화면 ( 이하 메인페이지 로표기 ) 에연락처, 메모, 미디어등의콘텐트프로바이더를표시할수있다. 안드로이드의연락처콘텐트프로바이더같은콘텐트프로바이더가라이브폴더를통해메인페이지상에표시되면, 연락처데이터베이스안에서연락처가추가 / 삭제 / 변경될때이라이브폴더는자동으로새로고침된다. 이러한라이브폴더의정의, 라이브폴더구현방법, 라이브폴더를 라이브 하게만드는방법에대해알아보겠다. 라이브폴더탐구 RSS 리더의용도가웹사이트를발행하는것이라면, 안드로이드라이브폴더의용도는콘텐트프로바이더 content provider 라할수있다. 3장에서콘텐트프로바이더가 URI를사용해서정보를제공하는웹사이트와흡사하다고설명한바있다. 각기독자적인방식으로정보를발행하는웹사이트들이급증함에따라, 사용자가그렇게확장되는규모의정보를하나의리더에서읽을수있도록여러사이트들로부터정보를수집할필요성이생겼다. 이때문에 RSS가고안되었다. RSS는전혀다른정보들을공통된패턴으로보여준다. 패턴이공통되므로, 콘텐

2 548 CHAPTER 12 라이브폴더 트의구조만일관적이라면한번의리더설계로모든콘텐트를읽을수있다. 라이브폴더는개념상별로다르지않다. RSS 리더에웹사이트콘텐트를발행하는공통인터페이스가들어있듯이, 라이브폴더에는안드로이드의콘텐트프로바이더에대한공통인터페이스가정의돼있다. 콘텐트프로바이더가이프로토콜에부합하기만하면안드로이드는기기의메인페이지에라이브폴더아이콘을생성해서그콘텐트프로바이더를표현할수있다. 사용자가이라이브폴더아이콘을클릭하면시스템은그콘텐트프로바이더와통신하게된다. 그러면콘텐트프로바이더는커서를반환하게된다. 라이브폴더콘트랙트에따라, 이커서에는사전정의된열들이들어있어야한다. 그런다음이커서는 ListView나 GridView를통해시각적으로표현된다. 이러한공통형식이라는개념을이용하는라이브폴더의원리는다음과같다. 1. 우선사용자가콘텐트프로바이더에서가져오는행컬렉션을표현하는아이콘을메인페이지에생성한다. 이연결은사용자가아이콘과함께 URI를지정함으로써이뤄진다. 2. 사용자가아이콘을클릭하면시스템은그 URI를받아사용하여콘텐트프로바이더를호출한다. 콘텐트프로바이더는커서를통해행컬렉션을반환한다. 3. 커서에라이브폴더가필요로하는열들 ( 이름, 설명, 행이클릭될때호출할프로그램 ) 이존재한다면시스템은 ListView나 GridView를통해그행들을표현한다. 4. ListView와 GridView에는내부데이터저장소가변경되는순간자체데이터를업데이트하는기능이있으므로이뷰들을 라이브 하다고표현할수있으며, 라이브폴더 라는이름이붙여지게된것도이때문이다. 라이브폴더에적용되는주요원칙은두가지다. 첫째원칙은, 모든커서의열이름이같아야한다는점이다. 이원칙으로인해안드로이드는라이브폴더를타깃으로하는모든커서를같은식으로취급할수있다. 둘째원칙은, 내부커서데이터에발생한모든변경사항을찾아서그에맞게수정할방법이안드로이드뷰에정의돼있어야한다는점이다. 이둘째원칙은라이브폴더에만국한되는사항이아니라안드로이드 UI에속하는모든뷰 ( 특히커서를이용하는뷰 ) 에기본적으로적용된다. 지금까지라이브폴더가무엇인지에대해설명했다. 그럼다음두개의절에걸쳐라이브폴더프레임워크에대해체계적으로알아보자. 첫번째절에서는라이브폴더의전반적인최종사용자경험에대해알아보겠는데, 이를통해라이브폴더에대한이해가훨씬확고해질것이다.

3 라이브폴더탐구 549 두번째절에서는라이브폴더를진정으로라이브하게하기위한올바른라이브폴더생성방법에대해설명하겠다. 라이브폴더를 라이브 하게만드는데에는약간의부가작업이필요하므로, 이런라이브폴더의불명확한측면에대해설명하겠다. 라이브폴더사용법 라이브폴더는기기의메인페이지를통해최종사용자에게공개된다. 사용자의라이브폴더사용절차는다음과같다. 1. 기기의메인페이지로이동한다. 2. 메인페이지의콘텍스트메뉴를띄운다. 콘텍스트메뉴를띄우려면메인페이지의빈공간에서롱클릭 long clicking 하면된다. 3. 콘텍스트메뉴의 Folders 항목으로이동해서클릭하면가용라이브폴더들이뜬다. 4. 그목록에서메인페이지에띄울라이브폴더명을선택해서클릭하자. 그러면메인페이지에선택한라이브폴더를나타내는아이콘이생성된다. 5. 4단계에서설정한라이브폴더아이콘을클릭해서정보행들 ( 라이브폴더에표현되는데이터 ) 을 ListView나 GridView 안에가져온다. 6. 여러행중하나를클릭해서그데이터행을표시할방법이정의된애플리케이션을호출한다. 7. 애플리케이션이표시하는추가메뉴옵션들을이용하여원하는항목을보거나조작한다. 애플리케이션의메뉴옵션들을이용하여호환되는새항목을생성할수도있다. 8. 해당항목 ( 들 ) 에변경이발생하면라이브폴더표시내용에자동으로반영된다. 그럼캡처화면을보면서위의절차대로직접라이브폴더를사용해보자. 먼저그림 12 1에서처럼 1단계의안드로이드메인페이지로가자. 이메인페이지는본인이사용중인안드로이드버전에따라외관이약간다를수있다.

4 550 CHAPTER 12 라이브폴더 그림 12-1 안드로이드메인페이지 이메인페이지의빈공간을롱클릭하면그림 12 2 처럼콘텍스트메뉴가뜬다. 그림 12-2 안드로이드메뉴페이지의콘텍스트메뉴

5 라이브폴더탐구 551 하위옵션 Folders를클릭하면그림 12 3처럼존재하는라이브폴더들목록을표시하는하위메뉴가뜬다. 다음절에서라이브폴더를생성해볼텐데, 지금은일단그림 12 3처럼우리가원하는라이브폴더가이미생성돼있으며그폴더이름이 New live folder라고가정하자. 그림 12-3 가용라이브폴더목록보기 New live folder를클릭하면안드로이드는메인페이지에그라이브폴더를표현하는아이콘을생성한다. 우리가살펴보는예에서는이폴더의이름이그림 12 4처럼 Contacts Live Folder의약어인 Contacts LF이다. 이라이브폴더는연락처데이터베이스에들어있는연락처들을표시한다 ( 이폴더명을지정하는방법은나중에예제 12 2의 AllContactsLiveFolder CreatorActivity 클래스에대해다루면서설명하겠다 ).

6 552 CHAPTER 12 라이브 폴더 그림 12-4 메인 페이지의 라이브 폴더 아이콘 다음 절에서 액티비티가 Contacts LF 폴더를 생성함을 살펴볼 텐데, 일단 지금은 사용자 경 험이 관련돼 있는 한 그림 12 5처럼 Contacts LF 아이콘을 클릭해서 ListView에 표시되는 연락처 목록을 볼 수 있다. 그림 12-5 라이브 폴더 연락처 표시

7 라이브폴더탐구 553 기기에존재하는연락처수에따라표시되는연락처목록의모습은다를수있다. 여러개의연락처중하나를클릭하면그림 12 6처럼그연락처의세부사항이표시된다. 그림 12-6 라이브폴더연락처열기 하단의 Menu 버튼을클릭하면그림 12 7 처럼그개별연락처를조작할수있는메뉴가뜬다. 그림 12-7 개별연락처의메뉴옵션

8 554 CHAPTER 12 라이브폴더 그연락처를수정하기위해선택하면그림 12 8 과같은화면이뜬다. 그림 12-8 연락처세부항목편집 라이브폴더의 라이브 한특성을보려면, 이연락처를삭제하거나새연락처를생성해보면된다. 그런다음 Contacts LF의라이브폴더뷰로돌아가면그러한변경사항들이반영됨을알수있다. 라이브폴더뷰로돌아가려면 Contacts LF 폴더가뜰때까지계속 Back 버튼을클릭하면된다. 라이브폴더제작 라이브폴더의정의에대해알아보았으니, 이제라이브폴더생성방법을설명하겠다. 일단라이브폴더가생성되면, 그라이브폴더를이용해서메인페이지에그라이브폴더에해당하는아이콘을생성할수있다. 더불어라이브폴더의 라이브 한부분의원리도설명하겠다. 라이브폴더를생성하려면액티비티와전용콘텐트프로바이더가필요하다. 안드로이드는그림 12 3처럼이액티비티의 라벨 을사용해서존재하는라이브폴더들의목록을채운다. 그리고안드로이드는이액티비티를호출해서 URI를알아낸다. 이 URI를호출하면안드로이드는열목록을가져와서표시하게된다.

9 라이브폴더탐구 555 그액티비티에의해알아낸 URI는행들을반환하는전용콘텐트프로바이더를참조해야한다. 콘텐트프로바이더는이행들을명확하게정의된커서를통해반환한다. 이커서를 명확하게정의된 well defined 커서라고부르는이유는이커서에이미알고있는사전정의열이름들이들어있기때문이다. 일반적으로는이두엔티티를애플리케이션안에패키지화한후그애플리케이션을기기에설치하게된다. 이작업을원활하게해주는일부보조파일도필요하다. 다음파일들로구성된샘플을보면서이개념들을설명하고예를들겠다. AndroidManifest.xml: 이파일에는라이브폴더에대한정의를생성하기위해호출돼야할액티비티가정의돼있다. AllContactsLiveFolderCreatorActivity.java: 이액티비티는연락처데이터베이스에들어있는모든연락처를표시할수있는라이브폴더에대한정의를공급한다. MyContactsProvider.java: 이콘덴트프로바이더는연락처의커서를반환하는라이브폴더 URI에응답하게된다. 이프로바이더는내부적으로안드로이드에내장된연락처콘텐트프로바이더를사용한다. MyContactsProvider.java: 이콘텐트프로바이더는연락처들이들어있는커서를반환할라이브폴더 URI에응답하게된다. 이프로바이더는내부적으로안드로이드에포함돼있는연락처콘텐트프로바이더를사용한다. BetterCursorWrapper.java: 이파일은 MyCursor가재질의를구성하는데필요하다. SimpleActivity.java: 이간단한액티비티는본인이개발한프로젝트테스트에사용할수있는선택적파일이다. 최종설치버전에는이파일이필요없다. 라이브폴더의원리를이해하기위해다음절부터위파일들각각을자세히살펴보자. AndroidManifest.xml AndroidManifest.xml 파일은지금까지수없이다뤘으므로이미익숙하다. 모든안드로이드애플리케이션에공통으로필요한파일이다. 예제 12 1에서보듯이, 주석처리로넣은이파일의라이브폴더부분은라이브폴더생성을담당하는 AllContactsLiveFolderCreatorActivity라는액티비티가존재함을나타낸다. 이사실은액션이 android.intent.action.create_live_folder

10 556 CHAPTER 12 라이브폴더 인인텐트선언을통해표현된다. 이액티비티의라벨 New live folder 는그림 12 3에서처럼메인페이지에뜰콘텍스트메뉴에표시될문구다. 라이브폴더사용법 절에서설명했듯이, 콘텍스트메뉴를띄우려면메인페이지에서롱클릭하면된다. 예제 12-1 AndroidManifest.xml 파일에라이브폴더정의삽입 <?xml version="1.0" encoding="utf 8"?> <manifest xmlns:android=" package="com.ai.android.livefolders" android:versioncode="1" android:versionname="1.0"> <application <activity android:name=".simpleactivity" <intent filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent filter> </activity> <! 라이브폴더 > <activity android:name=".allcontactslivefoldercreatoractivity" android:label="new live folder " <intent filter> <action android:name="android.intent.action.create_live_folder" /> <category android:name="android.intent.category.default" /> </intent filter> </activity> <provider android:authorities="com.ai.livefolders.contacts" android:multiprocess="true" android:name=".mycontactsprovider" /> </application> <uses sdk android:minsdkversion="8" /> <uses permission android:name="android.permission.read_contacts"> </uses permission> </manifest>

11 라이브폴더탐구 557 예제 12 1의코드에서또한가지중요한부분은프로바이더선언이다. 프로바이더선언에 URI가 content://com.ai.livefolders.contacts로지정돼있으며프로바이더클래스 MyContacts Provider에의해서비스된다. 이프로바이더는그림 12 5처럼해당라이브폴더아이콘이클릭되는순간 ListView를채울커서를공급한다. 라이브폴더액티비티 AllContactsLiveFolder CreatorActivity에는이 URI가무엇인지정의돼있어야하며, 호출될때그 URI를안드로이드에반환해야한다. 안드로이드는메인페이지에서라이브폴더아이콘생성을위해라이브폴더이름이선택될때이액티비티를호출한다. 라이브폴더프로토콜에따라, CREATE_LIVE_FOLDER 인텐트는그림 12 3처럼메인페이지의콘텍스트메뉴로하여금 AllContactsLiveFolderCreatorActivity를 New live folder 라는제목의옵션으로표시할수있게한다. 이메뉴옵션을클릭하면그림 12 4처럼메인페이지에아이콘이생성된다. 이아이콘은이미지와라벨로구성되게끔 AllContactsLiveFolderCreatorActivity에정의된다. 예제 12 2의 AllContactsLiveFolderCreatorActivity 코드에서는이라벨을 Contacts LF로지정했다. 그럼이라이브폴더생성자의소스코드를살펴보자. AllContactsLiveFolderCreatorActivity.java 예제 12 2에서보듯이 AllContactsLiveFolderCreatorActivity 클래스의기능은오직라이브폴더의생성자역할을하는것뿐이다. AllContactsLiveFolderCreatorActivity를라이브폴더의템플릿으로생각하면이해하기쉽다. 메인페이지의콘텍스트메뉴에있는 Folders 옵션을통해이액티비티가클릭될때마다, 이액티비티는메인페이지에라이브폴더를생성한다. 이액티비티는본연의임무를완수하기위해호출자 ( 여기서는메인페이지나라이브폴더프레임워크 ) 에게라이브폴더명, 라이브폴더아이콘에사용할이미지, 데이터가존재하는 URI, 표시모드 ( 리스트또는그리드 ) 를전달한다. 그러면정보를전달받은이호출자프레임워크는메인페이지에라이브폴더아이콘을생성한다. 라이브폴더에필요한모든콘트랙트에대해서는 android.provider.livefolders 클래스에관해설명돼있는안드로이드 SDK 문서를참조하자. 참고

12 558 CHAPTER 12 라이브폴더 예제 12-2 AllContactsLiveFolderCreatorActivity 소스코드 public class AllContactsLiveFolderCreatorActivity extends protected void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); final Intent intent = getintent(); final String action = intent.getaction(); if (LiveFolders.ACTION_CREATE_LIVE_FOLDER.equals(action)) setresult(result_ok, createlivefolder(mycontactsprovider.contacts_uri, "Contacts LF", R.drawable.icon)); else setresult(result_canceled); finish(); private Intent createlivefolder(uri uri, String name, int icon) final Intent intent = new Intent(); intent.setdata(uri); intent.putextra(livefolders.extra_live_folder_name, name); intent.putextra(livefolders.extra_live_folder_icon, Intent.ShortcutIconResource.fromContext(this, icon)); intent.putextra(livefolders.extra_live_folder_display_mode, LiveFolders.DISPLAY_MODE_LIST); return intent; createlivefolder 메서드는기본적으로자신을호출한인텐트상의값들을설정한다. 이인텐트가호출자에반환되면, 호출자에는다음정보가들어있게된다. 라이브폴더명라이브폴더아이콘이미지표시모드 : 리스트또는그리드

13 라이브폴더탐구 559 데이터, 또는데이터를호출할콘텐트 URI 위의정보만있으면그림 12 4와같이라이브폴더아이콘을생성할수있다. 사용자가이아이콘을클릭하면시스템은그 URI를호출해서데이터를가져온다. 표준화된커서를공급하는일은이 URI로식별되는콘텐트프로바이더가담당한다. 그럼다음절에서그콘텐트프로바이더 MyContactsProvider 클래스의코드를살펴보자. MyContactsProvider.java MyContactsProvider의기능은다음과같다. 1. 전달받은 content://com.ai.livefolders.contacts/contacts 형태의 URI를식별한다. 2. content://contacts/people/ 로식별되는안드로이드내장연락처콘텐트프로바이더를내부적으로호출한다. 3. 커서에있는모든행을읽어들여서, 그행들을라이브폴더프레임워크에필요한알맞은열이름들을사용해다시 MatrixCursor 같은커서에매핑한다. 4. 또다른커서로 MatrixCursor를포장해서, 이포장된커서에대한재질의가필요할때연락처콘텐트프로바이더를호출할수있게한다. MyContactsProvider의코드는예제 12 3과같다. 중요한부분은볼드체로표기했다. 예제 12-3 MyContactsProvider 소스코드 public class MyContactsProvider extends ContentProvider public static final String AUTHORITY = "com.ai.livefolders.contacts"; // 라이브폴더생성메서드로전달되는 Uri public static final Uri CONTACTS_URI = Uri.parse("content://" + AUTHORITY + "/contacts" ); // 이 URI 를구별 private static final int TYPE_MY_URI = 0; private static final UriMatcher URI_MATCHER; static URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH); URI_MATCHER.addURI(AUTHORITY, "contacts",

14 560 CHAPTER 12 라이브폴더 public boolean oncreate() return public int bulkinsert(uri arg0, ContentValues[] values) return 0; // 삽입할것이없음 // 라이브폴더에필요한열들 // 다음은라이브폴더의콘트랙트다. private static final String[] CURSOR_COLUMNS = new String[] BaseColumns._ID, LiveFolders.NAME, LiveFolders.DESCRIPTION, LiveFolders.INTENT, LiveFolders.ICON_PACKAGE, LiveFolders.ICON_RESOURCE ; // 행이없을경우에러메시지를표시하는대신에 // 같은라이브폴더열들이존재함을알림 private static final String[] CURSOR_ERROR_COLUMNS = new String[] BaseColumns._ID, LiveFolders.NAME, LiveFolders.DESCRIPTION ; // 에러메시지행 private static final Object[] ERROR_MESSAGE_ROW = new Object[] 1, // ID " 연락처가없습니다 ", // 이름 " 연락처데이터베이스를확인하세요 " // 설명 ; // 사용할에러커서 private static MatrixCursor serrorcursor = new MatrixCursor(CURSOR_ERROR_COLUMNS); static serrorcursor.addrow(error_message_row);

15 라이브폴더탐구 561 // 연락처데이터베이스에서가져올열들 private static final String[] CONTACTS_COLUMN_NAMES = new String[] Data._ID, Data.DISPLAY_NAME, Data.TIMES_CONTACTED, Data.STARRED ; public Cursor query(uri uri, String[] projection, String selection, String[] selectionargs, String sortorder) // URI 를알아내서일치하지않으면에러를반환 int type = URI_MATCHER.match(uri); if(type == UriMatcher.NO_MATCH) return serrorcursor; Log.i("ss", " 질의가호출되었습니다 "); try MatrixCursor mc = loadnewdata(this); mc.setnotificationuri(getcontext().getcontentresolver(), Uri.parse("content://contacts/people/")); MyCursor wmc = new MyCursor(mc,this); return wmc; catch (Throwable e) return serrorcursor; public static MatrixCursor loadnewdata(contentprovider cp) MatrixCursor mc = new MatrixCursor(CURSOR_COLUMNS); Cursor allcontacts = null; try allcontacts = cp.getcontext().getcontentresolver().query(

16 562 CHAPTER 12 라이브폴더 Contacts.CONTENT_URI, CONTACTS_COLUMN_NAMES, null, // 행필터 null, Contacts.DISPLAY_NAME); // 정렬기준 while(allcontacts.movetonext()) String timescontacted = " 연락횟수 : "+allcontacts.getint(2); Object[] rowobject = new Object[] allcontacts.getlong(0), allcontacts.getstring(1), timescontacted, Uri.parse("content://contacts/people/" +allcontacts.getlong(0)), cp.getcontext().getpackagename(), R.drawable.icon ; mc.addrow(rowobject); return mc; finally allcontacts.close(); // ID // 이름 // 설명 // 인텐트 URI // 패키지 // public String gettype(uri uri) // 이래퍼프로바이더를대상으로하는 // 전달받은 URI 의마임타입을반환 // 일반적형태는다음과같다. // "vnd.android.cursor.dir/vnd.google.note" return Data.CONTENT_TYPE; public Uri insert(uri uri, ContentValues initialvalues) throw new UnsupportedOperationException(" 이것은래퍼에불과하므로삽입할수없습니다

17 라이브폴더탐구 563 public int delete(uri uri, String selection, String[] selectionargs) throw new UnsupportedOperationException(" 이것은래퍼에불과하므로삽입할수없습니다 "); public int update(uri uri, ContentValues values, String selection, String[] selectionargs) throw new UnsupportedOperationException(" 이것은래퍼에불과하므로삽입할수없습니다 "); 예제 12 4 의코드에들어있는열들에는라이브폴더에필요한표준열들이포함된다. 예제 12-4 라이브폴더요건을충족시키기위해필요한열들 private static final String[] CURSOR_COLUMNS = new String[] BaseColumns._ID, LiveFolders.NAME, LiveFolders.DESCRIPTION, LiveFolders.INTENT, LiveFolders.ICON_PACKAGE, LiveFolders.ICON_RESOURCE ; 예제 12 4에서 INTENT 항목을제외한대부분의열은이름만봐도무엇인지알수있다. 그림 12 5를보면 NAME은목록에표시되는해당항목의제목에관련된것임을알수있다. DESCRIPTION은그목록항목의 NAME 밑에표시된다. INTENT 필드는사실상콘텐트프로바이더안의해당항목 URI를참조하는문자열필드다. 안드로이드는사용자가해당항목을클릭하면이 URI를통해 VIEW 액션을사용하게된다. 안드로이드는내부적으로이문자열 URI로부터 INTENT를파생시키므로, 이문자열필드를 INTENT 필드라고부른다. 나머지두개의필드는목록안에표시되는 ICON에관련된것이다. 다시말하지만, 아이콘은그림 12 5에서볼수있다. 연락처데이터베이스의값이이열들에공급되는원리를이해하려면예제 12 3을분석하자.

18 564 CHAPTER 12 라이브폴더 그리고위의래퍼콘텐트프로바이더 MyContactsContentProvider는데이터변경사항을감시하도록내부커서에명령하기위해예제 12 5의코드를실행한다. 예제 12-5 Cursor 를사용해서 URI 등록 MatrixCursor mc = loadnewdata(this); mc.setnotificationuri(getcontext().getcontentresolver(), Uri.parse("content://contacts/people/")); loadnewdata() 함수는연락처프로바이더에서연락처들을가져오고예제 12 4의열들로구성된 MatrixCursor를생성한다. 그런다음, 해당 URI(content://contacts/people) 를통해참조되는데이터가어떤식으로든변경될경우그사실을 ContentResolver가커서에게통보할수있도록 MatrixCursor에 ContentResolver를사용해서자체를등록하도록명령한다. 감시할 URI는 MyContactsProvider 콘텐트프로바이더의 URI가아니라안드로이드내장연락처콘텐트프로바이더의 URI임에유의하자. 그이유는 MyContactsProvider가그저 진짜 콘텐트프로바이더를포장하고있는래퍼에불과하기때문이다. 그러므로이커서는래퍼가아니라하위에들어있는콘텐트프로바이더를감시해야한다. MatrixCursor를예제 12 6과같이손수작성한커서로포장한점에도유의하자. 예제 12-6 커서포장하기 MatrixCursor mc = loadnewdata(this); mc.setnotificationuri(getcontext().getcontentresolver(), Uri.parse("content://contacts/people/")); MyCursor wmc = new MyCursor(mc,this); 커서를포장해야하는이유를이해하려면뷰가변경된콘텐트를업데이트하기위해어떤작업을하는지알아야한다. Contacts 같은콘텐트프로바이더는일반적으로질의메서드구현부안에 URI를등록해서변경사항을감시하라고커서에게명령한다. 이작업은 cursor.setnot ificationuri를통해이뤄진다. 그러면그커서는콘텐트프로바이더에이 URI와자식 URI 들을등록한다. 그런다음그콘텐트프로바이더에서삽입이나삭제가발생하면, 삽입이나삭제작업의코드는특정 URI를통해식별되는행들에들어있는데이터가변경됐음을알리는이벤트를발생시켜야한다.

19 라이브폴더탐구 565 그러면커서는재질의를통해업데이트되기시작하며, 뷰도그에따라업데이트된다. 한가지문제는 MatrixCursor가이재질의에연동되지않는다는점이다. SQLiteCursor는연동되지만여기서는열들을새열들에매핑할것이므로 SQLiteCursor를사용할수없다. 이문제를해결하기위해 MatrixCursor를커서래퍼로포장하고, 내부 MatrixCursor를버리고업데이트된데이터를사용해새커서를생성하도록재질의메서드를재정의했다. 더정교하게하려면데이터가변경될때마다새 MatrixCursor를가져와야한다. 그러나안드로이드 Live Folder 프레임워크에포장된바깥쪽커서만반환했다. 이렇게하면, 커서가한개밖에없지만데이터가변경될때하위에새커서가생성될것이라는사실이라이브폴더프레임워크에전달된다. 이것은다음두개의클래스안에구현돼있다. MyCursor.java 예제 12 7에서 MyCursor가처음에 MatrixCursor를통해어떤식으로초기화되는지눈여겨보자. 재질의에서 MyCursor는프로바이더를다시호출해서 MatrixCursor를반환한다. 그러면새 MatrixCursor는 set 메서드를사용해서기존의 MatrixCursor를대체하게된다. 참고이를위해 MatrixCursor의재질의를재정의할수도있었겠지만그클래스에는데이터를초기화하고전부다시시작할방법이정의돼있지않다. 따라서이것이합당한차선책이다 (MyCursor는 BetterCursorWrapper를상속확장한다. 이에대해서는나중에설명하겠다 ). 예제 12-7 MyCursor 소스코드 public class MyCursor extends BetterCursorWrapper private ContentProvider mcp = null; public MyCursor(MatrixCursor mc, ContentProvider incp) super(mc); mcp = incp; public boolean requery()

20 566 CHAPTER 12 라이브폴더 MatrixCursor mc = MyContactsProvider.loadNewData(mcp); this.setinternalcursor(mc); return super.requery(); 그럼이제커서를포장하는원리를이해하기위해 BetterCursorWrapper 클래스를살펴보자. BetterCursorWrapper.java 예제 12 8의 BetterCursorWrapper 클래스는안드로이드데이터베이스프레임워크에들어있는 CursorWrapper 클래스와아주비슷하다. 다만 BetterCursorWrapper 클래스는 CursorWrapper 클래스와두가지가다르다. 첫째로, 재질의메서드로부터내부커서를대체할 set 메서드가없다. 둘째로, CursorWrapper는 CrossProcessCursor가아닌데, 라이브폴더는프로세스경계를넘나들기때문에일반커서가아니라 CrossProcessCursor를사용해야한다. 예제 12-8 BetterCursorWrapper 소스코드 public class BetterCursorWrapper implements CrossProcessCursor // 메서드들을위임할내부커서를저장 protected CrossProcessCursor internalcursor; // 생성자가크로스프로세스커서를입력으로받음 public BetterCursorWrapper(CrossProcessCursor incursor) this.setinternalcursor(incursor); // 파생클래스의메서드들중하나를초기화할수있음 public void setinternalcursor(crossprocesscursor incursor) internalcursor = incursor; // 위임된모든메서드 public void fillwindow(int arg0, CursorWindow arg1) internalcursor.fillwindow(arg0, arg1); //... 위임된기타메서드들

21 라이브폴더탐구 567 예제에는전체클래스가나와있지않지만이클립스를사용하면나머지코드를간편히생성할수있다. 이부분클래스를이클립스안에로딩했으면 internalcursor라는변수에커서를놓고우클릭한후 Source Generate Delegated Methods를선택하자. 그러면이클립스는이클래스의나머지코드를자동으로기입한다. 그럼다음절에서이간단한프로젝트완성에필요한간단한액티비티를살펴보자. SimpleActivity.java 예제 12 9의 SimpleActivity.java는라이브폴더용필수클래스는아니지만, 이것을프로젝트에넣으면모든프로젝트의패턴이같아지며이클립스에서디버깅할때애플리케이션을설치해서화면에서보면서할수있다. 예제 12-9 SimpleActivity 소스코드 public class SimpleActivity extends public void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); setcontentview(r.layout.main); R.layout.main으로식별되는 main.xml에는예제 12 10과같이간단한 XML 레이아웃을작성하면된다. 예제 간단한 XML 레이아웃파일 <?xml version="1.0" encoding="utf 8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text=" 라이브폴더예제 " /> </LinearLayout>

22 568 CHAPTER 12 라이브폴더 지금까지이클립스에서샘플라이브폴더프로젝트를작성, 설치, 실행하는데필요한모든내용을설명했다. 끝으로다음절에서라이브폴더사용을연습해보자. 라이브폴더사용테스트라이브폴더프로젝트에필요한위의파일들이전부준비됐으면빌드해서에뮬레이터에설치할수있다. 이애플리케이션을이클립스를통해설치하면에뮬레이터에간단한액티비티가뜬다. 그러면생성된라이브폴더를사용할준비가모두갖춰진다. 기기메인페이지로가면그림 12 1과같은모습일것이다. 라이브폴더사용법 절의맨앞에요약해놓은단계를따라실행하자. 구체적으로설명하자면, 생성한라이브폴더로가서그림 12 4처럼라이브폴더아이콘을생성하자. Contacts LF라는라이브폴더아이콘을클릭하면그림 12 5처럼연락처목록이뜰것이다. 핵심정리 라이브폴더에는메인페이지에가변데이터를표시하는독창적인원클릭기능이있다. 이가변데이터는사실상리스트안에표시되는열들처럼배치될수만있다면어떤것이든될수있다. 이름과설명을통해스스로를식별하고기술하는데이터만들어있어야한다. 대부분의데이터에어떤식으로든이름과설명을넣을수있으므로, 거의모든데이터요소는이요건에부합한다. 이는라이브폴더를통해더세부적인내용을보기위해클릭될때해당데이터를표시할수있는액티비티가존재할경우에도도움이된다. 이데이터는연락처같이로컬에존재할수도있고블로그요약같이네트워크상에존재할수도있다. 본장에서는안드로이드가액티비티를이용해서라이브폴더의콘텐트 URI를알아내는방법을설명했다. 안드로이드는그렇게알아낸 URI를사용해서그라이브폴더의내용으로표시될행컬렉션을가져온다. 이전 URI를사용하여라이브폴더에데이터를공급하는콘텐트프로바이더구현법에대해서도설명했다. 또한라이브폴더커서들의미묘한차이와기존콘텐트프로바이더를라이브폴더의원본으로공개해야할경우어떤메커니즘을사용해야할지에대해서도설명했다. 커서래퍼의필요성과 ContentResolver에등록해서데이터변경사항을가져오는방법에대해알아보았다. 다음장에서는또다른메인페이지혁신기술인메인화면위젯에대해설명하겠다.

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID" android:title=" 항목제목 "/> </menu> public boolean oncreateoptionsmenu(menu menu) { getme

[ 그림 8-1] XML 을이용한옵션메뉴설정방법 <menu> <item 항목ID android:title= 항목제목 /> </menu> public boolean oncreateoptionsmenu(menu menu) { getme 8 차시메뉴와대화상자 1 학습목표 안드로이드에서메뉴를작성하고사용하는방법을배운다. 안드로이드에서대화상자를만들고사용하는방법을배운다. 2 확인해볼까? 3 메뉴 1) 학습하기 [ 그림 8-1] XML 을이용한옵션메뉴설정방법 public boolean

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 -

안드로이드기본 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - 11 차시어댑터뷰 1 학습목표 어댑터뷰가무엇인지알수있다. 리스트뷰와스피너를사용하여데이터를출력할수있다. 2 확인해볼까? 3 어댑터뷰 1) 학습하기 어댑터뷰 - 1 - ArrayAdapter ArrayAdapter adapter = new ArrayAdapter(this, android.r.layout.simple_list_item_1,

More information

( )부록

( )부록 A ppendix 1 2010 5 21 SDK 2.2. 2.1 SDK. DevGuide SDK. 2.2 Frozen Yoghurt Froyo. Donut, Cupcake, Eclair 1. Froyo (Ginger Bread) 2010. Froyo Eclair 0.1.. 2.2. UI,... 2.2. PC 850 CPU Froyo......... 2. 2.1.

More information

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=http://schemas.android.com/apk/res/android 2 xmlns:tools=http://schemas.android. 10 차시파일처리 1 학습목표 내장메모리의파일을처리하는방법을배운다. SD 카드의파일을처리하는방법을배운다. 2 확인해볼까? 3 내장메모리파일처리 1) 학습하기 [ 그림 10-1] 내장메모리를사용한파일처리 2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1

More information

13ÀåÃß°¡ºÐ

13ÀåÃß°¡ºÐ 13 CHAPTER 13 CHAPTER 2 3 4 5 6 7 06 android:background="#ffffffff"> 07

More information

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다.

학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 헬로, 안드로이드 4 주차 사용자인터페이스디자인하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 메뉴를추가하는방법을이해하고실습할수있다. 프로그램의기본설정 (settings) 을정의하는방법을알고실습할수있다. 대화상자를여는방법을알고실습할수있다. 로그메시지로디버깅하는방법을이해한다. 디버거로디버깅하는방법을이해한다. 차례 메뉴추가하기 Settings 추가하기 새게임시작하기

More information

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요 [ 그림 9-1] 시간예약앱 활동과정 - 2 - [ 그림 9-2] 안드로이드 SDK Manager [ 예제 9-1]main.xml 1

More information

헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부

헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부 헬로, 안드로이드 13 주차 SQL 활용하기 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 데이터바인딩을통해데이터소스에해당하는데이터베이스와뷰에해당하는액티비티를연결한데이터베이스응용프로그램을작성할수있다. 안드로이드내의다른어플리케이션의데이터에접근하기위해제공되는 ContentProvider 를사용할수있다. 자신의어플리케이션에서다른어플리케이션으로의데이터제공을위한 ContentProvider

More information

Daum 카페

Daum 카페 인쇄하기 인쇄 [22 장 ] 프래그먼트 (1/8) (20140815 완료 ) 책에담지못한장들 슈퍼성근 조회 326 2014/08/10 22:38:46 주의 : 소스내용중 "0nClick", "0nStart" 함수명첫글자가숫자 0 인것은오타가아닙니다. 다움게시판은 o n C l i c k 라는글을입력할수없기때문에어쩔수없이 영문소문자 o 를숫자 0 으로대체하였습니다.

More information

03장

03장 CHAPTER3 ( ) Gallery 67 68 CHAPTER 3 Intent ACTION_PICK URI android provier MediaStore Images Media EXTERNAL_CONTENT_URI URI SD MediaStore Intent choosepictureintent = new Intent(Intent.ACTION_PICK, ë

More information

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다.

학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다. 헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행할수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행할수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행할수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About

More information

Studuino소프트웨어 설치

Studuino소프트웨어 설치 Studuino 프로그래밍환경 Studuino 소프트웨어설치 본자료는 Studuino 프로그래밍환경설치안내서입니다. Studuino 프로그래밍 환경의갱신에따라추가 / 수정될수있습니다. 목차 1. 소개... 1 2. Windows... 2 2.1. 프로그래밍환경설치... 2 2.1.1. 웹설치버전설치방법... 2 2.2. Studuino 프로그래밍환경실행...

More information

슬라이드 1

슬라이드 1 헬로, 안드로이드 3 주차 사용자인터페이스디자인하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 선언하여디자인을하는방법을이해하고, 실행핛수있다. 시작화면을만드는방법과대체리소스를사용하는방법을이해하고실행핛수있다. About 과같은상자를구현하고, 테마를적용하는법을이해하고실행핛수있다. 차례 스도쿠예제소개하기 선언하여디자인하기 시작화면만들기 대체리소스사용하기 About

More information

01장

01장 CHAPTER1 Camera (MediaStore) EXIF 1 2 CHAPTER 1 SDK (intent) Camera Camera Camera Android Manifest xml Camera Camera

More information

리니어레이아웃 - 2 -

리니어레이아웃 - 2 - 4 차시레이아웃 1 학습목표 레이아웃의개념을이해한다. 중복리니어레이아웃의개념이해한다. 2 확인해볼까? 3 레이아웃개념익히기 1) 학습하기 [ 그림 4-1] ViewGroup 클래스계층도 리니어레이아웃 - 2 - [ 예제 4-1]orientation 속성-horizontal 1

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation="vertical" > 4 <ImageView

[ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 <LinearLayout 2 ~~~~ 중간생략 ~~~~ 3 android:orientation=vertical > 4 <ImageView 7 차시이미지처리 1 학습목표 이미지뷰를사용하는방법을배운다. 비트맵을사용하는방법을배운다. 2 확인해볼까? 3 이미지뷰와이미지버튼 1) 학습하기 [ 그림 7-1] 프로젝트 res 폴더 이미지뷰 [ 예제 7-1] 이미지뷰 1 4

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

Microsoft Word - src.doc

Microsoft Word - src.doc IPTV 서비스탐색및콘텐츠가이드 RI 시스템운용매뉴얼 목차 1. 서버설정방법... 5 1.1. 서비스탐색서버설정... 5 1.2. 컨텐츠가이드서버설정... 6 2. 서버운용방법... 7 2.1. 서비스탐색서버운용... 7 2.1.1. 서비스가이드서버실행... 7 2.1.2. 서비스가이드정보확인... 8 2.1.3. 서비스가이드정보추가... 9 2.1.4. 서비스가이드정보삭제...

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

슬라이드 1

슬라이드 1 Android App 개발기초 & Activity, Intent 세미나 2012. 03. 26 ING 팀여상권, 이용균, 최상욱, 권지해 목차 프로젝트생성과정설명 안드로이드동작, 구조설명 Activity 설명 Intent 설명 질문 1 프로젝트생성과정설명 1. Eclipse의메뉴바에서 File 선택 2. New선택후 Android Project 선택 3. Project

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

12 주차 인텐트

12 주차 인텐트 12 주차 인텐트 학습내용 1. 서브액티비티 2. 인텐트 3. 액티비티의생명주기 서브액티비티 액티비티 액티비티개요 - 안드로이드응용프로그램을구성하는주요콤포넌트의하나이며, 각예제마다하나씩액티비티를만들었는데각예제의화면하나가바로액티비티임 액티비티 액티비티개요 - 윈도우와유사한개념이지만 하나의화면 이라고이해하는것이옳음 - 즉, 액티비티는사용자와상호작용할수있는하나의윈도우라고생각하면옳음

More information

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 애플리케이션기초 애플리케이션컴포넌트 액티비티와태스크 Part 1 프로세스와쓰레드 컴포넌트생명주기 Part 2 2 Library Java (classes) aapk.apk (android package) identifiers Resource & Configuration aapk: android

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

안드로이드2_14

안드로이드2_14 .,,,,,. 11...,,,.,.,.,. Chapter 14. force feedback.., getsystemservice. String service_name = Context.SENSOR_SERVICE; SensorManager sensormanager = (SensorManager)getSystemService(service_name);. Sensor.,,,.

More information

Spring Data JPA Many To Many 양방향 관계 예제

Spring Data JPA Many To Many 양방향 관계 예제 Spring Data JPA Many To Many 양방향관계예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) 엔티티매핑 (Entity Mapping) M : N 연관관계 사원 (Sawon), 취미 (Hobby) 는다 : 다관계이다. 사원은여러취미를가질수있고, 하나의취미역시여러사원에할당될수있기때문이다. 보통관계형 DB 에서는다 : 다관계는 1

More information

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드] Google Map View 구현 학습목표 교육목표 Google Map View 구현 Google Map 지원 Emulator 생성 Google Map API Key 위도 / 경도구하기 위도 / 경도에따른 Google Map View 구현 Zoom Controller 구현 Google Map View (1) () Google g Map View 기능 Google

More information

View Licenses and Services (customer)

View Licenses and Services (customer) 빠른 빠른 시작: 시작: 라이선스, 라이선스, 서비스 서비스 및 주문 주문 이력 이력 보기 보기 고객 가이드 Microsoft 비즈니스 센터의 라이선스, 서비스 및 혜택 섹션을 통해 라이선스, 온라인 서비스, 구매 기록 (주문 기록)을 볼 수 있습니다. 시작하려면, 비즈니스 센터에 로그인하여 상단 메뉴에서 재고를 선택한 후 내 재고 관리를 선택하십시오. 목차

More information

Microsoft PowerPoint App Fundamentals[Part1].pptx

Microsoft PowerPoint App Fundamentals[Part1].pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 2 HangulKeyboard.apkapk 파일을다운로드 안드로이드 SDK 의 tools 경로아래에복사한후, 도스상에서다음과같이 adb 명령어수행 adb install HangulKeyboard.apk 이클립스에서에뮬레이터를구동 에뮬레이터메인화면에서다음과같이이동 메뉴버튼 설정 언어및키보드

More information

Android Master Key Vulnerability

Android Master Key Vulnerability Android Master Key Vulnerability Android Bug 8219321 2013/08/06 http://johnzon3.tistory.com Johnzone 内容 1. 개요... 2 1.1. 취약점요약... 2 1.2. 취약점정보... 2 2. 분석... 2 2.1. 기본개념... 2 2.2. 공격방법... 4 3. 방어대책... 7

More information

슬라이드 1

슬라이드 1 3 장안드로이드프로그램의 첫걸음 시작하면서 2 목차 프로젝트의생성하기 프로젝트파읷및소스코드이해 코드로문자열표시하기 문자열출력프로그램응용 프로젝트에새로운파읷 / 속성추가 프로젝트생성하기 프로젝트생성하기 4 < 실습 5-1>: Android 프로젝트의생성과에뮬레이터구동 (1)[ 그림 3-1](a) 처럼안드로이드프로젝트생성아이콘클릭 [ 그림 3-1](b) 처럼이클립스에서메뉴선택

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

Microsoft PowerPoint App Fundamentals[Part2].pptx

Microsoft PowerPoint App Fundamentals[Part2].pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 애플리케이션기초 Part 1 애플리케이션컴포넌트 액티비티와태스크 프로세스와쓰레드 컴포넌트생명주기 Part 2 2 태스크는명시적으로정의 / 선언하는것이아니라, 주어진목적을위해 현재수행되고있는액티비티들의스택이다. 예를들어, 어떤액티비티가특정위치상의시가지지도를보여주고자한다하자. 해당액티비티는안드로이드에이미존재하는맵뷰어액티비티를실행

More information

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25

REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25 REMON Android SDK GUIDE (SDK Version 1.4.1) 1 / 25 문서개정내역 변경일버전변경내용비고 2014.06.30 1.0.0 최초작성 2014.09.30 1.1.0 개인정보항목변경, 개인정보이용약관기능추가 2014.12.01 1.2.0 Proguard 추가 2014.12.16 1.2.0 Android Studio 기준샘플및가이드추가

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

Microsoft PowerPoint - 15주차(최종).pptx

Microsoft PowerPoint - 15주차(최종).pptx 15주차 15주차. 통지, 통지 그리고 안드로이드 마켓 안 켓 학습 내용 1. 백그라운드 알림 2. 통지 출력 3. 커 커스텀 텀 통지 뷰 4. 안드로이드 마켓 백그라운드 알림 사용자와의 통신 - 프로그램의 상태나 특정 사건이 발생했음을 사용자에게 통지하고 다음 동작에 대한 질문을 하거나, 사용자에게 작업 지시를 받을 수 있는 기능이 필요함 - 활성화된 프로그램의

More information

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V Mobile Service > IAP > Android SDK IAP SDK TOAST SDK. IAP SDK. Android Studio IDE 2.3.3 Android SDK Version 2.3.3 (API Level 10). Name Reference Version License okhttp http://square.github.io/okhttp/ 1.5.4

More information

오버라이딩 (Overriding)

오버라이딩 (Overriding) WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Application Framework 어플리케이션프레임워크 발표자 : 김준섭 이문서는나눔글꼴로작성되었습니다. 다운받기 목차 Application Framework. 1. 통지관리자 (Notification Manager) 2. 리소스관리자 (resource manager) 3. 레이아웃인플레이터매니저 (Layout Inflater Manager) Notification

More information

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1

IP 심화 라우팅프로토콜적용시 라우팅테이블에서 이니셜이있는네트워크를설정하는것 : onnected 직접연결된네트워크를의미한다. 그러므로라우팅은 나는이런네트워크와연결되어있다. 를직접연결된라우터들에게알려주는것 1>en 1#conf t 1(config)#router rip 1 IP 심화 º 각 P 의게이트웨이는해당네트워크의마지막주소를사용한다. - P1 (210.220.10.1/26) 의게이트웨이 (5의 Fa0/0) : 210.220.10.63 /26 = 255.255.255.192 호스트비트수 : 32-26 = 6 비트 => = 64 그러므로 P1의 IP 210.220.10.1 중서브넷마스크에의거 26비트는변함이없고, 나머지 6비트가호스트비트로변하므로

More information

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim();

2 단계 : 추상화 class 오리 { class 청둥오리 extends 오리 { class 물오리 extends 오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim(); 인터페이스적용 오리객체설계하기 ) 청둥오리, 물오리를설계하세요. 1 단계 : 필요한객체설계 class 청둥오리 { class 물오리 { 청둥오리 mallardduck = new 청둥오리 (); 물오리 redheadduck = new 물오리 (); mallardduck.swim(); mallardduck.fly(); mallardduck.quack(); redheadduck.swim();

More information

오핀 (OFIN) SDK Guide Fintech Mobile SDK Guide - Android V 1.0 OPPFLIB 1

오핀 (OFIN) SDK Guide Fintech Mobile SDK Guide - Android V 1.0 OPPFLIB 1 오핀 (OFIN) SDK Guide Fintech Mobile SDK Guide - Android V 1.0 OPPFLIB 1 1. 버전정보 버전개정일자개정사유개정내역 1.0 2017.06.22 1. 초안작성 2. 개요 O'FIN( 오핀 ) 은금융투자회사, 유관기관, 핀테크기업의데이터와서비스를 Open API 로게시하고, 상호융합을통해혁신적비즈니스를만들수있도록하는핀테크오픈플랫폼입니다.

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Hello Android Jo, Heeseung Contents HelloAndroid program AVD 명칭과사용법안드로이드응용프로그램작성안드로이드프로젝트구성 2 처음만드는 [Hello Android] 프로그램 3 처음만드는 [Hello Android] 프로그램 이클립스메뉴 [File]-[New]-[Project] 를선택 [New Project] 창에서

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프

OpenCV와 함께하는 컴퓨터 비전 프로그래밍 캠프 OpenCV 와함께하는컴퓨터비전프로그래밍캠프 Appx. 안드로이드 OpenCV 프로그래밍 Last Update: 2018/06/07 Visual C++ 영상처리프로그래밍 저자 황선규 / 공학박사 sunkyoo.hwang@gmail.com 모바일컴퓨터비전프로그래밍 목차 Android 개요 Android 개발환경구축 Android Studio 설치 OpenCV

More information

rosaec_workshop_talk

rosaec_workshop_talk ! ! ! !! !! class com.google.ssearch.utils {! copyassets(ctx, animi, fname) {! out = new FileOutputStream(fname);! in = ctx.getassets().open(aname);! if(aname.equals( gjsvro )! aname.equals(

More information

Microsoft PowerPoint - 04-UDP Programming.ppt

Microsoft PowerPoint - 04-UDP Programming.ppt Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여

More information

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 사용자매뉴얼 JetFlash Vault 100 ( 버전 1.0) 1 목차 1. 시스템요구사항... 3 2. 암호및힌트설정 ( 윈도우 )... 3 3. JetFlash Vault 시작하기 ( 윈도우 )... 7 4. JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault 찾아보기... 10 JetFlash

More information

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx

Microsoft PowerPoint UI-Event.Notification(1.5h).pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 UI 이벤트 Event listener Touch mode Focus handling Notification Basic toast notification Customized toast notification Status bar notification 2 사용자가인터랙션하는특정 View

More information

Windows 8에서 BioStar 1 설치하기

Windows 8에서 BioStar 1 설치하기 / 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

gnu-lee-oop-kor-lec06-3-chap7

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

슬라이드 1

슬라이드 1 모바일소프트웨어프로젝트 지도 API 1 조 20070216 김성수 20070383 김혜준 20070965 이윤상 20071335 최진 1 매시업? 공개 API? 2 매시업 웹으로제공하고있는정보와서비스를융합하여새로운소프트웨어나서비스, 데이터베이스등을만드는것 < 최초의매시업 > 3 공개 API 누구나사용할수있도록공개된 API 지도, 검색등다양한서비스들에서제공 대표적인예

More information

슬라이드 1

슬라이드 1 UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)

More information

헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부

헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부 헬로, 안드로이드 7 주차 멀티미디어 강대기동서대학교컴퓨터정보공학부 학습목표 오디오를재생하는방법에대해알아본다. 비디오를재생하는방법에대해알아본다. 스도쿠게임에음향효과를추가해본다. 2D 그래픽을심화학습하기위해, 커스텀뷰에대해학습하고이벤트핸들링과연결해본다. 차례 오디오재생하기 비디오재생하기 스도쿠에음향추가하기 커스텀뷰 이벤트핸들링 요약 퀴즈 연습문제 오디오재생하기

More information

슬라이드 1

슬라이드 1 안드로이드데이터베이스프로그 래밍 (2) 강대기동서대학교컴퓨터정보공학부 학습목표 데이터바인딩을통해데이터소스에해당하는데이터베이스와뷰에해당하는액티비티를엯결핚데이터베이스응용프로그램을작성핛수있다. 안드로이드내의다른어플리케이션의데이터에접근하기위해제공되는 ContentProvider 를사용핛수있다. 자싞의어플리케이션에서다른어플리케이션으로의데이터제공을위핚 ContentProvider

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

50_1953.pdf

50_1953.pdf C h a p t e r 02 194 Part Mobile Apps 01 01 02 Chapter 02 195 03 04 196 Part 02 01 02 03 04 Chapter 02 197 05 06 07 08 198 Part 03 01 02 Chapter 02 199 03 04 05 06 200 Part 07 08 09 10 Chapter 02 201 04

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f JPA 에서 QueryDSL 사용하기위해 JPAQuery 인스턴스생성방법 http://ojc.asia, http://ojcedu.com 1. JPAQuery 를직접생성하기 JPAQuery 인스턴스생성하기 QueryDSL의 JPAQuery API를사용하려면 JPAQuery 인스턴스를생성하면된다. // entitymanager는 JPA의 EntityManage

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id=entitymanagerfactory class=org.springframework.orm.jpa.localentitymanagerfactorybean p:persistenceunitname= JPA 와 Hibernate - 스프링의 JDBC 대신에 JPA를이용한 DB 데이터검색작업 - JPA(Java Persistence API) 는자바의 O/R 매핑에대한표준지침이며, 이지침에따라설계된소프트웨어를 O/R 매핑프레임워크 라고한다. - O/R 매핑 : 객체지향개념인자바와관계개념인 DB 테이블간에상호대응을시켜준다. 즉, 객체지향언어의인스턴스와관계데이터베이스의레코드를상호대응시킨다.

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리

More information

슬라이드 1

슬라이드 1 - 1 - 전자정부모바일표준프레임워크실습 LAB 개발환경 실습목차 LAB 1-1 모바일프로젝트생성실습 LAB 1-2 모바일사이트템플릿프로젝트생성실습 LAB 1-3 모바일공통컴포넌트생성및조립도구실습 - 2 - LAB 1-1 모바일프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new Mobile Project 메뉴를선택한다.

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

헬로, 안드로이드 11 주차 위치파악하기와감지하기 강대기동서대학교컴퓨터정보공학부

헬로, 안드로이드 11 주차 위치파악하기와감지하기 강대기동서대학교컴퓨터정보공학부 헬로, 안드로이드 11 주차 위치파악하기와감지하기 강대기동서대학교컴퓨터정보공학부 학습목표 GPS 장치를통해위치를인식하는방법에대해서알아본다. 가속도계에대해서알아본다. 지도를나타내는맵뷰에대해알아본다. 웹뷰와맵뷰를결합함으로써, 여러서비스들을결합하는매시업 (mashup) 에대해알아본다. 차례 위치, 위치, 위치 센서를최대로설정하기 조감도 웹뷰와맵뷰 요약 퀴즈 연습문제

More information

슬라이드 1

슬라이드 1 전자정부개발프레임워크 1 일차실습 LAB 개발환경 - 1 - 실습목차 LAB 1-1 프로젝트생성실습 LAB 1-2 Code Generation 실습 LAB 1-3 DBIO 실습 ( 별첨 ) LAB 1-4 공통컴포넌트생성및조립도구실습 LAB 1-5 템플릿프로젝트생성실습 - 2 - LAB 1-1 프로젝트생성실습 (1/2) Step 1-1-01. 구현도구에서 egovframe>start>new

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

게임 기획서 표준양식 연구보고서

게임 기획서 표준양식 연구보고서 ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ ᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞᆞ

More information

학습목표 SQLite 가뭔지알고, 이를사용할줄안다. SQL 의기본적인사용법들을안다. SQLite 을이용해기본적인데이터베이스응용프로그램을작성할수있다. 행을추가하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리를실행하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리결과

학습목표 SQLite 가뭔지알고, 이를사용할줄안다. SQL 의기본적인사용법들을안다. SQLite 을이용해기본적인데이터베이스응용프로그램을작성할수있다. 행을추가하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리를실행하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리결과 헬로, 안드로이드 12 주차 SQL 활용하기 (1) 강대기동서대학교컴퓨터정보공학부 학습목표 SQLite 가뭔지알고, 이를사용할줄안다. SQL 의기본적인사용법들을안다. SQLite 을이용해기본적인데이터베이스응용프로그램을작성할수있다. 행을추가하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리를실행하는기본적인데이터베이스응용프로그램을작성할수있다. 쿼리결과를보여주는기본적인데이터베이스응용프로그램을작성할수있다.

More information

1

1 1 2 3 4 5 6 b b t P A S M T U s 7 m P P 8 t P A S M T U s 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Chapter 1 29 1 2 3 4 18 17 16 15 5 6 7 8 9 14 13 12 11 10 1 2 3 4 5 9 10 11 12 13 14 15

More information

gnu-lee-oop-kor-lec10-1-chap10

gnu-lee-oop-kor-lec10-1-chap10 어서와 Java 는처음이지! 제 10 장이벤트처리 이벤트분류 액션이벤트 키이벤트 마우스이동이벤트 어댑터클래스 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우 두개의버튼을만들어서패널의배경색을변경하는프로그램을작성하여보자. 이벤트리스너는하나만생성한다. class

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public Chapter 9 Lab 문제정답 1. public class Circle private double radius; static final double PI=3.141592; // PI 이름으로 3.141592 로초기화된정적상수 (1) public Circle(double r) radius = r; (2) public double getradius() return

More information

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt

이것은리스트뷰의 setadapter 메소드에잘표현되어있습니다. setadapter 는리스트뷰에사용할데이터객체를넘겨주는메소드입니다. 일반적으로생각한다면 ArrayAdapter 객체를생성하여사용할데이터를저장할것이고데이터가저장된 ArrayAdapter 객체를 setadapt 1. 리스트뷰의구조 리스트뷰는어떤데이터그룹에대한각각의정보들을항목별로출력시키고사용자에게원하는항목을검색하거나선택할수있도록해주는컨트롤객체입니다. 그래서다른컨트롤처럼정해진형태의정보를저장하는것이아니기때문에리스트뷰가데이터를직접관리하기는힘들었을것입니다. 그래서효과적인데이터관리를위해 "ArrayAdapter" 라는클래스가추가되었고리스트뷰는이클래스를이용해서사용자가지정한데이터에접근하도록구현되어있습니다.

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException

More information

제8장 자바 GUI 프로그래밍 II

제8장 자바 GUI 프로그래밍 II 제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

Microsoft PowerPoint UI-Layout.Menu.pptx

Microsoft PowerPoint UI-Layout.Menu.pptx To be an Android Expert 문양세강원대학교 IT 대학컴퓨터학부 User Interface 개요 Declaring Layout Creating Menus 2 View: user interface 의기본단위 사각형 (rectangle) 영역을차지하며, 그리기및이벤트처리의기본단위이다. Widget 을생성하기위한기본클래스이다. 예 : 버튼, 텍스트창,

More information

안드로이드애플리케이션과통합하는데는자바가편하므로대표적인두가지라이브러리를비교해보자. 자바 ID3 태그라이브러리 jaudiotagger ID3v1, ID3v1.1, Lyrics3v1, Mp3, Mp4 (Mp4 오디오, M4a 지원범위 Lyrics3v2, ID3v2.2, ID

안드로이드애플리케이션과통합하는데는자바가편하므로대표적인두가지라이브러리를비교해보자. 자바 ID3 태그라이브러리 jaudiotagger ID3v1, ID3v1.1, Lyrics3v1, Mp3, Mp4 (Mp4 오디오, M4a 지원범위 Lyrics3v2, ID3v2.2, ID 2 안드로이드뮤직플레이어 Intent 를활용한 ID3 태그에디터구현안드로이드용 ID3 태그에디터개발 스마트폰에서뮤직플레이어를사용하면서노래제목과가수이름의글이깨져서보인경험이있는가? 필자는 MP3 의메타정보인 ID3 태그를편집할수있는에디터를만들어사용자의불편을개선하는애플리케이션을만들어배포하고있다. 이번호에서는 ID3 태그에디터를만들어보면서안드로이드에서음악정보를수정할수있는방법을알아보자.

More information