본문 바로가기

프로그래밍 언어/코틀린_Kotlin_더파기

코틀린 더파기_13_class_개념과 생성 앱 또는 프로그램도 업그레이드로 문제점을 수정하고 성능을 향상시키듯이, 프로그램 코드를 작성하는 기법도 보완과 필요성에 따라 지금까지 다양하게 발전되어 왔다. 처음 등장한 것은 Procedural Programming (절차적 프로그래밍) 기법이다. 지금도 간단한 앱을 만들거나 코딩 초보자인 경우는 대부분 이 기법을 사용하여 코딩한다고 할 수 있다. 이 기법은 기본적으로 작업을 어떤 과정으로 하고 어떻게 끝내야 하는 지에 대한 논리적 단계를 만드는 것이다. 즉, 프로그램을 procedure(프로시저) 단위로 작성한 후 procedure call(프로시저 호출)을 사용하는 개념으로 작동한다. procedure의 다른 이름은 routine(루틴) , function(함수)이다. 요약하면 절차적 프로그래밍 기.. 더보기
Kotlin더파기_12_Collection_Map 컬렉션 Map(맵) 타입은 List, Set과 마찬가지로 기본적으로 읽기전용이다. 다른 기능도 비슷하지만 특징적인 점은 '쌍'으로 데이터를 저장한다는 것이다. Map은 Key(키)와 Value(값)을 한 쌍으로 만들어 이것을 entry(엔트리)라는 데이터로 저장한다. Map의 Key는 하나뿐인 키를 가지고 자신과 쌍을 이룬 Value(값)을 기억한다. 그러므로 Map은 Key가 유일하며 Set은 Value(값)이 유일하다. Map 만들기 Map을 만들 때는 mapOf , mutableMapOf 함수를 사용한다. 각각의 애완동물을 위해 물건을 살 수 있는 돈이 정해져 있다고 가정하고 이것을 Map으로 만들면 다음과 같다. 맵을 만들어 출력해 보면 key=value 모양으로 나타난다. 이때 key는 모두 같.. 더보기
Kotlin더파기_11_Collection_Set list(리스트)는 각 요소를 index 위치로 찾기 때문에 중복이 가능하다. 그런데 요소를 중복하지 않도록 해서 같은 값은 하나만 저장하려면 set을 사용한다. 그러므로 set의 특징은 저장된 요소가 중복되지 않으며 순서가 있지도 않다. 그 외는 list와 비슷하다. Set 만들기 컬렉션 set를 만든다. set 안에 요소가 있는지 확인한다. 특정 위치 요소 찾기 set은 index(인덱스)를 사용하지 않기 때문에 인덱스 연산자[ ] 를 사용할 수 없다. 그러나 요소의 반복 처리 함수인 elementAt을 사용하여 알아낼 수는 있다. 요소가 많으면 list보다 속도가 느리고 인덱스에서 사용하는 add같은 변경자 함수도 사용할 수 없으므로 인덱스로 요소를 관리할 때는 list를 사용한다. 그러므로 중복 .. 더보기
Kotlin더파기_10_Collection_List collect는 '모으다, 수집하다' collection은 '수집품, 더미'의 뜻이다. 코딩에서 collection(컬렉션)은 '모여있는 값(value)'을 나타낸다. 컬렉션에 모여있는 각각의 값을 element(요소)라고 한다. 컬렉션은 3가지 종류가 있다. List (리스트) : 각 요소가 순서대로 중복도 가능하게 저장되어 있다. Set (세트) : 요소들이 중복되지 않게 저장되어 있다. Map (맵) : key(키)와 value(값)이 한 쌍을 이루어 저장되어 있다. 코틀린의 컬렉션은 2가지 Type(타입)이 있다. mutable : 변경 가능 타입 read-only : 읽기 전용 타입 List (리스트) 리스트를 저장할 변수를 만든다. 변수 선언은 변하지 않는 val로 선언한다. listOf 함수.. 더보기
Kotlin더파기_09_표준함수 표준함수는 코틀린 라이브러리에 있는 내장함수 및 확장함수(extension function)다. 확장함수를 사용하면 Type을 변경하지 않고 새 기능을 추가할 수 있다. lambda(람다)를 인자로 받아서 동작한다. apply 객체를 구성할 때 반복을 줄일 수 있다. 예를 들어 텍스트 파일을 사용하기 위해 File객체를 생성하고 읽기,쓰기,실행 속성을 만든다고 하자. File객체를 구성하는 함수들을 호출할 때 참조변수(menuFile)를 사용한다. val menuFile = File("menu_file.txt") menuFile.setReadable(true) menuFile.setWritable(true) menuFile.setExecutable(false) apply함수를 사용하여 다음과 같이 바꿀수.. 더보기
Kotlin더파기_08_Number 숫자 코틀린은 숫자를 처리하기 위한 숫자 타입의 클래스를 가지고 있다. Byte (8비트) Short (16비트) Int (32비트) Long (64비트) Float (32비트) Double (64비트) 숫자 타입의 특징 정수와 실수로 나눌 수 있다. 양수, 음수를 나타내는 부호를 갖는다. 메모리에 할당되는 비트수가 다르므로 다룰 수 있는 최대,최소값이 다르다. Byte, Short타입은 자주 사용하지 않는다. Int타입에 저장할 수 있는 가장 큰 수가 21억4천7백만 정도이므로 대부분의 경우는 숫자 타입을 Int로 사용하면 되고 더 큰 수는 Long을 사용한다. Long 타입은 수학,과학 프로그램이나 게임 등의 시간을 계산할 때 사용한다. 소수점 있는 숫자는 Double을 사용하면 된다. 문자열 타입의 변환.. 더보기
Kotlin더파기_07_String_문자열 코딩에서 문자 데이터는 String(문자열)로 나타낸다. 코틀린 표준 라이브러리에는 String 타입의 다양한 함수들이 있다. 이 함수들을 사용하여 문자열을 다루어본다. 문자열 부분 추출 #substring( )함수 substring함수는 문자열의 부분을 추출하여 반환한다. 상수로 선언한 SHOP_NAME (가게 이름)이라는 변수를 만든다. 이 변수에는 String(문자열) 값으로 Wraven's shop (Wraven의 가게)이 저장되어 있다. 이 문자열에서 일부분인 Wraven 만 추출하는 방법을 알아본다. 이제 변수 SHOP_NAME에서 Wraven만 추출하여 "한 남자가 Wraven에게 음식을 주문한다."라는 문자열을 출력하는 함수를 만들어 본다. 9번줄: 함수 이름은 order(주문)이라고 하자.. 더보기
Kotlin더파기_06_Null & Exception_널과 예외 # Null 널 null은 값이 없다는 것을 나타낸다. 코틀린에서는 null로 지정할 수 있는 것과 지정할 수 없는 것이 있다. null값을 가질 수 있는 것을 nullable (널러블) 가질 수 없는 것을 non-nullable (난널러블)이라고 한다. 많은 프로그래밍 언어는 어떤 타입의 변수도 null값을 가질 수 있다. 또한 기본값이 없는 변수의 초기값으로 자주 null을 사용한다. 그래서 NullPointerException(널 포인터 예외)라는 에러가 자주 발생한다. 코틀린은 이런 에러를 방지하기 위해 null을 지정(명시)하는 것만 null값을 가질 수 있다. 위 코드에서 변수 fruit(과일)을 정의한 후 String(문자열) 값으로 apple을 설정했다. 그리고 fruit에 null값을 넣.. 더보기