Deperecated/Kotlin 24

코틀린 - 고차함수와 람다식2 (고차함수, 람다식 사례)

고차함수와 람다식1에서는 개념적인 설명, 2에서는 사례를 써놓는다. 1. 동기화 관련 사례 동기화: 변경이 일어나면 안되는 특정 코드를 보호하기 위한 잠금 기법 임계 영역(Critical Section): 동기화로 보호되는 코드 -> 보통 try ~ finally 블록으로 많이 쓴다. -> try에서 뻑나도 finally는 실행되니까 공유자원에 대한 잠금은 막을 수 있음 특정 공유 자원을 쓰고싶을 때 공유자원에 아무나 접근하면 안되니까 1. 내가 쓸 동안 아무도 건들지마 -> Lock 라이브러리의 lock() 함수 호출 2. 임계 영역에 수행할 작업 코드 작성 -> 쓰는중.. 3. 다 썼으니 이제 너네 써 -> Lock 라이브러리의 unlock() 함수 호출 var sharable = 1 fun Lock..

Deperecated/Kotlin 2020.04.10

코틀린 기본 -2 (변수)

코틀린은 변수를 사용할 때 반드시 값이 할당되어 있어야 한다는 원칙이 있다. 1. NULL 코틀린이 NPE에서 자유로울 수 있는 이유는 위 원칙에 따라 변수에 아예 NULL을 허용하지 않기 때문이다. 코틀린에서는 NULL 상태인 변수를 허용하려면 물음표(?) 기호를 사용해 선언해야 한다. 이 변수를 사용하는 순간 NULL을 검사하고 처리하는 방법까지 고려해야 한다. 2. 세이프 콜과 NON-NULL 단정 기호를 활용하여 NULL 허용 변수 사용하기 2-1) 세이프 콜 -> ?. NULL이 할당되어 있을 가능성이 있는 변수를 검사하여 안전하게 호출하도록 도와주는 기법 println("str: $str1 length: ${str1?.length}") str1이 null이 아니면 멤버변수인 length에 접근..

Deperecated/Kotlin 2020.04.08

코틀린 프로젝트 구성

코틀린 프로젝트는 모듈, 패키지, 파일로 구성되어 있다. 프로젝트를 여행에 비교하자면 모듈 = 목적지 / 패키지 = 캐리어 / 파일 = 캐리어 속의 짐 1. 그들의 관계.. 프로젝트 안에는 n개의 모듈, n개의 패키지, n개의 파일이 들어있다. 큰 프로젝트에서는 대체로 기능을 모듈로 분리해서 사용한다. 파일안에는 n개의 클래스가 올 수 있으며, 2개 이상의 클래스가 포함되어있을 경우 IDE 파일 관리자 화면에 파일에 .kt확장자가 포함되서 나타나며 1개만 들어가있다면 그냥 클래스 이름만 보이게 된다. 패키지를 만들어야 하는 이유는 파일(클래스)이름이 같더라도 패키지가 다르다면 다르게 이식하기 때문에 대규모 프로젝트에선 클래스 이름이 같아서 일어나는 오류를 피하기위해 패키지를 만드는것이 좋다.

Deperecated/Kotlin 2020.04.07

코틀린 - 코틀린 컬렉션

/* 강의 1-19. 코틀린 컬렉션 여러 데이터를 효율적으로 관리하기 위해 자료구조에 나오는 다양한 기법들을 클래스로 만들어 제공. 자바와 다르게 컬렉션의 종류를 단순화 시켰다. 1. List -순서를 갖고 객체를 관리하는 컬렉션 -크기를 관리하지않고 계속 객체를 추가할 수 있다. -생성 시 관리할 객체를 정해줘야 하며 생성이후에는 관리하는 객체를 가져다 쓰는 것만 가능하고 추가, 삭제 등의 수정 작업은 불가능하다. - 배열 쓰듯이 사용하면 된다. - get, indexOf(값), subList 2. MutableList -List를 상속하고 있으며 수정 작업이 가능하다. 3. Set - 중복되지 않게 객체를 관리하는 컬렉션 - 자체적으로 객체를 가져오진 못하여 Iterator 라는 컬렉션을 이용해야 한..

Deperecated/Kotlin 2020.02.05

코틀린 - 배열

/* 강의 1-19. 배열 코틀린은 배열을 객체로 취급한다. 1.arrayOf 로 배열 생성 2.Array(사이즈, 넣을 값)으로 생성 ---관련 메서드---- 1. size : 배열의 갯수를 파악 2. get(인덱스번호) : 인덱스에 있는 값을 가져옴 3. set(인덱스번호, 값) : 값 지정 4. copyOf(사이즈) : 사이즈 만큼 배열 값 복제 5. copyOfRange(시작, 끝) : 범위를 지정해 배열 값 복제 6. sortedArray() : 오름차순으로 정렬 7. reversedArray() : 배열 순서를 뒤집음. */ fun main(args : Array) { var array1 = arrayOf(10,20,30,40); println("array1 =" + array1[1]); fo..

Deperecated/Kotlin 2020.02.05

코틀린 - 오브젝트

/* 강의 1-19. object 주로 익명 중첩 클래스를 사용할 때 쓰이게 된다. object는 클래스를 만드는 키워드가 아닌 클래스 없이 객체를 생성할 때 사용하는 키워드 이다. object는 이름이 없는 클래스를 만드는 것이 아닌 클래스 없이 객체를 생성할 때 사용한다. ---익명 객체--- 클래스 없이 바로 객체를 생성하는 개념 클래스가 없으므로 동일 타입의 객체를 생성하지는 못한다. --추상 클래스, 인터페이스--- 추상클래스를 상속받거나 인터페이스를 구현한 객체를 만들 때도 사용할 수 있다. --- object 정의 ---- object 키워드로 객체를 정의하면 바로 객체가 만들어지게 되며 객체의 이름을 통해 멤버에 접근할 수 있다. java에서의 static과 비슷한 개념이다. --- 팩토리..

Deperecated/Kotlin 2020.02.05

코틀린 - 중첩 클래스

1. 개념 - inner 키워드를 사용해 클래스 안에 클래스 생성 가능. 2. 익명 중첩 클래스 - 추상 클래스나 인터페이스에 정의된 메서드를 Overriding 하여 사용하고자 할 때 상속을 받은 클래스를 만들지 않고자 할 때 사용한다. - 주로 메서드의 매개변수로 객체를 넘길 때 사용한다. 추상 클래스나 인터페이스로는 객체를 만들 수 없으니까 이걸 사용한다. - 오버라이딩 할 함수가 1개 라면 람다식을 이용하는게 편하지만, 2개 이상일 땐 익명 중첩 클래스를 이용해야 한다. fun main(args : Array) { var t1 = TestClass2(); test_method3(t1); //익명 중첩 클래스 test_method3(object : TestClass() { override fun t..

Deperecated/Kotlin 2020.02.05

코틀린 - 제네릭

1. 개념 - 매개 변수나 반환 타입을 유동적으로 할 때 사용하는 개념. fun main(args : Array) { // 객체 생성할 때 전달해주는 타입으로 타입이 정해짐. var t1 = TestClass1() t1.testmethod1("문자열1"); var t2 = TestClass1(); t2.testmethod1(100); var t3 = TestClass2("초기화"); t3.test("문자열"); println(t3.value1); var t4 = TestClass3() t4.test2(100, "안녕"); } class TestClass1 { fun testmethod1(a1 : T) { println("a1:" + a1); } } // 생성자를 이용해서 타입 결정 class TestCl..

Deperecated/Kotlin 2020.02.05