JAVA: 282개의 글
ByteStream : FilterInputStream / FilterOutputStream FilterStream은 데이터를 모아서 어떤 형으로 변환하기 위한 기능을 제공한다. 기본적인 InputStream과 OutputStream 에서 부족한 기능들을 보완하기 위해서 기본 Stream에 필터를 적용하여 입/출력시에 새로운 기능을 제공한다. FilterInputStream 과 FilterOutputStream 은 InputStream과 OutputStream을 상속한 클래스이며, FilterStream의 최상위 클래스로 기본적인 메소드를 그대로 사용할 수 있고, 필요한 형태로 변환하기 위한 필터를 추가할 수 있다. FilterInputStream / FilterOutputStream와 그 하위 클래스는..
ByteStream : FileInputStream / FileOutputStream 직접 키보드를 통하여 입력하는 데이터는 대개 임시 자료인 경우가 많다. 중요한 자료는 대부분 데이터베이스에 저장되어 있거나 파일 시스템에 저장된다. FileInputStream과 FileOutputStream은 바이트 단위로 파일을 통한 입출력을 처리한다. [JAVA/Java IO] - [JAVA] ByteStream : InputStream / OutputStream[JAVA/Java IO] - [JAVA] File 클래스 정리 (파일정보, 파일목록, 하드디스크 정보 출력) ① FileInputStream FileInputStream 클래스는 InputStream 클래스를 상속받은 후손 클래스로 하드 디스크상에 존재하..
System 클래스(표준 입출력) : System.in, System.out, System.err JAVA에서는 스크린과 키보드를 통한 입출력 방법인 표준 입출력을 제공한다. 표준 입출력을 제공하는 클래스는 java.lang.System으로 멤버 변수인 in, out, err을 이용해서 표준 입력, 표준 출력, 표준 에러를 제공한다. 1. System.in System.in은 InputStream 형태로 지정되어 있다. System 클래스는 자바 버추얼 머신을 구성하고 있는 표준 장치를 뜻하는 클래스이다. 자바 버추얼 머신은 그 자체가 완벽한 하나의 컴퓨터 플랫폼을 가정하고 있기 때문에 독립적으로 동작할 수 있는 구조를 표현하기 위하여 표준 입력과 표준 출력을 스스로의 System 클래스에 등록하여 사용..
ByteStream : InputStream / OutputStream 초기의 자바는 바이트 단위로 입출력을 지원하였다. 이것은 가장 원시적인 형태의 입출력이며 아무런 변환 작업을 수행하지 않는다. 그러므로 바이너리 형태의 자원을 다루기 적합하며 InputStream과 OutputStream의 두 클래스가 최상위 클래스이다. InputStream과 OutputStream 클래스는 둘 다 abstract 지정자를 가지고 있는 추상 클래스이다. 따라서 InputStream과 OutputStream은 객체를 직접 만들지 못하는 클래스로 대부분 추상 메소드를 정의하여 모든 후손 클래스가 이를 강제로 구현하게 만드는 통일의 의미로 사용된다. 1. InputStream 클래스 InputStream 클래스는 바이트 ..
File 클래스 정리 java.io 패키지는 기존의 파일이나 폴더에 대한 제어를 하는 데 사용하는 File 클래스를 제공한다. 이 클래스를 이용해서 파일과 폴더에 대한 다양한 기능을 제공한다. 파일을 나타내는 객체를 생성하려면 다음과 같은 File 클래스의 생성자 함수를 이용한다. * File 클래스의 생성자 File 클래스의 생성자 설명File(File parent, String Child) parent 객체 폴더의 child 라는 파일에 대한 File 객체를 생성한다.File(String pathname) pathname에 해당되는 파일의 File 객체를 생성한다. File(String parent, String, child) parent 폴더 경로의 child라는 파일에 대한 File 객체를 생성한..
[JAVA/Design Patterns] - 옵저버 패턴(Observer Pattern)(1/3) - java.util.Observable[JAVA/Design Patterns] - 옵저버 패턴(Observer Pattern) (2/3) - Observer 패턴 직접 구현 4. Observer 패턴의 변경 및 확장 앞에서 JAVA 내장 API java.util.Observable 을 사용한 옵저버 패턴 구현과, 직접 인터페이스를 사용한 구현 두가지를 확인했다. 이제 이번 포스팅에서는 구현한 옵저버 패턴의 변경 및 확장을 어떻게 하면 되는지 알아본다. 아마 앞의 두 포스트를 잘 이해한 사람들은 어떻게 해야 될지 쉽게 머리속에 떠오를 것이다. 인터페이스를 구현한 옵저버패턴 UML이다. 다시 이야기하면, 기상..
옵저버 패턴 (Observer Pattern) (2/3) [JAVA/Design Patterns] - 옵저버 패턴(Observer Pattern)(1/3) - java.util.Observable에 이어서 포스팅하겠다.앞의 포스팅을 보고 오는게 옵저버 패턴을 이해하는데 더 도움이 될 것이다. 3. Observable, Observer 직접 구현하여 Observer 패턴 구현 앞에서 말했듯이 확장과 재사용성을 위해 클래스로 되어있던 Observable을 인터페이스로 만들어 옵저버와 느슨한 결합으로 구현하겠다. (1) 인터페이스의 느슨한 결합 두 객체가 느슨하게 결합되어 있다는 것은, 그 둘이 상호작용을 하긴 하지만 서로에 대해 서로 잘 모른다는 것을 의미한다. - Observable은 Observer의 구..
옵저버 패턴 (Observer Pattern) 옵저버 패턴(Observer Pattern)에서는 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다. 옵저버 패턴을 설명하기 위해 아래의 구조를 상황으로 옵저버 패턴을 구현해 보겠습니다. 그림을 설명하면, 옵저버 패턴으로 구성된 시스템은 여러개의 디스플레이 장비를 옵저버로 등록돼 있습니다. 일대다로 의존관계에 있는 이 시스템에 새로운 값이 들어오면, 옵저버로 등록되어 있는 디스플레이 장비에 갱신된 데이터를 전달합니다. 상황기상스테이션에서 옵저버 패턴 시스템에 주기적으로 온도, 습도, 압력 데이터를 전송한다.옵저버 패턴 시스템에서는 전달받은 데이터를 등록..
스트래티지 패턴 (strategy pattern) 스트래티지 패턴(Strategy pattern)에서는 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 상속을 이용한 간단한 동물의 행동을 호출하는 시스템에서 스트래티지 패턴(Strategy pattern)을 적용하여 보겠습니다. 1. 상속을 이용한 간단한 시스템 여기서 구현할 동물은 독수리(Eagle)과 호랑이(Tiger)로 Animal 클래스를 상속 받았다. 독수리(Eagle)와 호랑이(Tiger)는 각각의 울기(cry)와 모습(display) 메소드를 구현했다왼쪽의 UML 다이어그램을 살펴보자. abstract를 사용한 추상 클래스..
디자인 패턴의 분류 - Design Patterns 많은 디자인 패턴을 크게 범주별로 분리를 할 수 있다.범주별로 분리를 해보면서 패턴의 특징을 쉽게 파악할 수 있다. * 생성, 행동, 구조 관련 패턴으로 분류 - 생성 관련 패턴 (Creational Pattern) : 객체 인스턴스 생성을 위한 패턴으로, 클라이언트와 그 클라이언트에서 생성해야 할 객체 인스턴스 사이의 연결을 끊어주는 패턴 싱글턴, 팩토리 메소드, 추상 팩토리, 프로토타입, 빌더 패턴 - 행동 관련 패턴 (Behavioral Pattern) : 클래스와 객체들이 상호작용하는 방법 및 역할을 분담하는 방법과 관련된 패턴 스트래티지, 옵저버, 스테이트, 커맨드, 이터레이터, 템플릿 메소드, 인터프리터, 미디에이터, 역할 변경, 메멘토, 비..