💡 변수 선언
변수를 선언할 때
int 와 같은 기본자료형은 선언하고 바로 데이터를 저장하면 되지만
책을 저장하기 위한 변수는 선언 할 수 가 없다.
이러한 책이라는 자료형을 만들어서 사용해야 한다.
프로그램에서 책을 표현하려면 제목, 가격, 출판사, 저자, 페이지수 등등이 필요하다
이러한 책을 정의할 때 여러가지 기억공간이 필요하다.
이러한 기억공간을 분리해서 만들면 의미가 없고 기억공간을 붙여서 하나의 형태로 만들어서 책이라고 불러야 한다.
책이라는 자료형을 만들기 위해서 필요한 정보들을 모아둘 기억공간을 설계 해야한다.
TCP01,02,03.java 와 같은 메인을 포함한 클래스이다.
하지만 우리가 만든 Book 이라는 클래스는 메인등에서 필요할 때 쓰기위한 클래스이다.
그래서 다른 패키지를 만들어서 그 안에서 관리하는게 편할 수 있다.
이렇게 선언한 객체를 보면 객체의 여러 가지 정보를 포함한 상태정보와
어떠한 동작을 할 수 있는 행위정보 즉 메서드라고 불리는 정보를 포함할 수 있다.
책의 상태정보인 제목, 가격 , 출판사, 페이지 수를 객체 내부에 정리된 구조(덩어리) 즉 객체로 포함시켜야 한다.
기억공간 여러개를 하나의 구조로 정돈해놓으면 객체라고 한다.
이러한 객체를 설계하기 위해서는 class 라는 도구를 써야 한다.
책이라는 4개의 모여있는 기억공간을 갖은 객체를 설계하는 과정이다.
각각의 상태정보를 포함한 기억공간의 집합체가 객체이고 book은 저 4가지의 상태정보를 포함한 구조를 떠올리면 된다.
이러한 객체가 메모리에 만들어 져야 한다.(이 과정을 객체를 생성한다고 한다.)
이렇게 선언한 Book 은 사용자 정의 자료형이되며 이것을 class로 만든것이다.
이러한 클래스를 선언해도 다른 클래스에서 사용하고자 하면 import 해야 사용 할 수 있다.
import 를 해야 Book을 선언하고 사용할 수 있다.
정리해보면 Book을 import 해서 가져오고 그 Book은 기억공간들이 모여있는 객체이다.
이 객체를 생성하면 메모리에 공간을 차지하는데 번지수를 갖는다
book에 번지수를 담아서 메모리 공간에 생성된 객체를 찾아갈 수 있다.
Book 이라는 클래스를 import 해서 객체럴 생성하면 번지수를 부여 받고 메모리에 생성됨. 그 번지수를 담고있음.
그 번지수를 담고있는 b 를 인스턴스 변수 라고 하며 메모리에 생성된 객체를 인스턴스(Instance) 라고 한다.
그래서 저 메모리에 선언된 객체가 담고있는 정보에 접근하고자 한다면 인스턴스 변수를 이용해야한다.
b.title b.price 등등 인스턴스 변수를 통해서 인스턴스 정보값들에 접근해준다.
외부 클래스로 만들어진 b를 가져와서 객체(인스턴스)를 생성하고 이를 인스턴스 변수를 통해 접근해
데이터를 저장하거나 가져올 수 있다.
사람이라는 클래스를 하나 더 만들어주고
클래스를 만들어 주고 그 내부에 상태정보 or 멤버변수를 선언해준다.
객체를 생성하면 메모리에 생성되는데 메모리에 만들어진 실체를 Instance 라고 한다.
personVO라는 설계해 놓은대로 메모리에 객체를 생성한 것이다.
메모리에 생성된 인스턴스를 이용하기 위해서는 마찬가지로 p 라는 인스턴스 변수를 통해서 접근한다.
💡 데이터의 구조 VO와 DTO
기본 자료형은 그대로 선언하고 그 공간에 저장할 수 있지만
객체는 메모리에 객체가 만들어지고 그 객체의 번지를 가르키는 방식으로 지정이 가능하다.
여기서 중요한 개념
VO , DTO 를 알 수 있다.
VO 는 Value Object 라고해서 하나의 객체를 선언할 때 쓰인다.
여러 정보가 하나에 뭉쳐 있을때 이를 VO 라고 한다.(데이터를 담기 위해 하나의 구조로 만들어놓은 객체)
DTO 는 Data Transfer Object 데이터를 이동하는 객체이다
Book이라는 클래스를 선언한 이유는 데이터를 담아서 다른곳에서 그 데이터를 활용하기 위함이다.
그래서 이렇게 이동할 수 있는 객체이므로 마찬가지로 DTO도 이에 해당한다.
그래서 Book 클래스를 부를때 Book VO or Book Dto 라고 부를 수 있다.(데이터 구조들)
자바 기초를 더 단단하게 하기 위해 선택한 강의입니다.
출처: Java TPC (생각하고, 표현하고, 코딩하고) 대시보드 - 인프런 | 강의 (inflearn.com)
'Java > Java 활용 개념 정리' 카테고리의 다른 글
[Java] 사용자 정의 자료형(feat. 생성자 method()) (0) | 2023.02.01 |
---|---|
[Java] JVM의 Memory 활용 개념(static 유무의 차이) (0) | 2023.01.31 |
[Java] 메서드도 변수이다. (0) | 2023.01.31 |
[Java] 프로그래밍의 3대 요소 (변수, 자료형, 할당) (1) | 2023.01.30 |
[Java] 폴더만 있으면 어디에서든 이용 가능한 java 개발 환경 구축 (0) | 2023.01.30 |
댓글