본문 바로가기

배운 책들 정리/자바 완전 정복

자바의 정석 5,6 - 배열, 객체 (수정중)

1 팁

 

1. 

 

 

 

2 복습

 

1. 

 

스킵

 

 

3 이론

 

1. 객체

 

 

객체는 여러개 있을 수 있지만 클래스는 1개

 

2. 객체 2

 

클래스 : static이 붙음

인스턴스 : 객체 선언해야 쓸 수 있음

지역 변수 : 객체 선언 안해도 됨.

 

 

 

 

 

4 실습

 

1.  객체 선언하기

 

 

*  C0516_03 (main)

package j0516;

/**
 * C0516_03
 */
public class C0516_03 {
    public static void main(String[] args) {
        // 변수선언
        int a = 0;

        // 객체 선언
        Tv t = new Tv();

        t.color = "white";
        System.out.println(t.color);

        // 객체 선언
        Tv t2 = new Tv();
        t2.color = "red";
        System.out.println(t2.color);

    }

}

 

 

 

*  C0516_04 (main)

package j0516;

/**
 * C0516_03
 */
public class C0516_04 {
    public static void main(String[] args) {

        // //기존 선언 방식
        // Scanner scan = new Scanner(System.in);
        // String name = "";
        // int kor = 0, eng = 0, math=0,total=0,rank = 0;
        // double avg =0;
        // name="홍길동";
        // kor=100;
        // eng=100;
        // math=100;
        // total = kor+eng+math;
        // avg = total/3.0;

        // 객체 선언 방식
        Student1 s1 = new Student1();
        s1.name = "홍길동";
        s1.kor = 100;
        s1.eng = 100;
        s1.math = 100;
        s1.sum();
        s1.average();

        System.out.println(s1.avg);

        Student1 s2 = new Student1();
        s2.name = "유관순";
        s2.kor = 99;
        s2.eng = 99;
        s2.math = 90;
        s2.sum();
        s2.average();

    }
}

 

 

 

*  Tv (클래스)

package j0516;

public class Tv {
    String color;
    boolean power;
    int channel;

    void power() {
        power = !power;
    }

    void channelUp() {
        channel++;
    }

    void channelDown() {
        channel--;
    }

}

 

* Student 1 (클래스)

package j0516;

public class Student1 {
    String name;
    int kor, eng, math, total, rank;
    double avg;

    void sum() {
        total = kor + eng + math;
    }

    void average() {
        avg = total / 3.0;
    }

}

 

2. TV 기능 2 

 

* C0516_05 (main)

 

package j0516;

import java.util.Scanner;

/**
 * C0516_03
 */
public class C0516_05 {
    public static void main(String[] args) { // 메인메소드
        // 리모콘
        // 1,2,3,4,5,6,7,8,9
        // channelup, channeldown, 이전보기, 자막
        // volumeup, volumedown,음소거
        // 전원

        Scanner scan = new Scanner(System.in);
        int choice = 0;
        int tempVolume = 0; // 임시볼륨 저장변수
        // 객체 선언
        Tv t = new Tv();

        while (true) {
            System.out.println("[리모트 프로그램]");
            System.out.println("1. 전원 on/off");
            System.out.println("2. 채널 Up");
            System.out.println("3. 채널 Down");
            System.out.println("4. 볼륨 Up");
            System.out.println("5. 볼륨 Down");
            System.out.println("6. 음소거");
            System.out.println("0. 종료");
            System.out.println("------------------------");
            System.out.println("원하는 번호를 입력하세요.");
            choice = scan.nextInt();

            if (choice == 0) {
                System.out.println("종료합니다");
                break;
            }

            switch (choice) {
                case 1:
                    t.power(); // 객체 사용법 : 참조변수명.메소드명
                    if (t.power == true) {
                        System.out.println("전원이 On입니다.");
                    } else
                        System.out.println("전원을 Off입니다.");
                    System.out.println();
                    break;

                case 2:
                    if (t.power == false) {
                        System.out.println("전원을 on해야함");
                        break;
                    }

                    t.channelUp();
                    System.out.println("현재 채널 : " + t.channel);
                    System.out.println();

                    break;

                case 3:
                    if (t.power == false) {
                        System.out.println("전원을 on해야함");
                        break;
                    }

                    t.channelDown();
                    System.out.println("현재 채널 : " + t.channel);
                    System.out.println();
                    break;

                case 4:
                    if (t.power == false) {
                        System.out.println("전원을 켜야 합니다.");
                        break;
                    }

                    t.volumeUp();
                    System.out.println("현재 볼륨 : " + t.volume);
                    break;

                case 5:
                    if (t.power == false) {
                        System.out.println("모루");
                        break;
                    }
                    t.volumeDown();
                    System.out.println("현재 볼륨 : " + t.volume);
                    break;

                case 6:
                    if (t.power == false) {
                        System.out.println("전원을 On해야 기능이 구동됩니다.");
                        System.out.println();
                        break;
                    }

                    if (t.volume == 0) {
                        t.volume = tempVolume; // 임시볼륨높이를 입력
                        System.out.println("[음소거 해제합니다]");
                        System.out.println("현재 볼륨 : " + t.volume);
                        System.out.println();
                    } else {
                        tempVolume = t.volume; // 현재 볼륨높이를 저장
                        t.volume = 0;
                        System.out.println("[음소거 실행합니다]");
                        System.out.println("현재 볼륨 : " + t.volume);
                        System.out.println();
                    }
                    System.out.println();
                    break;

            }// switch
        } // while

    } // main
}// class

 

* Tv (Class)

 

package j0516;

public class Tv {
    String color;
    boolean power;
    int channel;
    int volume;

    // 지역변수는 기본값을 안 넣으면 에러 발생
    void power() { // 지역메소드
        power = !power;
    }

    void channelUp() {
        if (channel >= 999) {
            channel = 1;
            return;
        }
        channel++;
    }

    void channelDown() {
        if (channel <= 1) {
            channel = 999;
            return;
        }
        channel--;
    }

    void volumeUp() {
        if (volume >= 50) {
            volume = 1;
            return; // 빠져 나옴
        }
        volume++;
    }

    void volumeDown() {
        if (volume <= 1) {
            volume = 50;
            return;
        }
        volume--;
    }

}

 

 

 

 

5 문제풀이

1. 로또 프로그램

 

 

 

 

 

 

* 핵심

- class는 new ~~로 선언해야 하는데 객체는 인스턴스는 선언 안해도 됨.

- 메서드는 객체 선언 안해도 됨. (일반적으로 메서드 많이 사용 안해서 객체 선언을 해야 함)

 

 

 

 

 

* 0516 실습 링크

 

 

GitHub - RosePaku/bigdata_java: 빅데이터_자바의_정석

빅데이터_자바의_정석. Contribute to RosePaku/bigdata_java development by creating an account on GitHub.

github.com

 

728x90
반응형
LIST