asdasf
'강의노트' 카테고리의 다른 글
[DB(DA)] MyBatis 4일차 (0) | 2016.10.07 |
---|---|
[DB(DA)] MyBatis 3일차 (0) | 2016.10.06 |
[DB(DA)] MyBatis 1일차 (0) | 2016.10.04 |
[Andriod] 안드로이드 플랫폼 2일차 -주말 10/1(토) (0) | 2016.10.01 |
[Andriod] 안드로이드 플랫폼 1일차 (0) | 2016.09.24 |
asdasf
[DB(DA)] MyBatis 4일차 (0) | 2016.10.07 |
---|---|
[DB(DA)] MyBatis 3일차 (0) | 2016.10.06 |
[DB(DA)] MyBatis 1일차 (0) | 2016.10.04 |
[Andriod] 안드로이드 플랫폼 2일차 -주말 10/1(토) (0) | 2016.10.01 |
[Andriod] 안드로이드 플랫폼 1일차 (0) | 2016.09.24 |
아침에 일어났는데 이래저래 몸이 좋지 않습니다. 그럼에도 불구하고!!! 수업을 들으러 가산디지털단지역으로!!! 그리고 Kosta 교육장으로!! 약간 늦었고 열심히 수업이 진행되고 있었습니다.
지난번 자바 기초강의를 진행 해 주셨던 강사님이셨습니다.
========================================= 1 ============================================
(19 : 10 ~ 19 : 47)
Layered Architecture를 바탕으로 이번 수업을 진행한다고 하셨습니다.
========================================= 2 ============================================
(20 : 05 ~ : 20 : 47)
MyBatis의 특징에 대해 수업을 계속 하였습니다.
SQL문은 외부로! 설정과 연결은 프레임워크가 담당!!
MyBatis의 구성요소
설정파일 :
매퍼 :
매핑구문 :
파라미터 타입:
결과타입 및 매핑:
MyBatis는 진입장벽이 거의 없기 때문에 신속하게 적용이 가능하다는 장점도 있습니다.
실습!!
파일을 받고 압축을 푼 후
C:\Users\Gaeseong\Desktop\MyBatis\mariadb-5.5.51-winx64\mariadb-5.5.51-winx64\bin이 경로로 이동을 하여
Shift + 마우스 오른쪽 클릭을 하면! 팝업 메뉴가 뜨고 그 중 현재 위치에서 명령창 실행(?)이라는 CMD창을 여는 항목을 선택한 후
>mysqld.exe --datadir=..\data --console 를 입력하면 아래와 같이 진행이 됩니다.
mysqld.exe --datadir=..\data --console
========================================= 3 ============================================
(21 : 05 ~ : 21 : 47)
실습 준비에 약간의 착오가 있어 강사님의 도움을 받았습니다.
Singleton : 객체 하나만 생성해서 관리하는 패턴!
========================================= 4 ============================================
(21 : 59 ~ : 22 : 47)
실습 계속....
단위테스트를 진핸하는것은 위의 화면과 같이 하면 되지만 단축키를 사용하는 것이 훨씬 더 편리하다고 생각합니다. Alt + Shift + X , T입니다. 단위테스트 결과 저는 실습을 잘 따라갔다고 생각했지만 4개의 오타나 정정했음에도 불구하고 단위테스트에 성공하지 못하였습니다.
[DB(DA)] MyBatis 3일차 (0) | 2016.10.06 |
---|---|
[DB(DA)] MyBatis 2일차 (0) | 2016.10.05 |
[Andriod] 안드로이드 플랫폼 2일차 -주말 10/1(토) (0) | 2016.10.01 |
[Andriod] 안드로이드 플랫폼 1일차 (0) | 2016.09.24 |
[Java] Java 프로그래밍 기초 5일차 (0) | 2016.09.23 |
아침에 일어났는데 이래저래 몸이 좋지 않습니다. 그럼에도 불구하고!!! 수업을 들으러 가산디지털단지역으로!!! 그리고 Kosta 교육장으로!! 약간 늦었고 열심히 수업이 진행되고 있었습니다.
========================================= 1 ============================================
( 10 : 10 ~ 11 : 03 )
========================================= 2 ============================================
( 11 : 20 ~ 12 : 17 )
강사님께서 잊으셨던 소개를 진행해주셨습니다.
그리고 안드로이드 스튜디오를 켜서 코드설명을 진행 해 주셨습니다.
...
리싸이클 함수는 객체를 다 쓴 후 자원회수를 하는 것으로 100%, 완전 회수는 아니지만 다른 Method에서는 사용할 수 있도록 하지만 해당 부분에서는 더이상 사용하지 않을 때 사용한다고 하셨습니다.
바인더 처리를 하기 위해서는 RPC code와 바인더를 넘
stub code에서 onTransact를 확인 해 주면 수행 과정을 확인할 수 있습니다.
결과값을 받아야 하는경우 Thread간 비동기 통신을 구현해야 합니다.
Proxy는 클라이언트 쪽에 연결되는 객체이고, Stub은 서비스쪽에 만들어지는 객체입니다.
page 41! 바인더의 동작원리!
========================================= 3 ============================================
( 12 : 30 ~ 13 : 08 )
56 page
안드로이드 IPC 메커니즘의 종류를 설명을 하시면서 IPC라는 약어를 쓰는 두가지 IPC에 대해 설명을 해 주셨습니다. 저희 수업에 나왔건 내용은 인터 프로세스 커뮤니케이션으로 PC안에서 프로세스간의 통신을 의미하는 것이고, 후자로 추가설명을 해 주셨던 부분은 인터 프로세서 커뮤니케이션으로 PC와 PC의 통신을 의미하는 것 이라고 하셨습니다.
갑자기 교육 커리큘럽에 대한 몇몇 다른 강의에 대한 설명을 진행 해 주시면서 라즈베리 OS에 코딩을 하고싶다면 파이썬이라는 언어를 사용하기를 권장하셨습니다. 드라이버를 몰라도 쉽게 프로그래밍을 할 수 있다고 하셨습니다.
바인더가 필요한 근본적인 이유는 메모리 영역을 공유하지 않는 프로세스간의 통신이 필요하기 때문입니다.
========================================= 4 ============================================
( 14 : 22 ~ 15 : 27 )
PPID가 139이면 자바 어플리케이션입니다.
http://androidxref.com/ : 안드로이드 OS의 code를 찾아볼 수 있는 site
OS는 크게 커널과 파일시스템으로 나눌 수 있습니다.
Parcelable은 parcel에 실을 수 있도록 하여 Binder로 활용할 수 있도록하는 것입니다.
(약간 설명이 어설픈 것 같은데 조금 이해가 부족합니다. 추가로 찾아보시기 바랍니다.)
컨택스트 메니져가 시스템서비스의 객체 포인터를 가지고 있습니다. 따라서 시스템서비스를 이용하고자 하면 서비스메니져(컨텍스트메니져)에 요청을 하야 합니다.
시스템서비스를 관리하는 컨택스트메니져는 시스템서비스 리스트 테이블을 갖고 있으며 이름과 객체포인터등의 정보를 갖고 있습니다.
Shell cmd 에서 시스템서비스 리스트를 확인하면 아래와 같습니다.
지금 위에서 확인 된 결과는 94개의 List 목록을 확인할 수 있습니다.
시스템서비스를 개발하고 싶다면 구현을 하고 AddService를 활용하여 서비스를 컨택스트 매니저의 서비스리스트에 등록하여야 합니다.
handle은 Ref pointer의 index! handle은 이론적인 용어일 뿐
========================================= 5 ============================================
( 15 : 43 ~ 16 : 28 )
플렛폼과 관련해서 대새를 바로 따르고 들어갈 수 있도록 기본 지식과 준비에 대한 중요성을 시작으로 5번째 시간 수업을 시작하셨습니다.
Intent를 사용하는 이유는 바인더 때문이라고 하셨습니다. 프로세스가 분리되어있기 때문에 직접 수행이 불가능 하다는 것은 여러번 이야기를 하셨었습니다. IPC의 핵심, 바인더를 사용해야 IPC가 가능하고 바인더를 사용하려면 Parcelable해야 하고 Intent가 Parcelable 하기 때문입니다.
진짜로 객체를 넘기고 싶을 경우에는 인텐트와 같이 Parcelable한 인텐트같은 것을 만들어야 한다고 하셨습니다. 인자로는 int, str, object를 넘겨주어야 한다고 하셨습니다. intent에는 객체를 넣을 수 있지만 프로세스를 넘어가야 하는 경우에는 Parcelable해야 한다고 하셨습니다.
PutExtra로 넘길 때 Process내부로 넘길 때에는 Parcelable 할 필요는 없지만 넘기는 위치가 Process내부인지 외부인지를 확실히 알 수 없는 경우를 대비하여 Parcelable하게 만들어야 한다고 하셨습니다.
Code분석을 할 때 Intent를 많이 사용한다고 하셨습니다.
82page AIDL
바인더를 인터페이스로 바꾸는 법, 인터페이스를 바인더로 바꾸는 법을 배웠습니다. page 87참고.
알람 서비스의 경우 자바에 구현이 되있으므로 getInertface를 하여 얻어올 수 있지만 분석을 하고싶을 경우에 코드를 찾는 방법은 AS(Android Studio)에서 찾아볼 수 있지만 그 범위는 안드로이드 자르(import한 Class묶음을 압축 해 둔것)에 들어온 것만 확인할 수 있다고 하셨습니다. service 구현 코드는 AS에서는 볼 수 없고 http://androidxref.com/ 에서 찾아야 합니다.
아니면 자르를 가져와 포함시키면 AS에서도 볼 수 있다고 하셨습니다.
받아주는 서비스코드를 찾으려면 어떻게 해야 하는가?
search iAlramManager를 상속받고 있는 code를 검색하는 것입니다.
가장 아래쪽의 표시된 것이 찾던 분석을 하려고 하는 code입니다.
한번 그렇다면 Audio 관련 code를 분석하려면 어떻게 해야하는지 쉬는시간에 실습을 해 보라고 하셨습니다.
AIDL이란?
two way와 oneway가 있습니다.
AIDL의 특징 - 124page
========================================= 6 ============================================
( 16 : 45 ~ 17 : 42 )
마지막 시간은 수업내용을 정리 해 주시면서 예제를 3개 주셨습니다. 해당 예제는 Camera App 관련 예제로 저희 수업의 기기가 전면 카메라만 있어서 전면카메라가 수행되는 것을 확인하였습니다.
시스템 서비스 구현 page 176
1. Proxy
2. stub
3. Interface
4. Service
를 구현하면 됩니다.
시스템 서비스를 추가하려면 OS는 재빌드를 해야합니다.
SDK를 따로 빌드해서 만들어야 하는 경우도 소개를 해 주셨습니다. 예를 들어 통신사인 SKT나 KT의 경우에는 통신사 전용 App 개발을 하기 위해서 해당 회사의 SDK를 빌드하여 써드파티 업체에 배포한다는 이야기를 해 주셨습니다.
[DB(DA)] MyBatis 2일차 (0) | 2016.10.05 |
---|---|
[DB(DA)] MyBatis 1일차 (0) | 2016.10.04 |
[Andriod] 안드로이드 플랫폼 1일차 (0) | 2016.09.24 |
[Java] Java 프로그래밍 기초 5일차 (0) | 2016.09.23 |
[Java] Java 프로그래밍 기초 4일차 (0) | 2016.09.22 |
오늘도 약간 지각을 했습니다.
========================= 1 ============================
( 09 : 05 ~ 10 : 16 )
환경변수 설정 파일 준비 등의 환경구축 작업을 진행하였습니다.
안드로이드 플랫폼에 관련된 강의 커리튤럼 및 Learning Map을 통해 미리 알아야 할 사항들 및 이후 학습 방향을 간단하게 소개 해 주셨습니다.
커널에 대한 중요성을 계속 강조하셨습니다.
그 이유는 펌웨어처럼 스케쥴링이 필요 없는 경우에는 OS탑제가 필요 없지만 그렇지 않을 경우, 또 디바이스를 직접 사용할 수 없고 커널의 디바이스 드라이버 코드를 활용하기 위해서도 커널을 알 필요가 있다고 하셨습니다.
안드로이드 코드는 하나의 프로세스가 수행되는 동안에 메모리를 독점하기 때문에 다른 프로세스의 코드(기능)를 활용할 수 없습니다. 다른 프로세스의 함수가 메모리에 적제될 수 없기 때문입니다. Task Switching(or Context Switching)되면 다른 프로세스가 위와 같이 메모리에 올라오므로 IPC(inter Process Communication)을 할 수 없습니다.
하지만 커널을 활용하면 가능합니다.
========================= 2 ============================
( 10 : 29 ~ 11 : 29 )
안드로이드 스튜디오 설치 확인 및 실습을 위한 환경설정을 진행하였습니다.
또한 안드로이드 어플리케이션이 수행되는 과정, 커널과의 연관성 등에 대해 설명을 해 주셨습니다
설치가 완료 되었습니다. SDK사용 경로를 변경하기 위해 위의 표시된 부분을 클릭하여 설정을 변경해줍니다.
SDK 경로를 변경하는 화면입니다.
또한 프로젝트의 이름 및 패키지 관련 설정을 해 주는 부분입니다.
실습의 편의를 위해 설정값을 위와 같이 해 주었습니다.
장치를 확인하는 첫 번째 방법입니다.
장치를 확인하는 두 번째 방법입니다.
Shell을 사용하여 확인하였습니다.
Build상황을 확인하는 부분입니다.
ADM 버튼입니다.
ADB Shell에서 Process를 확인하는 화면입니다.
화면에서 ID가 1인것은 사용자 프로세스입니다.
실습 기기를 사용했을 경우에는 발생하지 않았던 문제가 발생하였습니다.
본인의 LG G4를 이용하고싶었는데 위와 같은 문제가 있어 해결방법을 검색 후 아래와 같이 해결하였습니다.
위의 방법대로 체크를 한 후에는 문제없이 빌드되는 것을 확인하였습니다.
.
또한 실습 기기와의 연결을 하는 방법을 간단히 설명 해 주셨습니다.
========================= 3 ============================
( 11 : 40 ~ 12 : 53 )
<실습을 진행하기로 하였습니다.>
위의 이미지는 Eclipse처럼 단축키를 사용할 수 있도록 처리하기 위한 부분입니다.
실습 파일을 Project로 불러와 확인을 해 보고 교제에 있는 내용에 대해 이론수업을 진행하였습니다.
또한 이번 강의에서 System을 많이 알아갈 수 있기를 바란다는 당부를 여러번 하셨습니다.
기존의 리눅스 커널에 대한 지식이 있으면 Android를 이해하는 데 많은 도움이 됩니다.
어플리케이션의 입장에서는 리눅스 커널의 IPC, 멀티테스킹, 쉐어드메모리, 파이프 등의 기술을 쓸 수 있는 프로그래밍이 중요하다고 하셨습니다.
실습 코드중 중요한 부분입니다.
Button btn = (Button) findViewById(R.id.button);
btn.setOnClickListener(this); //this 는 Activity 자신임.
새로운 엑티비티를 열기 위해서는 커널을 통해서 우회하여야 합니다.
======================== 점심 ===========================
( 12 : 53 ~ 14 : 05 )
점심시간... 한시간 늦은건 왠지 기분탓만은 아닐거라 믿습니다...
========================= 4 ============================
( 14 : 05 ~ 15 : 06 )
아까 하던 실습의 Error를 잡는것을 하나하나 해 가고 있습니다.
code문제 뿐 아느라 Tools의 version문제를 해결하는 것 또한 잡아가고 있습니다.
code가 아닌 프로젝트의 내용을 고친 경우에는 위의 버튼을 눌러서 동기화를 시켜주어야 합니다.
해당 실습의 경우는 함수호출을 볼 수 있도록 하여 App의 Life Cycle을 확인할 수 있습니다.
Android Dtudio설치
https://developer.android.com/develop/index.html
API가이드
https://developer.android.com/guide/index.html
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
위의 false를 true로 고치면 압축과 난독화가 가능합니다. 난독화를 하면 Reverse Engineering을 방지할 수 있습니다.
액티비티 라이프 싸이클!
프로젝트 탐색기의 설정을 바꾸어 화면에 표시되는 내용을 달리 볼 수 있습니다. 기본적으로는 Android가 설정되어 있습니다.
서비스 -> UI없이 주기적으로 특정한 일을 수행하도록 하는 백그라운드 프로세스.
예로는 App의 서비스 기능을 사용하는 것이 뮤직플레이어가 있다.
음악을 재생하기 위해서 뮤직 플레이어의 엑티비티가 열리겠고 그 후 음악을 사용자가 선택하여 재생을 하는 경우 서비스로 음악이 재생하도록 하는 것입니다. 사용자가 추가도 동작을 하지 않아도 서비스에서 계속 선택된 음악 파일을 재생하도록 하는 것 입니다.
Log보는 방법중의 하나입니다.
Log.w(TAG, "onUnbind..");
Log의 Method로 e, w,d 등의 한자 알파벳들이 있는데 글자의 색이 달라 보이도록 하며 Error, Debug등의 의미를 담고 있습니다.
라이프 싸이클을 이해하는 것이 중요한 이유는 App의 동작 수행이 라이프싸이클에 대해 이상하지 않은 합리적인 동작을 할 수 있도록 해야하기 때문입니다.
========================= 5 ============================
( 15 : 20 ~ 16 : 33 )
바인더 관련된 이론 수업을 쭉 하고 실습은 진행하였습니다.
eclipse code를 Conversion 해 주는 안드로이드 스튜디오의 기능이 있는데 정상동작 하는 코드의 경우 문제가 없지만 Error가 있는 코드의 경우 정상동작을 하지 않을 수 있습니다.
이너 클래스로 리스너를 등록할 경우 this를 사용하면 Error가 발생합니다.
패키지 이름을 하드코딩하지 않으려면 :을 적고 아니면 하나하나 다 적어줘도 좋습니다.
프로세스를 분리 한 결과 실습 코드를 수행한 후 프로세스가 하나 더 생성된 것을 확인할 수 있습니다.
========================= 6 ============================
( 16 : 50 ~ 17 : 51 )
RemoteServerClient
Stub
Proxy
위의 두가지는 새로나오는 개념입니다.
[DB(DA)] MyBatis 1일차 (0) | 2016.10.04 |
---|---|
[Andriod] 안드로이드 플랫폼 2일차 -주말 10/1(토) (0) | 2016.10.01 |
[Java] Java 프로그래밍 기초 5일차 (0) | 2016.09.23 |
[Java] Java 프로그래밍 기초 4일차 (0) | 2016.09.22 |
[Java] Java 프로그래밍 기초 3일차 (0) | 2016.09.21 |
자바 프로그래밍 5일차
======================== 1 ==========================
( 19:19 ~ 19:51 )-> 많이 지각
alt + shift + s , v => clone관련
======================== 2 ==========================
( 20:01 ~ 20:54 )
Collection 관련 이론수업을 이전시간 막바지에 시작하여 계속 진행하였습니다.
List, Set, Map에 대해 중점적으로 설명을 해 주셨습니다.
crtl + / => 주석설정 / 해제
이론을 마친 후 실습을 진행하였습니다.
======================== 3 ==========================
( 21:00 ~ 21:50 )
실습을 계속 하였습니다. 저는 하다 말았습니다!!!!!!!!!!!!!!!!
객체로 사용할 클래스의 타이핑을 하던 중 제가 조금 늦어서 뒤이은 실습을 따라갈 수 없었습니다.
http://cloud.naver.com/urlShareIndex.nhn?ownerid=ulysses1217&owneridx=2420711&setidc=2&shareno=2085694&cmsdomain=files.cloud.naver.com&key=0gfXWsJf7BQ7bxqCN21Vqsk3tYwyXAOihRCeexi9XqkA#WORKS=false&MSGN=ACTION_GET_URL_SHARE_LIST&MSGV=Lw--&PAGEV=1
[Andriod] 안드로이드 플랫폼 2일차 -주말 10/1(토) (0) | 2016.10.01 |
---|---|
[Andriod] 안드로이드 플랫폼 1일차 (0) | 2016.09.24 |
[Java] Java 프로그래밍 기초 4일차 (0) | 2016.09.22 |
[Java] Java 프로그래밍 기초 3일차 (0) | 2016.09.21 |
[Java] Java 프로그래밍 기초 1일차 (0) | 2016.09.19 |
/**
*
* @author Gaeseong
*
*문제
조규현과 백승환은 터렛에 근무하는 직원이다. 하지만 워낙 존재감이 없어서 인구수는 차지하지 않는다.
다음은 조규현과 백승환의 사진이다.
이석원은 조규현과 백승환에게 상대편 마린(류재명)의 위치를 계산하라는 명령을 내렸다.
조규현과 백승환은 각각 자신의 터렛 위치에서 현재 적까지의 거리를 계산했다.
조규현의 좌표 (x1, y1)와 백승환의 좌표 (x2, y2)가 주어지고,
조규현이 계산한 류재명과의 거리 r1과 백승환이 계산한 류재명과의 거리 r2가 주어졌을 때,
류재명이 있을 수 있는 좌표의 수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 다음과 같이 구성되어있다.
첫째 줄에 x1, y1, r1, x2, y2, r2가 주어진다.
x1, y1, x2, y2는 -10,000보다 크거나 같고, 10,000보다 작거나 같은 정수이고,
r1, r2는 10,000보다 작거나 같은 자연수이다.
출력
각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다.
만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다.
*/
package q1002;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int count = 0;
count = scan.nextInt();
/*
* testCase[0] = x1
* testCase[1] = y1
* testCase[2] = r1
* testCase[3] = x2
* testCase[4] = y2
* testCase[5] = r2
*/
int[] testCase = {0,0,0,0,0,0};
double d = 0; //두 점 사이의 거리
int[] result = new int[count]; //문제의 출력 결과를 저장할 변수
int n =0;
while(n < count){
for (int i = 0; i < 6; i++) {
testCase[i]= scan.nextInt();
}
d = (testCase[0]-testCase[3])*(testCase[0]-testCase[3])
+ (testCase[1]-testCase[4])*(testCase[1]-testCase[4]);
d = Math.sqrt(d);
//터렛의 위치가 같은경우
if(testCase[0]== testCase[3]&&testCase[1]==testCase[4]){
//같은 위치에서 같은 거리에 적이 있다고 판단하면 가능성은 원 위의 모든점.
if(testCase[2] == testCase[5]){
result[n] = -1;
}
else{
result[n] = 0;
}
}
//터렛의 적 감지 범위에 서로 감지가 안 된 경우
else if(d > testCase[2] && d > testCase[5]){
if(d == (testCase[2] + testCase[5])){
result[n] = 1;
}
//거리보다 합이 큰 경우 두점에 가능성이 있다.
else if(d < (testCase[2] + testCase[5])){
result[n] = 2;
}
//거리보다 각자 발견한 적과의 거리 합이 더 적은경우. 가능성이 없음.
//d > (testCase[2] + testCase[5])
else{
result[n] = 0;
}
}
//하나 이상의 터렛이 다른터렛의 적 감지 범위 안에 있는 경우
// d < testCase[2] || d < testCase[5]
else{
//거리가 두 원의 반지름의 차와 같은 경우 딱 한점에 있다. (원의 내접!!!) => 접점이 1개
if(d == testCase[2] - testCase[5] || d == testCase[5] - testCase[2]){
result[n] = 1;
}
// 한 원의 반지름보다 다른원의 반지름과 중심사이의 거리 합이 작을 경우 => 접점이 0개
else if(testCase[5] > d+ testCase[2] || testCase[2] > d+ testCase[5] ){
result[n] = 0;
}
//
else{
result[n] = 2;
}
}
n++;
}
for (int i = 0; i < count; i++) {
System.out.println(result[i]);
}
}
}
자바 프로그래밍 4일차
======================== 1 ==========================
( 19:04 ~ 19:50 )-> 약간 지각
오늘도 일찍 나온다고 나왔지만 약간 지각을 하였습니다.
(Java 메모리 모델 ~) 이론수업을 진행하였습니다.
java 는 Call by value를 사용한다고 하셨습니다.
하지만 자바의 메소드에 객체를 넣으면 객체의 상태를 변경할 수 있고( 객체의 변수를 변경 가능) Call by reference 처럼 보입니다.
Java의 메소드는 파라미터의 값을 변경을 할 수가 없습니다. => Call by value 이므로
객체의 상태값은 Call by reference처럼 변경을 할 수 있습니다.
해당 내용에 대한 설명은 말만 가지고는 이해가 어려울 수 있으므로 실습을 바로 함께 진행하였습니다.
<실습>
ctrl + space : 기본 생성자를 생성하는데 사용할 수도 있습니다.
ctrl + space + 5 : import를 자동으로 하는
정적 초기화 블록에서는 인스턴스 변수에 접근 불가
======================== 2 ==========================
( 20:04 ~ 20:50 )
패키지 개요!
Static Import
중간에 엄청나게 깊이 졸았습니다......
======================== 3 ==========================
( 21:05 ~ 21:50 )
[Andriod] 안드로이드 플랫폼 1일차 (0) | 2016.09.24 |
---|---|
[Java] Java 프로그래밍 기초 5일차 (0) | 2016.09.23 |
[Java] Java 프로그래밍 기초 3일차 (0) | 2016.09.21 |
[Java] Java 프로그래밍 기초 1일차 (0) | 2016.09.19 |
[UX/UI] UX/UI이해와 활용 2일차 (0) | 2016.05.21 |
자바 프로그래밍 3일차
======================== 1 ==========================
( 19:10 ~ 19:50 )-> 약간 많이 지각
라인 삭제 : Ctrl + D
실습을 진행하였습니다.
StringEx.java
..
그리고 간단히 반복문을 활용하여 Test 과제를 풀어 보았습니다.
문제는 3가지로 아래와 같습니다.
1. 1~10까지의 합 구하기
2. 1~100 까지의 짝수들의 합 구하기
3. 반복문을 중첩사용하여 2~9단 까지 구구단 출력하기
======================== 2 ==========================
( 20:00 ~ 20:50 )
Test결과를 간단하게 확인 한 후 이론 진도를 나갔습니다.
객체지향 프로그래밍의 첫번째 장으로 기본적인 객체지향의 개념을 배웠습니다.
Getter 와 Setter - alt + shift + s , r
======================== 3 ==========================
( 21:05 ~ 21:50 )
이론 설명을 추가로 하신 후 Class와 객체 생성에 관한 실습을 진행하였습니다.
[Java] Java 프로그래밍 기초 5일차 (0) | 2016.09.23 |
---|---|
[Java] Java 프로그래밍 기초 4일차 (0) | 2016.09.22 |
[Java] Java 프로그래밍 기초 1일차 (0) | 2016.09.19 |
[UX/UI] UX/UI이해와 활용 2일차 (0) | 2016.05.21 |
[UX/UI] UX/UI이해와 활용 1일차 (0) | 2016.05.14 |
자바 프로그래밍 2일차
======================== 1 ==========================
( 19:02 ~ 19:47 )-> 약간 지각
블록이동 : 블럭 씌운 후 알트 키 누르고 드레그.
실습 진행
======================== 2 ==========================
( 20:00 ~ 20:50 )
꾸벅꾸벅... 너무나도 졸려서 수업에 도저히 집중이 되지 않습니다.
======================== 3 ==========================
( 21:02 ~ 21:50 )
꾸벅꾸벅... 너무나도 졸려서 수업에 도저히 집중이 되지 않습니다.
자바 프로그래밍 1일차
======================== 1 ==========================
첫 시간은 간단한 수강생들의 수준 조사 및 이론적인 자바에 대한 소개가 있었습니다.
또한 자바가 설치되지 않은 컴퓨터가 있어서 자바를 설치하는 작업의 1차 작업으로 자바를 다운로드 하는 작업을 하였습니다.
지금은 맥킨토씨에서 작업을 하고 있는데 한/영 전환이 자유롭지 않았습니다.
오늘은 처음으로 맥으로 부팅을 다시 해서 운영체제를 선택하는 것 또한 해 보았습니다. 옵션버튼을 누르고 부팅을 하여 흰 화면에서 윈도우가 설치된 디스크 모양을 선택하여 부팅을 하였습니다.
======================== 2 ==========================
( ~ 20:56)
환경변수 설정 후 메모장에 프로그래밍을 시작하였습니다.
메모장의 프로그램은 HelloWorld입니다.
(맥에서 캡쳐하는 단축키는 F14입니다. 검색을 해 보니 13이라는 글이 있었는데 안되서 해봤더니 저는 14가 되네요..
한영 전환은 제가 알고있는 컨트롤 + 스페이스가 안되 계속 찾아보니, 오른쪽 옵션 키... )
프로그램을 하나 컴파일 하여 수행 해 본 후 Neon version 이클립스를 설치하였습니다. 본인이 사용하는 피씨에 설치가 되어있지 않아서 다운을 받아서 작업중입니다.
설치 파일이 아닌 패키지파일로 다운을 받아서 압축만 풀어 사용을 하는것을 알려 주셔서 이번에는 그렇게 진행을 하였습니다.
이클립스 네온을 실행하여 IDE의 환경설정을 하는 방법을 또한 알려주셨습니다.
화면을 맞추기 위해 저 버튼을 누른 후 java를 선택하면 위와 같은 환경설정이 된 화면에서 프로그래밍을 할 수 있습니다.
그 후 추가 이론수업으로 자바의 문법 중 주석, 변수, 상수에 대해서 설명을 진행 해 주셨습니다.
======================== 3 ==========================
(21:07 ~ 21:55)
이론 마무리를 조금 더 진행하여 끝낸 후 실습을 진행한다고 하셨습니다.
자료형(Datatype)에 대한 기본적인 설명부터 각 자료형의 세부적인 내용을 간단하게나마 짚어주셨습니다. 또한 문자형을 설명하면서 북한의 유니코드 이야기를 살짝 해 주셨습니다.
이클립스의 컨트롤 + 스페이스 눌러서 자동완성을 사용하는 것을 알려주셨습니다. main함수의 선언에서도 활용이 가능 합니다.
syso 입력 후 위와 같이 컨트롤 + 스페이스를 입력하면 표준 출력[System.out.println("");]을 바로 사용할 수 있습니다.
alt + shift + j =>자바독 주석을 입력하는 단축키 입니다.
ctrl + F11 => run 단축키
===================== HelloWorld.java ===================
package day01;
public class HelloWorld{
/**
*
* @param args
*/
public static void main(String[] args) {
System.out.println("HelloWorld!!"); // HelloWorld -> 라인 주석
/*
* -> 블록주석 ( / * 후 enter입력)
*/
}
}
===================== VariableExjava ===================
package day01;
public class VariableEx {
//정적 젼수의 선언
private static int classVar = 1;
//인스턴스 변수
private int instanceVar = 3;
//상수
public static final double PI = 3.14;
//상수를 인스턴스 변수로 만들고 싶다면??
final double instance = 3.1;
public static void main(String[] args) {
// 지역변수
int num = 0;
System.out.println(num);
// 정적 변수는 어디서도 접근이 가능하다.
System.out.println(classVar);
//인스턴스 변수를 사용하기 위해서는 클레스의 객체화가 먼저 되어야 한다.
VariableEx variable = new VariableEx(); // 클레스의 객체화
//인스턴스 객체 안의 변수를 사용할 수 있습니다.
System.out.println(variable.instanceVar);
//PI=3.15; // 변경을 할 수 없습니다.
System.out.println(PI);
}
}
[Java] Java 프로그래밍 기초 4일차 (0) | 2016.09.22 |
---|---|
[Java] Java 프로그래밍 기초 3일차 (0) | 2016.09.21 |
[UX/UI] UX/UI이해와 활용 2일차 (0) | 2016.05.21 |
[UX/UI] UX/UI이해와 활용 1일차 (0) | 2016.05.14 |
[DB] MongoDB 프로그래밍 5일차 (0) | 2016.05.13 |