책 썸네일형 리스트형 [코틀린으로 배우는 함수형 프로그래밍] 4장 고차함수 안녕하세요 남갯입니다. 함수형프로그래밍에서는 함수를 객체처럼 다룬다. 고차함수를 통해 함수를 더 유연하게 다루는 방법에 대해 알아보고 고차함수의 장점을 살펴보자. 고차함수란? 코틀린의 함수들은 함수를 인자로 받거나 반환값으로 반환하는 것이 가능하다. 코틀린에서 함수는 일급함수이기 때문. 고차함수의 조건 - 함수를 매개변수로 받는 함수 - 함수를 반환하는 함수 명령형 언어는 문제를 해결하기 위해 상태를 변경 혹은 반복문을 사용하여 단계별 정의하지만 함수형 언어에서는 문제를 해결할 때 반드시 고차 함수를 사용해야 한다. fun highOrderFunction1(func : () -> Unit) : Unit { func() } fun highOrderFunction2() : () -> Unit{ return .. [GOF] 생성패턴이란? 안녕하세요 남갯입니다 오늘은 GOF 생성패턴에 대해 포스팅 해보려고 합니다. 생성패턴이란? 생성패턴은 인스턴스를 만드는 절차를 추상화하는 패턴. 객체를 생성-합성 하는 방법이나 객체의 표현방법과 시스템을 분리해 줍니다. 상속보다는 복합을 사용하는쪽으로 진화되어 가면서 더 중요해지는 추세. 생성패턴의 특징 1. 생성패턴은 시스템이 어떤 구체 클래스를 사용하는지에 대한 정보를 캡슐화 2. 생성패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 서로 맞붙는지에 대한 부분을 완전히 가려줍니다. 즉 무엇이 생성되고 누가 이것을 생성하며 어떻게 생성이 되는지 언제 생성할 것이지에 대한 유연성을 확보 가능 추상팩토리패턴 의도 상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생.. [코틀린으로 배우는 함수형 프로그래밍] 3장 재귀 fun repeat(n: Int) : Sequence = sequenceOf(n) + repeat(n) 안녕하세요 남갯입니다. 오늘은 코틀린으로 배우는 함수형 프로그래밍 3장 재귀에 대해 포스팅 해보려고합니다. 3.1 함수형 프로그래밍에서 재귀가 가지는 의미 재귀란? 재귀는 어떤 함수의 구현 내부에서 자기 자신을 호출하는 함수를 정의하는 방법을 말한다. 피보나치 수열의 경우 F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2) 로 정의된다. 즉 매번 호출된 자기자신을 통해 다음의 식들을 호출했기 때문에 이 점화식은 재귀이다. 피보나치를 통한 DP private fun fiboDynamic(n: Int, fibo: IntArray): Int { fibo[0] = 0 fibo[1] =.. [코틀린으로 배우는 함수형 프로그래밍] 2장 코틀린으로 함수형 프로그래밍 시작하기 안녕하세요 남갯입니다. 프로퍼티 선언 val value: Int = 10 var variable : Int = 10 var value = 10 // 타입추론 val value = 10 // 타입추론 val value :Int? = null //널처리 함수 선언 fun twice(value : Int) : Int{ return value*2 } fun twice2(value : Int) : Int = value *2 fun twice3(value : Int) = value *2 함수의 매개변수가 2개인것과 기본 디폴트값을 설정 가능하다. 매개변수가 여러개일경우 특정 값에 대한 '변수명 = 5'와 같이 가능하다. 익명함수 실제 구현부를 작성하지 않고 표현하는 방식 fun sum(x: Int, y: Int, .. [코틀린으로 배우는 함수형 프로그래밍] 1장 함수형 프로그래밍이란? 안녕하세요 남갯입니다 오늘은 코틀린으로 배우는 함수형 프로그래밍에 대해 포스팅 해보려고합니다. 1.1 함수형 프로그래밍의 특징 함수형 프로그래밍은 데이터 처리의 참조 투명성을 보장하고 상태와 가변데이터 생성을 피하는 프로그래밍의 패러다임. 특징 1. 불변성 (순수함수) 2. 참조 투명성 3. 일급함수 4. 게으른 평가 장점 1. 부수효과가 없는 프로그램을 만들 수 있어 동시형 프로그래밍에 적함 2. 복잡도가 낮아, 간결한 코드 생성 및 모듈성이 높아 유지보수에 좋다. 3. 예측성을 높여서 컴파일러가 효율적으로 실행되는 코드를 만들어준다. 1.2 순수함수한 무엇인가? 간단하게 말하자면 말그대로 함수인것이다. y = f(x) 에서 항상 동일한 x값에 대해서는 동일한 y값의 결과를 내려준다. 즉 항상 동일한 .. [오브젝트] 5장 책임 할당하기 안녕하세요 남갯입니다 오늘은 오브젝트 책임 할당하기 부분입니다. 일전에 봤던 코드들 4장에서 데이터 중심의 설계를 통해 작성한 코드가 있었습니다. 책임에 중점을 맞추지 않다보니 결합도가 올라가고 캡슐화가 잘 안되다보니 응집도도 내려가는 결과가 발생했습니다. 2장에서 책임 중심의 코드와 함께 4장에서 데이터 중심의 코드도 봤습니다. 이번에는 책임할당하기 편을 리뷰해보려고 합니다. 책임의 할당이란? 책임에 초점을 맞춰 설계할때 가장 큰 어려움은 어떤 객체에 어떤 책임을 할당할지 결정하기 어렵다는점입니다. 저도 객체지향.. 객체지향.. 어떤 책임을 할당할지 결정하기 쉽지 않았습니다. 책임의 할당과정은 트레이드 오프활동이다. GRASP 패턴 GRASP 패턴은 책임할당의 어려움을 해결하기 위한 답을 제시해줄것이다.. [오브젝트] 4장 설계 품질과 트레이드오프 안녕하세요 남갯입니다 오늘은 4장 설계품질과 트레이드 오프에 대해 포스팅 해보려고합니다. - 역할 책임 협력중 가장 중요한것은 책임이다. 책임이 객체지향 어플리케이션 전체의 품질을 결정하는것이다. - 객체지향의 첫번째 관점은 핵심은 책임이다란것, 두번째 관점은 응집도와 결합도 같은 설계품질과 연관되어있다. - 훌륭한 설계란 적절한 비용안에서 쉽게 변경 할 수 있는 응집도 높고 결합도가 낮은 요소로 구성되어있는것 - 객체를 단순하 데이터 집합으로 바라보는 시각은 객체 내부구현을 퍼블릭 인터페이스에 노출시키는 결과를 낳기때문에설계가 변경에 취약해진다. 하지만 이런 문제를 피할 수 있는 방법은 객체에 초점을 맞추는것 객체지향 설계에서 두가지 방법을 이용해 객체를 분할 가능하다. 상태분할의 중심축 , 책임분할의.. [오브젝트] 3장 역할, 책임, 협력 안녕하세요 남갯입니다 오늘은 오브젝트의 역할, 책임, 협력에 대해 포스팅 해보려고 합니다. 객체지향은 "역할 책임 협력" 객체지향 패러다임의 관점에서 '역할', '책임', '협력'이다. 이 세가지가 제자리를 찾지 못한다면 응집도 높은 클래스와 중복없는 상속 계층을 구현한다고 하더라도 어플리케이션은 침몰할것 이다. 객체이향의 본질은 협력하는 객체들의 공동체를 창조하는것이다. 그림과 같이 객체지향의 원칙을 따르는 어플리케이션의 제어흐름은 한 객체에 의해 통제되지 않고 다양한 객체들 사이에 균형있게 분배되는 것이 일반적이다. 객체들은 요청의 흐름을 따라 자신에게 분배된 로직을 실행ㅎ면서 어플리케이션의 전체 기능을 완성한다. 1. 객체들이 어플리케이션의 기능을 구현하기 위해 수행하는 상호작용을 협력이라고 한다... 이전 1 2 3 4 5 6 다음