자바 프로그래밍 입문#8

파핑·2022년 3월 17일
0

JAVA PROGRAMMING

목록 보기
9/12
post-thumbnail

자바 공부기록8일차


참조자료형

참조자료형이란 크기가 정해진 기본 자료형(int,char,float,double 등)으로 선언하는 변수가 있고,클래스 자료형으로 선언하는 참조 자료형 변수가 있다.

참조 자료형 변수의 특징에 대해 더 자세히 알아보자.

한 학생이 있고 이 학생은 국어와 수학 과목을 수강한다. 시범을 치룬 뒤에 국어와 수학 성적 정보를 저장하는 프로그램을 만들려고 한다.

✍잠깐 메모
객체 지향 프로그래밍을 만들 때는 일단 클래스를 어떻게 만들지 부터 생각해봐야한다.

먼저 클래스가 제공해야 할 멤버변수와 메서드를 생각하고 이를 바탕으로 학생 클래스를 만들어 보자.


public class Student1 {
  int studentID;
  String studentName;
  int KoereaScore;
  int mathScore;
}

여기에서 String이 JDK에서 제공하는 참조자료형이다. 나머지 변수는 기본자료형이다.
여기서 귀찮음이 발생한다. 성적을 저장하는 변수가 두 개인데 만약 성적뿐만 아니라 이 학생이 수강하는 과목의 이름도 함께 저장해야 한다면 어떻게 해야할까?
간단하게 String을 사용해서 과목이름 변수까지 추가할 수 있긴하다. 하지만 학생클래스인데 과목과 관련된 변수가 늘어나 가독성이 떨어질 경우가 생긴다.

그래서 이 문제를 해결하기 위해 과목의 이름과 성적을 다른 클래스로 분리해주고 학생에 Subject변수를 각 과목 별로 추가해 준다.

-과목 클래스

public class Subject{
  String SubjectName;
  int scorePoint;
}

-학생 클래스

public class Student {
  int studentID;
  String studentName;
  Subject Korean;
  Subject math;
}

Subject형을 사용하여 선언하였다. 이렇게 구현하면 달라지는 것이 무엇일까?
Subject로 클래스를 분리하면 SubjectName은 Subject 클래스에 선언하여 정리할 수 있고, korean.subjectName으로 사용하고 수학과목 이름은 math.subjectName으로 사용할 수 있어 편리하다.

정보은닉

접근제어자 살펴보기

클래스를 만들고 멤버 변수, 메서드, 생성자 등을 만들 때 public 예약어를 많이 사용했다. 이 예약어의 의미를 알아보자.

객체 지향 프로그램에서는 예약어를 사용해 클래스 내부의 변수나 메서드, 생성자에 대한 접근 권한을 지정할 수 있다. 이러한 예약어를 접근제어자(access modifier)라고 한다.
public이라고 선언한 변수나 메서드는 외부 클래스에서 접근이 가능하며 외부 클래스가 사용할 수 있다는 뜻이다.
반대로 접근 제어자를 private으로 선언한 변수나 메서드는 외부 클래스에서 사용할 수 없다.

get( ),set( ) 메서드

그러면 private으로 선언한 변수를 외부 코드에서 사용하려면 어떻게 해야할까?
변수를 사용할 수 있도록 public메서드를 제공해야 한다. public메서드가 제공되지 않는다면 변수에 접근할 방법이 없다. 이때 사용할 수 있는 것이 get( ), set( ) 메서드이다.

다음 예시를 보자.

public class Student {
  int studentID;
  private String studentName;
  int grade;
  String address;
  
  public String getStudentName( ) {
    return studentName;
  }
  
  public void setStudentName(String studentName){
    this.studentName = studentName;
  }
}

위는 private변수인 studentName에 접근해 값을 가져오는 public get( )메서드
아래는 private변수인 studentName에 접근해 값을 지정하는 public set( )메서드

✍잠깐 메모
get메서드 구조
접근 제어자 자료형 get 멤버변수 () {
return 멤버변수;
}

set메서드 구조
접근 제어자 void set 멤버변수 (자료형 멤버변수) {
this . 멤버변수 = 멤버변수;

✍잠깐 메모
get( ), set( )메서드는 이클립스에서 자동으로 만들 수 있다. 멤버변수를 선언한 클래스 안에서 오른쪽 마우스를 클릭하고 [Source → Getters and Setters...]메뉴를 클릭하고 메서드를 추가하고 싶은 멤버 변수를 선택하고 ok를 누르면 생성된다.

이제 외부에서 private으로 선언한 멤버변수를 사용하는 클래스를 만들어 보자.

public class StudentTest {
  public studentLee = new Student();
//studentLee.studentName = ("이상원");
studentLee.setStudentName("이상원");

system.out.println(studentLee.getStudentName());
 }
}

studentName 멤버변수에 이름 값을 직접 대입하지 않고 setStudentName( )메서드를 활용하여 값을 대입할 수 있다. 즉 외부 클래스에서 private변수에 직접 접근할 수는 없지만, public메서드를 통하면 private변수에 접근할 수 있다.

profile
html/css공부 중(JAVA잠시 접어두는 중)

0개의 댓글