본문 바로가기

전체 글111

자바의 다양한 기능 / 데코레이터 패턴, Thread 19. 데코레이터 패턴 Decorator Pattern 자바의 입출력 스트림은 decorator pattern임 여러 decorator들을 활용하여 다양한 기능을 제공 상속보다 유연한 구현 방식 데코레이터는 다른 데코레이터나 또는 컴포넌트를 포함해야함 지속적인 기능의 추가와 제거가 용이함 decorator와 component는 동일한 것이 아님 ( 기반 스트림 클래스가 직접 읽고 쓸 수 있음, 보조 스트림은 추가적인 기능 제공) 예제 아메리카노 카페 라떼 = 아메리카노 + 우유 모카 커피 = 아메리카노 + 우유 + 모카시럽 크림 올라간 모카커피 = 아메리카노 + 우유 + 모카시럽 + whipping cream 커피는 컴포넌트고, 우유, 모카시럽, whipping cream은 모두 데코레이터임 public.. 2022. 12. 9.
자바의 다양한 기능 / 입출력 스트림, 직렬화, 입출력 클래스 12. 자바의 입출력을 위한 I/O 스트림 입출력 스트림 네트워크에서 자료의 흐름이 물의 흐름과 같다는 비유에서 유래됨 자바는 다양한 입출력 장치에 독립적으로 일관성있는 입출력 스트림을 통해 제공 입출력이 구형되는 곳 - 파일디스크, 키보드, 마우스, 네트웍, 메모리 등 모든 자료가 입력되고 출력되는 곳 입출력 스트림의 구분 대상 기준 : 입력 스트림 / 출력 스트림 자료의 종류 : 바이트 스트림 / 문자 스트림 기능 : 기반 스트림 / 보조 스트림 스트림의 종류 종류 예 입력 스트림 FileInputStream, FileReader, BufferedInputStream, BufferedReader 등 출력 스트림 FileOutputStream, FileWriter, BufferedOutputStream.. 2022. 12. 9.
자바의 다양한 기능 / 스트림, 예외처리 5. 스트림 ( Stream ) 자료의 대상과 관계없이 동일한 연산을 수행 배열, 컬렉션을 대상으로 연산을 수행 자료 처리에 대한 추상화가 구현되었다고 함 한번 생성하고 사용한 스트림은 재사용이 불가 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모됨 다른연산을 수행하기 위해서는 스트림을 다시 생성해야 함 스트림 연산은 기존 자료를 변경하지 않음 자료에 대한 스트림을 생성하면 스트림이 사용하는 메모리 공간은 별도로 생성되므로 연산이 수행돼도 기존 자료에 대한 변경은 발생하지 않음 스트림 연산은 중간 연산과 최종 연산으로 구분됨 스트림에 대해 중간 연산은 여러 개의 연산이 적용될 수 있지만 최종연산은 마지막에 한 번만 적용됨 최종연산이 호출돼야 중간 연산에 대한 수행이 이루어 지고 그 결과가 만.. 2022. 12. 7.
자바의 다양한 기능 / 내부 클래스 정의, 람다식 1. 여러 내부 클래스의 정의와 유형 내부 클래스란? ( inner class ) 클래스 내부에서 선언한 클래스로 이 클래스를 감싸고 있는 외부 클래스와 밀접한 연관이 있는 경우가 많고, 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용함 중첩 클래스라고도 함 내부 클래스의 종류 인스턴스 내부 클래스 정적(static) 내부 클래스 지역(local) 내부 클래스 익명(anonymous) 내부 클래스 인스턴스 내부 클래스 내부적으로 사용할 클래스를 선언 ( private로 선언하는 것을 권장 ) 외부 클래스가 생성된 후 생성됨 ( 정적 내부 클래스와 다름 ) private가 아닌 내부 클래스는 다른 외부 클래스에서 생성이 가능하다 OutClass outClass = new O.. 2022. 12. 2.
자바와 자료구조 / Generic, T extends, 컬렉션 프레임워크 6. 제네릭(Generic) 프로그래밍 제네릭 자료형 정의 클래스에서 사용하는 변수의 자료형이 여러개일 수 있고, 그 기능(메서드)은 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정할 수 있도록 선언 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식 컬렉션 프레임워크에서 많이 사용되고 있다. 제네릭 타입을 사용하지 않는 경우의 예 재료가 Powder인 경우 public class ThreeDPrinter1 { private Powder material; public Powder getMaterial() { return material; } public void setMaterial(Powder material) { this.material = mater.. 2022. 11. 30.
자바와 자료구조 / 배열, 스택, 큐 1. 여러가지 자료구조 자료구조란? ( Data Structure ) 프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현방법들 효율적인 자료구조가 성능 좋은 알고리즘의 기반이 됨 자료의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있음 여러 자료 구조 중에서 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야 하므로 자료구조에 대한 이해가 중요. 자료 구조에는 어떤 것들이 있나 한 줄로 자료를 관리하기 ( 선형 자료구조 ) 배열 ( Array ) 선형으로 자료를 관리 정해진 크기의 메모리를 먼저 할당받아 사용 자료의 물리적 위치와 논리적 위치가 같음 연결 리스트 ( LinkedList ) 선형으로 자료를 관리 자료가 추가될 때마다 메모리를 할당 받고 자료는 링크로 연결된다 자료의.. 2022. 11. 29.