728x90
반응형
SMALL

클래스 == 데이터 + 함수

클래스의 탄생 과정

  1. 변수 : 하나의 데이터를 저장할 수 있는 공간
  2. 배열 : 같은 종류의 여러 데이터를 하나로 저장할 수 있는 공간
  3. 구조체 : 서로 연관된 여러 데이터(종류 관계 X) 를 하나로 저장할 수 있는 공간
  4. 클래스 : 데이터와 함수의 결합(구조체 + 함수)

클래스 == 사용자 정의 타입

원하는 타입을 직접 만들 수 있습니다.

시간을 다루는 타입을 직접 만들고 싶다면?

  • 기본형 8개가 아닌 새로운 타입인 시간 클래스를 작성한다.

사용자 3명의 시간을 기록하려고 한다.

  • 클래스 사용을 하지 않고 관리해 보기!
**class NoneClassTime {
    public static void main(String[] args) {
        // 총 3명 의 시간을 변수로 관리
        int hour1, hour2, hour3;
        int minute1, minute2, minute3;
        int second1, second2, second3;

        // 총 3명 의 시간을 배열로 관리
        int[] hour = new int[3];
        int[] minute = new int[3];
        int[] second = new int[3];
    }
}**
  • 클래스로 만들어서 관리해 보기!
class Time3_1 {
    int hour;
    int minute;
    int second;
}
class Time3_1Main {
    public static void main(String[] args) {
        // 총 3명 의 시간을 객체로 관리
        Time3_1 t1 = new Time3_1();
        Time3_1 t2 = new Time3_1();
        Time3_1 t3 = new Time3_1();

        // 총 3명 의 시간을 객체 배열로 관리
        Time3_1[] timeArr = new Time3_1[3];
        timeArr[0] = new Time3_1();
        timeArr[1] = new Time3_1();
        timeArr[2] = new Time3_1();
    }
}
728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

기본형 매개변수 와 참조형 매개변수  (0) 2023.01.20
메서드  (0) 2023.01.20
객체의 생성과 배열  (0) 2023.01.20
클래스와 객체  (0) 2023.01.20
Arrays  (0) 2023.01.19
728x90
반응형
SMALL

객체의 생성

클래스명 변수명;

  • 클래스의 객체를 참조하기 위한 참조변수를 선언

변수명 = new 클래스명;

  • 생성된 객체의 주소를 참조변수에 저장

객체 생성 방법

  • Tv t;
    • Tv 클래스 타입의 참조변수 t를 선언
  • t = new Tv();
    • Tv인스턴스를 생성한 후
    • 생성된 Tv인스턴스의 주소를 t에 저장

객체의 사용

TV 클래스

속성

  • 색깔
  • 전원상태
  • 채널

기능

  • 파워(전원)
  • 채널 증가
  • 채널 감소

TV1 인스턴스

속성

  • 색깔 : 검정색
  • 전원상태 : false
  • 채널 : 1

기능

  • 파워(전원)
  • 채널 증가
  • 채널 감소

TV2 인스턴스

속성

  • 색깔 : 흰색
  • 전원상태 : false
  • 채널 : 1

기능

  • 파워(전원)
  • 채널 증가
  • 채널 감소
class Tv1_1 {
    // 속성 : 변수 선언
    String color; // 색깔
    boolean power = false; // 전원상태 : false 로 초기화
    int channel = 1;  // 채널 : 1 로 초기화

    // 기능 : 메서드 선언
    void power() {  // 전원 기능
        power = !power;
        if (power) {
            System.out.println("전원 ON");
        } else {
            System.out.println("전원 OFF");
        }
    }

    void channelUp() { // 채널 증가
        channel++;
        System.out.println("채널 증가");
    }

    void channelDown() { // 채널 감소
        channel--;
        System.out.println("채널 감소");
    }
}

class Tv1_1Main {
    public static void main(String[] args) {
        Tv1_1 t1 = new Tv1_1(); // TV1 인스턴스
        t1.color = "검정색"; // 색깔 초기화
        Tv1_1 t2 = new Tv1_1(); // TV2 인스턴스
        t2.color = "흰색"; // 색깔 초기화

        System.out.println("TV1 인스턴스 색깔 = " + t1.color);
        System.out.println("TV2 인스턴스 색깔 = " + t2.color);

        t1.power(); // 메서드 호출
        System.out.println("TV1 인스턴스 채널 = " + t1.channel);

        t1.channelUp(); // 메서드 호출
        System.out.println("TV1 인스턴스 채널 : " + t1.channel);
        t1.channelDown(); // 메서드 호출
        System.out.println("TV1 인스턴스 채널 : " + t1.channel);

        t1.power(); // 메서드 호출

        // TV2 인스턴스 참조변수에 TV1 인스턴스의 주소 저장 했을 때
        t2 = t1;

        System.out.println("TV1 인스턴스 색깔 = " + t1.color); // 검정색
        System.out.println("TV2 인스턴스 색깔 = " + t2.color); // 검정색

        // 흰색이었던 TV2 인스턴스 의 색깔이 검정색으로 바뀐건가요?
        // 아닙니다.
        // 참조변수 t2 에 저장되어있던 TV2 인스턴스 의 주소가 없어지고
        // TV1 의 주소가 t2 참조변수에 저장이 됩니다

        // 따라서 t2 = t1; 이후 부터는
        // t2 참조변수로는 더 이상 TV2 인스턴스 에 접근할 수 없습니다.

    }
}

객체 배열

객체 배열 == 참조변수 배열Tv[] tvArr = new Tv[3];여러 개의 객체를 담을 수 있는 배열

class Tv1_2 {
    // 속성 : 변수 선언
    String color; // 색깔
    boolean power = false; // 전원상태 : false 로 초기화
    int channel = 1;  // 채널 : 1 로 초기화
    // 브랜드 이름 속성 추가
    String brand;

    // 기능 : 메서드 선언
    void power() {  // 전원 기능
        power = !power;
        if (power) {
            System.out.println("전원 ON");
        } else {
            System.out.println("전원 OFF");
        }
    }

    void channelUp() { // 채널 증가
        channel++;
        System.out.println("채널 증가");
    }

    void channelDown() { // 채널 감소
        channel--;
        System.out.println("채널 감소");
    }
}

class Tv1_2Main {
    public static void main(String[] args) {
        Tv1_2[] tvArr = new Tv1_2[3];

        tvArr[0] = new Tv1_2();
        tvArr[1] = new Tv1_2();
        tvArr[2] = new Tv1_2();

        tvArr[0].color = "보라색";
        tvArr[1].color = "주황색";
        tvArr[2].color = "핑크색";

        for (int i = 0; i < tvArr.length; i++) {
            System.out.println(i + 1 + "번째 Tv인스턴스 색깔: " + tvArr[i].color);
        }

        for (int i = 0; i < tvArr.length; i++) {
            System.out.print(i + 1 + "번째 Tv인스턴스 " );
            tvArr[i].power();
        }

        System.out.println();
        // 브랜드명 추가 전 확인
        for (int i = 0; i < tvArr.length; i++) {
            System.out.print(i + 1 + "번째 Tv인스턴스의 브랜드 명: " );
            System.out.println(tvArr[i].brand);
        }
        System.out.println();

        // 새로운 참조변수에 배열 안에 들어있는 객체 주소 값 배정
        Tv1_2 samsung = tvArr[0];
        Tv1_2 lg = tvArr[1];
        Tv1_2 apple = tvArr[2];

        // 참조변수를 사용해서 배열안에 넣어준 객체에 접근해서 각 인스턴스에 브랜드 이름 추가하기
        samsung.brand = "samsung";
        lg.brand = "lg";
        apple.brand = "apple";

        for (int i = 0; i < tvArr.length; i++) {
            System.out.print(i + 1 + "번째 Tv인스턴스의 브랜드 명: " );
            System.out.println(tvArr[i].brand);
        }
    }
}
728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

메서드  (0) 2023.01.20
클래스의 정의  (0) 2023.01.20
클래스와 객체  (0) 2023.01.20
Arrays  (0) 2023.01.19
2차원 배열  (0) 2023.01.19
728x90
반응형
SMALL

클래스 객체

제품 설계도 제품
TV 설계도 TV
붕어빵 기계 붕어빵

 

클래스의 정의 : 클래스란 객체를 정의해 놓은 것입니다.
클래스의 용도 : 클래스는 객체를 생성하는데 사용합니다.

객체의 정의 : 실제로 존재하는 것! , 사물 또는 개념
객체의 용도 : 객체가 가지고 있는 속성과 기능에 따라 다릅니다.

객체와 인스턴스 용어 정리

  • 객체 : 모든 인스턴스를 대표하는 일반적인 용어 (Tv 객체)
  • 인스턴스 : 특정 클래스로부터 생성된 객체 (Tv 클래스를 사용해서 만든 Tv인스턴스)
  • 인스턴스화 : 클래스 => 인스턴스(객체)

객체의 구성요소

객체 = 속성(변수) + 기능(메서드)

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

클래스의 정의  (0) 2023.01.20
객체의 생성과 배열  (0) 2023.01.20
Arrays  (0) 2023.01.19
2차원 배열  (0) 2023.01.19
String 배열  (0) 2023.01.19

+ Recent posts