프로그래밍 언어 자바를 배우기 앞서 자바 개발환경을 구축해줘야 한다.
jdk( javaSE )란?
자바는 우선 컴파일 언어이자 인터프리터 언어이다.
컴파일 언어 : 전체코드를 한번에 번역.
ex)자바 컴파일러가 코드를 자바 가상 머신(JVM)이 실행할 수 있는 자바 바이트 코드로 번역. abcd.java --(명령어 : javac abcd.java)--> abcd.class
인터프리터 언어 : 한 줄 단위로 번역.
ex)자바 인터프리터가 컴파일된 자바 바이트 코드를 한 줄 단위로 2진 코드로 번역해 실행한다. abcd.class --(명령어 : java abcd)--> abcd
jdk는 위 기능을 할 수 있는 컴파일러와 인터프리터를 가지고 있어 자바 언어로 작성된 코드를 실행 가능케 해준다.
이후 모든 디렉토리에 있는 자바 소스코드에 이런 컴파일러와 인터프리터가 동작할 수 있도록 path를 등록해주면 효율적인 코드 작성이 가능해진다.
나는 파이썬을 통해 프로그래밍에 입문해서 파이썬의 작성 방식에 익숙해있다. 그래서 조금 어색했던 부분들을 적어본다.
선언 / 초기화
선언 : 변수 만들기만
초기화 : 변수에 선언과 값 부여까지
선언 위치에 따라 2가지로 분류된다.
사용자가 많은 대규모 프로그램을 위한 방법이라고 생각하면된다.
1. class라는 개념을 만들고 마치 도장 찍듯이 class로 객체를 찍어낸다.
2. class에 있는 메서드를 이용해 각 개체를 따로 관리해준다.
객체 생성 문법
컴파일러를 통해 저장을 하면 코드가 자동 컴파일 된다고 하였는데, 파일 확장자명은 java그대로이고 class로 바뀌지 않았다. 왜 그런가?
알아낸답 :
확장자가 java인 파일이 확장자가 class인 파일로 바뀌는 것이 아니라 확장자가 class인 파일이 추가되는 형식이었음. 이 class확장자 파일은 workspace로 지정해둔 폴더에 src가 아닌 bin폴더에 생성된다.
이클립스에는 메이븐이 이미 설치되어 있다. 메이븐은 자파용 프로젝트 관리 도구다. 'pom.xml'이라는 파일을 만들고 여기에 사용할 라이브러리들을 depency로 추가하면 해당 프로젝트에 사용이 가능하고, 메이븐을 통해 외부 라이브러리들을 설정만으로 내 로컬 시스템에 자동 다운로드 시킬 수 있다.
ex) 롬복을 메이븐을 통해 추가한 상황
//pom.xml 파일...
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
</dependencies>
이클립스 기준
1. File -> Configure -> Convert to maven
2. 그럼 프로젝트 안에 'pom.xml'이라는 파일이 생긴다.
3. 'pom.xml'에서 depencies태그 안에 원하는 내용을 추가한다.
코드 다이어트 라이브러리(API)로, getter/setter/toString 같은 매서드의 생성을 쉽게 할 수 있게 해준다. 이때 어노테이션(파이썬에서는 데코레이션이나 장식자라고도 부름)이라고 불리는 엣 '@'을 이용한다. 만약 '@Data' 다음과 같이 입력하면 자동으로 'import lombok:Data;'라는 코드가 작성되고 인스턴스변수에 관한 get/set함수가 생김을 outline탭을 통해 확인할 수 있다.
좋은 점으로는 변수를 생성하거나 제거할 때마다 자동으로 get/set함수 등도 생성/제거 된다.
수업을 진행하는 도중 왜 굳이 getter와 setter메서드를 통해 클래스의 변수값을 받거나 설정해주는지 궁금했다. 단순히 dot을 이용해 진행하면 되지 않는가라는 궁금증이었다.
이에 대해 강사님은 getter나 setter같은 메서드를 만들고 이 곳에서 세부조건이나 제약을 걸어서 입력값의 범위설정같은 기능을 추가하기 용이하기 때문이라고 설명해주셨다.
ex) 여성용 쇼핑몰 회원가입
public class Customer {
private String id;
private int pw;
private char gender; //성별은 무조건 'F' 가 들어와야 할 때
public Customer(String id, int pw, char gender){
this.id=id;
this.pw=pw;
setGender(gender); ///!!!!!여기가 중요한 부분
}
public void setGender(char gender) {
if(gender == 'F') {
this.gender=gender;
}else {
System.out.println("잘못된성별입니다");
}
}
}
위 코드는 private으로 변수들을 보호하는 기능 + customer객체를 선언할 때 제대로 된 성별이 들어와야만 객체가 생성되게 하는 기능이 추가된 것이다.
소스코드를 작성하다보면 부분만 테스트해보고 싶을 때가 있다. 지금은 이클립스를 이용해 자바소스코드를 작성 중이어서 main메서드가 있는 부분을 통해 소스코드를 실행하므로 main메서드 안에 있는 모든 코드가 실행이 된다. 하지만 코드가 길어질 경우 나중에 작성한 코드만을 확인해야 할 경우가 생기므로 이럴 때 이용하는 것이 JUnit 프레임워크다.( 파이썬은 XUnit )
롬복과 비슷하게 어노테이션을 사용한다. 단위테스트가 필요한 부분 위에 '@Test'다음 코드를 작성하면 자동으로 JUnit라이브러리가 import되고 소스코드 상에서 마우스 우클릭을 하여 'Run as - JUnit Test'을 클릭해주면 JUnit에 대한 탭이 열리며 단위 테스트 결과가 출력된다.