728x90

그동안 int, float, char , boolean 등 기본자료형 또는 사용자 정의 자료형이지만 자주 쓰이는 String 등을
중심으로 기본적인 구조를 공부했지만 이제 사용자 정의 자료형에 대해서 좀 더 학습해보겠습니다.

 

💡 클래스 = 모델을 설계하는 도구

 

 

 

 

 

사용자 정의 자료형의 이해

각각의 데이터에 알맞은 타입을 작성해줌으로써 변수를 선언할 수 있음을 명심해야합니다. 선언이 되지 않으면,
메모리에 만들어 질 수 없기 때문에 자료형이 중요합니다.
사용자 정의 자료형은 class 라는 도구로 설계가 가능(모델링하는 도구)합니다.
객체 (Object) : 기억공간 1개로 표현할 수 없고 , 기억공간 여러개를 모아놓은 구조체를 말합니다.
기억공간을 여러개로 표현할 수 있는 것이 객체입니다. 배열과는 다르게 기억공간 안에 담기는 데이터들의 타입이 다른 이질적인 구조입니다.

DTO(Data Transfer Object) : 데이터 전송을 위해 생성되는 객체 로직을 가지지 않는 순수한 데이터 객체
(getter & setter 만 가진 클래스)

 

Q. 책이라는 데이터를 변수에 저장하기 위해서는 책이라는 자료형이 필요합니다.
제목 | 가격 | 출판사 | 저자 | 페이지수 | ISBN       →     BookDTO = 책;    자료형 변수 : BookDTO b;

객체지향 측면 : 현실세계에 있는 객체를 객체지향프로그램에서 사용하기 위해 객체는 상태정보(멤버변수)와 행위정보(멤버메서드)를 가지고 있습니다.

        public class Ex_11_BookDTO {
            public class BookDTO {
                public String title;
                public int price;
                public String company;
                public String author;
                public String isbn;
                public int page;
            }
        }

        -> 현재 상태정보만 작성이 되어있는 상태 + 행위정보도 같이 가지고 있는 구조로 만들어질 수 있다.

        public void read() {
            System.out.println("책을 읽는다")
        }

 

 

만들어진 클래스를 사용하려면 객체를 생성해야합니다.

객체를 메모리에 로딩하는 것 = 객체를 생성하는 과정을 살펴보겠습니다.

객체 자료형은 4byte의 크기를 가지고 있고, 객체 변수에는 번지수가 저장됨을 다시 한번 말합니다. new 연산자와 생성자 메서드로 객체를 생성하면 데이터가 실체화가 됩니다. 인스턴스변수 p가 구체적인 대상물 인스턴스(객체)를 가리키고 있기 때문에 , 해당 변수가 인스턴스 변수가 됩니다.

 

생성자 메서드 (Constructor)란?

객체를 메모리에 멤버변수 & 멤버메서드를 생성하는 역할 = 생성자 메서드 (행위) 메서드는 어딘가에 정의가 되어있고, 메서드를 사용하려면 호출하여 불러와야 합니다.
new Person() ; → Person 클래스 내부에 있는 public Person이라는 메서드를 찾아가야 합니다.
일반적으로 어떤 클래스를 생성하면 클래스 내부에는 자기 자신을 메모리 객체로 생성해야하는데 이걸 기본생성자 (default constructor) 라고 하고, 모든 클래스는 기본 생성자를 가지고 있습니다.
생성자 메서드의 특징으로는 클래스 이름과 메서드 이름이 동일합니다 그리고 return 타입이 아예 없기 때문에 void를 사용하지 않습니다.

생성자의 역할은 기본적으로 멤버 변수와 메서드를 메모리에다가 기억공간을 만들어주는데, 해당 기능을 하는 코드가 기계적으로 내부에서 자동으로 처리를 해주는 역할을 합니다.

 

this : 자신을 가리키는 객체 변수 , 참조변수 , 포인터 변수라고 불립니다.

객체가 만들어진 다음에 객체가 자기 자신의 번지를 가리키는 객체가 만들어집니다. 컴파일러가 멤버변수 및 메서드의 메모리를 생성하고 해당 번지를 this라는 객체변수에다가 넣어줍니다.
눈에 보이지 않지만 자기 자신을 가리키는 객체의 역할을 하며 객체 내부에서 자기 자신의 멤버변수를 가리킬 때 this를 사용하여 가리킬 수 있습니다.

💡 객체가 생성된 후 멤버에 접근하는 방법 . (dot, 도트, 점) 참조연산자로 접근이 가능해집니다.

Person p = new Person(); p라는 인스턴스 변수를 이용하여 데이터에 접근 < p.> p가 가리키고 있는 곳에 name or age 등에 접근이 가능해집니다. ex) p.name / p.phone / p.play();

하나의 클래스 (Person)을 만들어두고, 언제든지 객체를 생성해서 사용할 수 있기 때문에 재 사용성을 가지고 있습니다.

 

힙(Heap Memory)에 만들어진 객체 , 객체의 실체 = 인스턴스 (instance)

 

728x90
반응형

+ Recent posts