본문 바로가기
Language/코틀린

[Kotlin] Fast campus 강의 내돈내산 Android App 개발 (코틀린). 시작

by javapp 자바앱 2021. 10. 1.
728x90

 

Fast campus 패스트캠퍼스 내돈내산 안드로이드 앱 개발 코틀린편.시작 세팅

1. Android 는 Java 기반의 프레임워크이다.
2. Kotlin 은 Java 기반위에서 돌아간다.
3. Kotlin 은 함수형 프로그래밍 언어이지만, Android 프로그래밍에서는 OOP (객체지향프로그래밍) 구조로 되어있다.

 

 

패스트 캠퍼스

 

 

패스트 캠퍼스

 

 

코틀린을 배우는 이유

 

자바를 주 언어로 사용해서 자바로 계속해서 개발하면 좋겠지만 

구글에서 코틀린을 안드로이드의 공식 언어로 추가된 이후

 

채용에서도 코틀린을 선호하게 되었다.

 

+ 경력..

 

 

2017년 코틀린이 안드로이드의 공식 언어로 추가

 

코틀린이 안드로이드의 공식 언어로 추가되었습니다.

<블로그 원문은 여기 에서 확인하실 수 있으며, 블로그 번역 리뷰는 김태호(Google)님이 참여해 주셨습니다.> 작성자: Mike Cleron , 안드로이드 플랫폼 이사 안드로이드 팀은 코틀린 프로그래밍

developers-kr.googleblog.com

 

 

 

2019년 Google I/O 이후

2019 Google I/O에서 Kotlin first로 선언했다. 

그리고 구글에서는 자바 보다 코틀린에 대해 공식 지원을 한다고 했다.

 

 


 

안드로이드 운영체제와 플랫폼

출처 : https://developter.android.com/guide/platform

리눅스 커널과 자바 API 프레임워크가 결합된 형태

현재 JVM 대신에 안드로이드 런타임 (Android RunTime, ART) 사용

 

 

 

안드로이드 스튜디오에서 코틀린 Test 세팅

 

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnTest"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Test Button" />

    <EditText
        android:hint="Test EditText"
        android:id="@+id/edtTest"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName" />

    <ScrollView
        android:background="#AFFFF0"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/txtMessage"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="15dp"/>
    </ScrollView>
</LinearLayout>

 

 

TestClass.kt

// 클래스에 open 키워드를 사용해서 클래스를 생성해야 상속을 받을 수 있다.
// 메소드 역시 open 키워드를 사용해서 정의해야 오버라이드가 가능하다.

// Any, Any? 최상위 타입
// Any : 컴파일시 Object로 변환
// Any? 코틀린 자료형이 Non-null과 Nullable한 타입 두가지 있다.
// Any도 마찬가지이다. Nullable 한 Any는 Any? 사용

//Unit
//자바에서 함수의 반환값이 없는 경우 반환 타입을 void로 기입한다.

open class TestClass(pFunc : (Any) ->Unit)
{
    // Testclass 를 상속받았거나 그 안의 innerClass 에서
    // println을 대처하기 위한 static 메소드

    // companion object는 static이 아니며 static 처럼 보인다.
    // companion object를 가진 클래스가 메모리에 적재되면서 함께 생성되는 동반 객체
    // -> 클래스명.Companion 으로 접근 가능
    // MyClass.Companion.prop 의 축약형 : MyClass.prop
    companion object{
        var println : (Any) -> Unit = {}
    }

    init {
        println =pFunc
    }

    // 예제의 테스트 코드를 실행할 메소드
    open fun doTest(){}
}

 

 

FirstTest.kt

class FirstTest (p : (Any)->Unit) : TestClass(p)
{
    // ctrl + o
    override fun doTest() {

        println("firsttest")
    }
}

테스트할 코틀린 코드를 작성

 

 

MainActivity.kt

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 우리가 만든 예제들을 이곳에서 실행시킨다.

        doTest(FirstTest(::WriteLn))
    }

    private fun doTest(o: TestClass){
        o.doTest()
    }

    fun WriteLn( any : Any) {
        // findById 하지 않고 자동으로 바인딩 한다.
        txtMessage.text = "${txtMessage.text}${any.toString()}\n"
    }
}

 doTest 메소드 파라미터에 의존

 

 

 

 

 

 


 

코틀린 kt 파일 원리

실행시 JVM 이 FirstTest.kt -> FirstTestKt.class 파일로 변환

 

main 밖의 val 변수가 class 로 바뀌면서 멤버 필드에 위치하게 된다.

 

 

 

 

패스트 캠퍼스 강의

 

깃허브 출처

https://github.com/VintageAppMaker/FastCampusKotlin

 

GitHub - VintageAppMaker/FastCampusKotlin: Fastcampus 온라인강의용 소스

Fastcampus 온라인강의용 소스. Contribute to VintageAppMaker/FastCampusKotlin development by creating an account on GitHub.

github.com

 

댓글