๐™น๐šŠ๐šŸ๐šŠ

[Java] ํด๋ž˜์Šค์™€ ๊ฐ์ฒด

ํ•ด๋ฒ„๋‹ˆ 2024. 4. 14. 16:34
๋ฐ˜์‘ํ˜•

ํด๋ž˜์Šค์™€ ๊ฐ์ฒด์˜ ์ •์˜์™€ ์šฉ๋„

ํด๋ž˜์Šค์˜ ์ •์˜ : ํด๋ž˜์Šค๋ž€ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•ด ๋†“์€ ๊ฒƒ์ด๋‹ค.
ํด๋ž˜์Šค์˜ ์šฉ๋„ : ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค.


๊ฐ์ฒด์˜ ์ •์˜ : ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ. ์‚ฌ๋ฌผ ๋˜๋Š” ๊ฐœ๋…
๊ฐ์ฒด์˜ ์šฉ๋„ : ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธฐ๋Šฅ๊ณผ ์†์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„


์œ ํ˜•์˜ ๊ฐ์ฒด : ์ฑ…์ƒ, ์˜์ž, ์ž๋™์ฐจ, TV์™€ ๊ฐ™์€ ์‚ฌ๋ฌผ
๋ฌดํ˜•์˜ ๊ฐ์ฒด : ์ˆ˜ํ•™๊ณต์‹, ํ”„๋กœ๊ทธ๋žจ ์—๋Ÿฌ์™€ ๊ฐ™์€ ๋…ผ๋ฆฌ๋‚˜ ๊ฐœ๋…




 

์˜ˆ์‹œ

ํด๋ž˜์Šค : ๋ถ•์–ด๋นต ํ‹€

๊ฐ์ฒด : ๋ถ•์–ด๋นต (์‹ค์ œ๋กœ ์ฐ์–ด์„œ ๋‚˜์˜จ ๋ถ•์–ด๋นต)

 

๊ฐ์ฒด ์ง€ํ–ฅ์—์„œ ๊ฐ์ฒด๋Š” ์‚ฌ๋ฌผ๊ณผ ๊ฐ™์€ ์œ ํ˜•์ ์ธ ๊ฒƒ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๊ฐœ๋…์ด๋‚˜ ๋…ผ๋ฆฌ์™€ ๊ฐ™์€ ๋ฌดํ˜•์ ์ธ ๊ฒƒ๋“ค๋„ ๊ฐ์ฒด๋กœ ๊ฐ„์ฃผํ•œ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฑด ๋ถ•์–ด๋นต(๊ฐ์ฒด) ๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์ด์ง€,

๋ถ•์–ด๋นตํ‹€(ํด๋ž˜์Šค)๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

๋ถ•์–ด๋นตํ‹€(ํด๋ž˜์Šค) ๋Š” ๋ถ•์–ด๋นต(๊ฐ์ฒด) ์„ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉ๋  ๋ฟ์ด๋‹ค.




โ“ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ , ํด๋ž˜์Šค๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ด์œ โ“

์„ค๊ณ„๋„(ํด๋ž˜์Šค)๋ฅผ ํ†ตํ•ด์„œ ์ œํ’ˆ(๊ฐ์ฒด) ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

ํด๋ž˜์Šค๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์ž˜ ๋งŒ๋“ค์–ด ๋†“๊ธฐ๋งŒ ํ•˜๋ฉด, ๋งค๋ฒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์–ด๋–ป๊ฒŒ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ• ์ง€๋ฅผ ๊ณ ๋ฏผํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

(ํด๋ž˜์Šค์—์„œ ๋ฐ”๋กœ ๊ฐ์ฒด๋ฅผ ์ฐ์–ด๋‚ด๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค)






 

 


๊ฐ์ฒด์™€ ์ธ์Šคํ„ด์Šค

ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šคํ™”(instantiate) โ†’ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •

ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค(instance) โ†’ ์–ด๋–ค ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด

โ†’ ๊ฐ์ฒด = ์ธ์Šคํ„ด์Šค ๊ฑฐ์˜ ๋™์ผ



๐Ÿ“บ ๐Ÿ“บ ๐Ÿ“บ ๐Ÿ“บ ๐Ÿ“บ

๊ฐ๊ฐ tv๋Š” ์ธ์Šคํ„ด์Šค๋ผ๊ณ  ํ•˜๊ณ ,

์ด ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ์ฒด์ด๋‹ค.






 

JDK(Java Development Kit)

โ†’ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•ด ๋งŽ์€ ์ˆ˜์˜ ์œ ์šฉํ•œ ํด๋ž˜์Šค(Java API)๋ฅผ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

 

 

 

 

 

 


๊ฐ์ฒด์˜ ๊ตฌ์„ฑ์š”์†Œ - ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ

๊ฐ์ฒด๋Š” ์†์„ฑ๊ณผ ๊ธฐ๋Šฅ์˜ ์ง‘ํ•ฉ์ด๋‹ค.

์†์„ฑ(property) : ๋ฉค๋ฒ„๋ณ€์ˆ˜(member variable), ํŠน์„ฑ(attribute), ํ•„๋“œ(field), ์ƒํƒœ(state)
๊ธฐ๋Šฅ(function) : ๋ฉ”์„œ๋“œ(method), ํ•จ์ˆ˜(function), ํ–‰์œ„(behavior)



์˜ˆ์‹œ)

์†์„ฑ : ํฌ๊ธฐ, ๊ธธ์ด, ๋†’์ด, ์ƒ‰์ƒ, ๋ณผ๋ฅจ, ์ฑ„๋„ ๋“ฑ

๊ธฐ๋Šฅ : ์ผœ๊ธฐ, ๋„๊ธฐ, ๋ณผ๋ฅจ ๋†’์ด๊ธฐ, ๋ณผ๋ฅจ ๋‚ฎ์ถ”๊ธฐ, ์ฑ„๋„ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋“ฑ






 

 

 


์ธ์Šคํ„ด์Šค์˜ ์ƒ์„ฑ๊ณผ ์‚ฌ์šฉ

1๏ธโƒฃ Tv ์ธ์Šคํ„ด์Šค ์ƒ์„ฑํ•ด๋ณด๊ธฐ

class Tv {
    // Tv ์†์„ฑ
    String color;
    boolean power;
    int channer;

    // Tv์˜ ๊ธฐ๋Šฅ
    void power(){
        power = !power;

        String onOff = (power) ? "on" : "off";
        System.out.println("์ „์› "+ onOff);
    }

    void channelUp() {
        ++channer;
        System.out.println("์ฑ„๋„ "+ channer);
    }

    void channelDown() {
        --channer;
        System.out.println("์ฑ„๋„ "+ channer);
    }
}

public class TvTest {
    public static void main(String[] args){
        Tv t = new Tv(); // Tv์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
        t.channer = 7;
        t.power = false;
        // ์ฑ„๋„ 7์— ์ „์›์€ ๊บผ์ ธ์žˆ๋Š” ์ƒํƒœ

        t.power(); // ์ „์› on
        t.channelDown();  // ์ฑ„๋„ 6
    }
}

 

Tv t โ†’ Tv ํด๋ž˜์Šค ํƒ€์ž…์˜ ์ฐธ์กฐ๋ณ€์ˆ˜ t ์„ ์–ธ. ์•„์ง ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ ์•„๋ฌด๊ฒƒ๋„ ๋ชปํ•œ๋‹ค.

t = new Tv(); โ†’ new์— ์˜ํ•ด Tv ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋นˆ ๊ณต๊ฐ„ ์— ์ƒ์„ฑ๋œ๋‹ค.



 

 

์ธ์Šคํ„ด์Šค๋Š” ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ฐธ์กฐ๋ณ€์ˆ˜์˜ ํƒ€์ž…์€ ์ธ์Šคํ„ด์Šค์˜ ํƒ€์ž…๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•œ๋‹ค.

 

โ†’ TV๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด TV๋ฆฌ๋ชจ์ฝ˜์œผ๋กœ, ๋ถ•์–ด๋นต์„ ๋งŒ๋“ค๋ ค๋ฉด ๋ถ•์–ด๋นต ํ‹€์„ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋ง์ธ ๊ฒƒ ๊ฐ™๋‹ค.




 

 

 

 

 

 

 

2๏ธโƒฃ ์ธ์Šคํ„ด์Šค 2๊ฐœ ์ƒ์„ฑํ•˜๊ธฐ & ๋Œ€์ž…ํ•˜๊ธฐ

public class TvTest {
    public static void main(String[] args){
        Tv t1 = new Tv(); // Tv์ธ์Šคํ„ด์Šค1 ์ƒ์„ฑ
        Tv t2 = new Tv(); // Tv์ธ์Šคํ„ด์Šค2 ์ƒ์„ฑ

        t2 = t1;
        t1.channer=7;

        System.out.println(t1.channer); // 7
        System.out.println(t2.channer); // 7
    }
}





image

t2 = t1; ์„ ํ•˜๋ฉด ์œ„ ์‚ฌ์ง„์ฒ˜๋Ÿผ ๋œ๋‹ค.

 

t2์™€ t1 ๋‘˜ ๋‹ค t1์ด ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ™์ด ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๊ณ , t2๊ฐ€ ์›๋ž˜ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋˜ ์ธ์Šคํ„ด์Šค๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.

โ†’ ์ด๋ ‡๊ฒŒ ์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋„ ์—†๋Š” ์ธ์Šคํ„ด์Šค๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์–ด์งˆ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ โ€˜๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(Garbage Collector)์— ์˜ํ•ด์„œ ์ž๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋œ๋‹ค.






 

 


๊ฐ์ฒด ๋ฐฐ์—ด

class Tv {
    // Tv ์†์„ฑ
    String color;
    boolean power;
    int channel;

    // Tv์˜ ๊ธฐ๋Šฅ
    void power() {
        power = !power;
    }

    void channelUp() {
        ++channel;
    }

    void channelDown() {
        --channel;
    }
}

public class TvTest {
    public static void main(String[] args) {
        Tv[] tvArr = new Tv[3];
        // Tvํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐ„์„ 3๊ฐœ ๋งŒ๋“  ๊ฒƒ. 

        for (int i = 0; i < tvArr.length; i++) {
            tvArr[i] = new Tv();
            // ์™œ ์ด๋ ‡๊ฒŒ ๋‚ฏ์„ค์ง€? 
            tvArr[i].channel = i + 10;
        }

        for (int i = 0; i < tvArr.length; i++) {
            tvArr[i].channelUp();
            System.out.println(i + " : " + tvArr[i].channel + "๋ฒˆ");
        }

    }
}






 

 

 


ํด๋ž˜์Šค์˜ ๋˜ ๋‹ค๋ฅธ ์ •์˜

1๏ธโƒฃ ํด๋ž˜์Šค - ๋ฐ์ดํ„ฐ์™€ ํ•จ์ˆ˜์˜ ๊ฒฐํ•ฉ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ ํ˜•ํƒœ์˜ ๋ฐœ์ „๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

โ‘  ๋ณ€์ˆ˜

โ‘ก ๋ฐฐ์—ด

โ‘ข ๊ตฌ์กฐ์ฒด

โ‘ฃ ํด๋ž˜์Šค

 

Java์—์„œ String์ด๋ผ๋Š” ํด๋ž˜์Šค๋กœ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š”๋ฐ,

์ด๋ ‡๊ฒŒ ํด๋ž˜์Šค๋กœ ์ •์˜ํ•œ ์ด์œ ๋Š” ๋ฌธ์ž์—ด๊ณผ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š”๋ฐ ํ•„์š”ํ•œ ํ•จ์ˆ˜๋“ค์„ ํ•จ๊ป˜ ๋ฌถ๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค.

 

 

 

 

 

2๏ธโƒฃ ์‚ฌ์šฉ์ž์ •์˜ ํƒ€์ž…(user-defined type)

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒํ˜•(primitive type)์™ธ์— ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์„œ๋กœ ๊ด€๋ จ๋œ ๋ณ€์ˆ˜๋“ค์„ ๋ฌถ์–ด์„œ ํ•˜๋‚˜์˜ ํƒ€์ž…์œผ๋กœ ์ƒˆ๋กœ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์„ ์‚ฌ์šฉ์ž์ •์˜ ํƒ€์ž…์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

EX)

class Time {
    int hour;
    int minute;
    float second; 
}



 

 

 

 

 

๋ฐ˜์‘ํ˜•