본문 바로가기

java

(19)
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.15일자 수업 : 파일 입출력 실습 - 파일 입출력 git/eomcs-java-project-2020/mini-pms-30-a FileReader와 Scanner 파일의 내용을 읽어들이는 객체는 FileReader이다. 그러나 여기서 있는 메서드는 두가지 뿐이다. 바이트를 리턴한는 read()와 byte배열을 받아 그것을 채운 배열을 리턴하는 read() 밖에 없다. 따라서 Scanner라는 플러그인을 장착해서 문자열을 리턴하는 nextLine()과 4바이트 int값을 리턴하는 nextInt()를 사용할 수 있다. 그럼이제 FileReader와 연결된 Scanner만 사용해도 원하는 작업을 할 수가 있다. 훈련 목표 저장된 ./board.csv를 읽어서 각 게시물의 정보를 boardList에 저장하는 loadBoards() 메서드를 ..
2020.9.14일자 수업 : 예외 처리, 파일 입출력 실습 - 예외 처리 git/eomcs-java-project/mini-pms-29 여태까지는 숫자나 Date를 입력할 때 적절한 형식을 입력하지 않으면 프로그램이 종료됐다. 이제는 잘못된 값을 입력하더라도 프로그램이 중단되지 않도록 예외 처리를 해줄 것이다. 훈련 목표 execute() 메서드를 실행하는 와중에 예외가 발생할 수 있는 부분을 찾아 예외 처리를 해준다. 1단계 : 실행하여 예외가 발생할 수 있는 부분과 코드를 찾는다. execute가 실행되는 와중에 번호를 입력해야할 때 숫자가 아닌 문자를 입력하면 다음과 같은 에러가 발생한다. 숫자를 입력해야하는 상황이 다양하기 때문에 각각의 parseInt() 메서드에 예외 처리를 해주는 것보다는 App에서 execute() 부분에 예외 처리를 해주는 ..
2020.9.4일자 수업 : 인터페이스, 싱글톤 인터페이스 git/eomcs-java-basic/src/main/java com.eomcs.oop.ex09 git/eomcs-java-basic/src/main/java com.eomcs.oop.ex10.b 다중 상속 ● 일반 클래스의 단일상속 클래스 사이의 다중 상속이 안되는 것은 상속을 받은 상위 클래스들이 같은 메서드를 갖고 있다고 가정하면, 이 메서드를 호출할 때 둘 중 어떤 것을 호출한 것인지 구별할 수 없기 때문이다. 안녕하세요ㅕㅛ 야 너 왜 혼자 쿠크다스 다 쳐먹야 뒤지고 시펑?> ● 인터페이스의 다중상속 그러나 인터페이스는 다중 상속이 가능하다. 어차피 메서드가 구현이 되지 않았으므로, 두 인터페이스의 메서드를 하나의 메서드로 상속받아도 문제가 없기 떄문이다. 그러나 다중 상속을 하되, 리..
2020.9.1일자 수업 : CRUD 실습, 제네릭 실습 - CRUD 완성 git/eomcs-java-project-200/mini-pms-18 어제는 detail() 메서드를 구현하는 것까지 했다. 오늘은 update()와 delete()를 추가하여 CRUD를 완성한다. 훈련 목표 update()를 추가한다 delete()를 추가한다 1단계 : update()를 각 Handler 클래스에 추가한다. ProjectHandler와 TaskHandler의 유효한 회원 검사 과정도 함께 추가한다. public void update() { System.out.println("[회원 변경]"); int no = Prompt.inputInt("번호? "); Member member = findByNo(no); if (member == null) { System.ou..
자바로 배우는 핵심 자료구조와 알고리즘 : 2장 알고리즘 분석 그렇다면 언제 ArrayList와 LinkedList 중 어떤 것을 사용하는 것이 더 좋은 선택일까? 어떤 프로그램에 어떤 클래스를 사용하는 것이 더 좋을 지 결정할 때 두 경우의 효율성을 계산하기 위해서 두 가지 방법을 사용할 수 있다. 1. 프로파일링 (Profiling) 둘 다 시도해보고 각각 얼마나 걸리는 지 확인 단점 ! 둘 다 구현해봐야한다. 결과가 사용하는 컴퓨터의 성능에 의존한다. 결과가 문제 크기나 입력으로 사용하는 데이터에 의존한다. 2. 알고리즘 분석 (Analysis of algoritms) 구현하지 않고 알고리즘을 비교하는 방법 첫번째 가정 - 하드웨어의 세부사항을 다루지 않기 위해 알고리즘을 이루는 기본 연산을 식별하여 알고리즘에 필요한 연산 수를 센다. 두번째 가정 - 입력 데..
2020.8.18일자 수업 : Stack, Queue, 클래스 관계 *프로그램 설계 언어 internalization(I18N) - 프로그래밍 중에 라벨의 언어를 다양하게 하여 이용자에 적합한 언어를 제공 localization(L10N) - 이미 구현된 프로그램 안에서 라벨의 언어를 지역에 맞게 변경 실습 - Queue 구현하기 git/ bitcamp-20200713/ bitcamp-java-basic/ src/ main/java com.eomcs.algoritm.queue.MyQueue01~04.java Queue 를 구현하기위해 기존에 작성한 MyLinkedList를 상속받고 값을 정의하는 offer(Object)와 제일 앞에 있는 값을 꺼내는 poll(), 그리고 제일 앞에 있는 값을 조회하는 peek()을 정의한다. package com.eomcs.corelib..