Joslynn의 하루

대용량 웹서비스를 위한 MSA Full-Stack 개발자 양성 과정 -7일차 노트 필기_객체 타입 배열, 객체_220726 본문

MSA Full-Stack 개발자 양성과정/Java

대용량 웹서비스를 위한 MSA Full-Stack 개발자 양성 과정 -7일차 노트 필기_객체 타입 배열, 객체_220726

Joslynn 2022. 7. 26. 18:34

Arrays.toString(배열);

: toString 인수를 전달된 배열의 데이터를 모두 꺼내서 , 구분해서 하나의 문자열로 리턴해준다.

 


객체 타입 배열

 

String names [ ] = new String [5]; // 이름 저장

0 1 2 3 4
희정 나영 효리 동건 소영

int ages [ ] = new int [5]; // 나이

0 1 2 3 4
20 22 23 17 9

String address [ ] = new String [5]; // 주소

0 1 2 3 4
서울 대구 서울 제주도 대전

String phones, ,,,,

 

: 누가 누구의 data인지 매치하기 어려움, 속성의 정보 여러 개 = 객체로 관리

  → 하나의 객체는 속성과 메소드로 존재

: 속성; 이 객체가 가질 수 있는 정보

// 여러 개의 속성을 관리할 클래스 == 객체를 만든다. ; == 속성의 의미를 부각할 수 있는 객체명 필요;

==> ValueObject = vo, Data Transfer Object = DTO, Domain // 속성들을 관리해줄 객체들 (private 멤버필드, public setter &getter method 가짐);

 

class student{

      // 학생이 가져야할 속성 선언 (field = 전역변수)

     String name;

     int age;

     String address;

}

: 1명 분 정보 만듦; 그러면 class student를 5개를 또 만들어야 함;

: 변수 5개   객체 타입 배열 사용 가능

Student [ ] stArr = new Student [5]; // 현재 기본값 null들어가 있음;

 

// 각 index 공간에 값 부여;

stArr [0] = new Student(); // student 객체가 들어가야 함;

stArr [1] = new Student();

stArr [2] = new Student();

 

stArr [3] = new Student();

stArr [4] = new Student();

// Student라는 객체 5개 형성;

 

**중요: 객체 Student는 new 연산자를 만나는 순간, 초기값 설정;

     String name = null;

     int age = 0;

     String address = null;

 

stArr[0].name "희정", stArr[0].age = 20...;

stArr[1].name "나영", stArr[1].name  = 22...;

stArr[2].name "효리", stArr[1].name  = 23...;

 

:배열 이름(주소) 하나만 알면, 학생 1명의 모든 정보를 알 수 있음; 

 

 

은닉(캡슐화)

private

: 외부에서 직접 접근하지 못하도록; == 외부로부터 데이터를 보호;

: 내가 부여한 값을 간직; 

 

if, 미성년자 학생은 존재할 수 없음; 반드시 18보다 큰 숫자가 int age에 들어와야 함;

public에 공개되어 있어 누구나 data 값을 바꿀 수 있는 경우, 실수로 나이에 5를 부여 || 음수 부여 == 보이지 않는 버그;

미연에 방지를 위해 private 사용;

 

class student{

      // 학생이 가져야할 속성 선언 (field = 전역변수)

    private String name;

    private int age;

    private String address;

 

/*setXxx 메소드 

     1) 제한자: public 

     2) return type: void

     3) 인수 필수

*/

    public void setAge (int age){

 

/* 기능 - 제어가 가능함; : 나이가 18보다 작은지 물어볼 수 있음; age는 private 맴버필드이므로, 반드시 본 메소드를 사용해서만 값을 변경할 수 있음.

즉, 개발자가 의도한 대로만 정보를 변경할 수 있음;

필드는 check를 할 수 없지만, 메소드는 할 수 있기 때문; 

*/

       this.age = age;

    }

 

/*getXxx 메소드

     1) 제한자: public 

     2) return type: 필수

     3) 인수 없음

*/

    public void getAge (){

    return age;

// 나이를 조회해 나갈때, 만 나이는 -1을 해서 하나씩 줄여서 나가는 등의 제어가 가능; 

// 멤버필드에 직접 값 부여 시 앞선 행위 불가능; 

    }

 

 

}

: 멤버필드를 조회하고 변경할 수 있는 메소드 제공해야 함; (setter(변경), getter(조회) 메소드)

   setter , getter 메소드 = 내가 만들어놓은 대로만 조회, 값 가져감; 

: 현재 Student class에서 필요한 메소드는 총 6개, since 맴버필드 1개 당 각각 set, get 메소드 가짐;

 

Comments