객체 지향(Object Oriented Programming) • 객체 지향이란 해결해야 할 문제 또는 원하는 바를 "객체"라는 기본 단위를 통해 해결하는 것을 의미. • 객체란 하나의 역할을 수행하는 묶음 단위. • 객체들 간의 상호작용을 통해 프로그램을 만듦. ex) 고양이 객체, 쥐 객체 생성. 고양이 객체에 할퀴는 기능 구현, 쥐 객체에 도망치는 기능 구현. • 객체 지향을 잘 하는 법 - 객체를 어떻게 구성하는 지가 개발을 잘 하는 방법이자 노하우. - 개념적, 문법적 지식도 중요하지만 경험이 정말 중요!! -> 하루 아침에 잘 해질 수 없다. ex) 축구 게임을 만든다고 가정 - 개발자 A : 축구 선수, 심판, 경기장, 관중 객체를 생성 - 개발자 B : 사람, 공, 호루라기, 경기장 객체 ..
일급 시민(First-class citizen) 1. 일급 시민 • 다음 조건을 만족하는 것을 말한다. - 1. 변수나 자료 구조에 저장할 수 있다. - 2. 함수의 매개 변수에 전달할 수 있다. - 3. 함수의 반환 값으로 사용할 수 있다. • 즉, 자유롭게 변수 안으로 들어가고, 값처럼 사용되고 하는 것. 2. 일급 객체 • 일급 시민인 객체 3. 일급 함수 • 일급 객체인 함수 • 사람에 따라 다음 조건을 추가로 붙이기도 한다. - 4. 익명으로 생성할 수 있다. - 5. 런타임에 생성할 수 있다. • 코틀린에서 함수는 일급 함수이다. 고차 함수(High-order function) • 함수를 파라미터로 받는 함수. 또는, 함수를 리턴하는 함수 • 즉, 함수 안에 함수가 들어가는 형태 • 고차 함수..
출력 1. 문자열 • print : 내용 출력 후 줄바꿈을 하지 않음. • println : 내용 출력 후 줄바꿈. print("안녕") print("하세요") // 안녕하세요 출력 println("안녕") // 안녕 println("하세요") // 하세요 출력 2. 문자열 + 변수/식 • + 사용 val YEAR = 2022 println("" + YEAR + "년") // Int + String은 에러가 발생하기 때문에 String + Int = String을 먼저 해주어야 한다. • $ 또는 ${} 사용 val NAME = "이름" var myName = "홍길동" val HELLO = "안녕하세요." println("$HELLO 제 ${NAME}은 ${myName}입니다.") // 안녕하세요. 제..
오류의 종류 1. 오류 • Error • 시스템이 종료되어야 할 수준의 수습할 수 없는 심각한 문제 • 시스템 레벨에서 발생 - 메모리 부족, 스택오버플로 등... 2. 예외 • Exception • 개발자가 구현한 로직에서 발생한 실수나 사용자의 영향에 의해 발생 - NullPointerException, IllegalArgumentException 등... * 오류와 예외는 다른 것이지만 보통 명시적으로 구분해야할 때가 아니면 오류라고 통일해서 부르는 것 같다. 예외 처리 • 프로그래머가 예기치못한 예외의 발생에 미리 대처하는 코드를 작성하는 것 • 실행중인 프로그램의 비정상적인 종료를 막고, 상태를 정상 상태로 유지하는 것이 목적 • try { // 예외가 날 가능성이 있는 코드 } catch (예..
While 1. while • 조건을 만족하는 동안 본문(반복할 내용)을 반복한다. • while(조건) { 반복할 내용 } var i = 0 while (i < 5) { if (i % 2 == 0) { println("i=${i} 짝수") } else { println("i=${i} 홀수") } i++ // 이 부분 제거하면 무한 루프 } 2. do while • 본문(반복할 내용)을 먼저 실행하고 조건이 만족하면 반복한다. - 조건을 만족하지 못하더라도 최초 한 번은 무조건 실행한다. • do { 반복할 내용 } while (조건) var z = 10 do { println("시작") z++ } while (z < 20) * 무한 반복 • while문은 조건을 만족하는 동안 본문이 반복 실행되기 때문..
이터러블 • 모든 반복 가능한 객체의 조상 - 반복 가능하다 -> 시작과 끝이 있다 -> 범위가 있다. ex) Array, Collection, Progression, ... Progression • 코틀린에서 수열을 표현할 수 있는 클래스 • 시작과 끝이 있고 범위가 있다. • 구간이란 개념이 있다. - 다음 요소로 이동할 때 마다 구간만큼 이동한다. ex) 시작 : 1, 끝 : 10, 구간 : 2 이면 1, 3, 5, 7, 9 이런 식으로 진행 - 구간이 1인 progression을 특별히 range라고 한다. val PROGREESION1 = 1..10 step 2 // 1부터 10까지 2씩 val PROGREESION2 = 10 downTo 1 step 2 // 10부터 1까지 2씩 val PRO..
컬렉션 • 컬렉션이란 코틀린 표준 라이브러리에서 제공하는 도구로써, 여러 요소들을 담을 수 있는 자료구조이다. • 배열과 다르게 초기화시 크기를 미리 정해놓을 필요도 없고, 크기가 고정되어 있지 않음. 1. 변경 가능 여부 • 변경이 가능하면 Mutable, 불가능하면 Immutable로 나눌 수 있다. • 컬렉션 요소의 변경이 필요한 상황이 아니라면 기본적으로 Immutable을 사용하는 것이 좋다. - 많은 코드 진행 후에도 해당 컬렉션이 바뀌었는지 안 바뀌었는지 추적할 필요 없이 믿고 사용할 수 있기 때문. 2. List • 인덱스로 접근 가능하고, 순서가 있는 자료 구조. • immutable - listOf(값1, 값2, ...) • mutable - mutableListOf(값1, 값2, ....
배열 • 특정 하나의 변수에 복수 개의 값을 할당하고 싶은 경우 • 배열은 저장할 수 있는 값의 개수를 정해놓아야 하고, 이 개수를 변경할 수 없다. 배열의 선언 방법 1. arrayOf (값1, 값2, ...) • 자료형을 생략했을 경우 여러 자료형이 한 배열의 인자로 올 수 있다. • non-null, nullable 모두 가능하다. var array1 = arrayOf(true, "안녕하세요", 10, 2.2, null) • 자료형을 적었을 경우, 해당 자료형만 인자로 들어올 수 있다. var array2 = arrayOf(10, 20, 30) var array3 = arrayOf(1, null, 3) • 을 대체하는 방법 var array4 = intArrayOf(1, 2, 3) // arrayO..