본문 바로가기

국비 교육

(42)
2020.9.18 일자 수업 : 캐릭터 스트림 파일 입출력 git/eomcs-java-basic/src/main/java com.eomcs.io.ex02.Exam0510~Exam0525 git/eomcs-java-basic/src/main/java com.eomcs.io.ex03 바이트 단위로 텍스트 입출력 바이트 단위로 텍스트 출력 바이트 단위로 원하는 텍스트를 출력하기 위해서는 출력될 바이트들의 인코딩 정보를 확실히 인지 후 출력해야 한다. 자바에서 String으로 표현되는 바이트들은 모두 UCS2 형식이지만, 이 String 객체를 getBytes()를 통해 바이트 배열로 변환하면, 그것은 UCS2 형식이 아니라, JVM의 환경 변수인 file.encoding에 설정된 문자집합으로 인코딩된다. 대부분의 웹 브라우저에서 텍스트 인코딩에 사용되는 ..
2020.9.17 일자 수업 : 파일 입출력, 바이트 스트림, 캐릭터 스트림 파일 입출력 git/eomcs-java-basic/src/main/java com.eomcs.io.ex01.Exam0710~0731.java git/eomcs-java-basic/src/main/java com.eomcs.io.ex02 git/eomcs-java-basic/src/main/java com.eomcs.io.ex03 하위 디렉토리 모두 조회하기 특정 디렉토리 안에 있는 파일과 하위 디렉토리의 리스트를 뽑는 훈련을 했다. 이제는 리스트안에 들어가는 디렉토리들의 하위 디렉토리들도 모두 검색하여 모든 파일과 디렉토리를 끝까지 출력하려고 한다. 이것은 다음과 같은 과정으로 프로그램을 짤 수 있다. 특정 폴더의 파일과 하위 디렉토리를 출력하는 메서드를 만든다. 그 메서드 안에서 배열 안에 들어있는 디..
2020.9.8일자 수업 : 로컬 클래스 로컬 클래스 git/eomcs-java-basic/src/main/java com.eomcs.oop.ex11.d 메서드 안에 정의하는 클래스를 local class라고 하며, 중첩 클래스가 특정 메서드 안에서만 사용되는 경우 로컬 클래스로 정의한다. 로컬 클래스로 정의하는 이유는 외부의 노출을 방지함으로써 유지보수를 좋게 하기 위함이다. 즉, 메서드 안으로 사용 범위를 제한하는 캡슐화를 위한 문법이다. 로컬 클래스는 메서드 안으로 사용 범위를 제한할 뿐, 메서드를 호출할 때 클래스가 정의된다는 뜻이 아니다. class A { void m1() { class X { } X obj = new X(); } static void m2() { class X { } X obj = new X(); } } 로컬 클래스..
2020.9.25 일자 수업 : JSON, 네트워크 실습 - JSON 형식 git/eomcs-java-project-2020/mini-pms-32 다양한 언어와 플랫폼에서 모두 호환되는 데이터 형식은 xml과 JSON 이 있다. 다만 xml는 메타데이터의 비중이 크기 때문에 메모리 낭비가 심하다. 따라서 JSON 형식에 따라 데이터 파일을 만들어보려고 한다. JSON이란? 속성-값 또는 키-값 으로 된 데이터 객체를 텍스트로 표현하는 개방형 표준 데이터 포맷이다. 예를 들어 다음과 같은 형식을 취한다. {속성:값, 속성:값, ...} {"no":1,"name":"1","email":"1","password":"1","photo":"1","tel":"1"} 텍스트 형식이기 때문에 프로그래밍 언어나 운영체제에 영향을 받지 않는다. 바이너리 방식에 비해 데이터..
2020.9.24 일자 수업 : character stream class 실습 - character stream class git/eomcs-java-project/mini-pms-31-a 바이너리보다는 포맷이 가독성이 높아지고, 다른 언어와 플랫폼 간에도 호환성이 높아지는 장점이 있기 떄문에 이번에는 바이트 단위가 아닌 캐릭터 단위로 데이터를 파일에 입출력해볼 것이다. 이때 사용되는 data sink stream class는 FileWriter / FileReader이다. 텍스트 포맷과 바이너리 포맷의 차이점 가독성 바이너리 포맷은 사람이 보기가 불편하지만 텍스트 포맷은 사람이 직접 보고 편집할 수 있다. 전용 애플리케이션 바이너리 포맷은 그 포맷을 이해하는 애플리케이션을 이용해야만 읽고 쓸 수 있지만, 텍스트 포맷은 메모장과 같은 텍스트 에디터만 있으면 읽고 쓸 수 있다...
2020.9.23 일자 수업 : 파일 입출력 실습 - 파일 바이너리 입출력 git/eomcs-java-project/mini-pms-30-a 저번 실습에는 파일을 Filewriter와 FileReader와 Scanner를 통해 csv파일에 직접 문자를 입출력했으나, 이번에는 모든 데이터를 바이트 형식으로 입출력해볼 것이다. Data Sink Stream Class 중에서도 바이트를 입출력하는 도구인 FileInputStream과 FileOutputStream을 사용하여 save, load 메서드를 구현할 것이다. 프로젝트에서 다루는 boardList, memberList, ProjectList, taskList 에 저장되는 각 인스턴스들의 필드 정보를 .data 파일에 저장하려면 각 필드의 데이터 타입을 고려해서 이것들을 바이트로 적절히 변환해야 ..
2020.9.22 일자 수업 : 데코레이터 패턴, 파일 입출력 파일 입출력 git/eomcs-java-basic/src/main/java com.ecoms.io.ex09 데코레이터 패턴(Decorator Patter) GoF의 디자인 패턴 중 하나. 객체의 타입과 호출 가능한 메소드를 그대로 유지하면서 객체에 새로운 책임을 추가할 때 사용한다. 탈부착 가능한 책임을 정의할 때 사용한다. 상속을 통해 서브클래스를 계속 만드는 방법이 비효율적일 때 사용한다. 특히 조합되는 경우의 수가 많으면 서브클래스 수가 폭발적으로 늘어날 수 있다. Concrete Component : 완제품으로 객체를 생성하는데 다른 객체를 필요로 하지않고, 포함할 수도 없다. FileInputStream, ByteArrayInputStream 등이 이에 속한다. Decorator : Concre..
2020.9.16 일자 수업 : 람다 문법 람다 문법 git/eomcs-java-basic/src/main/java com.eomcs.oop.ex12 람다 문법이 생긴 이유 메서드를 만드려면 클래스를 꼭 만들어줘야하는 객체지향 언어의 번거로움을 해결하기 위한 문법 람다 문법은 인터페이스를 구현한 클래스의 선언부와 메서드의 선언부를 모두 생략할 수 있다. 다음 예제에서 익명클래스로 인터페이스를 구현한 코드와 람다 문법으로 인터페이스를 구현한 코드가 결과적으로 같은 작업을 수행한다. public class Exam0110 { interface Player { void play(); } public static void main(String[] args) { // 익명 클래스로 인터페이스 구현하기 Player p1 = new Player() { @Ov..