본문 바로가기

Backend/JAVA

(17)
[패캠] 패스트캠퍼스X야놀자: JAVA 기반 토이 프로젝트 주제: 여행 여정을 기록과 관리하는 SNS 서비스 1단계 순수 자바 프로젝트 달성 목표: Java 문법, 파일 입출력, 예외처리, 클래스 설계 여행의 여정 정보를 기록하고 조회하는 Java 애플리케이션 개발 (도메인 설계) 여행 정보(출발,도착,출발시각,도착시간)과 숙박(체크인,체크아웃) 화면 기능 설계 여행 정보와 특정 여행 정보의 여정 목록은 데이터 저장 경로에 파일 형태로 저장 (CSV, json 등) 여행자 관리 화면 기능 설계 프로젝트 정의서 1. 회원은 여러 여행 기록을 저장할 수 있습니다. 회원 가입은 다음 단계에서 고려하고 본 프로젝트는 여행과 여정을 기록하고 조회하는 기능을 구현하기로 한다. 2. 여행에는 여러 여정이 있을 수 있습니다. 여정정보는 이동정보(출발지, 목적지, 출발시간, 도..
[패캠]패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_JAVA 과제2 과제주제 : 책 검색 및 데이터베이스 Java 애플리케이션 개발 이번 과제는 Kakao Book Open API를 활용하여 책을 검색하고, 검색한 책 데이터를 데이터베이스에 저장하는 기능을 제공하는 것이었다. 과제는 아래와 같이 진행하였다 단계 1: Kakao API 키 획득 Kakao Developers에 로그인합니다. 로그인 후, 시작 가이드에 따라 자신만의 애플리케이션을 생성합니다. 애플리케이션 생성 시, 각 플랫폼별로 앱 키가 발급됩니다. 나중 사용을 위해 REST API 키를 메모해두세요. 단계 2: 책 검색 API 사용 다음 검색 REST API 문서를 참고하여 책 검색 REST API를 확인합니다. 문서에서 제공된 책 검색 예제 코드를 확인하여 요청과 응답 구조를 이해합니다. 아래 해당 부분..
[패캠]패스트캠퍼스X야놀자: 백엔드 개발 부트캠프_JAVA 과제1 과제 주제: 위치기반 장소 검색 Java 애플리케이션 개발 과제 소개 - 이 Java 어플리케이션은 입력에 기반하여 특정 위치 내의 장소를 검색할 수 있도록 한다. - 자신의 위치를 기반으로 특정위치에 있는 장소를 검색하여 출력하는 자바 애플리케이션을 개발 할 수 있다. - Kakao 로컬 REST API중 키워드로 장소 검색하기, 카테고리로 장소 검색하기 API를 활용 할 수 있다. 작업 옵션 특정 위치(키워드) 주변의 지정된 반경 내에서 주유소를 검색하는 Java 어플리케이션을 개발합니다. 특정 위치(키워드) 주변의 지정된 반경 내에서 약국을 검색하는 Java 어플리케이션을 개발합니다. 이 중 2번을 선택하여 과제를 진행하였다. 과제 진행단계는 아래와 같았다. 단계 1: 카카오 API 키 획득 카카오..
[패캠/JAVA] 상속 관계 객체 생성 및 초기화(동작 정보, 메서드) 앞서서 상태정보 즉, DTO,VO 클래스에서의 상속 관계를 살펴보았는데 이번엔 동작정보 즉 메서드에 초점을 맞춰서 상속 관계를 살펴 보려고 한다. 또한 앞에서 빠진 내용들을 덧붙이려고 한다. 상속의 처음부터 다시 살펴보자(메서드를 중심으로) 수평적 구조를 사용하여 Dog, Cat 클래스를 만들어 보자 두 클래스에는 공통적으로 eat() 이라는 메서드가 존재한다. 반복되는 요소를 줄이는것이 좋다. Upcasting이란? : 부모가 자식을 가리키는 객체생성방법 super() : 상위 클래스의 생성자를 호출하는 메서드, 생성자 메서드에서 가장 첫 문장에 사용해야 한다. 상위 클래스의 기본생성자를 호출하는 super() 는 생략되어 있다. 이와 같이 수행문을 super() 보다 먼저 적어버리게 된다면 오류가 난..
[패캠/JAVA] 상속 관계 객체 생성 및 초기화(상태정보) 앞선 글에서 살펴 본것 처럼 상속을 쓰게 되면서 '자식이 부모의 상태정보를 마음대로 접근하는건 정보은닉에 위배되는거 아닌가?' 라는 의문점이 생겼었다 이에 대한 문제점의 예시를 살펴보자 다음과 같은 생성자를 만들어 놓고 이와 같이 초기화를 시킨다면 아무 제약 조건이 없어서 나이가 말도 안되는 숫자인 500이 들어가 있어도 값이 저장이 되고출력이 된다. 초기화는 해당하는 객체 자신이 하는 것이 바람직하다 -> 그래서 직접 접근 할 수 없도록 부모에 있는 상태 변수의 접근권한 protected를 private로 바꾸고 부모에게 데이터를 넘겨서 부모가 부모의 생성자에서 정보를 초기화 하도록 한다 아래는 위에서 말한 해결방법으로 해결해 본 모습이다
[패캠/JAVA] 자바 상속 상속이란? 부모가 자식들에게 자신의 것을 사용하라고 허락해주는 것 (앞서 VO 클래스를 바구니라고 표현 했었는데 그 바구니를 자식이 각각 만드는 것이 아닌 부모에게 바구니가 있다면 자식이 부모의 바구니를 사용할 수 있게 해주는 것이다.) 수평적 구조 설계 객체를 설계하다 보면 비슷한 클래스의 경우 중복적인 요소가 발생한다. 단점 ① 코드의 중복이 발생 ② 새로운 요구사항 발생시 반영이 어렵다(유지보수가 어렵다.) ③ 확장성이 떨어진다.(비용 및 시간이 많이 든다) 수직적 구조 설계 수직적 구조는 계층화=상속 이라고 할 수 있다 상속을 사용하면 하위클래스가 상위클래스를 재활용 가능하다. 즉, 하위클래스가 상위클래스를 접근하여 사용 가능 장점 ① 코드의 중복을 최소화 ② 새로운 요구사항 발생시 반영이 쉽다(..
[패캠/JAVA] JVM 메모리 모델 JVM Memory model(Runtime Data Area) 1. Method Area 메서드의 바이트코드(기계어 코드) 가 할당되는 공간 static-zone과 none-static-zone으로 나누어진다. static멤버들은 static-zone에 할당된다 2. Heap Area Generation 객체가 생성되는 메모리 공간(new연산자) GC(garbage collector)에 의해서 메모리가 수집된다 -> 주기적으로 garbage=사용이 끝난 객체 를 없엔다. -> generation count가 높은것 부터 garbage 수집 될 가능성이 높다 3. Stack Area (Call Stack Frame Area)/PC register Native Method Area 메서드가 호출 되면 메서..
[패캠/JAVA] Static 이해하기 왜 메인(main) 클래스는 객체 생성 없이 실행이 될까? main클래스 동작 방식 ① JVM이 실행할 클래스를 찾는다. ② static 키워드가 붙어있는 멤버들을 정해진 메모리(static-zone) 위치에 한번 자동으로 로딩 한다. → static멤버들은 클래스를 사용하는 시점에서 딱 한번 메모리에 로딩된다는 점이 중요하다. → 여기서는 main() 메서드가 static 이기 때문에 메모리에 자동으로 로딩 한다. ③ JVM이 static-zone에서 main()메서드를 호출한다. ④ 호출된 메서드를 Call Stack Frame Area(Stack Area)에 push(기계어코드를 넣고) 한 뒤 동작을 시작한다 Call Stack Frame Area(Stack Area)란? - 메서드가 호출되면 호출..