본문 바로가기

Java/[패스트캠퍼스] 100% 환급 챌린지

패스트캠퍼스 환급챌린지 52일차 미션 (3월 23일) : 시그니처 백엔드 Path 초격차 패키지 Online. 강의 후기

https://fastcampus.co.kr/dev_online_besignature
수강 강의명

강의 내용

[1] 배열처럼 동작하는 API를 만드는 방법
[2] IntArray 클래스를 만들어 사용하는 방법
 

[1] 배열처럼 동작하는 API를 만드는 방법

배열을 조작하려면 동작 방식을 알아야 함
동작에 의미를 부여하는 이유? 동작을 클래스의 메서드로 만들기 위함
예) 자판기 : 이미 만들어진 기계(object)
      사람 : 사용자
                 동작 방법만 알면 사용 가능(자판기의 내부 구동 방식을 알 필요 없음)

Q. 정수 5개를 배열에 저장하고 출력하시오.(기존 배열)
배열은 처음에 만들 때 배열의 길이를 지정해야 함(단점)
배열의 길이를 자동으로 늘릴 수 있어야 배열을 효과적으로 사용 가능
public class IntArrayBasicTest {
    public static void main(String[] args) {
        // 정수 5개를 배열에 저장하고 출력하시오.
        // (1) 배열 생성 동작 : 고정 길이(단점) -> 가변 길이(?)
        int[] nums = new int[5];

        // (2) 저장 동작
        nums[0] = 1;
        nums[1] = 2;
        nums[2] = 3;
        nums[3] = 4;
        nums[4] = 5;

        // (3) 배열의 길이를 구하는 동작
        for (int i = 0; i < nums.length; i++) {
            // (4) 데이터를 가져오는 동작
            int data = nums[i];
            System.out.println(data);
        }

        // 향상된 for문(foreach)
        for(int data : nums) {
            System.out.println(data);
        }
    }
}

 

[2] IntArray 클래스를 만들어 사용하는 방법

Q. 정수 5개를 배열에 저장하고 출력하시오.(배열처럼 동작하는 클래스)
배열처럼 동작하는 API를 만들어놓으면 배열처럼 핸들링 가능

(1) 생성 동작 : 생성자 메서드
배열은 기본적으로 초기값 0이 들어가게 된다.

객체를 메모리에 만들면 기억 공간안에는 객체 타입의 기본값이 초기화된다.
배열에 값을 넣지 않으면 0으로 초기화된다.
# int의 기본값 : 0

(2) 저장 동작 : add()
생성된 배열에 원소를 넣는 동작
배열에 데이터를 넣기 전 항상 공간을 먼저 확인해야 함
크기와 배열의 길이가 같으면 원소를 더 이상 넣을 수 없음
공간이 가득 차더라도 기억 공간을 자동으로 늘리는 부분도 만들어야 함
부수적인 작업을 해놔야 길이에 대한 제한 없이 사용 가능

(3) 크기를 구하는 동작 : size()
전체 용량에서 몇 개의 원소가 저장됐는지 개수를 반환

(4) 데이터를 가져오는 동작 : get()
원하는 위치의 데이터를 꺼내오는 동작
인덱스가 음수거나 범위를 벗어나면 예외 발생
예외에 대한 클래스 존재
(1) 예외 객체 생성
(2) 에러 메시지 작성
(3) 예외를 던짐
(4) 프로그램을 실행시키는 JVM 프로세서가 예외를 받아 에러 메시지를 출력 후 프로그램을 종료시킴
public class IntArray {
    private final int DEFAULT_CAPACITY = 5;  // 상수(수정 불가)
    private int[] elements;  // 정수 여러개를 저장할 배열
    private int size = 0;

    // 생성 동작
    public IntArray() {
        elements = new int[DEFAULT_CAPACITY];
    }

    // 저장 동작
    public void add(int element) {
        // 공간 확인
        if (size == elements.length) {
            // 크기를 2배로 늘리는 작업
            ensureCapacity();
        }

        elements[size++] = element;
    }

    public void ensureCapacity() {
        int newCapacity = elements.length * 2;
        elements = Arrays.copyOf(elements, newCapacity);
    }

    // 가져오는 동작
    public int get(int index) {  // -1, 5
        // index 확인
        return elements[index];
    }

    // 원소의 개수를 넘겨주는 동작
    public int size() {
        return size;
    }
}
public class MyIntArrayTest {
    public static void main(String[] args) {
        // 정수 5개를 배열에 저장하고 출력하시오.
        IntArray list = new IntArray();  // 5 크기의 정수형 배열
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);

        System.out.println(list.size());

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
//        System.out.println(list.get(0));
//        System.out.println(list.get(1));
//        System.out.println(list.get(2));
//        System.out.println(list.get(3));
//        System.out.println(list.get(4));
    }
}

 


 

수강 화면수강 화면
수강 화면

 
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/48sS29N

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr