본문 바로가기
카테고리 없음

나만의 자바 정리 (메소드 ,클래스,생성자, Getter, Setter)

by 소년수 2022. 7. 26.

주특기 입문 주차의 개인 과제를 시작하기전에 자바 문법과 스프링에 대해 다시 한번 제대로 정리해야 할 필요를

느껴  나만의 자바 정리를 작성한다. 우선 개인적으로 헷갈리는 문법개념중 메소드와 클래스 생성자 Getter Setter를 먼저 정리를 해보았다.

 

  • 메소드

메소드 : 간단히 말해 반복적인 행동을 줄여서 어디든 갖다쓸 수 있는 명령 모음이다.

 

스파르타강의 코드스니펫코드를 빌려 예시를 써보겠다.

 

기본적으로 메소드가 없을때 실행하는 코드이다.

String title = "웹개발의 봄 Spring";
String tutor = "남병관";
int weeks = 5;
float ratings = 5.0f;

System.out.println("제목: " + title);
System.out.println("튜터: " + tutor);
System.out.println("주차: " + weeks);
System.out.println("별점: " + ratings);

위 코드를 실행하게 되면 예상하는대로 제목 튜터 주차 별점의 정보들이 출력될 것이다.

만약 위코드 실행결과를  10번, 20번 출력하고 싶을 때는 어떻게할까? 저 sout를 10번칠것인가?아니다.

아래 코드를 보자.

 

public static void printInfo() {
	String title = "웹개발의 봄 Spring";
	String tutor = "남병관";
	int weeks = 5;
	float ratings = 5.0f;
	
	System.out.println("제목: " + title);
	System.out.println("튜터: " + tutor);
	System.out.println("주차: " + weeks);
	System.out.println("별점: " + ratings);
}

맨윗줄에 public static void printInfo() 라는 코드가 보일것이다. 이렇게 메소드를 선언할때는 public static void 메소드명(파리미터) 이렇게 선언 해주어야 한다. 위에 메소드 선언 코드를 메인 함수에서 실행을 시키려면 static을 반드시 써주어야 하니 잊지말자.  본론으로 돌아와 메인함수에서 저 메소드를 실행시키고싶으면 그냥 printInfo()만 원하는 수만큼 써주면 된다.

 

 

응용버전으로 한번 보겠다.

public static int sub(int num1, int num2) {
	return num1 - num2;
}


public static void main(String[] args) {
	int result = sub(1, 2);
	System.out.println(result);
}

메소드명은 sub, 파라미터에 int num1, int num2라는 두 정수를 받아서 num1 - num2 를 계산하는 반환값을 설정해주었다.

메인 함수에서 int result 라는 변수로 메소드명(파라미터) = sub(1,2) 라는값으로 출력하면 -1 이라는 값을 받을 수 있다.

 

  • 클래스

클래스란 정보를 묶는것 이라고 생각하자.

정보를 묶으려면 우선 객체지향이란 개념을 먼저 알아야하는데, 객체지향 프로그래밍은 현실 세계에 빗대어 체계적으로 해보자는 발상이, 객체지향 프로그래밍의 핵심이다.

 

그래서 현실과 비슷한 개념(객체)을 나타내기 위한 자바의 도구를 클래스라고 한다.

또 클래스 내 정보를 멤버 변수라고 한다.

 

클래스에 대해 스파트타 코드스니펫의 코드를 빌려서 알아보자.

public class Course {
		// title, tutor, days 가 Course 라는 맥락 아래에서 의도가 분명히 드러나죠!
    public String title;
    public String tutor;
    public int days;
}

위 코드를 살펴보면 Course 라는 클래스 안에 title,tutor,days 라는 의도가 분명한 요소들을 만들어주었다.

이제 이 세개의 요소들을 실행을 하려면 어디서 해야될까? Course라는 클래스에서 실행하는 것이 아닌

메인함수가 있는 메인 클래스에서 실행을 해주어야 한다.

 

메인함수에 실행할 실행코드

Course course = new Course();
course.title = "웹개발의 봄, Spring";
System.out.println(course.title);
System.out.println(course.tutor);

자, 이 코드에 대해 설명을 해보겠다.

1.맨윗줄의 코드를 보면 Course 라는 클래스에서 끌어온 정보들이니까 Course를 맨앞에 써주고 그다음에 변수명을 적어준다. 

2.course라는 변수명을 지정해주고 = new Course(); 라고 써준다. new 뒤에는 클래스명을 써주고 ()를 써준다.

3. 실행코드는 sout (변수명.메소드); 이다

4. 위에코드를 보면 title만 정해 주었지만 tutor의 정보는 써주지 않았다. 실행결과는 

   웹개발의 봄,Spring

   null

이렇게 정해주지 않은 값에 대해서는 null (비어있음)이라고 출력된다.

 

  • 생성자

생성자에 대해서 써보겠다. 먼저 코드를 먼저 보고 써야 이해가 빠르다.

public class Course {
    public String title;
    public String tutor;
    public int days;

		// 이렇게 아무런 파라미터가 없는 생성자를 기본생성자 라고 부릅니다.
    public Course() {

    }

    public Course(String title, String tutor, int days) {
			  // this 는 "이것" 이죠? 클래스 변수를 가리킵니다.
        this.title = title;
        this.tutor = tutor;
        this.days = days;
    }
}

일단 위에 Course라는 클래스에 밑에 코드를 추가하겠다.

맨아레에 있는 추가한 코드를 보면 public Course(String title,String tutor, int days) 뒤에 this.title = title; 이라고 클래스 변수를 선언해준다. 이렇게 되면 기존 코드보다 더 간결해진다. 

주의할점 : 만약 이렇게 생성자를 하나라도 추가를 한다면, 반드시 위에 기본생성자 코드를 같이 써주어야 한다.

 

위 생성자 코드를 선언해준뒤 메인함수에는 밑에 코드처럼 실행 시켜주면

String title = "웹개발의 봄, Spring";
String tutor = "남병관"
int days = 35;
Course course = new course(title,tutor,days)
sout(course.title);
sout(course.tutor);
sout(course.days);

이전과 똑같은 결과가 나오지만, 좀더 코드를 보기가 편해지고 간결해진것을 볼수 있다.

 

  • Getter, Setter

위에 쓴 Course코드를 예시로 들어보겠다 title,tutor,days라는 변수의 정보들을 바꿔야 한다는 상황이 왔다고 가정하자,그러면 클래스의 고객 정보, title,tutor 같은 중요한 민감한 정보는 함부로 바꾸면 안된다.

 

그럴때 자바의 클래스에서는  public private 으로 구분해서 나타낸다. 

 

이제 Getter 와 Setter 에 대해서 정리해보겠다.

정보를 가져오는 메소드를 Getter, 정보를 바꾸는 메소드를 Setter 라고 부른다. Getter와 Setter 의 경우

항상 같이 붙어다니는 존재라고 볼수 있는데, 우선 코드를 보면서 설명하겠다.

public class Course {
		// title, tutor, days 가 Course 라는 맥락 아래에서 의도가 분명히 드러나죠!
    public String title;
    public String tutor;
    public int days;
}

Course라는 클래스에 일단 public으로 선언된 변수들이다.

만약 private로 바꾸고싶으면?? 그냥 public을 private로 바꿔주면 끝.

자, 바꿔준 다음에는 밑에 추가적으로 코드를 적어주어야 한다.

 

// Getter
public String getTitle() {
    return this.title;
}
// Getter
public String getTutor() {
    return this.tutor;
}
// Getter
public int getDays() {
    return this.days;
}

// Setter
public void setTitle(String title) {
    this.title = title;
}
// Setter
public void setTutor(String tutor) {
    this.tutor = tutor;
}
// Setter
public void setDays(int days) {
    this.days = days;
}

getter 의 경우 public 변환타입 get변수명() { return this.변수명) } 이렇게 설정해준다.

setter 의 경우 public void set변수명(변환타임 변수명) { this.변수명 = 변수명;) } 이렇게 설정해준다.

 

getter와 setter로 바꿔준 코드를 메인함수에 실행할 코드는 

Course course = new Course();

System.out.println(course.getTitle());
System.out.println(course.getTutor());
System.out.println(course.getDays());

course.setTitle("웹개발의 봄 스프링");
course.setTutor("남병관");
course.setDays(35);

System.out.println(course.getTitle());
System.out.println(course.getTutor());
System.out.println(course.getDays());

이렇게 바꿔주면 실행이 가능하다.

 

 

 

댓글