본문 바로가기

# 02/코틀린

[Kotlin] 흐름의 중단과 반환 흐름 제어return : 함수에서 결괏값을 반환하거나 지정된 라벨로 이동break : for나 while의 조건식에 상관없이 반복문을 끝냄continue : for나 while의 반복문의 본문을 모두 수행하지 않고 다시 조건으로 넘어감 예외 처리문 - try {...} catch {...} : try 블록의 본문을 수행하는 도중 예외가 발생하면 catch 블록의 본문을 실행 - try {...} catch {...} finally {...} : 예외가 발생해도 finally 블록 본문은 항상 실행 return으로 값 반환하기fun add ( a : Int, b : Int ) : Int {return a + bprintln( "이 코드는 실행되지 않습니다." ) // 여기에 도달하지 않음} return으로..
[Kotlin] 반복문 for문 for 문의 선언 for (요소 변수 in 컬렉션 혹은 범위) { 반복할 본문 } for ( x in 1.. 5) { // 코틀린의 in과 범위 지정을 활용한 루프println( x ) // 본문} for ( x in 1.. 5) println( x ) // 한 줄에 표시하는 경우 예제)fun main() {var sum = 0for (x in 1.. 10) sum += x println("sum : $sum")} 하행 반복 - downTo5, 4, 3, 2, 1 for (i in 5 downTo 1) print(i)for (i in 5.. 1) print(i) // 잘못된 사용!! 아무것도 출력되지 않는다. 필요한 단계 증가 - step1, 3, 5 for (i in 1.. 5 step 2) ..
[Kotlin] MVP Model 구성 Model을 포함해보자.- Model : 데이터를 받아온다. - 1. View에서 사용자의 입력을 받는다. View에서 터치 이벤트 발생- 2. View -> Presenter : Presenter로 이벤트 전달- 3. Presenter : 데이터가 필요하여 Model에 요청- 4. Presenter -> Model : 로컬 또는 서버를 통해 새로운 데이터 호출- 5. Model -> Presenter : 데이터를 Presenter로 전달한다.- 6. Presenter -> View : 가공한 데이터를 View에 전달 Model의 구성 - Android Architecture Blueprints
[Kotlin] MVP 패턴 소개 2 MVP? - 1990년대 초기에 MS에 공개한 패턴- MVC와 다르게 MVP는 Model과 View간의 결합도를 낮출 수 있다. user event update modelview ---------------> presenter ---------------> Model View : 처리한 결과를 View로 전달- 5. View : 처리된 결과를 바탕으로 UI를 갱신
[Kotlin] MVC 패턴 소개 1 MVC - Control : 사용자의 입력을 받는다. (예. OnClickListener)- View : Control로부터 알림을 받고, 이를 Model과 함께 사용자의 화면을 구성한다.- Model : Data와 관련된 처리를 담당 Control Model View사용자 이벤트데이터가 업데이트가 필요한가? ------ 데이터 갱신 ------------------------ 모델 업데이트 되었는가? ㅣ UI 갱신 UI 처리 1. Control에서 입력이 발생2. 데이터 갱신이 필요한가?3. 모델을 통해 데이터를 업데이트 확인한다.4. 모델에서 업데이트 할 내용이 있다면, View로 전달하거나, Control이 View로 전달한다.5. 변화된 데이터가 있으면, Model로 부터 데이터를 받아온다.6. ..
[Kotlin] Architecture 어떠한 구조를 선택하는 게 좋은가? - 깔끔한 코드 분리가 가능한가?- Testing 가능한 구조를 만들 수 있는가?- View와 Model 간의 관계를 분리할 수 있는가?- 많은 코드를 손대지 않고, 유지 보수 가능한가? 안드로이드에 잘 맞는 Architecture는? class MainActivity : AppCompatActivity() { override fun onCreate (savedInstanceState : Bundle? ) {// ex) 업데이트 버튼val fab = findViewById(R.id.fab) as FloatingActionButtonfab.setOnClickListener {// 데이터 갱신 요청// Model에 접근해서 최신 데이터를 요청// ex) fun getIte..
[Kotlin] SAM Class SAM conversions - Single Abstract Methods- lambdas 식을 제공- Java에서 정의해야 함 - interface/abstract - Single Abstract Methods - setter 정의 // Interface는 아래와 같습니다.public interface OnClickListener {void onClick (View var1);} // setOnClickListener을 아래와 같이 구현되어 있습니다.public void setOnClickListener(View.OnClickListener 1) {throw new RuntimeException("Stub!");} SAM은 언제 동작할까? - setter와 추상 클래스 모두가 java 파일로 정의되어야..
[Kotlin] Generics Generics - 가장 흔하게 볼 수 있는 Generics 정의는 List이다. - List- Generics은 안에 타입 파라미터 정의 > javainterface Generic {void setItem (T item);} > kotlininterface Generic {fun setItem (item : T);} > kotlin 구현class Sample : Generic {override fun setItem(item : Generics type 정의) {// 구현}} 예제)interface Generic {fun setItem(item : T)} class Sample : Generic {override fun setItem (item : String) {// 구현}} @Testfun test(..