네이버 클라우드 캠프 33일차 230612
#1 교육정리
1) Eclipse IDE 도구 설정
2) setter vs getter
#2 Eclipse IDE 도구 설정
1. 먼저 저는 mac 사용자로 mac 기준으로 설치 및 설정을 설명하는 점 참고바랍니다. https://www.eclipse.org/downloads/download.php?file=/oomph/epp/2023-03/R/eclipse-inst-jre-mac-aarch64.dmg 에 들어가서 Eclipse를 설치해줍니다.(밑줄친 Kakao Corp.을 클릭해줍니다.)
그러면 이렇게 Installer 가 생성됩니다.
우측 오른쪽 위 메뉴바를 클릭해서 UPDATE 해줍니다.
UPDATE 후에 두번째에 있는 Eclipse IDE for Enterprise Java and Web Developers 를 클릭해서 설치해줍니다.
2. 그리고 설치 할 폴더 경로에 들어가서 echo $JAVA_HOME 을 입력해서 jdk 가 제대로 설치되어 있고 문제 없는지 확인해줍니다.
그리고 gradle eclipse를 해주어 gradle Daemon 에서도 Stating 을 해줍니다.
3. 이번에는 gradle eclipseClasspath / gradle eclipseJdt 로 파일을 생성해줍니다.
(삭제는 gradle (clean)~ '삭제할 파일 앞에 clean을 붙여주면 됩니다.)
4. .project 파일에서 아래와 같이 실행할 파일 이름을 넣어줍니다.
5. 그리고 실행할 파일 경로(저는 myapp) 아래에 있는 build gradle 파일은 코드를 아래와 같이 수정해줍니다.
/*
* This file was generated by the Gradle 'init' task.
*
* This generated file contains a sample Java application project to get you started.
* For more details take a look at the 'Building Java & JVM projects' chapter in the Gradle
* User Manual available at https://docs.gradle.org/8.1.1/userguide/building_java_projects.html
*/
plugins {
id 'application'
id 'eclipse'
}
repositories {
mavenCentral()
}
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1'
implementation 'com.google.guava:guava:31.1-jre'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
application {
mainClass = 'bitcamp.myapp.App'
}
tasks.named('test') {
useJUnitPlatform()
}
// 자바 소스를 컴파일 할 때 적용할 옵션
tasks.withType(JavaCompile) {
// 프로젝트의 소스 파일 인코딩을 gradle에게 알려준다.
// $javac -encoding UTF-8 ..
options.encoding = 'UTF-8'
// 소스 파일을 작성할 때 사용할 자바 버전
sourceCompatibility = '17'
// 자바 클래스를 실행시킬 JVM의 최소 버전
targetCompatibility = '17'
}
// eclipse 프로젝트 이름을 설정하기
eclipse {
project {
name = "myapp"
}
jdt {
sourceCompatibility = 17
targetCompatibility = 17
javaRuntimeName = "JavaSE-17" // Java 버전
}
}
6. 이렇게 하고 Eclipse 에서 workspace 기본적인 설정을 하도록 하겠습니다.
workspace 설정은 아래와 같이 해야하는 주의 해야할 점입니다.
- 워크스페이스 폴더 마다 설정해야 한다.
- 즉 워크스페이스 폴더를 새로 지정하면 설정도 새로 해야 한다.
먼저, 아래와 같이 애플로고 옆에 Eclipse 클릭 -> Settings 클릭해줍니다.
그럼 다음와 같이 Preferences 가 열립니다.
차근차근 설정 해보겠습니다.
1) General/Apearance/Colors and Fonts
- Basic/Text Font를 자신의 취향에 맞춰 설정한다.
(저는 D2coding 13 font가 있어서 적용하였으며, 아래와 같이 설정하였습니다.)
2) General/Editors/Text Editors
- Displayed tab width : 2
- Insert spaces for tabs 체크
- Remove multiple spaces on backspace/delete
- Show print margin 체크
- print margin column : 100
- Show white space characters 체크
3) General/Workspace - Text file encoding을 UTF-8로 설정할 것.
- New text file line delimiter를 Unix 방식으로 설정할 것.
4) Java/Code Style/Formatter
- Eclipse java google style 포맷터 다운로드
- https://github.com/google/styleguide/blob/gh-pages/eclipse-java-google-style.xml
- Active profile 에서 구글 스타일 포맷터 임포트하기
(주의할점은 반드시 확장자가 .xml 파일이어야 import 됩니다.)
5) Java/Editor/Save Actions
- Performed selected action.. 체크
- Additional actions 체크
- Configure 버튼 클릭
- Code Organizing 탭/Correct Indentation 체크
6) Java/Installed JRE
- JDK 홈 폴더가 등록되어 있지 않았다면 추가한다.
7) Web
- CSS Files : Encoding을 UTF-8로 설정한다.
- HTML Files : Encoding을 UTF-8로 설정한다.
- JSP Files : Encoding을 UTF-8로 설정한다.
- File / Import... 메뉴 선택
- General / Existing projects into Workspace 선택 후 next
- Import Projects 창
- Select root directory에서 디렉토리 찾은 후 프로젝트 디렉토리 선택
- 프로젝트 폴더에 eclipse 용 프로젝트 정보 파일이 있어야만 임포트 할 수 있다.
- .project 파일(위에 3번 참조)
- 프로젝트 정보를 담은 파일.
- 이클립스는 이 파일의 정보를 가지고 프로젝트 및 메뉴를 설정한다.
- .classpath 파일(위에 3번 참조)
- 자바 프로젝트인 경우 존재하는 파일이다.
- 프로젝트에서 사용할 자바 라이브러리 파일의 경로 정보를 갖고 있다.
- .settings/
- Eclipse IDE의 플러그인 설정 파일이 들어 있는 폴더
- eclipse 정보 파일이 없을 경우
- Gradle 도구를 이용하여 프로젝트 폴더에 이클립스가 사용할 설정 파일을 만든다.
- 절차
- 1) build.gradle 파일의 plugins {} 안에 'eclipse' 플러그인 을 추가한다.(위에 5번 참조)
- 예) id 'eclipse'
- 2) eclipse 설정 파일을 생성한다.
- 터미널에서 `gradle eclipse` 실행한다.
- .settings/, .classpath, .project 등이 생성된다.
#3 Setter vs Getter
자바에서 setter와 getter는 객체 지향 프로그래밍에서 클래스의 데이터 멤버(필드)에 접근하고 값을 설정하거나 가져오기 위해 사용되는 메서드입니다.
- setter 메서드: 데이터 멤버의 값을 설정하는 메서드입니다. 일반적으로 set으로 시작하며, 해당 데이터 멤버의 값을 매개변수로 받아서 설정합니다.
- getter 메서드: 데이터 멤버의 값을 반환하는 메서드입니다. 일반적으로 get으로 시작하며, 해당 데이터 멤버의 값을 반환합니다.
setter와 getter를 사용하는 이유는 다음과 같습니다:
- 캡슐화: 데이터 멤버를 외부에서 직접 접근하는 것을 제한하고, setter와 getter를 통해 간접적인 접근을 제공하여 데이터의 무결성을 보호하고 오류를 방지합니다.
- 접근 제어: setter와 getter를 통해 데이터 멤버에 접근할 때, 필요에 따라 접근을 제한할 수 있습니다. 예를 들어, getter를 통해서만 값을 읽을 수 있고, setter를 통해서만 값을 변경할 수 있도록 설정할 수 있습니다.
- 유연성: setter와 getter를 사용하면 내부적으로 데이터 멤버를 변경할 때 유연성을 가질 수 있습니다. 예를 들어, 데이터 유효성 검사나 계산 등을 수행하여 값을 설정하거나, 복잡한 데이터 변환을 수행하여 값을 반환할 수 있습니다.
아래는 setter와 getter의 예시입니다:
public class Person {
private String name; // private 접근 제한자로 직접 접근 방지
// setter 메서드
public void setName(String name) {
this.name = name;
}
// getter 메서드
public String getName() {
return name;
}
}
위의 예시에서 name 데이터 멤버는 private으로 선언되어 클래스 외부에서 직접 접근할 수 없습니다. 대신 setName()과 getName() 메서드를 사용하여 값을 설정하고 반환할 수 있습니다.
public class Main {
public static void main(String[] args) {
Person person = new Person();
person.setName("John"); // setter를 통해 데이터 멤버의 값을 설정
String name = person.getName(); // getter를 통해 데이터 멤버의 값을 반환
System.out.println(name); // 출력: John
}
}
위의 예시에서 setName() 메서드를 사용하여 name 데이터 멤버의 값을 설정하고, getName() 메서드를 사용하여 값을 반환합니다. 이를 통해 외부에서 name 데이터 멤버에 접근하지 않고도 값을 설정하고 가져올 수 있습니다.
추가적으로 this는 자바에서 현재 객체를 가리키는 참조 변수입니다. this는 주로 다음과 같은 상황에서 사용됩니다:
- 이름 충돌 해결: 클래스의 멤버 변수와 메서드 매개변수 등의 이름이 동일한 경우, this를 사용하여 현재 객체의 멤버 변수임을 명시적으로 표현하여 이름 충돌을 해결합니다.
public class Person {
private String name;
public void setName(String name) {
this.name = name; // this를 사용하여 멤버 변수 name에 접근
}
}
위의 예시에서 this.name은 현재 객체의 name 멤버 변수를 가리킵니다. this를 사용하지 않으면 매개변수 name과 멤버 변수 name이 구분되지 않아서 충돌이 발생할 수 있습니다.
2. 생성자 호출: 생성자 내에서 다른 생성자를 호출할 때 this를 사용합니다. 이를 통해 중복 코드를 피하고 초기화 과정을 공유할 수 있습니다.
public class Person {
private String name;
private int age;
public Person(String name) {
this(name, 0); // 다른 생성자 호출
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
위의 예시에서 Person(String name) 생성자에서 this(name, 0)을 사용하여 Person(String name, int age) 생성자를 호출합니다. 이를 통해 name을 받아와 멤버 변수 name을 초기화하고, age는 0으로 초기화합니다.
this를 사용하는 주된 이유는 멤버 변수와 매개변수의 이름 충돌을 해결하고, 현재 객체를 명시적으로 참조하기 위해서입니다. 이를 통해 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다.