분류 전체보기

    Kotlin 파일 입출력 (io/nio)

    표준 입출력의 기본 개념 가장 기본적인 표준 입출력 API readLine() val input = readLine()!! Scanner() val input1 = Scanner(System.'in').readr.nextInt() // 정수형으로 입력 받음 val input2 = Scanner(System.'in').readr.nextLong() // Long타입으로 입력 받음 val input3 = Scanner(System.'in').readr.nextFloat() // Float타입으로 입력 받음 val input4 = Scanner(System.'in').readr.nextDouble() // Double타입으로 입력 받음 val input5 = Scanner(System.'in').readr.n..

    Kotlin 컬렉션(List/Set/Map)과 확장함수/시퀀스

    컬렉션 컬렉션의 확장함수 시퀀스 1. 요소 값 생성하기 2. 요소 값 가져오기 확장함수 기존 클래스에 새로운 함수를 추가하는 개념이다. Kotlin 코드에서는 기존 클래스에 메서드를 추가해 사용 하는 것처럼 보이지만 사실 객체의 주소 값을 받은 함수가 만들어지고 그 함수를 호출하는 방식으로 동작한다. fun main() { val str1 = "abcd" println(str1.getUpperString()) } fun String.getUpperString() : String { return this.toUpperCase() }

    Kotlin 제네릭(Generic)

    클래스를 설계할 때 변수의 타입을 유동적으로 하고 싶을 때가 있을 수도 있다. (인자의 자료형을 고정할 수 없거나 예측할 수 없을때) 이 때 Generic 개념을 활용하면 클래스 작성시가 아닌 객체 생성시에 변수의 타입을 설정할 수 있다. 1. 제네릭의 일반적인 사용법 형식 매개변수 1. 제네릭 클래스 2. 자료형 변환 제네릭 클래스는 가변성을 지정하지 않으면 형식 매개변수에 상/하위 클래스가 지정되어도 서로 자료형이 변환되지 않는다 3. 형식 매개변수의 null 제어 4. 제네릭 함수 혹은 메서드 5. 젠네릭과 람다식 class TestClassA{ fun testMethod(a1:Int){ println("a1 : $a1") } } class TestClassB{ fun testMethod(a1:St..

    [Appbar] - Toolbar

    앱바AppBar(=ActionBar) vs 툴바Toolbar 안드로이드의 역사와 관련이 있습니다. 안드로이드 버전 3.0부터 디폴트 테마(Theme)를 사용하는 모든 액티비티는 ActionBar를 app bar로 사용한다고 합니다. 그런데 새로운 버전의 안드로이드가 출시되면서 app bar 피쳐들이 점점 더 natvie ActionBar(OS에 기본적으로 포함된 ActionBar를 의미함. 반대되는 개념으로 지원 라이브러리에 포함된 ActionBar가 있음)에 추가되었고 그 결과 native ActionBar는 Android OS 버전에 따라 다르게 동작되는 문제가 생겼습니다. 이와 대조적으로 최신 피쳐들은 지원 라이브러리에 포함된 Toolbar에 추가되고 있어, 지원 라이브러리를 사용할 수 있는 모든 ..

    View를 만드는 가장 기본적인 방법, LayoutInflater

    LayoutInflater는 안드로이드에서 View를 만드는 가장 기본적인 방법입니다. Fragment의 View를 만들거나 Recyclerview에서 View 를 merge 할 때 등 여러곳에서 사용됩니다. LayoutInflater를 사용하는 방법과 더불어 비동기적으로사용 하는 방법을 알아보자 LayoutInflater 생성하는 방법 1. Context에서 getLayoutInflater() 함수로 가져오기 val inflater: LayoutInflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) - 가장 기본적인 방법 2. Activity에서 getLayoutInflater()함수를 통해 가져오기 val inflater: Layou..

    프로그래밍 패러다임 변천사

    구조적 프로그래밍 제어흐름의 직접적인 전환에 대해 규칙을 부과한다. 객체지향 프로그랭 제어흐름의 간접적인 전환에 대해 규칙을 부과한다. 함수형 프로그래밍 할당문에 대해 규칙을 부과한다. 각 아키텍처의 패러다임은 무엇을 해야할지가 아닌 무엇을 해서는 안되는지를 말해준다. 각 패러다임은 goto문 함수 포인터, 할당문을 앗아갔다. 아키텍처의 경계를 넘나들기 위한 메커니즘으로 다형성을 이용한다. ㅅ함수형프로그래밍을 이용하여 데이터의 위치와접근 방법에 대해 규칙을 부과한다. 모듈기반 알고리즘으로 구조적프로그래밍을 사용한다. 세가지 패러다임과 아키텍처의 세가지 큰 관심사(함수, 컴포넌트분리, 데이터관리)가 어떻게 서로 연관되는지에 주목하자. 구조적 프로그래밍 goto가 모뮫을 더 작은 단위로 재귀적으로 분해나는 ..