본문 바로가기

국비 교육

(42)
2020.9.2일자 수업 : 미니 프로젝트 실습 - Stack, Queue 실습 - LinkedList 적용 git/eomcs-java-project/src/mini-pms-19 이번에는 ArrayList 대신 LinkedList를 사용해보려고 한다. LinkedList의 장단점 각 항목들의 연결 고리를 수정하기만 하면 되므로 항목 삽입, 삭제에 걸리는 시간이 ArrayList보다 작다. 배열이 커질 때마다 가비지가 생기는 ArrayLIst에 비해 기존의 객체들을 유지하기 때문에 메모리 관리가 효율적이다. 어떤 항목을 조회할때 첫 항목부터 원하는 항목까지 모두 조회하는 과정을 거치므로 항목 조회에 걸리는 시간이 ArrayList보다 크다. 훈련 목표 ArrayList를 쓰던 것을 LinkedList로 대체한다. 1단계 : LinkedList를 사용하기 전에 저번에 실습한 Lin..
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..
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..
2020.8.13일자 수업 : Object 클래스 추상화 Actor : 시스템이 동작하게 만드는 촉발점. UML 업무를 컴퓨터를 통해서 다룬다면 컴퓨터에게 명령을 내리는 어플리케이션이 필요하다. 어플리케이션을 사용하는 주체를 Actor라고 하는데 이 주체에 사람만 있는 것은 아니다. 시스템도 시스템을 사용할 수 있고, 타이머가 특정 시간에만 동작을 촉발시킬 수도 있다. Actor의 종류에는 사람과 시스템, 타이머가 있다. 이 세가지가 원하는 것에 맞춰 시스템을 구현해야한다. 이 시스템을 통해 이뤄져야할 업무는 사람과 사물, 개념을 다룬다. 개념은 추상적인 것으로 쇼핑몰 사이트의 장바구니와 같은 것이다. 프로그램을 구현하려면 사람, 사물, 개념에 관련된 데이터(Member)와 내부 업무 행위(MemberHandler)를 클래스로 정의해야한다. 클래스로 정..
2020.8.19일자 수업 : 미니프로젝트 * 한 클래스가 다른 클래스를 사용하는 것은 좋으나 두 클래스가 서로를 사용하면 안된다. 한쪽이 컴파일되면 다른 쪽이 컴파일되고 그쪽이 컴파일 되는 순간 다시 사용되는 쪽이 컴파일되기 때문에 무한 컴파일이 일어나기 때문이다. 물론 요즘은 컴파일러가 똑똑해서 무한으로 일어나지는 않는다. 실습 - 스태틱 멤버의 한계 / 인스턴스 멤버 활용 실습 목표: BoardHandler 클래스 만들고, board 클래스와, add() 메서드, list() 메서드 구현한다. 그리고 각 게시판과 멤버, 작업, 프로젝트의 종류를 여러개를 만든다. list1 -> /board1/add -> /board1/list list2 -> /board2/add -> /boaord2/list list3 -> /board3/add -> /b..
2020.8.17일자 수업 : ArrayList, LinkedList 실습 - ArrayList 구현하기 git/ bitcamp-20200713/ bitcamp-java-basic/ src/ main/ java com.eomcs.corelib.ex04.MyLinkedList14~21.java 4단계 : 인스턴스를 생성할 때 배열의 초기 크기를 설정할 수 있도록 생성자와 초기 크기를 지정하지 않는 기본 생성자를 구현한다.를 구현한다. 배열 크기를 지정할 때 기본 크기보다는 큰 값이 되도록 생성자를 구현한다. 초기 크기를 1로 할 경우에는 크기가 안늘려지기 때문이다. 배열의 기본 크기는 직접 숫자로 지정하지 말고 상수를 사용하여 지정한다. package com.eomcs.algorithm.data_structure.array; public class MyArrayList { ..
2020.8.14일자 수업 : String, Wrapper, ArrayList 구현 실습 String git/ eomcs-java-basic/ src/ main/ java com.eomcs.corelib.ex02.Exam0110~180.java 문자열 객체 생성 방법 1. String str = new String("abc"); heap에 String 인스턴스를 생성한다. 내용의 동일 여부를 확인하지 않고 생성할 때마다 새로운 인스턴스를 생성한다. 2. String str = "abc"; heap이 아니라 string constant pool (상수풀) 메모리 영역에 String 인스턴스를 생성한다. 내용물이 같으면 기존 인스턴스의 주소를 리턴한다. 즉 메모리 절약을 위해 중복 데이터를 갖는 인스턴스를 생성하지 않는다. 그리고 만들어진 인스턴스는 JVM이 끝날 때까지 메모리에 유지된다. 3...
2020.8.12일자 수업 : 오버로딩, 오버라이딩, 캡슐화 오버로딩 git/ eomcs-java-basic/ src/main/java com.eomcs.oop.ex06.b 오버로딩: 파라미터의 형식은 다르지만 같은 기능을 수행하는 메서드에 대해 같은 이름을 부여함으로써 프로그래밍의 일관성을 제공하기 위한 문법 C언어에서는 같은 이름에 각각 다른 파라미터를 준 function를 선언할 수 없다. 즉, 오버로딩이 불가능하다. 따라서 같은 기능의 function이라도 이름을 조금씩 달리 해야 한다. plusi(int, int) / plusf(float, float) 더보기 function prototype - 메서드를 선언하기 전에 개략적으로 소개하는 명령어 -> ex) int plus(int, int) method signature - 메서드의 선언부 자바에서는 같..