자바 스터디

[자바의 정석] CH-5 ~ CH-6

changha. 2023. 4. 27. 16:37

객체지향 이론의 기본 개념

: 실제 세계는 사물(객체) 이루어져 있고, 발생하는 모든 사건들은 사물간의 상호작용이다.

                

객체 지향의 장점

: 1. 코드의 재사용성 

  2. 코드 관리 용이

  3. 신뢰성 높은 프로그래밍 가능

       : 코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지

 

너무 객체지향개념에 얽매여서 고민하기보다 기능적으로 프로그램을 일단 만들고 객체지향적 방향으로 코드를 개선해 나가는 것이 좋다.

 

클래스 정의

: 객체를 정의해 놓은 .

 

클래스 용도

: 객체를 생성하는데 사용 .

 

클래스는 단지 객체를 생성하는데 사용될 , 객체 자체는 아님.

ex)

클래스: tv설계도, 객체: tv 

 

인스턴스

: 클래스로부터 만들어진 객체를 뜻함. 

ex)

‘책상은 인스턴스’ 보다 ‘책상은 객체’라는 쪽이, 

책상은 책상 클래스의 객체이다.’ 보다책상은 책상 클래스의 인스턴스다.’라고 하는 것이 자연스럽다. 

 

객체의 구성요소

- 속성 :

멤버변수, 특성, 필드, 상태

- 기능 :

메서드, 함수, 행위 

 

ex)

속성 - 채널, 기능 - 채널 높이기 

 

인스턴스의 생성과 사용 

Tv t;
t = new Tv();

1.  Tv 클래스 타입의 참조변수 t를 선언함. 

2. 참조변수 t에 연산자 new에 의한 Tv클래스의 인스턴스가 메모리의 빈 공간에 생성됨.

 

인스턴스와 참조변수의 관계는 마치 우리가 일상생활에서 사용하는 TV와 TV리모컨의 관계와 같다.

<인스턴스는 참조변수를 통해서만 다룰 수 있으며, 참조변수의 타입은 인스턴스의 타입과 일치해야한다.>

 

 

객체의 생성과 사용 

1. 클래스 작성(설계도)

2. 객체 생성(제품)

3. 객체 사용(제품):

     변수, 메서드 사용하는 것 

 

 

Tv t;
t = new Tv();

t는 리모컨임, 리모컨으로 객체에 연결 해야( = 대입 연산자) 사용 가능

Tv t1;
Tv t2;

t1 = new Tv();
t2 = new Tv();

t2 = t1;

t2 = t1; 은 

t2의 리모컨이 t1객체를 가리키는 것임 

 

 

객체의 배열 == 참조변수 배열 

Tv t1 = new Tv();
Tv t2 = new Tv();
Tv t3 = new Tv();

Tv[] tvArr = new Tv[3];
tvArr[0] = new Tv();
tvArr[1] = new Tv();
tvArr[2] = new Tv();

주의 해야 할 점

: 객체 배열 만들 때 tvArr[0],[1],[2]를 하나씩 다 참조해야 함 

 

 

클래스 정의(1)

- 설계도

- 데이터 + 함수 

- 사용자 정의 타입 

 

클래스 == 데이터 + 함수 

1. 변수

: 하나의 데이터를 저장할 수 있는 공간 

2. 배열

: 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간 

3. 구조체 

: 서로 관련된 여러 데이터(종류 관계x)를 하나로 저장할 수 있는 공간 

4. 클래스(데이터 + 함수) 

: 데이터와 함수의 결합(구조체 + 함수) 

 

사용자 정의 타입

변수 종류

- 지역변수(lv)

- 클래스변수(cv)

- 인스턴스변수(iv):

    객체는 iv를 묶어 놓은 것 (중요!!)

 

※ SSD,HDD 보조기억장치에 파일이 저장 돼있음, 이를 CPU에서 바로 못 가져옴, RAM을 거쳐서 가져와야 됨

보조기억장치 -> RAM 을 로딩이라 함 

 

cv는 객체 이름을 쓰는 것을 권장 

 

 

메서드

: 문장들을 묶어 놓은 것 

 

장점

- 코드 중복 제거

- 코드 관리 용이 

 

하나의 메서드는 한 가지 기능만 수행 되도록 작성 

 

메서드의 호출 

: 메서드이름(값1, 값2, ...)

반환값

만약 반환 타입이 return 타입과 불일치 할 때

: char,byte,short와 같은 int로 바꿀 수 있는 타입은 자동형변환 됨. 

 

호출스택

:메서드 수행에 필요한 메모리가 제공되는 공간

메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제

기본형 매개변수

: 기본형(int, float, char, String, byte, boolean, double, long) 매개변수는 값을 읽기만 할 수 있고(read only), 변경 불가

 

public class Ex6_6 {
    public static void main(String[] args) {
        Data d = new Data();
        d.x = 10;
        System.out.println("main() : x = " + d.x);
        change(d.x);

        System.out.println("After change(d.x)");
        System.out.println("main() : x = " + d.x);

    }

    static void change(int x){
        x = 1000;
        System.out.println("change() : x = " + x);
    }
}

class Data {
    int x;

}

실행 결과

그림으로 많이 그려서 이해 하기!! 

'자바 스터디' 카테고리의 다른 글

[자바의 정석] CH8  (0) 2023.06.24
[자바의 정석] CH7  (0) 2023.06.15
[자바의 정석] CH-6  (0) 2023.05.04
[자바의 정석] CH3 ~ CH4  (0) 2023.03.30
[자바의 정석] CH1 ~ CH2 정리  (0) 2023.03.24