본문 바로가기

Java/[패스트캠퍼스] 100% 환급 챌린지

패스트캠퍼스 환급챌린지 33일차 미션 (3월 4일) : 시그니처 백엔드 Path 초격차 패키지 Online. 강의 후기

https://fastcampus.co.kr/dev_online_besignature
수강 강의명

강의 내용

[1] 잘 설계된 VO 클래스를 만들기 위한 규칙
[2] 학습정리 퀴즈
[3] 동일한 구조와 이질적인 구조

 

[1] 잘 설계된 VO 클래스를 만들기 위한 규칙

(1) 모든 상태 정보를 정보 은닉(private)해야 함
(2) 사용하든 사용하지 않든 디폴트 생성자를 반드시 만들어야 함
(3) 생성자 메서드를 오버 로딩하여 객체를 초기화해야 함(객체의 전체 값을 저장하기 위함)
(4) setter()를 만들어야 함(하나의 값을 저장하기 위함)
(5) getter()를 만들어야 함(하나의 값을 얻기 위함)
(6) toString()를 만들어야 함(객체가 갖는 모든 상태 정보의 값을 한꺼번에 출력하기 위함)

public class PersonVO {
     private String name;  // (1)
     private int age;  // (1)
     private String phone;  // (1)
     
     public PersonVO() {  // (2)
     }

     public PersonVO(String name, int age, String phone) {  // (3)
          this.name = name;
          this.age = age;
          this.phone = phone;
     }

     public void setName(String name) {  // (4)
          this.name = name;
     }
     public void setAge(int age) {  // (4)
          this.age = age;
     }
     public void setPhone(String phone) {  // (4)
          this.phone = phone;
     }
     
     public String getName() {  // (5)
          return this.name;
     }
     public int getAge() {  // (5)
          return this.age;
     }
     public String getPhone() {  // (5)
          return this.phone;
     }
     
     public String toString() {  // (6)
          return name + "\t" + age + "\t" + phone;
     }
}

 

Q. 잘 설계된 영화(MovieVO) 객체를 설계하고 데이터를 저장한 후 출력하시오.
멤버 변수만 작성하면 나머지 코드는 인텔리제이에서 제공하는 Generate를 이용하면 자동으로 생성 가능하다.
코드 내에서 마우스(R) → Generate Constructor
코드 내에서 마우스(R)  Generate  Getter and Setter
코드 내에서 마우스(R) Generate toString()
영화 제목 개봉일 주인공 장르 러닝 타임 등급
아바타 2022.12.14 제이크 설리 액션
192 12세

package fc.java.model;

public class MovieVO {
    // 정보 은닉
    private String title;
    private int day;
    private String major;
    private String part;
    private float time;
    private int level;

    // 디폴트 생성자
    public MovieVO() {
    }

    // 오버 로딩
    public MovieVO(String title, int day, String major, String part, float time, int level) {
        this.title = title;
        this.day = day;
        this.major = major;
        this.part = part;
        this.time = time;
        this.level = level;
    }

    // getter
    public String getTitle() {
        return title;
    }

    public int getDay() {
        return day;
    }

    public String getMajor() {
        return major;
    }

    public String getPart() {
        return part;
    }

    public float getTime() {
        return time;
    }

    public int getLevel() {
        return level;
    }

    // setter
    public void setTitle(String title) {
        this.title = title;
    }

    public void setDay(int day) {
        this.day = day;
    }

    public void setMajor(String major) {
        this.major = major;
    }

    public void setPart(String part) {
        this.part = part;
    }

    public void setTime(float time) {
        this.time = time;
    }

    public void setLevel(int level) {
        this.level = level;
    }

    // toString
    @Override
    public String toString() {
        return "MovieVO{" +
            "title='" + title + '\'' +
            ", day=" + day +
            ", major='" + major + '\'' +
            ", part='" + part + '\'' +
            ", time=" + time +
            ", level=" + level +
            '}';
    }
}​

 

[2] 학습정리 퀴즈

Q. 다른 객체에게 자신의 정보를 숨기고 클래스 외부에서 특정 정보에 접근을 막는다는 의미를 무엇이라 하는가?


Q. 정보 은닉된 정보에 접근하는 방법 중 값을 저장하는 메서드를 무엇이라 하는가?


Q. 정보 은닉된 정보에 접근하는 방법 중 값을 얻어오는 메서드를 무엇이라 하는가?


Q. 정보 은닉된 정보에 접근하는 방법 중 객체를 초기화를 통해 접근하는 메서드는 무엇인가?


Q. 객체가 가지고 있는 값 전체를 문자열 형태로 넘겨주기 위해 만드는 메서드는 무엇인가?

더보기

Q. 다른 객체에게 자신의 정보를 숨기고 클래스 외부에서 특정 정보에 접근을 막는다는 의미를 무엇이라 하는가?
정보 은닉
*private : 자바에서 정보 은닉을 구현하기 위해 사용하는 접근 제어자

Q. 정보 은닉된 정보에 접근하는 방법 중 값을 저장하는 메서드를 무엇이라 하는가?
setter()

Q. 정보 은닉된 정보에 접근하는 방법 중 값을 얻어오는 메서드를 무엇이라 하는가?
getter()

Q. 정보 은닉된 정보에 접근하는 방법 중 객체를 초기화를 통해 접근하는 메서드는 무엇인가?
생성자 메서드

Q. 객체가 가지고 있는 값 전체를 문자열 형태로 넘겨주기 위해 만드는 메서드는 무엇인가?
toString()

 

[3] 동일한 구조와 이질적인 구조

배열과 클래스의 관계

배열(Array)과 클래스(class)는 데이터를 담는다는 역할은 같지만, 만들어지는 구조는 다르다.
기억 공간 안에 들어가는 데이터에 따라 다르게 불린다.
*구조 : 기억 공간 여러개로 만들어지는 형태
*배열 : 동일한 데이터를 담는 동일한 구조
*클래스 : 서로 다른 데이터를 담는 이질적인 구조
 

배열과 클래스의 구조

동일한 데이터
메모리 구조를 동일한 구조로 만들어 데이터를 처리하는 자료 구조
동일한 데이터 6개를 저장한 다음 다른데로 이동시키려면?
(1) 동일한 데이터를 메모리에 저장하기 위한 자료 구조가 필요하다.
(2) 배열도 객체로 취급하기 때문에 배열을 생성해줘야 함
      (1) 배열 선언 : 연속적인 기억 공간을 만들기 위함
      (2) 변수에 배열의 번지를 대입(변수가 배열을 가리키게 됨)
*자료 : 데이터를 담을 수 있는 연속적인 기억 공간이 하나로 묶인 구조
*배열 : 자바에서 문법적으로 제공하는 자료 구조

정수 데이터 : [10, 30, 67, 98, 55, 32]
정수 정수 정수 정수 정수 정수
arr[0] arr[1] arr[2] arr[3] arr[4] arr[5]
int a;  // 한 개의 자료형
int[] b;  // 여러개의 자료형
// 배열 생성
int[] arr = new int[6];  // int[] : 정수를 저장할 수 있는 기억 공간을 배열로 표현(구조의 이름)


이질적인 데이터(학생)
(1) 이질적인 데이터를 메모리에 저장하기 위한 자료 구조가 필요하다.
       자바에서 제공하는 자료 구조가 아니기 때문에 클래스를 통해 구조를 직접 설계하여 사용해야 함
       *클래스 : 현실 세계의 객체 데이터를 자료형으로 만드는 도구
(2) 설계해놓은 객체를 사용하려면 생성해줘야 함
       (1) 생성자 메서드에 의해 객체가 메모리에 만들어진다. 
       (2) 변수에 객체의 번지를 대입(변수가 객체를 가리키게 됨)
              *this : 자기 자신을 가리키는 객체 변수도 만들어진다.

학생 데이터 : [홍길동, 37, 컴퓨터공학, 2023110, bitcocom@empas.com, 010-1111-1111]
문자열 문자열 정수 문자열 정수 문자열
name dept age email year phone
public class Student {
     public String name;  // 멤버 변수 or 상태 정보
     public String dept;
     public int age;
     public String email;
     public int year;
     public String phone;
}​
Student std = new Student();  // std: 생성된 기억 공간을 가리키는 이름(구조의 이름)

 


 

수강 화면수강 화면
수강 화면


본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/48sS29N

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr