본문 바로가기

Programming137

자바 함수형 프로그래밍과 디자인 패턴 디자인 패턴 - 반복해서 등장하는 프로그래밍 문제들에 대한 해법들을 패턴화 해놓은 것 - 패턴들을 숙지해놓으면 비슷한 문제가 생겼을 때 패턴들이 이정표가 되어준다. - 생성 패턴 : 오브젝트의 생성에 관한 패턴 - 구조 패턴: 상속을 이용해 클래스/오브젝트를 조합하여 더 발전된 구조로 만드는 패턴 - 행동 패턴: 필요한 작업을 여러 객체에 분배하여 객체간 결합도를 낮추는 패턴 Builder Pattern - 대표적인 생성 패턴 - 객체의 생성에 대한 로직과 표현에 대한 로직을 분리해준다 - 객체의 생성 과정을 유연하게 해준다 - 객체의 생성 과정을 정의하고 싶거나 필드가 많아 constructor가 복잡해질 때 유용 다음과 같은 field를 가진 User를 만든다고 해보자. private int id; .. 2023. 6. 21.
자바 함수형 프로그래밍 Scope, Closure&Curry, Lazy Evaluation, Function Composition Scope - Closure & Curry - 유효볌위, 즉 변수에 접근할 수 있는 범위를 의미한다. - 블럭 밖과 안 => 변수 사용의 바운더리 - 마찬가지로 람다에서도 이와 같은 원리가 적용된다. - 함수 안에 함수가 있을 때 내부 함수에서 외부 함수에 있는 변수에 접근이 가능하다(Lexical scope). 그 반대는 불가능하다. 예를 들어 lexical scope public static Supplier getStringSupplier() { String hello = "hello"; Supplier supplier = () -> { Stirng world = "world" return hello + world; }; return supplier; } 이때 hello는 supplier 안에서도 접.. 2023. 6. 20.
자바 Stream, max&min count, match, find, reduce, collectors, to map, grouping by, partitioning by, for each, parallel stream Max and Min Count - 스트림 안의 데이터 최대값, 최소값, 개수 - max: Stream 안의 데이터 중 최댁밧을 반환. Stream이 비어있다면 빈 Optional을 반환 - min: Stream 안의 데이터 중 최소값을 반환. Stream이 비어있다면 빈 Optional을 반환 - count: Stream 안의 데이터 개수를 반환 Optional max(Comparator 2023. 6. 20.
Java Stream, filter, map, sorted, distinct, flatmap 스트림 Stream - 컬렉션 형태로 구성된 데이터를 람다를 이용해 간결하고 직관적인 프로세스를 가능하게 한다. - 스트림을 쓰면 사실 for, while을 안쓰게 됨 - 손쉽게 병렬 처리도 가능 String Stream을 만드는 예시 Stream nameStream = Stream.of("Alice", "Bob", "Charlie"); 스트림에 담긴 names를 List로 담기 List collect = nameStream.collect(Collectors.toList()); 배열을 스트림으로 만들 수도 있다. String[] cityArray = new String[]{"Seoul", "tokyo", "busan"}; Stream cityStream = Arrays.stream(cityArray).. 2023. 6. 19.
자바 Gui 프로그래밍 - AWT 클래스 1. 윈도우 프로그램 만들기 그래픽 요소를 이용하여 사용자가 프로그램과 대화하는 방식의 인터페이스 -> 텍스트 기반 or 명령행 인터페이스 (CLI)와 비교됨 GUI 프로그래밍을 위해 필요한 거 - GUI 컴포넌트: 윈도우, 메뉴, 버튼, 레이블, 콤보박스, 체크박스, 텍스트 필드, 스크롤바, 대화상자 등 - 컨트롤, 이벤트 발생과 처리: 사용자와 상호작용 - 컨테이너와 배치 관리자 AWT - JFC(Java Foundation Class) GUI를 만들거나 그래픽 처리를 위한 클래스 라이브러리 AWT : 자바에서 처음 제공한 GUI용 API 주 패키지는 java.awt 운영체제의 윈도우 시스템을 사용함 -> 중량 컴포넌트로 외양이 운영체제마다 다름 package org.awt; import java.a.. 2023. 6. 13.