본문 바로가기

국비 교육

(42)
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() 부분에 예외 처리를 해주는 ..
첫 미니 프로젝트 : 영화 OTT 플랫폼 국비 수업을 들은지 두 달이 다 되어가는 와중에, 오직 자바와 콘솔 입출력 기능만 갖고 24시간동안 프로그램을 짜보는 프로젝트 시간을 가졌다. 이 글을 24시간 동안 둘이서 한 팀원과 둘이서 코딩을 한 결과물이며 이 이후로 계속 리팩토링과 기능 개선을 한 결과물은 다음 저장소에 확인할 수 있다. 전체적인 컨셉 프로젝트의 주제는 자유였고, 나와 또 다른 팀원 한 명은 영화 OTT 플랫폼의 추천 알고리즘을 흉내내어 보기로 결정했다. 회사에서 사용하는 추천 알고리즘은 머신러닝과 AI를 활용하겠지만, 그 수준은 상상도 못하고 그 대신 간단한 추천 리스트를 만들어보기로 했다. 예를 들면 같은 성별, 같은 나잇대의 회원 집단에서 시청한 영화를 조회수 순으로 나열한 리스트 회원의 취향 장르를 한 영화를 시청할 때마다..
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(); } } 인터페이스는 규칙이기 때문에 스태틱 멤버가 아니어도 다른 스태틱 메서드에서 사용 가능하다. 클래스에 이름이 없으면 생성자를 만들 수 없으므로 호출할 때 익명 클래스의 생성자가 없..
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..
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.3일자 수업 : 추상클래스, 인터페이스 실습 - 상속 상속 관계를 구현하는 프로세스 전문화(Specialization) - 하나의 클래스에서 상속받아 추가된 기능들을 가진 클래스들을 다중으로 정읜한다. 일반화(Generalization) - 다중 클래스들에서 공통점을 추출하여 하나의 클래스를 정의하고 이 클래스를 상속받게 한다. 일반화 클래스들의 공통 분모를 추출하여 수퍼 클래스를 정의하는 기법이다. 프로그래밍 처음부터 상속을 고려하여 수퍼 클래스를 정의하는 것이 아니라 코드를 리팩토링하는 과정에서 수퍼 클래스를 정의하는 것이기 때문에 초보 개발자에게 적합하다. 보통 일반화를 통해 추출된 수퍼 클래스는 서브 클래스에게 공통 분모를 상속해주는 것이 목적이므로 직접 수퍼클래스의 인스턴스를 생성하고 사용하지 않는다. 그래서 일반화를 통해 도출한 수..
2020.8.31일자 수업 : 첫 비대면 수업 일주일동안 학원이 폐쇄되더니 결국 비대면 수업이 시작됐다. 그것만으로도 같은 내용을 듣는데, 수업의 난이도가 훨씬 올라갔다. 제발 일주일만 하고, 다시 학원으로 돌아갈 수 있기를 바랄뿐이다. 실습 - 캡슐화 git/eomcs-java-project-2020/mini-pms-15 * 저번 수업에 한 것. 응집력을 높이기 위해 각 MemberHandler, ProjectHandler, BoardHandler, TaskHandler 클래스의 역할을 잘게 쪼개서 전문화시켰다. 즉 BoardHandler 클래스를 UI역할(BoardHandler)과 데이터를 처리하는 역할(BoardList)로 나눴다. 구체적인 구현 내용을 감추어 유지보수와 사용을 쉽게 해주는 문법이 캡슐화 이렇게 만들어진 것이 Board - 도메..