목록분류 전체보기 (65)
nueijeel
1주차 회고 기간 : 2023년 5월 15일 ~ 21일 회고 방식 : 4Ls Liked(좋았던 점) 1. 코틀린 독학 경험이 도움이 됐다. 앱스쿨 지원 전에 취업 준비를 한답시고,, 코틀린을 혼자 공부했었는데 처음 쓰는 언어라 생소한 느낌이 많았던 기억이 있다. 비록 그 때 코틀린 전체 분량을 다 끝마치지는 못 했지만 그래도 한 번 공부해본 경험이 수업 때 헤매지 않고 내용을 이해하는 데 도움이 됐나보다. 문제 코드도 술술 작성하는 내 모습이 아주 약간은 대견했다.. 그렇게 이미 공부했던 부분을 다시 배우면서 자신감을 얻었는지, 혼자 공부하지 않았던 부분에서도 큰 망설임 없이 코드를 작성할 수 있었다. 2. 과제를 잘 끝냈다. 코틀린은 졸업하고 2주 정도 공부해본게 다라, 수업 시간에 과제를 받으면 내용..
코틀린 최종 제출 과제를 구현하던 중 StreamCorruptedException 오류가 발생했다. 작성 중인 프로그램의 구조를 간단히 요약해 설명해보면, - 카테고리를 생성하고, 카테고리 하위에 메모들을 생성할 수 있게 하는 프로그램인데, 카테고리와 메모들은 생성/수정/삭제가 가능하다. - 카테고리는 사용자에게 이름을 입력받아 파일의 이름으로 사용했고, 메모는 제목과 내용을 입력받아 해당하는 카테고리 파일에 객체로 작성하는 형식을 사용했다. 이런 형식의 프로그램이다. 카테고리에 등록된 메모 내용을 수정해 파일에 다시 저장하는 과정에서 StreamCorruptedException 오류가 발생했다. stack overflow에서 몇 가지 비슷한 오류 케이스를 찾았지만 영어를 해석해도 솔루션이 무슨 말인지 ..
2023.05.17 1. Companion Companion : 클래스를 정의할 때 멤버를 정적 요소로 만들어주는 키워드로, companion 요소는 객체를 생성하지 않아도 클래스 이름을 사용해 접근이 가능하다 자바에서의 static 키워드와 동일한 역할을 한다. fun main(){ println("Companion 변수 a2 : ${TestClass.a2}") println("Companion 변수 a3 : ${TestClass.a3}") TestClass.testMethod2() val t1 = TestClass() t1.testMethod1() } class TestClass{ var a1 = 100 fun testMethod1(){ println("a1: $a1") println("a2: $a2..
2023.05.16 1. Any Any : 코틀린에서 모든 클래스가 직접 혹은 간접적으로 상속받는 클래스 자바의 최상위 클래스가 java.lang.Object 클래스라면 코틀린의 최상위 클래스는 Any 클래스이다. 클래스 정의 시 상속에 대한 코드를 별도로 작성하지 않는다면 Any 클래스를 자동으로 상속받는다. fun main(){ val a1 : Any = TestClass1() println(a1) } class TestClass1 body 구현이나 상속 등을 사용하지 않는 TestClass1을 선언만 했다. 해당 클래스는 Any 클래스를 자동으로 상속받기 때문에, 객체를 Any형 참조 변수에 담아 사용할 수 있다. Any 클래스 안에는 클래스가 갖춰야 할 기본적인 기능들이 들어있다. Any 클래스가..
2023.05.15 1. 지연 초기화 예외적으로 변수 선언과 동시에 초깃값을 할당할 수 없는 경우가 생기는데, 이때는 lazy나 lateinit 키워드를 사용하여 초기화를 미룰 수 있다. fun main(){ val a = 1 val b = 10 lateinit var data1 : String val data2 : Int by lazy{ data1 = b a+b } } data1은 lateinit 키워드로 초기화를 미룬 변수이고, data2는 lazy 키워드로 초기화를 미룬 변수이다. lazy 키워드로 초기화하는 변수는 {} 괄호 안에 작성된 내용이 수행된 결괏값을 초깃값으로 할당한다. 괄호 안에 작성된 코드가 여러 줄인 경우에는 맨 마지막 줄의 실행 결과만이 초깃값으로 할당된다. 이 코드에서는 laz..
2023-05-15 1. 상속 상속 : 클래스를 설계할 때 다른 클래스가 가지고 있는 부분을 물려받는 개념으로 이를 통해 클래스마다 중복된 부분을 하나의 클래스에 만들 수 있다. 상속을 해주는 클래스를 부모 클래스(SuperClass)라고 하고, 상속을 받는 클래스를 자식 클래스(SubClass)라고 한다. open class SuperClass{} class SubClass : SuperClass{} 코틀린에서 클래스를 정의하면 컴파일 했을 때 자바 코드에서는 final 클래스가 된다. 따라서 상속 관계의 부모 클래스를 정의할 때는 open 키워드를 사용해 정의해야한다. 그러면 자바 코드로 컴파일해도 일반 클래스가 되어 상속이 가능하다. 자식 클래스는 이름 옆에 콜론을 사용해 상속 받을 부모 클래스 이..
2023.05.12 1. 클래스 fun main(){ val t1 = TestClass1() val t2 = TestClass2() //t1 변수에 담긴 TestClass1의 객체 ID 출력 println("t1: $t1") //TestClass2 객체의 멤버 변수 출력 println("t2.a1: ${t2.a1}") println("t2.a2: ${t2.a2}") //t2 객체의 멤버 메서드 호출 t2.inputNum(10, 20) } //내용이 없는 클래스 정의 class TestClass1 //멤버를 가지는 클래스 정의 class TestClass2{ //멤버 변수 var a1 = 0 var a2 = 0 //멤버 메서드 fun inputNum(num1:Int, num2 : Int){ a1 = num..