본문 바로가기
반응형
SMALL

그룹 스터디 공부(IT 서적)52

14. 일관성 있는 협력 애플리케이션을 개발하다 보면 유사한 요구사항을 반복적으로 추가하거나 수정하게 되는 경우가 있다. -> 이러한 상황에서 각 협력이 서로 다른 패턴을 따를 경우에는 전체적인 설계의 일관성이 서서히 무너지게 된다. -> 객체지향 패러다임의 장점은 설계를 재사용할 수 있다는 것이다. -> 재사용은 공짜로 얻어지지 않는다. 재사용을 위해서는 객체들의 협력 방식을 일관성 있게 만들어야 한다. -> 과거의 해결 방법을 반복적으로 사용해서 유사한 기능을 구현하는 데 드는 시간과 노력을 대폭 줄일 수 있다. 또한 코드가 이해하기 쉬워진다. ⚈ 지금 보고 있는 코드가 얼마 전에 봤던 코드와 유사하다는 사실을 아는 순간 새로운 코드가 직관적인 모습으로 다가오는 것을 느끼게 될 것이다. ⚈ 14장의 주제 : 일관성 있는 협력.. 2023. 10. 13.
21 결론 그리고 자바의 미래 동작 파라미터화(람다와 메서드 참조) 메서드로 전달되는 값은 Function, Predicate, BiFunction 등의 형식을 가지며, 메서드를 수신한 코드에서는 apply, test 등의 메서드로 코드를 실행할 수 있다. 람다는 자바8에서의 추가된 가장 혁신적인 기능이다. 스트림 API (Java8) 컬렉션의 n번 탐색하여 결과를 찾아내는 연산을 스트림을 API의 파이프라이닝을 통하여 한번의 게으른 연산으로 값을 찾을 수 있다. parallel 메서드로 인하여 스트림을 병렬로 처리할 수 있다. 내부반복, 외부반복, 부작용 없는 연산, 람다와 메서드 참조로 파라미터화된 메서드, 함수형 개념이 핵심이다. CompletableFuture 클래스 (Java8) Future 인터페이스 제공(Java 5) 여.. 2023. 10. 13.
20.OOP와 FP의 조화:자바와 스칼라 비교 1.스칼라 소개 명령형, 함수형으로 구현된 Hello World예제 확인, 스칼라의 자료구조 확인(List, Set, Map, Stream, Tuple, Option...) 1. Hello Beer 스칼라에서는 모든 것이 객체다. = 기본자료형(primitive)이 없다성 스칼라는 자동으로 변수형을 추론하는 기능이 있다. 모든 변수의 형식은 컴파일 할 때 결정된다. // object로 클래스를 정의하고 동시에 싱글턴 객체를 만들었다. object Beer { // object 내부에 선언된 메서드는 정적 메서드로 간주되므로 static을 명시할 필요 없다. def main(args: Array[String]) { var n : Int = 2 while (n println(s"hello ${n}") } /.. 2023. 10. 13.
19. 함수형 프로그래밍 기법 이 장의 내용 일급 시민, 고차원 함수, 커링, 부분 적용 영속 자료구조 자바 스트림을 일반화하는 게으른 평가와 게으른 리스트 패턴 매칭, 자바에서 패턴 매칭을 흉내 내는 방법 참조 투명성과 캐싱 이 장에서는 고급 함수형 프로그래밍 기법을 다룹니다. 이론적 지식뿐 아니라 실무에서 적용 가능한 기술을 배울 수 있습니다. 다루는 내용으로는 고차 함수, 커링, 영구 자료구조, 게으른 리스트, 패턴 매칭, 참조 투명성을 이용한 캐싱, 콤비네이터 등이 있습니다. 19.1 함수는 모든 곳에 존재한다 함수형 언어 프로그래머는 함수를 값으로 취급할 수 있음을 의미하는 일급 함수 개념을 폭넓게 사용합니다. 자바 8은 이전 버전과 구별되는 특징 중 하나로 일급 함수를 지원합니다. 이를 위해 메서드 참조나 람다 표현식으로 .. 2023. 10. 5.
18 함수형 관점으로 생각하기 18.1 시스템 구현과 유지보수 함수형 프로그래밍이 제공하는 부작용 없음(no side effect)과 불변성(immutability)이라는 개념은 시스템의 유지보수에 큰 도움을 준다. 18.1.1 공유된 가변 데이터 공유된 가변 데이터 구조로 인해 변수가 예상하지 못한 값을 갖게 되고 데이터 갱신 사실을 추척하기 어려워진다. 클래스 또는 객체의 상태를 바꾸지 않으며 return 문을 통해서만 자신의 결과를 반환하는 메서드를 순수(pure) 메서드 또는 부작용 없는(no side effect) 메서드라고 부른다. 여기서 부작용은 함수 내에 포함되지 못한 기능을 의미한다. 자료구조를 고치거나 필드에 값을 할당(setter 메서드 같은 생성자 이외의 초기화 동작) 예외 발생 파일에 쓰기 등의 I/O 동작 수.. 2023. 10. 3.
13 서브클래싱과 서브타이핑 상속의 용도 타입 계층 구현 : 부모클래스는 일반적인 개념을 구현하고 자식 클래스는 특수한 개념을 구현한다. 부모 클래스는 자식 클래스의 일반화(generalization) 자식 클래스는 부모 클래스의 특수화(specialization) 코드 재사용 간단한 선언만으로 부모 클래스의 코드를 재사용할 수 있다. 재사용을 위해 상속을 사용하는 경우 부모 클래스와 자식 클래스가 강하게 결합되어 변경이 어렵다. 상속을 사용하는 이유는 객체의 행동 을 기반으로 하는 타입 계층을 구현해야 한다. 타입 사이의 관계를 고려하지 않은 채 단순히 코드를 재사용하기 위해 상속을 사용해서는 안된다. 객체지향 프로그래밍 vs 객체기반 프로그래밍 객체기반 프로그래밍(Object-Based Programming) 상태와 행동을 캡슐.. 2023. 10. 2.
반응형
LIST