[웹 애플리케이션 개발] WordController 수정, word 정보를 js를 통해 전달하는 API 만들기 (~ing)
·
Java Spring
내가 앞으로 해야 할 일 1. WordController 수정 : 수정하여 word 정보를 주고 받을 수 있도록 mapping이 필요하다. (RESTful API) @RestController @RequestMapping("/api/words") public class WordController { @Autowired private WordService wordService; @GetMapping("/{month}/{day}") public ResponseEntity getWordsByMonthAndDay( @PathVariable int month, @PathVariable int day ) { try { List words = wordService.findByMonthAndDay(month, day)..
[웹 애플리케이션 개발] - 내 코드 feedback (+계속 추가)
·
Java Spring
프로젝트에서 내가 맡은 기능은 Note (게시글 작성) 기능이다. 단순한 CRUD 기능을 포함하여 우리 팀이 추가한 특징인 "매일 바뀌는 키워드"까지 적용하여 기능을 만들어야 한다.지난 8월 한 달간, 완전 기본 기능을 구현한 코드 ver.1 & 기본 테스트 코드를 작성해서 돌려보았다. 에러 없이 잘 돌아가게 만들기는 했지만, 내 코드가 좋은 코드인가? 라는 질문에는 자신있게 대답할 수 없어서 초안 코드를 피드백하는 기록을 남기고자 한다.초안은 그동안 배운 Java 프로그래밍 지식과 구글링을 통해 완성되었다. 그래서 좋은 개발자의 클린 코드와는 다른 부분이 많았고 그 부분을 피드백 하여 더 좋은 코드로 업그레이드하고자 한다. 1. Builder 패턴으로 객체 생성하기@Builder 어노테이션을 사용하여 ..
9. 접근 제어자
·
Java Spring
1. 클래스 멤버에 대한 접근 제어자 접근 제어자는 클래스의 멤버(변수, 메소드) 들의 접근 권한을 지정한다. 사용자가 접근하면 안되거나, 접근할 필요가 없는 멤버들에 적절한 접근 제어자를 설정해줘야 한다. 아래 코드를 보면 public 으로 선언된 메소드는 다른 클래스에서 호출할 수 있다. 그러나 private 으로 선언된 z는 다른 클래스에서 호출할 수 없다. private은 본인이 속한 클래스 밖에서 호출하면 안되고, 클래스 내부에서만 호출이 가능하다. 이런 클래스는 내부적으로 사용하면 된다. public String x 메소드를 보면, return z(); 하는 것을 볼 수 있다. 다른 클래스에서 x를 실행하여, 해당 클래스 내부에서 z를 되돌려준다면 z를 사용할 수 있다. (아래 결과 참조) 이..
8. Overriding & Overloading
·
Java Spring
1. Overriding 상속은 상위 클래스의 기능을 하위 클래스로 물려주지만, 하위 클래스에서 상속받은 기능을 항상 그대로 쓴다면 불편할 것이다. 하위 클래스가 상위 클래스에게 상속받은 기능을 수정할 수 있는 방법을 바로 메소드 오버라이딩(Overriding)이라고 한다. 아래 예시 코드의 결과를 보면, 상위 클래스의 sum( ) 함수가 아니라, 하위 클래스의 sum( ) 함수가 실행된 것을 볼 수 있다. class Calculator { int left, right; public void setOprands(int left, int right) { this.left = left; this.right = right; } public void sum() { System.out.println(this.le..
7. 상속과 생성자
·
Java Spring
1. 상속 상속은 객체 지향의 재활용성을 극대화 시킨 프로그래밍 기법이다. 상속이란, 어떤 객체가 있을 때 그 객체의 변수(필드)와 메소드를 다른 객체가 물려받을 수 있게 하는 기능이다. 기존의 객체를 유지하면서 어떤 기능을 추가하고 싶을 때 상속을 통해 자식 클래스를 만든다. 상속을 통해 코드의 중복을 제거하고(똑같은 기능을 가진 클래스를 또 만들지 않아도 된다), 기존의 부모 클래스를 개선할 경우에, 자식 클래스에도 그 혜택이 돌아간다. 결과적으로 상속의 효과는 다음과 같다. => 재활용성 증가 + 코드 중복 제거 + 유지보수 편리성 2. 생성자 기본 생성자 : 매개변수가 있는 생성자가 있을 때, 기본적으로 생성자를 만들어 주지 않는다. 없을 때는 가능하다. super ( ) : super 키워드는 ..
6. 객체 지향 프로그래밍
·
Java Spring
1. 객체 지향 프로그래밍이란? 더 나은 프로그램을 만들기 위해 로직을 객체 중심으로 짜는 것 객체 : 상태(state) / 행위(behave) 로 이루어진 하나의 물건이라고 볼 수 있다. 객체라는 한국어 단어가 와닿지 않을 때는 just Object 라고 받아들이자. 사실은 편하고 쉬운 개념이다. 여러 가지 객체들을 조립하여 하나의 프로그램으로 만드는 것을 객체 지향 프로그래밍이라고 한다. 2. 설계와 추상화 설계 : 좋은 객체를 만들기 위해 설계가 꼭 필요하다. 설계를 잘할수록 더 나은 프로그램을 만들 수 있다. 현실의 복잡함 속에서 필요한 부분, 관점만 찾아내고 쉽게 바꾼다면 더 효율적일 것이다. 위와 같은 행위를 추상화라고 한다. 객체 지향 프로그래밍은 현실의 객체 (Object) 를 프로그래밍에..
5. 메소드, 입출력
·
Java Spring
메소드나 객체지향과 같은 개념은 규모가 크고, 결함이 적고 유지 보수가 쉬운 프로그램을 만들기 위해 꼭 필요한 개념이다. 1. 메소드 코드를 재사용하게 해준다. 로직을 잘 짜서 활용하면 매우 경제적이다. 메소드의 정의 : 접근 제한자 (public, private), 함수 반환 타입, 함수 이름 등을 주의하여 호출한다. 메소드의 호출 : 메인 함수에 원하는 자리에 불러오면 된다. 2. 매개변수와 인자 메소드를 작성할 때, 메소드로 매개변수를 설정하고, main에서 인자를 보내면 메소드를 통해 자신이 원하는 결과를 얻을 수 있다 메소드를 다 실행하고 return 할 때, return 타입을 맞추는 것이 중요하다. return 타입은 메소드를 작성할 때 처음부터 설정해주어야 한다. 처음부터 타입을 설정하는게..
4. 반복문, 배열
·
Java Spring
1. while while(조건) { } : 소괄호 안에 조건을 만족하는 동안 (true 인 동안) 반복문이 실행된다. 조건문을 잘못 설정하거나, while 문 내부에 루프 종료 조건을 제대로 설정해주지 않으면 에러가 발생한다. 무한루프 돌지 않게 조심할 것 2. for for (초기화 ; 종료 조건 ; 증감 등 변화 조건) { } : 소괄호 안에 쓰인 형식을 만족해야 에러가 발생하지 않는다. 초기화 부분은 반복문이 실행될 때 처음, 한 번 실행된다. 초기화 후 종료 조건이 실행되며, 이 조건이 false가 될 때 까지 반복문이 돌아간다. class Main { public static void main(String[] args) { int i = 0; while(i
3. 비교, 조건문, 연산자
·
Java Spring
1. 연산자 산술 연산자 : 수식 계산이나 문자열 합치기 등에 사용되는 연산자. (+ - * / % 등이 있음) 형변환 : (정수 / 정수 = 정수) (실수 / 실수 = 실수) (정수 / 실수 = 실수) (실수 / 정수 = 실수) 단항 연산자 : 하나의 항을 대상으로 하는 연산자 (+ - ++ --) 등이 있으며 특히 증감을 나타내는 연산자는 많이 쓰이며, 위치에 따라서 증감의 순서가 바뀐다. println(); 에서 쓸 때 순서에 주의하자. 연산자의 우선 순위 2. 비교와 Boolean Boolean : 참과 거짓을 의미하는 데이터 타입 비교 연산자(관계 연산자) : 좌항과 우항의 대소비교를 할 때 쓰인다. .equals : 문자열 비교시에 쓰이는 메소드 class Main { public static..
2. Data Type
·
Java Spring
더보기 1. Java의 Data Type 이전에 Python을 자주 사용해서 변수 타입을 명시적으로 선언 하는 것과 Overflow에 대해서 크게 신경쓰지 않고 있었는데, Java를 리뷰하면서 관련 개념을 혼동하지 않도록 다시 정리하겠다. Data Type Memory Range byte 1 byte -128 ~ 127 short 2 byte -32,768 ~ 32,767 int 4 byte -2,147,483,648 ~ 2,147,483,647 long 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 Data Type Memory float 4 byte double 8 byte 들어 갈 수 있는 실수 Range가 너무 커서 생략했다. Dat..