본문 바로가기

전체 글187

01. 협력하는 객체들의 공동체 협력하는 객체들의 공동체 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 소프트웨어 개발자의 역할은 단순히 실세계를 소프트웨어 안으로 옮겨 담는 것이 아니라 고객과 사용자를 만족시킬 수 있는 신세계를 창조하는 것이다. 객체지향에서 가장 중요한 개념은 역할, 책임, 협력 이다. 협력: 협력의 성공은 특정한 역할을 맡은 각 개인이 얼마나 요청을 성실히 이행하는가에 달려 있다. 역할과 책임: 역할이라는 단어는 의미적으로 책임이라는 개념을 내포한다. 따라서 특정한 역할은 특정한 책임을 암시한다. 역할, 책임, 협력 객체지향 설계라는 예술은 적절한 객체에서 적절한 책임을 할당하는 것에서 시작된다. 역할은 유연하고 재사용 가능한 협력 관계를 구축하는데 중요한 설계 요소다. .. 2020. 7. 2.
메소드 참조 메소드 참조 메소드 참조(Method References)는 말 그대로 메소드를 참조해서 매개 변수의 정보 및 리턴 타입을 알아내어, 람다식에서 불필요한 매개 변수를 제거하는 것이 목적이다. 람다식은 종종 기존 메소드를 단순히 호출만 하는 경우가 많다. 예를 들어 두 개의 값을 받아 큰 수를 리턴하는 Math 클래스의 max() 정적 메소드를 호출하는 람다식은 다음과 같다. (left, right) -> Math.max(left, right); 람다식은 단순히 두 개의 값을 Math.max() 메소드의 매개값으로 전달하는 역할만 하기 때문에 다소 불편해 보인다. 이 경우에는 다음과 같이 메소드 참조를 이용하면 매우 깔끔하게 처리할 수있다. Math :: max; 메소드 참조도 람다식과 마찬가지로 인터페이.. 2020. 7. 2.
람다식 기본 문법 람다식이란? 자바는 함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expression)을 지원하면서 기존의 코드 패턴이 많이 달라졌다. 람다식은 익명 함수(anonymous funtion)를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝다. 자바에서 람다식을 수용한 이유는 자바 코드가 매우 간결해지고, 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있기 때문이다. 람다식의 형태는 매개 변수를 가진 코드 블록이지만, 런타임 시에는 익명 구현 객체를 생성한다. 람다식 -> 매개 변수를 가진 코드블록 -> 익명 구현 객체 예를 들어 Runnable 인터페이스의 익명 구현 객체를 생성하는 전형적인 코드는 다음과 같다. Runnable runnable = new.. 2020. 7. 2.
제네릭 타입의 상속과 구현 제네릭 타입의 상속과 구현 제네릭 타입도 다른 타입과 마찬가지로 부모 클래스가 될 수 있다. 다음은 Product 제네릭 타입을 상속해서 ChildProduct 타입을 정의한다. public class ChildProduct extends Product { ... } 자식 제네릭 타입은 추가적으로 타입 파라미터를 가질 수 있다. 다음은 세 가지타입 파라미터를 가진 자식 제네릭 타입을 선언한 것이다. public class ChildProduct extends Product { ... } public class Product { private T kind; private M model; public T getKind() { return this.kind; } public M getModel() { retu.. 2020. 7. 2.