본문 바로가기
반응형
SMALL

전체 글65

19. 함수형 프로그래밍 기법 이 장의 내용 일급 시민, 고차원 함수, 커링, 부분 적용 영속 자료구조 자바 스트림을 일반화하는 게으른 평가와 게으른 리스트 패턴 매칭, 자바에서 패턴 매칭을 흉내 내는 방법 참조 투명성과 캐싱 이 장에서는 고급 함수형 프로그래밍 기법을 다룹니다. 이론적 지식뿐 아니라 실무에서 적용 가능한 기술을 배울 수 있습니다. 다루는 내용으로는 고차 함수, 커링, 영구 자료구조, 게으른 리스트, 패턴 매칭, 참조 투명성을 이용한 캐싱, 콤비네이터 등이 있습니다. 19.1 함수는 모든 곳에 존재한다 함수형 언어 프로그래머는 함수를 값으로 취급할 수 있음을 의미하는 일급 함수 개념을 폭넓게 사용합니다. 자바 8은 이전 버전과 구별되는 특징 중 하나로 일급 함수를 지원합니다. 이를 위해 메서드 참조나 람다 표현식으로 .. 2023. 10. 5.
05 연관관계 매핑 시작 실전예제 1) 회원(Member) 엔티티 @Entity public class Member { @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; private String name; private String city; private String street; private String zipcode; @OneToMany(mappedBy = "member") private List orders = new ArrayList(); //Getter, Setter } 2) 주문(Order) 엔티티 @Entity @Table(name = "ORDERS") public class Order { @Id @GeneratedValue @Column(name = ".. 2023. 10. 4.
05 연관관계 매핑 기초 객체 관계 매핑(ORM)에서 가장 어려운 부분이 바로 객체 연관관계와 테이블 연관관계를 매핑하는 일이다. 객체의 참조와 테이블의 외래 키를 매핑하는 것이 이 장의 목표다. -> 방향, 다중성, 연관관계의 주인 5.1 단방향 연관관계 * 회원과 팀이 있다. * 회원은 하나의 팀에만 소속될 수 있다. * 회원과 팀의 다대일 관계다. 객체 연관관계 회원 객체는 Member.team 필드(멤버변수)로 팀 객체와 연관관계를 맺는다. 회원과 팀 객체는 단방향 관계다. 회원은 Member.team 필드를 통해서 팀을 알 수 있지만 반대로 팀은 회원을 알 수 없다. 테이블 연관관계 회원 테이블은 TEAM_ID 외래 키로 팀 테이블과 연관관계를 맺는다. 회원 테이블과 팀 테이블은 양방향 관계다. 회원 테이블의 TEAM_.. 2023. 10. 4.
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.
12 다형성 이번 장에서는 상속의 관점에서 다형성이 구현되는 기술적인 매커니즘을 살펴본다., 상속의 오해와 진실 코드 재사용을 목적으로 상속을 사용하면 변경하기 어렵고 유연하지 못한 설계에 이를 확률이 높아진다. 상속의 목적은 코드 재사용이 아니다. 상속은 타입 계층을 구조화하기 위해 사용해야 한다. 타입 계층은 객체지향 프로그래밍의 중요한 특성 중의 하나인 다형성의 기반을 제공한다. 객체지향 패러다임이 주목받기 시작하던 초기에 상속은 타입 계층과 다형성을 구현할 수 있는 거의 유일한 방법이었다. 하지만 최근의 언어들은 상속 이외에도 다형성을 구현할 수 있는 다양한 방법들을 제공하고 있다. 따라서 상속의 중요성이 이전에 비해 많이 낮아졌다. 다형성 다형성(Polymorphism) 이라는 단어는 ploy(많은) + m.. 2023. 10. 1.
반응형
LIST