[java]Class 설계 01

eunu·2024년 1월 22일
0

JAVA

목록 보기
1/21

Class

== 새로운 자료형

이름 명명 규칙

  1. 클래스 이름은 자료형의 이름
  2. 대문자로 시작, 숫자는X, 특수기호는 _만
  3. 연결된 자료는 대문자 PhoneNum

중요

클래스명 객체명 === 자료형 참조변수(주소값을 담고 있다는 뜻)명

Q1. 객체 이름이 가지고 있는 값 → 주소값

Q2. 어떤 주소값? → 객체의 주소값

Q3. 객체는 어디에? → 힙

Q4. 객체명은 메모리 공간에서 어디에? → 스택

진짜 값이 담기는 코드는 new 클래스명()

해당 코드가 적히기 전에는 힙영역에 아무것도 없다(아직 만들지 않았기 때문)

클래스 === 객체 === Objrct

—> 이질적인 구조

⇒ 모델(Model) ⇒ value object(= 데이터 덩어리) ⇒ Data Transfer Objectt (=DTO, 바구니, 이동의 역할)

위의 형태로 불리는 이유

  • 제목, 작가, 출시년도, 가격….

영화

  • 영화이름, 개봉일, 주인공 …

이러한 위의 데이터 뭉텅이를 옮기기 때문에 Data Transfer Object라고 부르는 것

모델 하우스처럼 예시? 자료형을 미리 정의해주기 때문에 model이라고도 부르는 것

즉…

📢 객체 = Object = 모델 = VO = DTO

field = 멤버변수..

메서드

메서드 - 반복되는 기능들을 묶어놓은 코드 블록
/
접근제한자 반환형(반환값자료형) 메서드 이름(매개변수){

return 반환값;
}

예를 들어 return 뒤 반환값이 3.14다. .그럼 반환값 자료형은 double

return 뒤가 객체(클래스)면, 반환값 자료형에는 클래스명 적어주기!

return이 없을때=⇒ void

++ 변수명이 겹칠경우 가장 가까운 변수를 가져옴..

인수(인자) : argument = 넘겨주는 값(=args)

매개변수 : parameter = 받는 값(=parm)

메서드로 관리하는 이유

변수명으로 데이터 입력하는 것과 무슨 차이가 있길래?

→ public 변수명 ~~ 으로 하면, 선택권 없이 무조건 항상 오픈되어 있거나, 막혀있거나 둘 중 하나인데

메서드로 관리하면 작업자의 필요에 따라 해당 변수에 접근하는 권한을 선택적으로 조절할 수 있고, set/get이라는 직관적인 메서드 명을 통해 이게 어떤 역할을 하는 건지 바로 알 수 있어 코드를 관리하기 보다 용이해짐.


객체이름을 출력하면 어떤 값이 나올까?

System.out.println(객체명);

패키지이름.클래스명@해시코드(16진수로 된 객체의 고유번호)

// 객체 이름을 출력하면 toString() 메서드와 결과가 같다. 자동으로 호출되는 것임!

System.out.println(J);

System.out.println(J.toString());

System.out.println(J.hashCode()); // 10진수

@컨트롤+스페이스

// 메서드를 재정의하다 = 이미 만들어진 메서드의 기능을 바꿔서 사용한다.

toString은 객체명만 적었을 때 자동으로 호출된다.

toString() 메서드를 재정의하여, 멤버변수의 내용을 출력할 수 있는 용도로 사용한다.

@Override //에노테이션 : 정보를 알려주는 역할 (주석 포함)

public String toString() {

return ;

}


최종정리

잘 설계된 클래스의 6가지 내용

  1. 모든 정보를 은닉한다. (멤버변수 - private로 선언해서 감춘다.)
  2. getter(값 불러오기)
  3. setter(값 설정하기)
  4. toString 메서드 만들기(객체가 가지고 있는 전체 값 출력 용도)
  • 현 작성시점 아직 진도 X
    1. 디폴트 생성자 만들기
    2. 생성자 메서드를 오버로딩하여 객체 초기화

클래스(객체) 만들기

  1. 객체 생성
  2. 객체 값 설정
  3. 객체 값 확인(toString Override)

메서드 만들기

접근제한자 반환형 메서드이름(매개변수){

return 반환값

}

접근제한자

  1. public : 공공
  2. private : 같은 클래스 내에서만 접근 가능
    • 값의 직접적인 접근 - 자료형 앞에 private 붙여서 막는다.
    • 값에 접근해서 값을 가져오고/설정하는 메서드를 새롭게 만든다(getter/setter)
      • get: 값을 가져온다.
      • set: 값을 설정한다.

기타

this : 내 객체 인스턴스의 주소값

ex)

this.name : 해당 인스턴스의 name 필드 값 접근

profile
Just Do It

0개의 댓글