Dev/Java

[Java 기초] 6. 볡수 클래슀λ₯Ό μ‚¬μš©ν•œ 개발

KeyDi 2023. 3. 12. 03:25
728x90

πŸ‘€μœ μš©ν•œ 정보

ν•΄λ‹Ή λ³€μˆ˜ Rename (eclipse)

  • λ³€μˆ˜ 우클릭 - Refacto - Rename
  • Alt + Shift + R

import 정리

  • ctrl+ shift+ o
πŸ’‘
ctrl + shift + f와 ν•¨κ»˜ 자주 눌러주자.

double의 μ†Œμˆ˜μ  였차 보정 (뢀동 μ†Œμˆ˜μ  보정)

  • 뢀동 μ†Œμˆ˜μ μ˜ κ°€μˆ˜λΆ€ 15자리λ₯Ό λ„˜μ–΄μ„œλ©΄ μ˜€λ²„ ν”Œλ‘œμš°κ°€ λ°œμƒν•˜κ²Œ λ˜μ–΄ κ°’μ˜ μ˜€μ°¨κ°€ λ°œμƒν•˜κ²Œ λœλ‹€ (λΆ€λ™μ†Œμˆ˜μ  수의 ν‘œν˜„ λ²”μœ„)
  • 10μ§„μˆ˜λ‘œλŠ” μœ ν•œ μ†Œμˆ˜μ΄μ§€λ§Œ, 2μ§„μˆ˜λ‘œ λ¬΄ν•œ μ†Œμˆ˜μΈ 경우 였차 λ°œμƒ
πŸ’‘
double의 였차 epsilon 값을 μ΄μš©ν•˜μ—¬ 였차 보정 κ°€λŠ₯

πŸ’‘5μž₯ ν”Όλ“œλ°± Tip

πŸ’‘
λ©”μ†Œλ“œ μž‘μ„± μ‹œ, μž¬μ‚¬μš©μ„±μ„ 항상 κ³ λ €ν•˜μž! (μ½”λ“œ μ˜μ‘΄μ„± 쀄이기)


πŸ“˜ 6μž₯ 볡수 클래슀λ₯Ό μ‚¬μš©ν•œ 개발

μ†ŒμŠ€ 파일의 뢄리

λŒ€κ·œλͺ¨ κ°œλ°œμ—μ„œλŠ” 혼자 개발이 μ–΄λ ΅κ³ , λΆ„λ‹΄ ν˜‘μ—… ν•˜μ—¬ μ†ŒμŠ€λ₯Ό λͺ¨λ“ˆν™” ν•΄μ•Ό ν•œλ‹€.

(1개의 μ†ŒμŠ€ νŒŒμΌλ‘œλŠ” 개발의 ν•œκ³„)

계산기 ν”„λ‘œκ·Έλž¨

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int a = 10;
        int b = 2;
        int total = add(a, b);
        int delta = minus(a, b);
        System.out.println("λ”ν•˜λ©΄ " + total + ", λΉΌλ©΄ " + delta);
    }
    
    private static int add(int a, int b) {
        return a + b;
    }
    
    private static int minus(int a, int b) {
        return a - b;
    }
}

계산 클래슀 뢄리

public class CalcLogic {
    public static int add(int a, int b) {
        return a + b;
    }

    public static int minus(int a, int b) {
        return a - b;
    }
}
import com.example.logics.CalcLogic;

public class Main {

    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int total = CalcLogic.add(a, b);
        int delta = CalcLogic.minus(a, b);
        System.out.println("λ”ν•˜λ©΄ " + total + ", λΉΌλ©΄ " + delta);
    }

}

νŒ¨ν‚€μ§€ (package)

Javaμ—μ„œλŠ” 각 클래슀λ₯Ό νŒ¨ν‚€μ§€(package) λΌλŠ” 그룹에 μ†Œμ†μ‹œμΌœ, λΆ„λ₯˜, 관리가 λ˜λ„λ‘ ν•  수 μžˆλ‹€.

πŸ’‘
main() λ©”μ†Œλ“œμ˜ λΌμΈμˆ˜κ°€ λŠ˜μ–΄λ‚˜λ©΄, λ©”μ†Œλ“œ 뢄리 β†’ λ©”μ†Œλ“œ 수 λŠ˜μ–΄λ‚˜λ©΄, 볡수의 클래슀둜 뢄리 β†’ 클래슀 μˆ˜κ°€ λŠ˜μ–΄λ‚˜λ©΄ 볡수의 νŒ¨ν‚€μ§€λ‘œ 뢄리

νŒ¨ν‚€μ§€ λΆ„λ¦¬ν•˜κΈ°

πŸ’‘
Calc ν΄λž˜μŠ€μ™€ CalcLogic의 클래슀λ₯Ό λΆ„λ¦¬ν•˜κΈ° μœ„ν•΄ 각 νŒ¨ν‚€μ§€ 생성

πŸ’‘
각 class νŒŒμΌμ„ μƒˆλ‘œ μƒμ„±ν•œ νŒ¨ν‚€μ§€λ‘œ 이동

πŸ’‘
ν•΄λ‹Ή μ†ŒμŠ€ μ½”λ“œμ— λ³€κ²½λœ νŒ¨ν‚€μ§€ μ½”λ“œ

λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— μžˆλŠ” 클래슀 호좜

importκ°€ μ—†λŠ” 경우

πŸ’‘
com.example.logics.CalLogic 이처럼 λͺ¨λ“  νŒ¨ν‚€μ§€ μ£Όμ†Œμ™€ 클래슀λͺ…을 λͺ…μ‹œν•΄μ„œ 호좜

이름 곡간 (name space)

μžμ‹ μ΄ μž‘μ„±ν•œ ν΄λž˜μŠ€μ— λŒ€ν•΄, κ°œλ°œμžκ°€ 자유둜운 이름을 μ§€μ •ν•  수 μžˆλ‹€.

νŒ¨ν‚€μ§€λͺ… 자체의 μΆ©λŒμ„ ν”Όν•˜κΈ° μœ„ν•΄ λ³΄μœ ν•œ λ„λ©”μΈμ˜ μ•žλ’€λ₯Ό λ°”κΎΈμ–΄ νŒ¨ν‚€μ§€λͺ…μœΌλ‘œ μ‚¬μš©ν•œλ‹€.

νŒ¨ν‚€μ§€λͺ…

πŸ’‘
com.도메인λͺ….클래슀

λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— μžˆλŠ” 클래슀 μœ„μΉ˜ import

πŸ’‘
ν•΄λ‹Ή ν΄λž˜μŠ€κ°€ μœ„μΉ˜ν•œ νŒ¨ν‚€μ§€λ₯Ό importν•˜λ©΄, κ·Έ νŒ¨ν‚€μ§€λ₯Ό ν˜ΈμΆœν•  λ•Œ 맀번 μœ„μΉ˜λ₯Ό λͺ…μ‹œν•˜μ§€ μ•Šκ³ , μƒλž΅ν•  수 μžˆλ‹€! (full package μ§€μ • μƒλž΅)

Java API

πŸ’‘
API(Application Programming Interface(μ‘μš© ν”„λ‘œκ·Έλž¨ ν”„λ‘œκ·Έλž˜λ° μΈν„°νŽ˜μ΄μŠ€))

Java API μ‚¬μš© μ˜ˆμ‹œ

import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        int[] heights = {170, 240, 300, 15, 320};
        Arrays.sort(heights);  //java sort μ •λ ¬ API μ‚¬μš©
        
        for (int height : heights) {
            System.out.println(height);
        }
    }
}

πŸ’‘
sort()둜 μ •λ ¬λœ heightsλŠ” call by refference둜 μ›λž˜μ˜ λ°°μ—΄ λ³€μˆ˜ κ°’ μžμ²΄κ°€ λ³€ν•˜κ²Œ λœλ‹€.

java API에 ν¬ν•¨λœ λŒ€ν‘œμ μΈ νŒ¨ν‚€μ§€

πŸ’‘
String, System 등은 java.lang에 μ†ν•΄μžˆμ–΄μ„œ κ°œλ³„ import없이 μ‚¬μš©ν•  수 μžˆμ—ˆλ‹€.

API reference

API reference for Java Platform, Standard Edition
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/module-summary.html
πŸ’‘
곡식 λ¬Έμ„œλ₯Ό λ³΄λŠ” μŠ΅κ΄€μ„ λ“€μ΄μž

좜λ ₯ 포멧


πŸ“μ—°μŠ΅ 문제

6-1

import java.lang.Thread;

public class Exam6_1 {

    public static void main(String[] args) throws Exception {
        System.out.println("3μ΄ˆκ°„ κΈ°λ‹€λ¦Ό!");
        Thread.sleep(3000);
        System.out.println("끝");
    }
}

6-2

public class Exam6_2 {

    public static void main(String[] args) {

        for (int i = 1; i < 10; i++) {
            for (int j = 2; j < 10; j++) {
                if (j == 9) {
                    System.out.printf("%d * %d = %2d", j, i, j * i);
                } else {
                    System.out.printf("%d * %d = %2d \t", j, i, j * i);
                }
            }
            System.out.println();
        }
    }
}

6-3

public class Exam6_3 {

    public static void main(String[] args) {
        
        for (int i = 0; i < 60; i++) {
            for (int j = 1; j <= 12; j++) {
                if (j == 12) {
                    System.out.printf("%d:%02d", j, i);
                } else {
                    System.out.printf("%d:%02d ", j, i);
                }
            }
            System.out.println();
        }
    }
}

6-4

import java.util.Random;
import java.util.Scanner;

public class Exam6_4 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random random = new Random();
        System.out.println("던질 횟수λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”");
        long tries = sc.nextLong();
        int hits = 0;

        for (int i = 0; i < tries; i++) {
            // -1.0 ~ +1.0 λ‚œμˆ˜ 생성
            double x = random.nextDouble() * 2 - 1;
            double y = random.nextDouble() * 2 - 1;
            if (Math.sqrt(x * x + y * y) <= 1) {
                hits++;
            }
        }

        double piEstimate = 4 * hits / (double) tries;
        System.out.println(piEstimate);
    }
}
πŸ’‘
μ‹€μ œ PI와 κ°€κΉŒμš΄ 값이 λ‚˜μ™”λ‹€!

Uploaded by N2T

728x90
λ°˜μ‘ν˜•