Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 한번 해블로그

[Java] 11. 클래스로 객체 모델링 본문

Java

[Java] 11. 클래스로 객체 모델링

hide on bush 2023. 11. 29. 11:26

우리가 정수나 실수, 문자 등의 데이터는 단일 데이터로 기본 자료형으로 저장할 수 있지만 영화, 책 데이터를 저장하기 위해서는 단일 데이터로 저장할 수가 없어 하나의 구조로 만들어 데이터를 저장한다. 이 데이터 저장을 위해 새로운 자료형을 만들어야 한다.
이렇게 우리가 필요에 의해 만들어지는 사용자정의 자료형을 객체라고 한다.

1. 객체

- 객체는 이질적인 구조이며 모델(model), 덩어리(Value Object), 이동(Data Transfer Object)라고 함
- 이런 자료형은 class로 설계하며 즉 class는 사용자정의 자료형을 만드는 도구


2. 클래스

- 자료형 측면에서는 새로운 자료형을 만드는 도구
- 객체지향 측면에서는 현실 세계에 있는 객체를 객체지향 프로그램에서 사용하기 위해 객체의 상태정보(멤버변수)행위정보(멤버메서드)를 뽑아 설계하는 도구
- 예를 들어, 사람의 클래스에 사람의 이름, 나이, 전화 번호 등은 상태정보(멤버변수), 사람이 운동을 하고 음식을 먹고 걷는 행위는 해위정도(멤버메서드)이다. 여기서 행위 정보도 객체에 포함이 가능하다.

public class Person {
    public String name;
    public int age;
    public String phone;

    public void play() {
        System.out.println("운동을 한다");
    }
    public void eat(){
        System.out.println("음식을 먹다");
    }
    public void walk(){
        System.out.println("걷다");
    }

}

3. 객체 생성 과정의 이해

- 모델링 된 객체를 사용하기 위해서는 메모리에 객체를 생성해야한다. (객체 자료형은 4byte)

1) 한 사람의 데이터를 저장할 변수를 선언
Person p;
→ 여기서 p는 객체변수, 객체라고 함

2) 사람의 이름, 나이, 전화번호를 저장할 객체를 생성
new Person();
→ new는 연산자, Person()은 생성자 메서드
→ 생성자 메서드는 class 이름과 동일(아까 위에서 만든 person class)
→ 새 Person 인스턴스를 생성한 것
3) 생성된 객체를 변수에 할당
Person p=new Person();
→ p는 인스턴스 변수
→ 새 인스턴스 메모리 번지를 p에 할당


4. 생성자 메서드와 this

1) 생성자메서드

- 생성자 메서드는 객체를 메모리에 생성하는 역할
- new 연산에 의해서 호출
- 메서드 이름은 클래스 이름과 동일 
- 접근제한자가 public인 경우에만 호출
- 모든 클래스는 기본 생성자를 가지고 있음
- 이 기번 생성자가 자신이 가지고 있는 멤버들을 메모리에 올려 객체를 생성하는 역할
- 리턴 타입이 없음(그래서 void 안씀)
- 클래스의 인스턴스가 생성될 때 자동으로 호출되며 주로 객체의 초기화 작업을 수행하기 위해서 사용

2) this

- 객체가 생성된 후 자신을 가리키는 객체변수, 참조변수, 포인터변수
- 객체 생성 후 멤버(멤버변수, 멤버메서드)에 접근하기 위해서는 앞에서 한번 언급한 도트 연산자(.)로 접근

public class PersonTest {
    public static void main(String[] args) {
        Person p=new Person();
        p.name="홍길동";
        p.age=30;
        p.phone="010-1111-1111";

        System.out.println(p.name+"\t"+p.age+"\t"+p.phone);

        p.play();
        p.eat();
        p.walk();
    }
}

큰일났음 아주 그냥 이제.. 강의를 들어도 이해가 가지 않는 수준까지 도달 ^^! 
앞에서는 무한 반복으로 이해가 되었다면 이제는 무한 반복도 무쓸모가 될 지경
강의마다 메서드, 객체, 인스턴스 이런 용어를 다르게 설명해주시니까 더 이해가 안됨 ㅠ_ㅠ 
썸원,,콜더,,닥터,,, 내가 이해력이 낮은건지 아니면 진짜 어려운건지 ,,
어제 멘토님께서 첫 끗발이 개끗발이라고 하셨는데 벌써 그 단계가 온 듯 ㅎㅋㅎㅋㅎㅋ 하 ㅠㅠ 도서관 가서 java 책이나 빌려와야겠다... (종이책 러버..♥)