본문 바로가기

자바

(36)
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.11일자 수업 : 익명 클래스, 커맨드 디자인 패턴 익명 클래스 git/eomcs-java-basic/src/main/java com.eomcs.oop.ex11.e 익명 클래스의 생성 방법 package com.eomcs.oop.ex11.e; public class Exam0120 { interface A { void print(); } public static void main(String[] args) { A x = new A() { @Override public void print() { System.out.println("Hello"); } }; x.print(); } } 인터페이스는 규칙이기 때문에 스태틱 멤버가 아니어도 다른 스태틱 메서드에서 사용 가능하다. 클래스에 이름이 없으면 생성자를 만들 수 없으므로 호출할 때 익명 클래스의 생성자가 없..
백준 별찍기 시리즈 - 2440, 2441, 2442, 2443번 두잇 책 1장에 나온 것들이라서 다시 정리해보는 마음으로 풀어봤다. 별찍기 - 3 문제 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 5 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. ***** **** *** ** * 내 코드 import java.util.Scanner; public class No2440 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for (int i = num; i >= 1; i--) { for (int j = 0; j < i; ..
2020.9.7일 자 수업 : Iterator, 중첩 클래스 실습 - Iterator git/eomcs-java-project/mini-pms-25 Iterator GoF(Gang of Four)가 고안한 23가지 디자인 중 하나로 자바의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화한 것이다. 출처: https://thefif19wlsvy.tistory.com/41 [FIF's 코딩팩토리] Iterator의 기능 캡슐화 Client가 실질적으로 어떤 객체를 사용하는 지 몰라도 호출이 가능하도록 한다. 컬렉션의 관리 방식(data structure)에 상관없이 일관된 목록 조회 방법을 제공할 수 있다. 컬렉션을 변경하지 않고도 다양한 방식의 목록 조회 기법을 추가할 수 있다. LinkedList/ArrayList, Stack, Que..
백준 4948번 : 베르트랑 공준 베르트랑 공준류 문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하며, 한 줄로 이루어져 있다. (n ≤ 123456) 입력의 마지막에는 0이 주어진다. 1 10 1..
Do it! 자료구조와 함께 배우는 알고리즘 입문 : 1장 기본 알고리즘 알고리즘이란? 세 값의 최댓값 실습 1-1 package com.heejin.doit.ex01; import java.util.Scanner; public class Max3 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("세 정수의 최댓값 구합니다."); System.out.print("a의 값 : "); int a = stdIn.nextInt(); System.out.print("b의 값 : "); int b = stdIn.nextInt(); System.out.print("c의 값 : "); int c = stdIn.nextInt(); int max = a; if ..