개발 한번 해블로그
[Java] 11. 클래스로 객체 모델링 본문
우리가 정수나 실수, 문자 등의 데이터는 단일 데이터로 기본 자료형으로 저장할 수 있지만 영화, 책 데이터를 저장하기 위해서는 단일 데이터로 저장할 수가 없어 하나의 구조로 만들어 데이터를 저장한다. 이 데이터 저장을 위해 새로운 자료형을 만들어야 한다.
이렇게 우리가 필요에 의해 만들어지는 사용자정의 자료형을 객체라고 한다.
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 책이나 빌려와야겠다... (종이책 러버..♥)
'Java' 카테고리의 다른 글
[Java] 13. 객체에게 접근하는 권한 이해하기 (2) | 2023.12.08 |
---|---|
[Java] 12. 클래스를 직접 만들 수 있는 미친 클라쓰~ (2) | 2023.12.08 |
[Java] 10. 메서드와 변수의 관계 이해 (4) | 2023.11.27 |
[Java] 9. 사고력 키우기 2탄 (2) | 2023.11.23 |
[Java] 8. 내 나이 2X살, 사고력을 키워보자 (0) | 2023.11.22 |