1. 프로그래밍 방법론
1) 절차식 프로그래밍 : 순차적인 명령을 수행하고 간단한 분기만 가능하다.
2) 구조적 프로그래밍 : 특정 변수를 묶어 구조화하고 이를 통해 프로그래밍의 효율을 높인다.
3) 객체 지향 프로그래밍 : 객체를 기반으로 프로그래밍되며 클래스, 속성, 기능들의 현실 세계 모델을 반영한다.
4) 함수형 프로그래밍 : 객체의 형태를 벗어나 함수형을 확장해 함수를 변수처럼 사용 가능하다.
2. 명령형 프로그래밍 vs 선언형 프로그래밍
1) 명령형 프로그래밍(Imperative Programming)
- OOP 객체지향 프로그래밍
- 어떻게 하여야 하는가? (How) 예) 이메일을 담을 리스트 선언 -> 루프 -> 검증되지 않았는지 체크 -> 않았다면 변수에 이메일 추출 -> 이메일 리스트에 넣기
2) 선언형 프로그래밍(Declarative Programming)
- Functional Programming
- 무엇을 하여야 하는가? (What) 예) 유저 리스트에서 검증되지 않은 유저만 골라내서 이메일을 추출해서 리스트로 받기
3. First-Class Citizen(1급 시민) 조건
1) 함수/메서드의 매개변수(parameter)로서 전달할 수 있는가
2) 함수/메서드의 반환 값(return)이 될 수 있는가
3) 변수에 담을 수 있는가
4. OOP (Object Oriented Programming) : 객체 지향 프로그래밍 / f(x) (Functional Programming) : 함수형 프로그래밍
5. 함수형 프로그래밍과 람다식(Lambda expression)
1) 자바는 객체지향 프로그래밍이다.
- 기능을 수행하기 위해서는 객체를 만들고 그 객체 내부에 멤버 변수를 선언하고 기능을 수행하는 메서드를 구현한다.
2) 자바 8부터 함수형 프로그래밍 방식을 지원하고 이를 람다식이라고 한다.
- 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식이다.
3) 함수형 프로그래밍 (Functional Programming : FP)
- 함수를 기반으로 하는 프로그래밍이다. 입력받는 자료 이외에 외부 자료를 사용하지 않는다.
- 여러 자료가 동시에 수행되는 병렬 처리가 가능하다.
- 동일한 자료에 대해 동일한 결과를 보장한다.
- 순수 함수(pure function)를 구현하고 호출함으로써 외부 자료에 부수적인 영향(side effect)을 주지 않도록 구현하는 방식이다.
* 순수 함수란?
- 매개 변수만을 사용하여 만드는 함수이다.
- 함수 내부에서 함수 외부에 있는 변수를 사용하지 않는다.
- 함수가 수행되더라도 외부에 영향을 주지 않는다.
'프로그래밍 > Java' 카테고리의 다른 글
[자바 - Java] 스트림 연산 특징 filter map sorted (0) | 2022.09.11 |
---|---|
[자바 - Java]프로그래밍 방법론 - 객체지향 함수형 프로그래밍 람다식 (0) | 2022.09.10 |
[자바 - Java] 내부 클래스 ; 인스턴스 정적 지역 익명 클래스 (0) | 2022.09.08 |
[자바 - Java] 컬렉션 프레임워크 인터페이스 List Set Map Iterator (0) | 2022.09.07 |
[자바 - Java]유용한 클래스 - Object, String, StringBuilder, StringBuffer, Text Block, Class클래스, reflection, new instance (0) | 2022.09.06 |