본문 바로가기

코틀린

(14)
[코틀린] 순수함수로 정의 될 수 있는 함수 순수함수를 한마디로 정의하면 부수효과가 발생하지 않는, 그래서 같은 매개변수 값으로 함수를 이용하면 항상 같은 값을 반환하는 함수를 의미한다. 여기서 말하는 부수효과는 뭘까? - 함수 외부의 다른 값을 변경하지 않는다. - 함수 내부에서 별도의 입출력이 발생하지 않는다. (파일, 데이터베이스, 네트워크 등) [랜덤 값이 발생하는 함수] fun some(a:Int):Int{ return (Math.random()*a.toInt() } 위의 함수는 매번 some(10)으로 호출하더라도 결과값이 매번 다르게 반환하므로 순수함수가 아니다. [파일 입출력이 발생하는 함수] fun some1(a:String):Boolean{ try{ val file = File("a.txt") val out = FileWriter..
[코틀린] 함수형 프로그래밍이란? 현대의 프로그래밍 언어에서 함수형 프로그래밍은 중요한 이슈 중 하나이다. 코틀린도 마찬가지로 함수형 프로그래밍(Functional Programming, 약어로 FP)을 위한 많은 기법을 제공한다. 일단, 함수형 프로그래밍이란 일종의 프로그래밍 패러다임이다. 소프트웨어 개발 패러다임의 역사가 절차지향에서 객체지향으로 변화했듯이 요즘에는 함수형 프로그래밍이 떠오르고 있다. 각 프로그래밍 패러다임을 아래와 같이 정리할 수 있다. * 절차지향 프로그래밍 - 알고리즘과 로직 중심으로 문제 해결이 주목적 (ex c, pascal) * 객체지향 프로그래밍 - 클래스 선언이 최우선, 데이터와 데이터를 처리할 메서드를 하나로 묶어 객체로 만들고 객체를 조합해서 프로그래밍을 작성 객체를 만들기 위한 추상화, 캡슐화, 상..
[안드로이드 기본] 멀티 터치를 감지하는 방법 스마트폰 앱을 보면, 두손가락으로 줌인을 하거나 줌아웃을 하는 경우가 있다. 또한, 한손가락 뿐만아니라 여러손가락도 사용을 할 경우도 발생한다. 이때 포인터를 가져와서 작업해야하는데, 멀티 포인터를 가져오기 위해 가장 기본적인 멀티 터치를 감지하는 방법에 대해서 알아보려고한다. 코드 구현 진행순서는 1. 텍스트 뷰가 두개 있는 activity_main.xml을 하나 만든다. (터치 했을 때 각 포인터의 X, Y의 값이 텍스트뷰에 보여줄것이다.) 2. 멀티 터치를 좌표값을 받아 올수 있는 터치 이벤트를 오버라이드 하는 MainActivity.kt를 만든다. 3. 포인터 값을 두개의 텍스트에 setText() 하여 UI로 나타낸다. 먼저 activity_main.xml을 만든다. [activity_main...
[안드로이드 기본] 터치 이벤트 순서 알아보기 안드로이드 사용자 인터페이스를 보면, 액티비티 위에 다양한 뷰들이 올라가는 방식이다. 그러다보면 이벤트가 중첩되어서 처리되는 경우가 있다. 예를 들어서, 어떤 액티비티에 터치 이벤트가 설정되어 있는데 그 위에 올라가 있는 뷰에도 터치 이벤트가 설정되어 있다면 어떻게 될까??? 그리고 그 뷰에 추가적으로 터치 리스너도 추가 되어 있다면 어떻게 동작할까? 무엇이 먼저 처리되지?? 터치 이벤트를 처리하고나서 해당 이벤트를 전달하고 싶지 않을 때 어떻게 해야할까?? 엑티비티위에 버튼이 올라간다고 하면, 그 버튼을 클릭했을 때 실질적으로는 버튼도 터치가 되지만, 그 해당 엑티비티도 선택이된다. 그렇다는 것은 각각 가지고 있는 터치 이벤트들이 전달 전달되어 실행된다는 것이다. 먼저 아래의 예제는 1. 엑티비티에 터..
[안드로이드 기본] 클릭 이벤트 붙이는 방법 일단 클릭하면 대표적으로 버튼을 떠올릴 수 있을 것이다. 그리고 우리는 그 버튼을 클릭했을 때 무언가 이벤트를 발생시키고 싶어한다. 버튼에 클릭 이벤트를 붙이는 방법에는 어떤것들이 있을까? 방법은 총 3가지로 나눌 수 있으며 아래와 같다. 1. 익명 클래스를 사용해서 버튼에 리스너 객체를 설정하는 방법 2. 버튼 리스너를 액티비티에서 구현하고 이 리스너를 버튼에 설정하는 방법 3. 레이아웃 XML 파일의 Button 속성에 onClick 요소를 추가하는 방법 [익명 클래스를 사용해서 버튼에 리스너 객체를 설정하는 방법] package com.practice.android_basic_booster_course import androidx.appcompat.app.AppCompatActivity import..
[안드로이드 기본] 액티비티와 주요 구성 요소 안드로이드에서 가장 중요한 4대 컴포넌트는 액티비티, 서비스, 브로드캐스트 리시버, 콘텐트 프로바이더이다. 그리고 그외의 인텐트, 인텐트 필터, 노티피케이션, 프래그먼트가 존재한다. 먼저 액티비티(Activity)는 사용자 인터페이스 화면을 구성하는 컴포넌트이다. 다양한 위젯들이 화면안에 구성이되고, 사용자에게 시각적으로 보여지게 된다. 서비스(Service)는 백그라운드에서 실행되는 컴포넌트이며, 백그라운드에서 실행되기때문에, 시각적인 사용자 인터페이스를 액티비티와 다르게 가지지 않는다. 인텐트(Intent)는 앱을 개발하다보면 데이터를 주고 받고 싶은 경우가 있다. 이때 인텐트를 사용하여 데이터를 주고 받게 되는데,사용되는 것이 인텐트이다. 액션도 넣을 수 있고, 플래그도 넣을 수도 있다. 메시지라고..