본문 바로가기

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

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

 

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

강의 내용

[1] Class, Object, Instance의 상호 관계
[2] 학습정리 퀴즈
[3] 상속의 컨셉
 

[1] Class, Object, Instance의 상호 관계

모두 객체를 나타내는 용어
객체는 만들어지는 시점에 따라 불리는 명칭이 다르다.
 

Class(클래스)

객체를 모델링하는 도구 및 새로운 자료형을 만드는 도구(설계도)
현실 세계의 학생을 설계하려면 클래스로 설계하면 된다.

설계가 끝나면 자료형이 되며, 사용하려면 객체를 만들어야 한다.

public class Student {  // 학생을 설계하는 모델링 도구
     private String name;  // 상태 정보
     private String dept;
     private int age;
     private String email;
     private int year;
     private String phone;
     public Student() {
     }
     // 이하 생략
}

 

Object(객체)

설계된 클래스를 통해 선언되는 변수
변수가 구체적인 실체(대상)를 가리키지 않는 상태(객체 변수)
객체가 서로 구분이 되지 않는 시점

 

학생은 일반 자료형이 아닌 객체 자료형이므로 객체를 담아야 한다.

객체를 저장하는 변수를 객체라 한다.
정확한 명칭은 객체 변수이지만, 변수를 생략하여 객체라 부른다.
정수는 객체가 아닌 일반 데이터이므로 변수라 부른다.

int a;  // 변수
Student st;  // st : 객체 변수
Student st1;  // st : 객체 변수
Student st2;  // st : 객체 변수
Student st3;  // st : 객체 변수

 

Instance(인스턴스, 실체)

객체 생성에 의해 메모리(Heap Memory)에 만들어진 객체(객체의 구체적인 이름)

객체가 구체적인 실체를 가리키는 상태(인스턴스 변수)
객체가 서로 구분 되는 시점


인스턴스를 만들어야 객체를 사용할 수 있다.
정확한 명칭은 인스턴스 변수이지만, 변수를 생략하여 인스턴스라 부름
만든 클래스를 사용하려면 객체를 생성하여 인스턴스 변수를 만들어야 한다.
(1) 설계 (2) 객체 생성 (3) 객체 사용
*Heap Area : 객체가 생성되는 영역
*지역 변수 : 메서드 안에서 만들어지는 변수(Stack Area)

st = new Student();  // st : 인스턴스 변수
st1 = new Student();  // 홍길동
st2 = new Student();  // 김길동
st3 = new Student();  // 이길동

 

[2] 학습정리 퀴즈

Q. 클래스를 사용하는 시점에서 딱 한번 메모리에 로딩하기 위해 사용하는 키워드는?


Q. 다음은 JVM에서 사용하는 메모리 중 어떤 메모리에 대한 설명인지 작성하시오.
1. 메서드가 호출되면 호출된 기계어 코드가 push되고 실행되는 메모리 공간
2. 현재 프로그램이 실행되고 있는 상태를 파악할 수 있다.
3. LIFO(Last-In-First-Out) 구조이다.


Q. 객체 생성을 막으려면 어떻게 해야 할까?


Q. 객체 생성에 의해 메모리(Heap Memory)에 만들어진 객체는?


Q. JVM이 사용하는 메모리 모델 4가지를 작성하시오.

더보기

Q. 클래스를 사용하는 시점에서 딱 한번 메모리에 로딩하기 위해 사용하는 키워드는?
static

Q. 다음은 JVM에서 사용하는 메모리 중 어떤 메모리에 대한 설명인지 작성하시오.
1. 메서드가 호출되면 호출된 기계어 코드가 push되고 실행되는 메모리 공간
2. 현재 프로그램이 실행되고 있는 상태를 파악할 수 있다.
3. LIFO(Last-In-First-Out) 구조이다.
Call Stack Frame Area(Stack Area)

Q. 객체 생성을 막으려면 어떻게 해야 할까?
생성자의 접근 제어를 private로 작성한다.

Q. 객체 생성에 의해 메모리(Heap Memory)에 만들어진 객체는?
인스턴스

Q. JVM이 사용하는 메모리 모델 4가지를 작성하시오.
Method Area, Stack Area, Heap Area, Literal POOL

 

[3] 상속의 컨셉

상속이라는 개념을 잘 알아야 클래스간의 관계를 이해할 수 있다.
기존 : 하나의 클래스를 기준으로 클래스를 설계하여 사용

현재 : 여러 개의 클래스를 가지고 클래스와 클래스를 설계(상속)하여 사용

수평적 구조와 수직적 구조의 설계 방법

대등 = 수평적
계층 = 수직적(수평적의 문제점을 해결)

Q. 어떤 데이터를 담아야 하는데 나에게 바구니(VO, DTO)가 없다면?
다른 사람이 가지고 있는 바구니를 사용하면 된다.
그런데 나와 다른 사람은 아무런 관계가 없기 때문에 다른 사람의 바구니를 사용하기 어렵다.
하지만 부모에게 바구니가 있으면 자식은 부모의 바구니를 사용 할 수 있다.(허락/상속해 주면)
자식과 부모는 상속 관계이기 때문에 자식은 부모의 것을 얼마든지 사용 가능하다.(컨셉)

바구니가 없다면?
(1) 직접 만들어서 사용한다.
(2) 다른 사람이 만들어 놓은 바구니를 사용한다.
      두 클래스가 부모-자식 간의 관계이면 직접 바구니를 만들 필요 없이 부모의 바구니를 사용하면 된다.
      예) A(자식) : 데이터를 담을 바구니 필요
                              바구니가 자식에게 없다면 부모가 가지고 있는 바구니를 사용하면 된다.
                              부모가 바구니를 상속한다면 자식은 언제든지 부모의 바구니를 사용할 수 있다.
*상속 : 부모가 자식들에게 자신의 것을 사용하라고 허락해주는 것("필요하면 내 바구니를 사용해라")

부모 : [name, age, phone, empDate, dept, marriage]
자식 A : 일반 사원 데이터(데이터를 담을 바구니 필요)
자식 B : 관리 사원 데이터(데이터를 담을 바구니 필요)
자식 C : 비서 사원 데이터(데이터를 담을 바구니 필요)
자식이 각각 개별적으로 바구니(VO)를 갖으면 중복적인 요소로 인해 메모리가 낭비될 수 있다.

*사원 데이터 = 중복적인 데이터
*부모 : 공통의 바구니 역할(기억 공간)
             사원들이 가지고 있어야 할 공통 분모를 갖는다.

*상속 : 부모가 바구니를 가지고 있기 때문에 상속을 해주면 각각 자신들이 바구니를 가지고 있을 필요가 없음

 

현실과 프로그래밍에서의 상속

현실

부모가 땅을 자식에게 상속한다면?

소유권 자체가 자식에게 오기 때문에 부모는 권한이 없게 된다.
부모가 기억 공간을 물려주면 부모는 아무런 권리 주장을 할 수 없고, 자녀에게 소유권이 이전되므로 자녀의 것이 된다.

*부모 : 땅의 소유권이 자녀에게 이전되므로 땅을 소유할 수 없게 된다.
*자녀 : 땅의 소유권이 완전히 오게되기 때문에 땅을 마음대로 할 수 있다.

 

프로그래밍

부모가 땅을 자식에게 상속한다면?

*부모 : 땅은 무조건 부모의 것, 상속을 하지 않으면 자식이 부모가 갖는 땅을 사용할 수 없음

*자녀 : 자식이 부모의 땅(기억 공간)에 마음대로 할 수 있는 것
*상속 : 사용하도록 허락한 것


 

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


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

 

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

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

fastcampus.co.kr