본문 바로가기
백엔드/Java

<FAST CAMPUS>자바 웹개발-객체지향 프로그래밍

by 고구마는호박고구마 2021. 1. 27.

<객체지향프로그래밍 71장~73장>

 

직렬화

 

     직렬화 ( Serialization ) - 인스턴스의 상태를 그대로 저장하거나 네트워크로 전송하고 이를

                                      다시 복원 하는 방식

                                      보조스트림 ( ObjectInputStream 과 ObjectOutputStream 사용 )

 

    직렬화는 인스턴스의 내용이 외부(파일, 네트워크 ) 로 유출되는 것이므로 프로그래머가 객체의 

    직렬화 기능 여부를 명시해야됨

 

 

 Person 객체를 파일로 저장 ( 유출 하는 행위 ) 

     ---------------------------------------------------------------------------------------------------------------------------

    

 

 

 

 

그 외 입출력 클래스와 데코레이터 패턴 

 

      - File 클래스 : 파일개념을 추상화한 클래스 입출력 기능은 없고 파일의 속성, 경로, 이름 등을 알 수 있다.

      

      - RandomAccessFile 클래스 : 입출력 클래스 중 유일하게 파일 입출력을 동시에 할 수 있는 클래스

                                             파일 포인터가 있어서 읽고 쓰는 위치의 이동이 가능함 (  seek() : 데이터 이동 ) 

                                             다양한 자료형에 대한 메서드가 제공 됨 

 

 

                          RandomAccessFile 클래스 

RnadomAcessFile 메서드로 random.txt 파일 생성, rw (read write ) 읽고 쓰기용 으로 생성하고 메서드들을 이용하여 int double UTF 를 써서 숫자랑 문자를 입력합니다. rf.seek(0) 을 쓴 이유는 rf가 마지막에 입력한 "안녕하세요" 문자열을 가리키고 있으므로 int i = rf.readInt(); 는 오류가 나와서 0 맨첫번째 자리로 이동을 시킨다음 읽었습니다.

 

 

   데코레이터 패턴

 

         - 자바의 입출력 스트림데코레이터 패턴을 사용

 

            실제 입출력 기능을 가진 객체와 그 외 다양한 기능을 제공하는 데코레이터를 사용하여

            다양한 입출력 기능을 구현 

 

            상속보다 유연한 확장성을 가짐

데코레이터 패턴

 

데코레이터 패턴 예시 

  

  커피가 아메리카노라고 가정하였을 때 라떼는 커피에 + 우유 , 모카 커피는 커피에 + 우유 + 모카시럽 이런 식으로

  데코레이터 패턴의 과정을 진행한다. 

 

커피가 케냐아메리카노로 지정 -> 여기에 데코를 한다고 생각 ( +우유, + 모카) 위의 트리의 컨크리트컴포넌트 과정 

 

데코레이션 과정

 

 

실행 

            

 

 

댓글