Kotlin7 12장. 함수형 프로그래밍과 람다 12.1 함수형 프로그래밍이란? 12.1.1 함수형 프로그래밍 정의 - 프로그래밍 패러다임으로서의 함수형 프로그래밍 : 함수 선언이 최우선. 데이터의 흐름이 아니라 함수의 선언과 선언된 함수의 유기적인 흐름이 주 목적이다. - 데이터의 흐름과 값의 변경에 따라 프로그래밍하지 말고 필요한 로직을 함수로 만들어서 함수들의 흐름에 따라 프로그래밍하자는 개념이다. - 주요 원칙 : 일급 객체(First Class Citizen)로서의 함수, 순수 함수(Pure Function)로 정의되는 함수 - 일급 객체 : 함수가 프로그램의 최상위 구성요소이다. 객체지향에서는 클래스가 최상위 단위이고 함수를 포함하는 개념이다. 즉 클래스를 선언하지 않고도 함수를 정의할 수 있고, 함수내 다른 함수, 클래스를 포함할 수 있다.. 2020. 1. 31. 10장. 추상 클래스와 인터페이스 10.1 추상 클래스 10.1.1 추상 클래스 선언(abstract) - 추상 함수 : 실행 영역이 없는 함수, 최상위 레벨에 선언된 함수에는 사용할 수 없다. 클래스 내부에 선언된 함수만 가능 - 추상 클래스 : 추상 함수를 포함하고 있는 클래스 - 추상 프로퍼티 : 선언만 있고 초깃값을 대입하지 않은 프로퍼티 10.1.2 추상 클래스 이용 - 추상 클래스는 그 자체로는 객체를 생성할 수 없다. 추상 클래스를 상속받는 하위 클래스를 이용해 객체를 생성한다. - 추상 클래스를 상속받는 하위 클래스는 추상 함수, 추상 프로퍼티를 모두 재정의 해야하며, 그렇지 않다면 하위 클래스도 abstract 키워드를 이용해 추상형으로 선언해야 한다. 10.2 인터페이스 10.2.1 인터페이스 선언 및 구현 - 인터페이.. 2020. 1. 21. 9장. 상속 9.1 코틀린에서 상속 9.1.1 Any 클래스 - 코틀린의 모든 클래스는 Any 클래스의 서브 클래스이다. Java.jang.Object와 다르다. equals, toString 만 제공한다. 9.1.2 상속을 통한 클래스 정의(open) - 상속하려는 상위 클래스를 open으로 명시해야 한다. 상속 허용 여부를 명시하지 않으면 기본으로 final로 적용된다. 9.2 오버라이드 - 상위 클래스에 정의된 프로퍼티나 함수를 하위 클래스에서 재정의하는 것을 말한다. 9.2.1 함수 오버라이드 - 함수를 오버라이드 하기 위해서는 함수 선언에 명시적으로 open 예약어를 추가해야 한다. - 하위 클래스에서 상위 클래스의 함수를 재정의할 때는 함수 앞에 override 예약어를 추가해야 한다. 9.2.2 over.. 2020. 1. 20. 7. 클래스 7.1 클래스 선언 및 생성 7.1.1 클래스 선언 - class MyClass{ } - 일반적으로는 파일 안에 파일명과 같은 이름의 클래스를 정의해 사용한다. 하지만 이는 강제 규칙이 아니며 코틀린 파일에 파일명과 같은 이름의 클래스가 없어도 상관은 없다. - 클래스 내에 클래스를 선언해서 이용할 수도 있다. - 클래스에는 프로퍼티, 메서드, 생성자, 클래스 등을 선언할 수 있다. 7.1.2 객체 생성 - 객체 생성은 클래스를 이용하기 위해 메모리를 할당하는 작업이며, 할당된 메모리를 객체명으로 참조하는 개념이다. 7.2 생성자 7.2.1 주 생성자(constructor) - 하나의 클래스에 하나만 정의할 수 있다. - 꼭 작성해야 하는 건 아니며 보조 생성자가 있다면 작성하지 않을 수 있음 - 주 생.. 2020. 1. 16. 6. 흐름 제어 구문과 연산자 6.1 조건문 6.1.1 if 표현식 - 일반적인 if 문과 차이점이 있는데 바로 코틀린에서 if 문은 표현식(expression)이라는 점이다. - if 문을 표현식으로 사용한다는 것은 if문에 의해 특정 값이 발생한다는 의미이다. - if 문을 표현식으로 사용할 때 else 문이 꼭 있어야 한다. 생략하면 컴파일 에러가 발생한다. - if 문에 중괄호{}를 명시하여 여러 줄로 작성할 때 if 표현식으로 발생하는 데이터는 맨 마지막에 작성한다. * 표현식 : 변수, 상수, 연산자, 함수로 구성되어 무언가 값을 만드는 문장을 의미한다. * 구문(문장) : 단어나 기호의 조합으로 무언가가 실행되도록 명령을 지시하는 문장을 의미한다. 6.1.2 when 표현식 - switch-case 구문과 비슷하지만, 기.. 2020. 1. 13. Computer Science 과목에 대한 생각 19년 2학기에 프로그래밍 언어론 강의를 들을 때에는, "실제로 개발 스킬에 영향을 주는 과목이 아닌데 이렇게까지 배워야 하나"라는 생각을 하면서 수강하였다. 하지만 강의를 듣고 나서(내용이 방대해 내용의 반도 못나갔지만) 현재 코틀린을 학습할 때, 왜 배워야 하는지 알았다. 언어들이 가지고 있는 기본적인 구조, 설계 방식 등 언어론에서 이미 배운 이론적인 내용을 코틀린을 통해서 복습하는 느낌이었다. 특히 만약 내가 언어론을 듣지 않고 코틀린의 tail recursion을 혼자서 공부하려고 했다면 좀 헷갈렸을 것이다. 하지만 이미 내용을 알고 있고 코드로 구체적으로 이해하니깐 이해가 더 잘 되었다. 사실 개발 스킬만을 위해서는 computer science과목을 일부 안 듣고 필수적인 과목만 들으면 된다.. 2020. 1. 10. 이전 1 2 다음