[Modern Java] 자바 함수 (람다, 메소드 참조)

Sohyun Liiim·2021년 1월 1일
0

Modern Java

목록 보기
1/2

Classic Java = OOP // Modern Java = Functional Programming(FP)

  • OOP(객체지향 프로그래밍)과 FP(함수형 프로그래밍)의 차이는 state(상태) 관리 여부

    • OOP : 객체 안에 상태를 저장한다.

      • 상태 : "속성" 과 같은 의미
      • 상태를 통해 기능(method)을 추가하고, 상태 변화에 보안을 설정한다.
      • 상태(속성)은 variable 과 constant 가 있다.
      • 객체는 instant variable 이라고 할 수 있다.
      • (참고) 객체의 조건 : 객체는 속성과 기능의 집합이거나, id를 가지고 있음

    • FP : 상태를 저장하지 않고, 없애는데 주력한다.

      • 람다식의 function 과 predicate 형태로 나타내 상태를 저장하지 않을 수 있다.
      • OOP보다 간결하며 메모리를 차지하지 않게 프로그래밍할 수 있다.

※ 함수형 프로그래밍 언어의 핵심은 "값" 을 바꾸는 것이다!

  • 여기서 값이란 상태(state)1급값(variable state) 이라고 한다.
    • 특징 : 파라미터로 전달할 수 있다.

  • 구조체(method, class 등)2급값(constant) 이라고 한다.
    • 특징 : 그 자체로 파라미터에 전달할 수 없다. ( = 그 자체로 값이 될 수 없음 )
    • 그 자체로 파라미터에 전달하기 위해서는 2급값을 1급값으로 만들어야 한다!

2급값을 1급값으로 만드는 방법

1. Method Reference (메서드 참조)

  • 형태 → ::
  • 의미 → 이 method를 으로 사용하라
  • 효과 → method가 2급값이 아닌 1급값으로 상태가 변한다. ( = variable한 state로 변화 )

2. Lambda(람다) = Anonymous Function(익명함수)

  • Lambda 문법 형식으로 구현된 프로그램
    = Functional Programming(함수형 프로그래밍)
    = 함수를 일급값으로 넘겨주는 프로그램을 구현한다.

  • 람다를 사용하면 한 번만 사용할 메서드는 따로 정의를 구현할 필요가 없어진다.

  • 람다대수 : function을 =>로 사용하였고, 이는 함수형 프로그래밍 언어의 기반이 되었다.

    • 유형(type)이 있는 람다대수 = 단순 유형 람다 대수 = OOP
    • 유형(type)이 없는 람다대수 = FP
    • 현재는 OOP와 FP가 공존하고 있으나, FP를 지향하고 있는 추세이다.
profile
새싹개발자를 꿈꾸고 있어요🌱

0개의 댓글