[코틀린인액션] 코틀린 기초(2)

객체지향 프로그래밍(OOP)

정의

  • 데이터와 해당 데이터를 처리하는 데 필요한 프로시저들을
  • 객체로 캡슐화하고,
  • 해당 객체들 간의 상호작용을 통해 소프트웨어를 설계하고 구현하는 방법론

특징

  • 클래스와 상속
  • 인터페이스
  • 캡슐화
  • 다형성 등이 특징이다.

함수형 프로그래밍 (FP)

정의

  • 계산을 수학적 함수의 평가로 간주
  • 상태 변경과 가변 데이터를 피하는 프로그래밍 패러다임
    • 상태 변경과 가변 데이터를 피한다?
      • 가변 데이터
        var count = 0  // 가변 변수
        fun increment() {
            count += 1  // 상태 변경
        }
        • 변수에 대한 의도치않은 상태의 변경을..
        val number = 5  // 불변 변수
        • val 키워드를 통하여 변수를 불변으로 설정할수 있음.

개념

  • 일급 함수
    • 함수를 일반 값처럼 다룬다.
    • 변수에 할당, 다른 함수의 인자로 전달가능
  • 불변성
    • 데이터의 상태가 생성하고 변경되지 않음!
  • 순수 함수
    • 동일한 입력에 대해 항상 동일한 출력을 반환
    • 참고
      • 함수 VS 메서드
        • 함수
          • 동일한 입력 → 동일 출력
        • 메서드
          • 동일한 입력 → 상황에 따라 다른 값을 출력가능

장점

  • 간결성
    • 함수를 값처럼 사용가능하여
    • 강력한 추상화가 가능하다
    • 코드의 중복도 제거가능
  • 멀티스레드에 안전
    • 불변데이터와 순수 함수의 사용으로 다중 스레드에 안전하다
  • 테스트 쉽다
    • 순수 함수는 독립적으로 테스트하기 쉬움

코틀린은 OOP 와 FP 동시 지원으로

상황에 맞게 대응이 가능하다,

물론 자바도 둘다 지원한다


Uploaded by N2T