๐Ÿ“š ์ฑ… ์†Œ๊ฐœํ•˜๊ธฐ

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ž๋ฐ”์™„์ „์ •๋ณต ์ฑ… ๋งํฌ!
ใ„ด ๊น€๋™ํ˜• ์ง€์Œ, ์ด์ง€์Šคํผ๋ธ”๋ฆฌ์‹ฑ

 

 

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

์ด ์ฑ…์„ ๊ณ ๋ฅด๊ฒŒ ๋œ ์ด์œ ๋Š” ์นœ๊ตฌ์˜ ์ถ”์ฒœ์ด์—ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ ํ˜€์žˆ์–ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ด์œ ๋กœ ์นœ๊ตฌ๋Š” ์ด ์ฑ…์„ ๊ณจ๋ž๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋‚˜๋„ ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋”ฐ๋ผ์ƒ€๋‹ค. ์‹ค์ œ๋กœ ์ฑ…์„ ์‚ดํŽด๋ณด๋‹ˆ ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค. ๋‹ค๋ฅธ ์ฑ…์€ ๋ณธ ์ ์ด ์—†์–ด ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€ํ•˜์ง€๋งŒ, ๋‚ด ์ƒ๊ฐ์œผ๋ก  ์ฒ˜์Œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ์ด ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์ถฉ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•˜๋‹ค. ๋ชจ๋‘๋“ค ํ™”์ดํŒ…!!

 

 

๐Ÿฐ

 


 

 

โœ”๏ธ   ์ƒ์†_ 307p

 

 ์ƒ์†

๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„(ํ•„๋“œ, ๋ฉ”์„œ๋“œ, ์ด๋„ˆ ํด๋ž˜์Šค)๋ฅผ ๋‚ด๋ ค๋ฐ›์•„ ์ž์‹ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ํฌํ•จ์‹œํ‚ค๋Š” ์ž๋ฐ” ๋ฌธ๋ฒ• ์š”์†Œ

class Human {
     String name;
     int age;
     void eat() {}
     void sleep() {}
}

class Student extends Human {
    int studentID;
    void goToSchool() {}
}
Human h = new Human();
h.name = "๊น€์ž๋ฐ”";
h.age = 1;
h.eat;

Student s = new Student();
s.name = "๊น€์™„์ „";
s.age = 2;
s.studentID = 12;
ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•  ๋•Œ๋Š” extends ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ํด๋ž˜์Šค๋ช… ๋‹ค์Œ์— extends ๋ถ€๋ชจ ํด๋ž˜์Šค๋ช…(extends Human)์œผ๋กœ ํ‘œ๊ธฐํ•˜๋ฉด ๋œ๋‹ค. Student ํด๋ž˜์Šค๋Š” Human ํด๋ž˜์Šค์— ์—†๋Š” ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜๋ฉด ๋˜๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ๋˜ํ•œ 'ํ•™์ƒ์€ ํ•™์ƒ์ด๋‹ค.' ๋ง๊ณ  'ํ•™์ƒ์€ ์‚ฌ๋žŒ์ด๋‹ค.' ๋ผ๋Š” ๋ง์ด ์ถ”๊ฐ€๋˜๋ฉด์„œ ๋‹คํ˜•์  ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•ด์ง„๋‹ค. ๋‹คํ˜•์„ฑ์ด๋ž€, 1๊ฐœ์˜ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ชจ์–‘์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.  '์‚ฌ๋žŒ์€ ํ•™์ƒ์ด๋‹ค.' ๋ผ๋Š” ๋ง์„ ์‚ดํŽด๋ณด๋ฉด ์ด๋Š” ์˜ณ์ง€ ์•Š๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ƒ์†์ด ๋‹คํ˜•์„ฑ์ด๋ž€ ์žฅ์ ์„ ๊ฐ€์ง€์ง€๋งŒ '์ž์‹ ํด๋ž˜์Šค๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค๋‹ค.' ๋ผ๋Š” ๋ง์ด ์„ฑ๋ฆฝ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์œ ์˜ํ•ด์•ผํ•œ๋‹ค.

Student ํด๋ž˜์Šค๋Š” ํ•„๋“œ 3๊ฐœ, ๋ฉ”์„œ๋“œ 3๊ฐœ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ๋‹ค.

 

 

Q. ์ฝ”๋“œ์˜ ์ค‘๋ณต ์ œ๊ฑฐ๋ฅผ ์œ„ํ•ด ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ผ๊นŒ?

A.
๊ทธ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์˜คํžˆ๋ ค ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ ๊ฐ๊ฐ์˜ ํด๋ž˜์Šค์— ๋„ฃ์–ด ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 ๋‹ค์ค‘ ์ƒ์†

class B {
    int data = 3;
}

class C {
    int data = 4
}

class A extends B, C {
    ...
}
A a = new A();
System.print.out(a.data);
์ž๋ฐ”๋Š” ๋‹ค์ค‘์ƒ์†์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ์ด์œ ๋Š” ํด๋ž˜์Šค B์™€ ํด๋ž˜์Šค C์— data ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋‹ˆ A ์ž…์žฅ์—์„œ ์–ด๋Š data๋ฅผ ๊ฐ€์ ธ์™€์•ผํ• ์ง€ ํ˜ผ๋™ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰ ๋ชจํ˜ธ์„ฑ์„ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์ค‘์ƒ์†์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

์ƒ์†ํ•  ๋•Œ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

class A {
    int m;
    void abc() {}
}

class B extends A {
    int n;
    void bcd() {}
}
B b = new B();
์ž์‹ ํด๋ž˜์Šค์™€ ๋ถ€๋ชจ ํด๋ž˜์Šค๋Š” JVM์— ์˜ํ•ด ๋กœ๋”ฉ๋˜๋Š”๋ฐ, ์ด๊ฒƒ์„ ํด๋ž˜์Šค ๋กœ๋”ฉ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์ด์ œ ํด๋ž˜์Šค๊ฐ€ ๋กœ๋”ฉ๋˜๋ฉด ๋ฉ”์„œ๋“œ ์˜์—ญ์— ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. ๊ทธ ํ›„ ์‹ค์ œ ๊ฐ์ฒด๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒ์„ฑ๋œ๋‹ค. ์ฒ˜์Œ์— ๋ถ€๋ชจ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ ํ›„ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์ถ”๊ฐ€ํ•œ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ์ฒด์— ์ถ”๊ฐ€๋œ๋‹ค. ์ฆ‰, ์ž์‹ ํด๋ž˜์Šค ๊ฐ์ฒด์˜ ๋‚ด๋ถ€์— ๋ถ€๋ชจ ํด๋ž˜์Šค ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋œ๋‹ค.

์ฐธ์กฐ ๋ณ€์ˆ˜ b๋Š” B ํƒ€์ž…์œผ๋กœ ์„ ์–ธ๋๋‹ค. ๊ทธ๋ ‡๊ธฐ์— B ํƒ€์ž… ๊ฐ์ฒด๋งŒ์„ ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ์ฒด B ์•ˆ์—๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค๋„ ํ•จ๊ป˜ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—  ์ž์‹ ํด๋ž˜์Šค ๊ฐ์ฒด์—์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

 

 

 ์ƒ์„ฑ์ž์˜ ์ƒ์† ์—ฌ๋ถ€

class A {
    A() {
    }
}

class B extends A {
}
์ƒ์„ฑ์ž๋Š” ์ž์‹ ํด๋ž˜์Šค์ธ B ํด๋ž˜์Šค์— ์ƒ์†๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ƒ์„ฑ์ž๋ฅผ ํด๋ž˜์Šค B๊ฐ€ ์ƒ์†ํ•˜๊ฒŒ๋˜๋ฉด ํด๋ž˜์Šค๋ช…๊ณผ ์ƒ์„ฑ์ž๋ช…์ด ๋‹ฌ๋ผ์ง€๋ฉด์„œ ์ƒ์„ฑ์ž๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค. ๋ฉ”์„œ๋“œ๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด์„  ๋ฆฌํ„ด ํƒ€์ž…์„ ์ •ํ•ด์•ผํ•˜๋Š”๋ฐ, ๋ฆฌํ„ด ํƒ€์ž…๋„ ์—†์–ด์„œ ๋ฉ”์„œ๋“œ๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค. ๊ฒฐ๊ตญ ์ž์‹ ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ์ž๋ฅผ ๋ฐ›๊ฒŒ๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ๋œ๋‹ค.

 

 

 

 


 

 

 

 

โœ”๏ธ   ์—…์บ์ŠคํŒ…๊ณผ ๋‹ค์šด์บ์ŠคํŒ…_ 319p

 

 ์บ์ŠคํŒ…

๋“ฑํ˜ธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•ญ์ƒ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ์˜ ์ž๋ฃŒํ˜•์ด ์ผ์น˜ํ•ด์•ผํ•˜๋Š”๋ฐ, ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ ํƒ€์ž…์„ ๋ณ€ํ™”ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

 ์—…์บ์ŠคํŒ…

๋ฒ”์œ„๊ฐ€ ์ข์€ ์ชฝ์—์„œ ๋„“์€ ์ชฝ์œผ๋กœ ์บ์ŠคํŒ…๋œ๋‹ค. (์ž์‹ ํด๋ž˜์Šค์—์„œ ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜)

class A {}
class B extends A {}
class C extends B {}
B b1 = new B();
A a1 = b1;

C c2 = new C();
B b2 = (B) c2;
์—…์บ์ŠคํŒ…์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค. ๊ทธ๋ž˜์„œ A a1 = (A) b1;์œผ๋กœ ์ ์ง€ ์•Š์•„๋„ (A)๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์•Œ์•„์„œ ์ถ”๊ฐ€ํ•œ๋‹ค. ํด๋ž˜์Šค A๋Š” ํด๋ž˜์Šค B๋ฅผ ์ƒ์†ํ•œ๋‹ค. ํด๋ž˜์Šค B๋Š” ํด๋ž˜์Šค C๋ฅผ ์ƒ์†ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด b1์€ Aํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  C๋Š” B์™€ A๋กœ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ข€ ๋” ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด A ํด๋ž˜์Šค๊ฐ€ ์‚ฌ๋žŒ, B ํด๋ž˜์Šค๊ฐ€ ํ•™์ƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด 'ํ•™์ƒ์€ ์‚ฌ๋žŒ์ด๋‹ค.'๋Š” ์–ธ์ œ๋‚˜ ๋งž๋Š” ๋ง์ด๋‹ˆ ์—…์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋‹ค.

 

 

๋‹ค์šด์บ์ŠคํŒ…

๋ฒ”์œ„๊ฐ€ ๋„“์€ ์ชฝ์—์„œ ์ข์€ ์ชฝ์œผ๋กœ ์บ์ŠคํŒ…๋œ๋‹ค. (๋ถ€๋ชจ ํด๋ž˜์Šค์—์„œ ์ž์‹ ํด๋ž˜์Šค๋กœ ๋ณ€ํ™˜)

class A {}
class B extends A {}
class C extends B {}
A a1 = new A();
B b1 = (B) a1;

A a2 = new B();
B b2 = (B) a2;
C c2 = (C) a2;
Aํƒ€์ž…์ธ ์ƒ์„ฑ์ž a1์€ Bํƒ€์ž…์œผ๋กœ ๋‹ค์šด ์บ์ŠคํŒ… ๋  ์ˆ˜ ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํด๋ž˜์Šค A๋Š” ํด๋ž˜์Šค B๋‚˜ C๋ฅผ ์ƒ์†ํ•˜๊ณ  ์žˆ์ง€ ์•Š๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ B b1= (B) a1;์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ƒ์„ฑ์ž a2๋ฅผ ์‚ดํŽด๋ณด์ž. ์—ฌ๊ธฐ์„œ ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…๊ณผ ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์ด ๋™์ผํ•˜์ง€ ์•Š๋‹ค. ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์€ A๊ฐ€ ๋˜๊ณ  ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์€ B๊ฐ€ ๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋กœ ์‚ดํŽด๋ณด๋ฉด B๋Š” A ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋ฏ€๋กœ ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์ด๋ฏธ Bํƒ€์ž… ์•ˆ์— Aํƒ€์ž…์ด ์žˆ๋Š” ํ˜•ํƒœ์ผ ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์€ B๊ฐ€ ๋˜๋ฉด์„œ, a2๋Š” B ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ a2๋Š” Bํƒ€์ž…์œผ๋กœ ๋‹ค์šด ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ทธ๋Ÿฌ๋ฉด c2๋ฅผ ์‚ดํŽด๋ณด์ž. ํด๋ž˜์Šค B๋Š” ํด๋ž˜์Šค C๋ฅผ ์ƒ์†ํ•˜์ง€ ์•Š๋Š”๋‹ค. ํž™ ๋ฉ”๋ชจ๋ฆฌ์— Cํƒ€์ž… ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. (๋งŒ๋“ค์–ด์ง„ ์ ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—) ๊ทธ๋ ‡๊ธฐ์— ClassCastException์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

๊ฒฐ๋ก ์ ์œผ๋กœ ๋‹ค์šด์บ์ŠคํŒ…์€ ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…๋ณด๋‹ค ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์— ์ค‘์ ์„ ๋‘”๋‹ค. ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์ด ์–ด๋Š ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค์šด์บ์ŠคํŒ…์˜ ์—ฌ๋ถ€๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

 

 

Q. ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…๊ณผ ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์˜ ์ฐจ์ด์ ์€?

A.
์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์€ ์ปดํŒŒ์ผ ์‹œ์ ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์— ๋”ฐ๋ผ ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ์™€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ•„๋“œ์— ์ œํ•œ์ด ์ƒ๊ธฐ๋Š”๋ฐ, ์ •์  ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์ƒ์œ„ ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•  ๊ฒฝ์šฐ ์ž์‹ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. (๋‹คํ˜•์„ฑ)
new ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ ๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์— ๋”ฐ๋ผ ๋™์ž‘์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”๋ฐ ๋™์  ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. (์บ์ŠคํŒ…)

 

 

 


 

 

 

โœ”๏ธ   ํƒ€์ž…์— ๋”ฐ๋ฅธ ์ฐจ์ด์ _323p (๋‚ด์šฉ ๋‹ค๋ฆ„)

์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…

๋Ÿฐํƒ€์ž„ ์‹œ์ ์— ์˜ํ–ฅ์„ ์ฃผ๋ฉฐ, ๋™์ ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

 

Cat ํƒ€์ž…, Cat ์ƒ์„ฑ์ž

interface Animal {
    void sound();
}

class Cat implements Animal {
    @Override
    public void sound() {
        System.out.println("Meow");
    }

    public void scratch() {
        System.out.println("Cat is scratching");
    }
}

public class Main {
    public static void main(String[] args) {
        Cat a2 = new Cat();
        a2.sound();   
        a2.scratch(); 
    }
}
์ƒ์„ฑ์ž a2๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…๊ณผ ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์ด Cat์œผ๋กœ ๋™์ผํ•˜๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ a2๋Š” Cat์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— sound ๊ฐ’์€ "Meow"๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. scratch๋Š” ์ž˜ ์‹คํ–‰๋˜์–ด "Cat is scratching"์œผ๋กœ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.

 

 

Animal ํƒ€์ž…, Cat ์ƒ์„ฑ์ž

interface Animal {
    void sound(); 
}

class Cat implements Animal {
    @Override
    public void sound() {
        System.out.println("Meow");
    }

    public void scratch() {
        System.out.println("Cat is scratching");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal a2 = new Cat();
        a2.sound();

        a2.scratch();
    }
}
์˜ค๋ฒ„๋ผ์ด๋”ฉ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์ธ Animal์„ ์ƒ์†ํ•˜๋Š” Cat ํด๋ž˜์Šค๋Š” sound( ) ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์กŒ์ง€๋งŒ, Animal ์ธํ„ฐํŽ˜์ด์Šค๋„ ๋˜‘๊ฐ™์ด sound( ) ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค.

์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์€ Animal์ด๊ณ  ์‹ค์ œ ๊ฐ์ฒด ํƒ€์ž…์€ Cat์ธ ์ƒ์„ฑ์ž a2๋Š” sound( )๋ฉ”์„œ๋“œ์™€ scratch( )๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ด๋•Œ sound ๋ฉ”์„œ๋“œ๋Š” ์˜ค๋ฒ„๋ผ์ด๋”ฉ์ด ๋˜์–ด Cat์˜ sound ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜์–ด (๋™์ ๋ฐ”์ธ๋”ฉ) "Meow"๊ฐ€ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Animal ํด๋ž˜์Šค์—๋Š” scratch ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ์— Animal ํƒ€์ž…์ธ a2๋Š” scratch ๋ฉ”์„œ๋“œ๋Š” ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์—†๋‹ค.

 

 

 

 ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…

์ปดํŒŒ์ผ ์‹œ์ ์— ์˜ํ–ฅ์„ ์ฃผ๋ฉฐ, ์ •์  ๋ฐ”์ธ๋”ฉ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

interface Animal {
    void sound(); 
}

class Cat implements Animal {
    @Override
    public void sound() {
        System.out.println("Meow");
    }

    public void scratch() {
        System.out.println("Cat is scratching");
    }
}

public class Main {
    public static void main(String[] args) {
        Animal a2 = new Cat(); 
        a2.sound();

        Cat a = (Cat) a2;
        a.scratch();
    }
}
์œ„์˜ ์ฝ”๋“œ์—์„œ a2.scratch๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ์„ฑ์ž a2๋ฅผ ๋‹ค์šด์บ์ŠคํŒ… ํ•ด์ฃผ๋ฉด ๋œ๋‹ค. a2๊ฐ€ Animal ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ Animal์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋งŒ ์‹คํ–‰๊ฐ€๋Šฅํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด a2๋ฅผ Cat ํƒ€์ž…์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค. ์ฐธ์กฐ ๋ณ€์ˆ˜ ํƒ€์ž…์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์šด์บ์ŠคํŒ…์„ ํ•ด์คฌ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด scratch ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 


 

 

โœ”๏ธ   instanceof_ 326p

instanceof

์บ์ŠคํŒ… ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

C c = new C();

System.out.println(c instanceof A);
[ ์ฐธ์กฐ ๋ณ€์ˆ˜ instanceof ํƒ€์ž… ] ํ˜•์‹์œผ๋กœ ์“ฐ์ด๋ฉฐ, ์บ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•˜๋ฉด true๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉด false๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. instanceof ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ƒ์† ๊ด€๊ณ„๋‚˜ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“  ์ƒ์„ฑ์ž๋ฅผ ์ง์ ‘ ํ™•์ธํ•˜์ง€ ์•Š๊ณ ๋„ ์บ์ŠคํŒ… ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.



 

๐Ÿ“š ์ฑ… ์†Œ๊ฐœํ•˜๊ธฐ

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ž๋ฐ”์™„์ „์ •๋ณต ์ฑ… ๋งํฌ!
ใ„ด ๊น€๋™ํ˜• ์ง€์Œ, ์ด์ง€์Šคํผ๋ธ”๋ฆฌ์‹ฑ

 

 

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

์ด ์ฑ…์„ ๊ณ ๋ฅด๊ฒŒ ๋œ ์ด์œ ๋Š” ์นœ๊ตฌ์˜ ์ถ”์ฒœ์ด์—ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ ํ˜€์žˆ์–ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ด์œ ๋กœ ์นœ๊ตฌ๋Š” ์ด ์ฑ…์„ ๊ณจ๋ž๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋‚˜๋„ ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋”ฐ๋ผ์ƒ€๋‹ค. ์‹ค์ œ๋กœ ์ฑ…์„ ์‚ดํŽด๋ณด๋‹ˆ ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค. ๋‹ค๋ฅธ ์ฑ…์€ ๋ณธ ์ ์ด ์—†์–ด ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€ํ•˜์ง€๋งŒ, ๋‚ด ์ƒ๊ฐ์œผ๋ก  ์ฒ˜์Œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ์ด ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์ถฉ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•˜๋‹ค. ๋ชจ๋‘๋“ค ํ™”์ดํŒ…!!

 

 

๐Ÿฐ

 


 

 

โœ”๏ธ   ๋ฉค๋ฒ„ ๋ฐ ์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ ์ง€์ •์ž_ 280p

 

4์ข…๋ฅ˜์˜ ์ ‘๊ทผ์ง€์ •์ž

public, protected, default(ํ˜น์€ package), private

 

 

 ์ ‘๊ทผ ๋ฒ”์œ„

public > protected > default > private

์ ‘๊ทผ์ง€์ •์ž ์‚ฌ์šฉ ๊ฐ€๋Šฅ ๋ฒ”์œ„
public ๋™์ผ ํŒจํ‚ค์ง€ ๋‚ด ๋ชจ๋“  ํด๋ž˜์Šค O, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ๋ชจ๋“  ํด๋ž˜์Šค๋งŒ O
protected ๋™์ผ ํŒจํ‚ค์ง€ ๋‚ด ๋ชจ๋“  ํด๋ž˜์Šค O, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ์ž์‹ ํด๋ž˜์Šค๋งŒ O - ์ƒ์†์„ ํ†ตํ•ด
default ๋™์ผ ํŒจํ‚ค์ง€ ๋‚ด ๋ชจ๋“  ํด๋ž˜์Šค๋งŒ O (๋‹ค๋ฅธ ํŒจํ‚ค์ง€ X)
private ๊ฐ™์€ ํด๋ž˜์Šค๋งŒ O (๋‹ค๋ฅธ ํŒจํ‚ค์ง€ X, ๋‹ค๋ฅธ ํด๋ž˜์Šค X)

 

 

 ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์—ฌ ๋ฐ›์€ ๊ฒฝ์šฐ

public class A {
    
    public int a = 1;
    protected int b = 2;
    int c = 3;
    private int d = 4;
    
    public void print() {
        System.out.println(a + " ");
        System.out.println(b + " ");
        System.out.println(c + " ");
        System.out.println(d + " ");     
    }
}
public class B extends A{

    public void print() {
        System.out.println(a + " ");
        System.out.println(b + " ");
    }
}
ํด๋ž˜์Šค B๋Š” ํด๋ž˜์Šค A๋ฅผ ์ƒ์†ํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ pubic์ด ๋ถ™์€ ๋ณ€์ˆ˜ a์™€ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์˜ ์ž์‹ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ protected๊ฐ€ ๋ถ™์€ ๋ณ€์ˆ˜ b๋ฅผ ํด๋ž˜์Šค B์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์›๋ž˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ•ด์ค˜์•ผํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ƒ์†์€ ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ๋ฐ”๋กœ ํด๋ž˜์Šค A์˜ ๋ณ€์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

public class A {
    
    public int a = 1;
    protected int b = 2;
    int c = 3;
    private int d = 4;
    
    public void print() {
        System.out.println(a + " ");
        System.out.println(b + " ");
        System.out.println(c + " ");
        System.out.println(d + " ");     
    }
}
public class B {

    A a = new A(); // ๊ฐ์ฒด ์ƒ์„ฑ!!!
     
    public void print() {
        // public์ธ ๋ณ€์ˆ˜ a๋งŒ ๊ฐ€๋Šฅ
        System.out.println(a + " ");
    }
}

 

 

 

 


 

 

 

โœ”๏ธ   ํด๋ž˜์Šค ์ ‘๊ทผ ์ง€์ •์ž์™€ ์ƒ์„ฑ์ž ์ ‘๊ทผ ์ง€์ •์ž_ 285p

 

default ํด๋ž˜์Šค๋ฅผ import ํ•˜๋Š” ๊ฒฝ์šฐ

import abc.bcd.A;

class A {
 ...
}
import abc.bcd.A;

class B {
 ...
}
ํด๋ž˜์Šค ์•ž์—๋Š” private์™€ default๋งŒ ๋ถ™์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ default๋Š” ๋™์ผ ํŒจํ‚ค์ง€ ๋‚ด ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์— importํ•˜๋Š”๊ฒŒ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์œ„์˜ ์ฝ”๋“œ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ public ํด๋ž˜์Šค์— ์ƒ์„ฑ์ž๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค๋ฉด, ๊ทธ ์ƒ์„ฑ์ž ์•ž์— ์ ‘๊ทผ์ง€์ •์ž๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„๋„ public์ด ๋ถ™์„ ๊ฒƒ์ด๋‹ค. ์ด๋ ‡๋“ฏ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์ƒ์„ฑ์ž์˜ ์ ‘๊ทผ ์ง€์ •์ž๋Š” ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ง€์ •์ž์— ๋”ฐ๋ผ ๊ฒฐ์ •๋˜๋ฉฐ, ์ž๋™์ด ์•„๋‹Œ ์ง์ ‘ ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒฝ์šฐ ํด๋ž˜์Šค์˜ ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ๋”ฐ๋ผ ๋ถ™์ผ ํ•„์š”๋Š” ์—†๋‹ค.

ํด๋ž˜์Šค์—๋Š” public๊ณผ default๋งŒ ์•ž์— ๋ถ™์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ƒ์„ฑ์ž์— ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์ ‘๊ทผ ์ง€์ •์ž๋„ public ํ˜น์€ default๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ์ƒ์„ฑ์ž๊ฐ€ default๋ผ๋ฉด ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—๋Š” ์‚ฌ์šฉ๋ถˆ๊ฐ€ํ•œ๋‹ค๋Š” ์ ์„ ์œ ์˜ํ•˜๋ฉด ๋œ๋‹ค.

 

 

Q. ํด๋ž˜์Šค ์•ž์— private์™€ default๋งŒ ๋ถ™์„ ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š”?

A. 
private๋ฅผ ํด๋ž˜์Šค์— ๋ถ™๋Š”๋‹ค๋ฉด ์ ‘๊ทผ์ž์ฒด๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฒŒ๋˜์–ด ํด๋ž˜์Šค์˜ ์˜๋ฏธ ์ž์ฒด๊ฐ€ ์—†์–ด์งˆ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด protected๋Š” ์•ˆ๋˜๋ฉด์„œ default๋Š” ๋˜๋Š” ์ด์œ ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ถ”์ธกํ•ด๋ด์•ผํ•œ๋‹ค. protected๋Š” ์ƒ์†์ด ๋œ๋‹ค. ์ด ์ ์ด default์™€ ์ฐจ์ด์ ์ธ๋ฐ, ์•„๋งˆ ์ƒ์†์ด ๋ถ™์–ด์„œ protected๋Š” ํด๋ž˜์Šค์— ๋ถ™์ด์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™๋‹ค. (์˜ˆ์™ธ๊ฐ€ ์ƒ๊ธฐ๋Š” ๋Š๋‚Œ?)_ ๋ช…ํ™•ํ•œ ๋‹ต์„ ๋ชป์ฐพ์Œ

 

 

 

 

public ํด๋ž˜์Šค์— default ์ƒ์„ฑ์ž์˜ ๊ฒฝ์šฐ

Package abc.bcd;

public class A {
    A() {
    }
}
package bcd.cde;

import abc.bcd.A;

class C {
    public static void main(String[] ar) {
        A a = new A();
    }
}
public ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค A์—๋Š” default ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ๊ฐ€์ง„ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๋‹ค. ํด๋ž˜์Šค A๋Š” public์ด๋‹ˆ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— import๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ƒ์„ฑ์ž A๋Š” default๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ํ˜ธ์ถœ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค. ๋งŒ์•ฝ ํด๋ž˜์Šค C๊ฐ€ ํด๋ž˜์Šค A๋ฅผ ์ƒ์†ํ•œ๋‹คํ•ด๋„ ์ƒ์„ฑ์ž A๋Š” default ์ ‘๊ทผ ์ง€์ •์ž๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   ์ธ์Šคํ„ด์Šค ํ•„๋“œ์™€ ์ •์  ํ•„๋“œ_ 292p

 

 ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„

๊ฐ์ฒด ์•ˆ์— ์žˆ์„ ๋Œ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋˜๋Š” ๋ฉค๋ฒ„

 

 ์ •์  ๋ฉค๋ฒ„

static์ด ๋ถ™์–ด ์žˆ๋Š” ๋ฉค๋ฒ„

class A {
    int m = 3;
    static int n = 5;
}
// ์ธ์Šคํ„ด์Šค ํ•„๋“œ์˜ ํ™œ์šฉ ๋ฐฉ๋ฒ•
A a = new A();
System.out.println(a.m);
// static ํ•„๋“œ ํ™œ์šฉ ๋ฐฉ๋ฒ•
System.out.println(A.n);
์ธ์Šคํ„ด์Šค ํ•„๋“œ m์€ ๊ฐ์ฒด ๋‚ด๋ถ€์— ์ƒ์„ฑ๋œ๋‹ค. ๊ทธ๋ž˜์„œ m์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ๋˜ํ•œ ์ €์žฅ ๊ณต๊ฐ„์ด ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜ํ•˜๋ฏ€๋กœ ์ €์žฅ ๊ณต๊ฐ„์— ๊ฐ’์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ์œ„ํ•ด์„œ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

์ •์  ํ•„๋“œ n์€ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์ €์žฅ ๊ณต๊ฐ„์„ ์ง€๋‹ˆ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ํด๋ž˜์Šค๋ช…. ๋ฉค๋ฒ„๋ช…์ธ A.n์œผ๋กœ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌผ๋ก  ์ธ์Šคํ„ด์Šค์ฒ˜๋Ÿผ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช….๋ฉค๋ฒ„๋ช…์ธ a.m๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ •์  ๋ฉค๋ฒ„๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๊ถŒ์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.

 

 

A a1 = new A();
A a2 = new A();

a1.n = 7;
a2.n = 8;
์ •์  ํ•„๋“œ n์— ๊ฐ’ 7๊ณผ 8์„ ์ฐจ๋ก€๋กœ ๋„ฃ์—ˆ๋‹ค. ์•„๋งˆ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ m์— ๋„ฃ์—ˆ๋‹ค๋ฉด a1.m์€ 7์ด ๋˜๊ณ  a2.m์€ 8์ด ๋  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ •์  ๋ณ€์ˆ˜๋Š” a1.n๊ณผ a2.n ๋ชจ๋‘ 8์ด ๋‚˜์™”๋‹ค.

๊ฐ์ฒด ์ƒ์„ฑ์€ ํž™ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ด๋ค„์ง€๊ณ  ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋Š” ๊ฐ์ฒด ๋‚ด๋ถ€์— ์ƒ์„ฑ๋˜๋ฏ€๋กœ ๊ฐ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋‘ ๊ฐ์ฒด ์•ˆ์— ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ๊ฐ’์„ ์ฝ์œผ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ๋”ฐ๋กœ ๊ฐ์ฒด ์ƒ์„ฑ์ด ๋˜์–ด์žˆ๋Š” a1๊ณผ a2 ๋‚ด๋ถ€์˜ ๊ฐ’๋งŒ ๊ฐ€์ ธ์˜ค๋ฉด ๋œ๋‹ค.

์ •์  ํ•„๋“œ๋Š” ํด๋ž˜์Šค A์•ˆ์— ์‹ค์ œ ๋ฐ์ดํ„ฐ ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๊ฐ์ฒด ์•ˆ์—๋Š” ๋ฐ์ดํ„ฐ ๊ฐ’์˜ ์œ„์น˜๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฒฐ๊ตญ ๋‘ ๊ฐ์ฒด๋Š” ํด๋ž˜์Šค A๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜๋‹ˆ ๊ฐ’ 7์ด ๋“ค์–ด๊ฐ€๋ฉด a1์„ ํ†ตํ•ด ํด๋ž˜์Šค A ์•ˆ์— 7์„ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ ํ›„ a2๋ฅผ ํ†ตํ•ด ๊ฐ’ 8์„ ๋„ฃ์œผ๋ฉด ์ด ๋˜ํ•œ ํด๋ž˜์Šค A๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋‹ˆ 7์˜ ๊ฐ’์€ ์‚ฌ๋ผ์ง€๊ณ  8์ด ์ €์žฅ๋˜๊ฒŒ ๋œ๋‹ค.

 

 

 


 

 

 

โœ”๏ธ   ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ์™€ ์ •์  ๋ฉ”์„œ๋“œ_ 298p

 

class A {
    void abc() {
        System.out.pritnln("์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ");
    }
    
    static void avc() {
        System.out.println("์ •์  ๋ฉ”์„œ๋“œ");
    }
}
A a1 = new A();
a1. abc();

A.bcd();
์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์ธ์Šคํ„ด์Šค ํ•„๋“œ์™€ ๊ฐ™๋‹ค. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•œ๋‹ค. ์ •์  ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ ํด๋ž˜์Šค๋ช…์œผ๋กœ ๋ฐ”๋กœ ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ •์  ๋ฉ”์„œ๋“œ๋Š” ์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ๋‚˜ ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ ์ด์œ ๋Š” ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„๋Š” ๊ฐ์ฒด ์ƒ์„ฑ์ด ํ•„์ˆ˜์ธ๋ฐ, ์ •์  ๋ฉค๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๊ฐ€ ๊ฐ์ฒด ์ƒ์„ฑ ์—†์ด ์‹คํ–‰ํ•˜๊ธฐ ์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋˜ํ•œ ์ •์  ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—๋Š” this ํ‚ค์›Œ๋“œ๋Š” ์˜ฌ ์ˆ˜ ์—†๋‹ค. ์™œ๋ƒํ•˜๋ฉด this ์ž์ฒด๊ฐ€ ํ˜„์žฌ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. this๋Š” ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์—ญํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •์  ๋ฉ”์„œ๋“œ์— ์˜ฌ ์ˆ˜ ์—†๋‹ค.

 

 

 

 



 

 

[ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค H2 ์„ค์น˜ ๋ฐ ์—ฐ๋™, JPA ์—ฐ๋™ํ•˜๊ธฐ  ]

 

Spring - [intelliJ,Thymeleaf] MAC, H2๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ๋Œ“๊ธ€์ฐฝ ๋งŒ๋“ค๊ธฐ(2)

[ ๊ฐ„๋‹จํ•œ ๋Œ“๊ธ€์ฐฝ ๋งŒ๋“ค๊ธฐ (1) ] Spring - [intelliJ,Thymeleaf] ๊ฐ„๋‹จํ•œ ๋Œ“๊ธ€์ฐฝ ๋งŒ๋“ค๊ธฐ(1)[ @PostMapping์œผ๋กœ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ] Spring - [intelliJ,Thymeleaf] @PostMapping์œผ๋กœ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ[

post-this.tistory.com

 

 

 

[ @PostMapping์œผ๋กœ ๋กœ๋˜ ์ˆซ์ž ์ถœ๋ ฅํ•˜๊ธฐ.  ]

 

Spring - [intelliJ,Thymeleaf] @PostMapping์œผ๋กœ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ

[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ(2) ] Spring - [intelliJ,Thymeleaf] ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ(2)[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ ] Spring - [intelliJ,Thymeleaf] ๋กœ๋˜, ๋ฒ„

post-this.tistory.com

 

 

 


 

 

๋žœ๋ค ์ˆซ์ž 6๊ฐœ๋ฅผ
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด์šฉํ•˜์—ฌ ๋ณต์‚ฌํ•˜๊ธฐ.

 

 

 

 

 

1. ๋™์ž‘ํ™”๋ฉด๊ณผ ์ „์ฒด์ฝ”๋“œ

 

 

 

๋™์ž‘ํ™”๋ฉด

 

 

 


์ „์ฒด์ฝ”๋“œ

 

GitHub - hyeong-ing/LuckyLotto: ๋กœ๋˜ ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์›น์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค.

๋กœ๋˜ ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์›น์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค. Contribute to hyeong-ing/LuckyLotto development by creating an account on GitHub.

github.com

 

 

 

 

 


 

 

 

 

 

2. ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์ง€ ์ƒ๊ฐํ•˜๊ธฐ.

 

 

๊ฐ€์žฅ ๋‚œํ•ญ์„ ๊ฒช์—ˆ๋˜ ๋ถ€๋ถ„์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ตœ๋Œ€ํ•œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ํ•ด๋ณด๋ คํ–ˆ์ง€๋งŒ ์ •๋ณด๊ฐ€ ๋„ˆ๋ฌด ์—†์—ˆ๋‹ค. ๊ฒฐ๊ตญ Chat-GPT์˜ ๋„์›€๊นŒ์ง€ ๊ตฌํ•ด๋ดค์ง€๋งŒ... Chat-GPT๋„ ๊ทธ๋ƒฅ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์“ฐ๋ผ๊ณ  ํ–ˆ๋‹ค. ์ผ๋‹จ ๋ชฉํ‘œํ•œ ๊ธฐ๋Šฅ๊นŒ์ง€ ํ”„๋กœ์ ํŠธ๋ฅผ ์™„์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ–ˆ๊ณ , ์–ด์ฐจํ”ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ํ–ˆ๊ธฐ์— ๊ธฐํšŒ๋กœ ์‚ผ์•„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ์ง€์‹์ด ์ „๋ฌดํ•˜๋‹ค๋Š” ๊ฒƒ. ๊ณต๋ถ€๋ฅผ ํ•˜๋ ค๊ณ  ํ•ด๋„ ๋ฌด์Šจ ๊ตฌ์กฐ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๊ณ  ๋ฌด์—‡๋ณด๋‹ค ๋ณต์‚ฌํ•˜๊ธฐ ๊ธฐ๋Šฅ์€ ๋Œ€์ฒด์ ์œผ๋กœ ํ…์ŠคํŠธ์— ํ•ด๋‹นํ•˜๋Š” ์ •๋ณด ๋ฟ์ด์—ˆ๋‹ค. ๋‚˜๋Š” List์— ์žˆ๋Š” 6๊ฐ€์ง€ ์š”์†Œ๋ฅผ ๋ฐ›์•„ ๋ณต์‚ฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์€๊ฑด๋ฐ, ๋ฌธ๋ฒ•์„ ์•„์˜ˆ ๋ชจ๋ฅด๋‹ˆ ์–ด๋–ป๊ฒŒ ์ฐพ์•„๋ณด๊ณ  ์‘์šฉํ•ด์•ผํ• ์ง€ ๋ง‰๋ง‰ํ–ˆ๋‹ค.

 

์„œ๋ก ์ด ๊ธธ์—ˆ๋‹ค. ๋ณ€๋ช…์˜ ์‹œ๊ฐ„์„ ๊ฐ€์ ธ์•ผํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ฒฐ๋ก ์„ ๋งํ•˜์ž๋ฉด ์ด ๊ธฐ๋Šฅ์€ GPT๊ฐ€ ๋งŒ๋“ค์—ˆ๋‹ค. ์•„์˜ˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•œ ํ›„ ๋‹ค์‹œ ํ”Œ์ ์„ ์‹œ๋„ํ• ๊นŒ๋ผ๋Š” ๊ณ ๋ฏผ๋„ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ด๋ฉด์„œ ์ž์‹ ์— ๋Œ€ํ•œ ๋น ๋ฅธ ๊ฐ๊ด€ํ™”๋Š” ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค ์ƒ๊ฐํ•œ๋‹ค. ํ˜„์žฌ ๋‚˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ๋Šฅ๋ ฅ์ด ์—†๊ณ , ์–ธ์ œ๋‚˜ ๋ˆ„๊ตฐ๊ฐ€์˜ ์ฝ”๋“œ๋ฅผ ๋”ฐ์™€ ๊ณต๋ถ€ํ–ˆ์„๋•Œ ๊ฐ€์žฅ ํฐ ๊ฑธ์Œ์„ ๋‚˜์•„๊ฐ”์œผ๋‹ˆ GPT๊ฐ€ ๋งŒ๋“ค์–ด์ค€ ์ฝ”๋“œ๋ฅผ ํ† ๋Œ€๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ณต๋ถ€ํ•ด๋ณด๋ ค ํ•œ๋‹ค.(๋๋‚ด๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ•์˜๋„ ์ˆ˜๊ฐ•ํ•ด๋ด์•ผ๊ฒ ๋‹ค.)

 

๊ฒฐ๋ก  : ์ด ๊ธฐ๋Šฅ์€ GPT๊ฐ€ ๋งŒ๋“ค์—ˆ๋‹ค.

 

 

 

 

โ–ก ๋ณต์‚ฌํ•˜๊ธฐ ์ด๋ฏธ์ง€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๊ฐ 6๊ฐœ์˜ ์š”์†Œ๋“ค์ด ๋ณต์‚ฌ๋œ๋‹ค.

 

<img src="css/copy.png" alt="copy" class="image">

 

copy.png๋ฅผ ๋„ฃ์—ˆ๋‹ค. ์ด ์ด๋ฏธ์ง€๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ณต์‚ฌํ•˜๊ธฐ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค.

 

List ํ˜•ํƒœ์ธ 6์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ๋ณต์‚ฌ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

 

 

 


 

 

 

 

 

3.  node.js ์„ค์น˜ํ•˜๊ธฐ. (์ด ๊ธฐ๋Šฅ๋งŒ ์ˆ˜ํ–‰ํ• ๊ฑฐ๋ฉด ์„ค์น˜ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค.)

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ „ํ˜€ ๋ชจ๋ฅด๋Š” ๋‚˜๋Š” ๋ฌด์ž‘์ • node.js๋ฅผ ์„ค์น˜ํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ธฐ๋Šฅ๋งŒ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋ฅผ ์›ํ•œ๋‹ค๋ฉด ์ด ๋ถ€๋ถ„์€ ์ดํ–‰ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

์Šคํ”„๋งMVC๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ JavaScript ํŒŒ์ผ์˜ ์ •์ ํŒŒ์ผ์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฑฐ๊ธฐ๋‹ค ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—๋Š” ThymeLeaf๋ฅผ ์„ค์น˜ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— node.js๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ฐ„๋‹จํ•œ ๊ธฐ๋Šฅ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ๋„ node.js ์„ค์น˜๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.

 

 

 

โ–ก ๋งํฌ ๋“ค์–ด๊ฐ€๊ธฐ.

 

https://nodejs.org/en

 

Node.js — Run JavaScript Everywhere

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

 

 

โ–ก ๋ฉ”์ธ ํ™”๋ฉด ์† Download(LTS) ๋ˆ„๋ฅด๊ธฐ

LTS ๋ฒ„์ „์ด Long Temp Support๋กœ ์žฅ๊ธฐ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๋ฒ„์ „์ด๊ธฐ ๋•Œ๋ฌธ์— LTS ๋ฒ„์ „์œผ๋กœ ๋‹ค์šด๋ฐ›์„ ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

 

 

 

 

โ–ก ์„ค์น˜ํ•˜๊ธฐ (ํ•˜๋˜๋Œ€๋กœ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.)

 

 

 

โ–ก ํ„ฐ๋ฏธ๋„์— ๊ฐ€์„œ ์„ค์น˜ ํ™•์ธํ•˜๊ธฐ.

    node -v ์ž…๋ ฅ

 

 

 

โ–ก node.js๋Š” ๋ฌด์—‡์ธ๊ฐ€?

 

node.js๋ž€ Chrome V8 JavaScript ์—”์ง„์œผ๋กœ ๋นŒ๋“œ๋œ JavaScript ๋Ÿฐํƒ€์ž„์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋Ÿฐํƒ€์ž„์€ ํŠน์ • ์–ธ์–ด๋กœ ๋งŒ๋“  ํ”„๋กœ๊ทธ๋žจ๋“ค์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๋œปํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” HTML์— ์ข…์†๋˜์–ด ์žˆ๋Š” ์–ธ์–ด๋กœ HTML ์กฐ์ž‘๊ณผ ๋ณ€๊ฒฝ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ํ•ด์„์€ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›๋ž˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ๊ฑด๋ฐ, node.js๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋‹Œ ๊ณณ์—์„œ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

node.js๋Š” ๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ ์ฑ„ํŒ…์„œ๋น„์Šค์™€ ๊ฐ™์ด ์š”์ฒญ์ด ํ•œ๋ฒˆ์— ๋งŽ์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ณณ์— ์šฉ์ดํ•˜๋‹ค. ์š”์ฒญ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์€ ์ฐจ๊ทผ์ฐจ๊ทผ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์š”์ฒญ์„ ํ•œ๋ฒˆ์— ๋ฐ›์•„ ์ˆœ์„œ๋ฅผ ์ƒ๊ด€ํ•˜์ง€ ์•Š๊ณ  ์†๋„๊ฐ€ ๋น ๋ฅธ ๊ฒƒ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๊ณ ๊ฐ์ด ์ž์‹ ์˜ ์ˆœ์„œ๊ฐ€ ์˜ฌ ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

 

 

 

 


 

 

 

 

 

4.  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ถ„์„ํ•˜๊ธฐ.

 

document.addEventListener("DOMContentLoaded", () => {

 

document๋Š” ์›นํŽ˜์ด์ง€ ์ž์ฒด๋ฅผ ์˜๋ฏธํ•œ๋‹ค. HTML ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ณ ์ž ํ•  ๋•Œ ๋ฌด์กฐ๊ฑด ์จ์•ผํ•œ๋‹ค. addEventListener๋Š” ์–ด๋–ค ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ธ๋ฐ, document.์— ๋ถ™์–ด์žˆ์œผ๋‹ˆ ๋”์— ์–ด๋–ค ํŠน์ • ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋ ค๊ณ  ํ•œ๋‹ค๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ "DOMContentLoaded"๋ฅผ ๋ณด๋ฉด ๋”์— ์–ด๋–ค ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. "DOMCotentLoaded"๋Š” ๋”ํŠธ๋ฆฌ ๊ตฌ์„ฑ์ด ์™„์ „ํžˆ ๋๋‚œ ํ›„ ๋”์— ์ ‘๊ทผํ•˜๋„๋ก ํ•œ๋‹ค. ๊ทธ๋กœ ์ธํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์˜ค๋ฅ˜ ๋ฐœ์ƒ์„ ๋ฐฉ์ง€ํ•ด์ค€๋‹ค.

 

ํ•ฉ์ณ์„œ ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์„ค๋ช…ํ•˜์ž๋ฉด, HTML์— ์ ‘๊ทผํ• ๊ฑด๋ฐ(document) ๋”ํŠธ๋ฆฌ ๊ตฌ์„ฑ์ด ์™„์ „ํžˆ ๋๋‚œ ํ›„ ๋”์— ์ ‘๊ทผํ•˜๋Š”("DOMContentLoaded") ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ฒ ๋‹ค(addEventListener)

 

์—ฌ๊ธฐ์„œ ๋”ํŠธ๋ฆฌ๋Š” HTML์˜ ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ์œผ๋กœ, ๋”ํŠธ๋ฆฌ ๊ตฌ์„ฑ์ด ์™„์ „ํžˆ ๋๋‚œ ํ›„๋ผ๋Š” ๊ฒƒ์€ HTML์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค์ธ <body> <h1> ๋“ฑ์ด ๋ชจ๋“  ๊ตฌ์„ฑ์„ ์™„๋ฃŒํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋”์€ HTML ํ˜น์€ XML ๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‹ค. ์›นํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” HTML ๋ฌธ์„œ๋ฅผ ๋ธŒ๋ผ์šฐ์ €๋กœ ์ฝ์–ด๋“ค์—ฌ ๊ฐ์ฒด ๋ชจ๋ธ๋กœ ๋ณ€ํ™˜ํ•˜๋ฉฐ, ์ด๋ฅผ ํ†ตํ•ด JavaScript ๊ฐ™์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋ฌธ์„œ๋ฅผ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ, ์ถ”๊ฐ€, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋”ํŠธ๋ฆฌ ๊ตฌ์„ฑ์ด ๋๋‚œ ํ›„ ๋”์— ์ ‘๊ทผํ•˜์ž๋Š” ๋ง์€ HTML์˜ ๋ชจ๋“  ๋…ธ๋“œ๋“ค์„ ํŠธ๋ฆฌ๋กœ ๋งŒ๋“  ํ›„์— JavaScript๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ผ ์ •๋„๋กœ ํ•ด์„ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

function copyNumbers()

 

function์€ ํ•จ์ˆ˜๋กœ ์ž๋ฐ”์—์„  ๋ฉ”์„œ๋“œ์™€ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ํ•จ์ˆ˜๋กœ copyNumbers๋ฅผ ์ •์˜ํ–ˆ๋Š”๋ฐ, copyNumbers๋Š” ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ด์ง€๋ฉฐ ๋™์ž‘์„ ๋ฌถ์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

const numbers = Array.from(document.querySelectorAll(".second h1")).map(el => el.textContent.trim());
const numbersString = numbers.join(" ");

 

const์™€ ํ•จ๊ป˜ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๊ฐ’์ด ํ•ด๋‹น ๋ฒ”์œ„ ๋‚ด์—์„œ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋œ๋‹ค. ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๋‹ค์‹œ ์„ ์–ธํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„ ์–ธ๋œ ๋ธ”๋ก ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. ์›๋ž˜๋Š” var๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ–ˆ๋‹ค. var์˜ ๊ฒฝ์šฐ ์„ ์–ธ๋œ ๊ฐ’์ด ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ฒจ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณค ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ let(์—…๋ฐ์ดํŠธ ๊ฐ€๋Šฅ, ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ) ํ˜น์€ const(์—…๋ฐ์ดํŠธ, ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ)๊ฐ€ ํ•„์š”ํ•ด์ง„ ์ด์œ ๊ฐ€ ๋๋‹ค. 

 

document.querySelectorAll(".second h1")์€ HTML์— ์žˆ๋Š” second ๋ถ€๋ถ„์˜ h1์˜ ์ฟผ๋ฆฌ๋ฅผ ๋ชจ๋‘ ์„ ํƒํ•œ ํ›„, Array.from์„ ํ†ตํ•ด NodeList๋ฅผ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ํ›„ map์€ ๊ฐ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด el์€ map์— ์˜ํ•ด ์˜ฎ๊ฒจ์ง„ ๊ฐ ๋”์˜ ์š”์†Œ๊ฐ€ ๋˜๋ฉฐ, second์— ์žˆ๋Š” ๋ชจ๋“  h1์„ ์„ ํƒํ•œ๋‹คํ–ˆ์œผ๋‹ˆ ๊ทธ ์š”์†Œ๋“ค์ด map์— ์˜ํ•ด el๋กœ ์˜ฎ๊ฒจ์ง„ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ el์€ textContent.trim์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

 

textContent๋Š” <h1> </h1> ํƒœ๊ทธ ์† ํ…์ŠคํŠธ ์ปจํ…์ธ ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. HTML์„ ์‚ดํŽด๋ณด๋ฉด <h1 th:text="${Number1}"> RandomNumber</h1>์œผ๋กœ ๋˜์–ด์žˆ๋‹ค. ์ด ํ…์ŠคํŠธ ์†์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์€ Number1์— ๋“ค์–ด๊ฐ„ ์ˆซ์ž์ผํ…Œ๋‹ˆ ์ˆซ์ž๋ฅผ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. .trim์€ ๋ฌธ์ž์—ด ์ขŒ์šฐ์— ์žˆ๋Š” ๊ณต๋ฐฑ์„ ์—†์• ์ค€๋‹ค. 

 

๋งŒ์•ฝ 1,2,3,4,5,6์ด๋ž€ ์ˆซ์ž๊ฐ€ ๋กœ๋˜ ๋ฒˆํ˜ธ๋กœ ๋‚˜์™”๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ๊ทธ๋Ÿฌ๋ฉด ํ˜„์žฌ "1" , "2" , "3" , "4" , "5" , "6" ์ด๋Ÿฐ ํ˜•ํƒœ๋ฅผ ๋„๊ณ  ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

Array ์ธ์Šคํ„ด์Šค์˜ join( ) ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์‰ผํ‘œ๋‚˜ ์ง€์ •๋œ ๊ตฌ๋ถ„ ๋ฌธ์ž์—ด๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์—ฐ๊ฒฐํ•œ ์ƒˆ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ด์ œ "1 2 3 4 5 6"์œผ๋กœ numberString์— ์˜ฎ๊ฒจ์ง€๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ (" ") ๋„์–ด์“ฐ๊ธฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๊ตฌ๋ถ„ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ("")๋ผ๊ณ  ์ง€์ •ํ•˜๋ฉด "123456" ํ˜•์‹์œผ๋กœ ๋„์–ด์“ฐ๊ธฐ ์—†์ด ๋‚˜์—ด๋  ๊ฒƒ์ด๋‹ค.

 

 

 

navigator.clipboard.writeText(numbersString).then(() => {
        alert("๋Ÿญํ‚ค ๋กœ๋˜ ์ˆซ์ž ๋ณต์‚ฌ ์™„๋ฃŒ!");
    }).catch(err => {
        console.error("๋ณต์‚ฌ ์‹คํŒจ:", err);
        alert("๋ณต์‚ฌ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.");
    });
}

 

navigator.clipboard.writeText๋Š” Clipboard API๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ์ด๋‹ค. Clipboard API๋Š” Promise ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ฆฝ ๋ณด๋“œ ๋‚ด์šฉ์„ ๋น„๋™๊ธฐ์‹์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด API๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์‹œ์ ์— ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ writeText ๋ฉ”์„œ๋“œ๊ฐ€ ๋น„๋™๊ธฐ ํ•จ์ˆ˜๋กœ Promise๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ๋‹จ, ๊ถŒํ•œ์ด ์žˆ๊ณ  ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด์žˆ๋Š” ์ƒํƒœ์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

numberString์˜ write๋ฅผ ์ž˜ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ ๋‹ค์Œ์„  then ๋ฉ”์„œ๋“œ ์ธ์ž๋กœ ๋„˜๊ฒจ์ค€๋‹ค. ์—ฌ๊ธฐ์„  alert์ธ ๊ฒฝ๊ณ  ๋Œ€ํ™” ์ƒ์ž์— ํ‘œ์‹œํ•  ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค. ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋ฉด "๋Ÿญํ‚ค ๋กœ๋˜ ์ˆซ์ž ๋ณต์‚ฌ ์™„๋ฃŒ!" ๋ผ๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ์ถœ๋ ฅ๋  ๊ฒƒ์ด๋‹ค.

 

 catch๋ฅผ ํ†ตํ•ด ์˜ˆ์™ธ๋ฐœ์ƒ์ง€์ ์—์„œ alert๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ํ–ˆ๋‹ค. ์˜ค๋ฅ˜๋Š” console.error๋กœ ์ถœ๋ ฅํ•˜๋„๋ก ํ•˜๋Š”๋ฐ, "๋ณต์‚ฌ ์‹คํŒจ"๋ผ๋Š” ๋ฉ”์‹œ์ง€๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณด๊ฒŒ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  err์— ์‹ค์ œ ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ๊ฐ์ฒด๋ฅผ ๋‹ด๋Š”๋‹ค. alert์— ๋‹ด๊ธด "๋ณต์‚ฌ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค." ๋ฉ”์‹œ์ง€๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๊ฒŒ๋œ๋‹ค. 

 

 

 

const copyImage = document.querySelector("img[alt='copy']");
if (copyImage) {
    copyImage.addEventListener("click", copyNumbers);
}

 

const๋Š” ์ž๋ฐ”์—์„œ final๊ณผ ๋น„์Šทํ•˜์—ฌ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋‹ค.(์ฐธ์กฐํ˜•์€ ์ˆ˜์ •๊ฐ€๋Šฅ) ์ด๋ฏธ์ง€ ํƒœ๊ทธ ์ค‘ alt ์†์„ฑ์ด copy๋ผ๊ณ  ์ง€์ •๋œ ์ฟผ๋ฆฌ๋ฅผ ์„ ํƒํ•˜์—ฌ copyImage๋ผ๊ณ  ๋ณ€์ˆ˜๋ช…์„ ๋ถ™์—ฌ์คฌ๋‹ค. ๋งŒ์•ฝ copyImage ๊ฐ์ฒด๊ฐ€ click์ด๋ผ๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์œ„์—์„œ ์ •์˜ํ•œ function์ธ copyNumbers๋ฅผ ์‹œํ–‰ํ•˜๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๋œ๋‹ค.

 

์‰ฝ๊ฒŒ ๊ฐ„์ถ”๋ฆฌ๋ฉด copyImage๋Š” alt๋ฅผ copy๋ผ๊ณ  ์ง€์ •ํ•œ ๊ฒƒ์ด๊ณ  ์ด๊ฒŒ ๋ˆŒ๋ฆฌ๋ฉด copyNumbers ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ผ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

 

Q. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด์„œ ์ž๋ฐ”๋ž‘์€ ๋‹ค๋ฅด๊ฒŒ ์˜จ์ ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉํ–ฅ์ด ์กฐ๊ธˆ ๋‹ค๋ฅธ ๊ฒƒ ๊ฐ™๋‹ค.

 

A. ๋ณดํ†ต ์ž๋ฐ”์—์„œ ์˜จ์ ์€ ๊ฐ์ฒด์˜ ํ•„๋“œ๋‚˜ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋„ ๊ทธ์— ํ•ด๋‹นํ•˜๋Š”๋ฐ ์ฒด์ด๋‹์ด๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๋” ์ถ”๊ฐ€๋œ๋‹ค. ์ฒด์ด๋‹์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์–ด๋–ค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๊ทธ ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ์— ๋ฐ”๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด์–ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

 

์˜ˆ์‹œ๋ฅผ ๋“ค์–ด๋ณด๋ฉด chocolate.sell(2); chocolate.buy(1); ๋ผ๊ณ  ๊ฐ€์ •ํ•œ ๊ฒฝ์šฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” chocolate.sell(2).buy(1);์œผ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

 


 

 

 

 

5.  HTML์— ๋งŒ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—ฐ๊ฒฐํ•˜๊ธฐ.

 

 

โ–ก ๊ฒฝ๋กœ ํ™•์ธํ•˜๊ธฐ.

 

static๊ณผ css๊ฐ€ ๋”ฐ๋กœ ๋ถ„๋ฆฌ๋˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์ผ๋‹จ ํ˜„์žฌ ํ”„๋กœ์ ํŠธ๋Š” ์ €์ ˆ๋กœ ํ•ฉํ•ด์กŒ๋‹ค. js ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋”ฐ๋กœ ์•ˆ๋งŒ๋“ค๊ณ  css์™€ ๊ฐ™์ด ๋„ฃ์–ด์„œ ๊ทธ๋Ÿฐ๊ฑด์ง€ ์ดˆ๋ฐ˜์— ๊ฒฝ๋กœ ์ธ์‹์„ ์ž˜ ๋ชปํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ js ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์— copy.js๋ฅผ ๋„ฃ์—ˆ๋‹ค.

 

 

โ–ก ๊ฒฝ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ.

<head>
    <meta charset="UTF-8">
    <title>๋Ÿญํ‚ค๋น„ํ‚ค ๋กœ๋˜</title>
    <link rel="stylesheet" href="css/style.css" type="text/css">
    <script src="css/js/copy.js" defer></script>
</head>

 

 

 

 


 

 

 

 

6.  ๋งˆ๋ฌด๋ฆฌํ•˜๊ธฐ

 


โ–ก
 ์ดˆ๊ธฐ ๊ตฌ์ƒ

 

  ์ดˆ๋ฐ˜ ๊ตฌ์ƒ์—์„œ๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•  ์˜ˆ์ •์œผ๋กœ ๋Œ“๊ธ€์ฐฝ์€ ์—†์—ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‹ค๋ณด๋‹ˆ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์ดํ•ด๋„๋ฅผ ํ‚ค์šฐ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„ ์ค‘๊ฐ„์— ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค. ๋น„์Šทํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์ตœ๋Œ€ํ•œ ๋…ธ๋ ฅํ–ˆ๋‹ค. ์ž˜ ์•ˆ๋ ์ง€๋„ ๋ชจ๋ฅธ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ, ์ดˆ๋ฐ˜์— ๊ธฐ๋Œ€ํ–ˆ๋˜ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ์ข‹์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋งŒ๋“  ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

 

โ–ก ๋ณ€ํ™”

 


(1)

 

 

(2)

 

 

(3)

 

 

 

 

โ–ก ๋งˆ๋ฌด๋ฆฌํ•˜๋Š” ๋ง

 

 ๋ธ”๋กœ๊ทธ ์ž‘์„ฑ๋งŒ ์•„๋‹ˆ์—ˆ๋‹ค๋ฉด ๋” ๋นจ๋ฆฌ ๋๋ƒˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋ธ”๋กœ๊ทธ๋ฅผ ์ž‘์„ฑํ•˜๋‹ค๋ณด๋ฉด ์ •๋ง ๋งŽ์€ ๊ฐœ๋…์„ ๋ฐฐ์šฐ๊ณ  ์–ด๋–ค ๊ตฌ์กฐ์ธ์ง€ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ๊ฒŒ๋˜๋Š” ์ด์ ์€ ํ™•์‹คํ•˜๋‹ค. ํ•˜๋‚˜ ์ž‘์„ฑํ•˜๋Š”๋ฐ ๋ช‡์‹œ๊ฐ„์”ฉ ๊ฑธ๋ฆฌ๊ฑฐ๋‹ค ๊ฐ€๋” ์ดํ•ด๊ฐ€ ๊ฐ€์ง€ ์•Š๋Š” ๊ฐœ๋…์— ๋ง‰ํžˆ๋ฉด... ์ •๋ง 2-3์ผ ์ •๋„ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ๊ต‰์žฅํžˆ ์‰ฌ์šด ํ”„๋กœ์ ํŠธ์˜€์ง€๋งŒ ๊ทธ๋งŒํผ ์–ด๋–ค์‹์œผ๋กœ ์ด๋ค„์ง€๋Š”์ง€ ํ™•์‹คํ•˜๊ฒŒ ์•Œ๊ฒŒ ๋œ ๊ฑฐ ๊ฐ™๋‹ค.

 ์Šคํ”„๋งMVC ๊ฐ•์˜๋ฅผ ๋“ฃ๊ธฐ ์ „ ๊ฐ„๋‹จํ•˜๊ณ  ์งง์€ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ด๋ณด๋ฉด ์ข‹๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์ •๋ง ์ž˜ํ•œ ์„ ํƒ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์ด์ œ ์Šคํ”„๋งMVC ๊ฐ•์˜๋„ ๋“ฃ๊ณ , ์ž๋ฐ”์™„์ „์ •๋ณต ๋ธ”๋กœ๊ทธ๋„ ์—ด์‹ฌํžˆ ์ž‘์„ฑํ•˜๊ณ , ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋„ ์ˆ˜๊ฐ•ํ•ด๋ด์•ผ๊ฒ ๋‹ค.




 

 

๐Ÿชฝ

"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

 

 

 

[ ๋ธ”๋กœ๊ทธ์— ์“ด ๋‚ด์šฉ๋“ค์˜ ์ถœ์ฒ˜๋Š” ์•„๋ž˜์— ์ ์–ด๋‘˜ํ…Œ๋‹ˆ

๋“ค์–ด๊ฐ€์„œ ์ฝ์–ด๋ณด์‹œ๋ฉด ๋”์šฑ ๋„์›€์ด ๋˜์‹ค ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค ]

 

 

 

- node.js ์„ค์น˜

 

[mac OS] node.js ์„ค์น˜ํ•˜๊ธฐ

๐Ÿ“Node.js๋ž€? - Node.js๋Š” Chrome V8 JavaScript ์—”์ง„์œผ๋กœ ๋นŒ๋“œ๋œ JavaScript ๋Ÿฐํƒ€์ž„์ž…๋‹ˆ๋‹ค. ๐Ÿ“macOS์—์„œ Node.js ์„ค์น˜ ๋ฐฉ๋ฒ• 1. ์‚ฌ์ดํŠธ (https://nodejs.org/en ) ์ ‘์† Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaSc

favonius.tistory.com

 

 

- Node.js

 

[๊ฐœ๋ฐœ ๊ธฐ๋ณธ ์ง€์‹] Node.js๋ž€?

"Node.js๋Š” Chrome V8 JavaScript ์—”์ง„์œผ๋กœ ๋นŒ๋“œ๋œ JavaScript ๋Ÿฐํƒ€์ž„์ž…๋‹ˆ๋‹ค" ?? ๐Ÿค”๊ทธ๋ž˜์„œ ๋ญ”๋ฐ์š”?

velog.io

 

 

- documet

 

์ฝ”๋”ฉ๊ต์œก ํ‹ฐ์”จํ”ผ์Šค์ฟจ

4์ฐจ์‚ฐ์—…ํ˜๋ช…, ์ฝ”๋”ฉ๊ต์œก, ์†Œํ”„ํŠธ์›จ์–ด๊ต์œก, ์ฝ”๋”ฉ๊ธฐ์ดˆ, SW์ฝ”๋”ฉ, ๊ธฐ์ดˆ์ฝ”๋”ฉ๋ถ€ํ„ฐ ์ž๋ฐ” ํŒŒ์ด์ฌ ๋“ฑ

tcpschool.com

 

 

- addEventListener

 

[JAVASCRIPT] addEventListener()

addEventListener()๋Š” documnet ์š”์†Œ์— event๋ฅผ ๋ถ€์—ฌํ•  ๋•Œ ์‚ฌ์šฉ. addEventListener(event, ์‹คํ–‰ํ•  ํ•จ์ˆ˜) ๋กœ ์ •์˜ํ•œ๋‹ค. ์ด 3๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. button.addEventListener('์ด๋ฒคํŠธ', ํ•จ์ˆ˜๋ช…) button.addEventListener('

ghrnwjd.tistory.com

 

 

- dom

 

[JavaScript] DOM์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

JavaScript๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๋ณด๋ฉด ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜์˜ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋“ค์— ๋Œ€ํ•ด์„œ ๋“ฃ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ์ด ๊ฐ์ฒด๋“ค์ด ...

blog.naver.com

 

 

- DomContentLoaded

 

[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] DOMContentLoaded ์ด๋ฒคํŠธ

์•ˆ๋…•ํ•˜์„ธ์š”! ์ด๋ฒˆ์‹œ๊ฐ„์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ DOMContentLoaded ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.๋”ํŠธ๋ฆฌ ๋ถ„์„์ด ๋๋‚˜๋ฉด ๋ฐœ์ƒ์ฆ‰, ๋”ํŠธ๋ฆฌ๊ฐ€ ๋‹ค ๋งŒ๋“ค์–ด์ง„ ํ›„์— ๋”์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ๋•Œ๋ฌธ์—, ๋”์ด ์ƒ์„ฑ๋˜๊ธฐ

velog.io

 

 

- event

 

Javascript event ๋‹ค๋ฃจ๊ธฐ(eventListener๋ฅผ ์“ฐ๋Š” ์ด์œ )

event๋ž€?? event๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์€?? event listener vs event handler??

velog.io

 

 

- eventListener

 

JavaScript ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ(eventListener)

๋‚˜.. ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ ๋ชจ๋ฅด๋„ค โœ addEventListener EventTarget ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ. ์ง€์ •ํ•œ ์œ ํ˜•์˜ ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•  ๋•Œ๋งˆ๋‹ค ํ˜ธ์ถœํ•  ํ•จ์ˆ˜๋ฅผ ์„ค์ •ํ•œ๋‹ค. = ํ˜ธ์ถœ ์‹œ ์ธ์ž๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š”๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋Œ€์ƒ Element, Do

pottatt0.tistory.com

 

 

- ๋”ํŠธ๋ฆฌ

 

DOM ํŠธ๋ฆฌ

 

ko.javascript.info

 

 

- ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋… ๋ชจ์Œ

 

JavaScript | MDN

JavaScript (JS)๋Š” ๊ฐ€๋ฒผ์šด, ์ธํ„ฐํ”„๋ฆฌํ„ฐ ํ˜น์€ just-in-time ์ปดํŒŒ์ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ, ์ผ๊ธ‰ ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์›น ํŽ˜์ด์ง€๋ฅผ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด๋กœ ์ž˜ ์•Œ๋ ค์ ธ ์žˆ์ง€๋งŒ, Node.js, Apache CouchDB, Adobe Acrobat์ฒ˜๋Ÿผ

developer.mozilla.org

 

 

- trim

 

[ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ] trim()

trim() : ๋ฌธ์žฅ(๋ฌธ์ž์—ด, string)์—์„œ, ์–‘๋์— ์žˆ๋Š” ๊ณต๋ฐฑ๋ฌธ์ž๋ฅผ ๋ชจ๋‘ ์‚ญ์ œํ•œ๋‹ค. ์ต์Šคํ”Œ๋กœ๋Ÿฌ(ie) 9 ์ด์ƒ & ๊ทธ์™ธ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. "trim()"์œผ๋กœ, " "๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด, "textContent"๋‚˜

tonks.tistory.com

 

 

- map

 

[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] javascript map() ์‚ฌ์šฉํ•˜๊ธฐ

[์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] javascript map() ์‚ฌ์šฉํ•˜๊ธฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ for๋ฌธ์˜ ๋‚จ์šฉ์„ ๋ง‰๊ธฐ์œ„ํ•ด ๋งŒ๋“ค์–ด๋‚ธ ๋ฐฐ์—ดํ•จ์ˆ˜! ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ˆœํ™˜ํ•˜๋ฉฐ ์–ด๋– ํ•œ ๊ฐ€๊ณต์„ ๊ฐ€ํ•˜๊ฑฐ๋‚˜, ๋ฐฐ์—ด์š”์†Œ ์•ˆ์˜ ์š”์†Œ๋ฅผ ์ถ”์ถœํ•˜๊ฑฐ๋‚˜ ํ•  ๋•Œ

devinserengeti.tistory.com

 

 

- clipboard API

 

Clipboard API ์‚ฌ์šฉํ•˜๊ธฐ

๊ธฐ์กด์— ์›จ์ด๋ธŒ์˜จ์—์„œ ์—˜๋ฆฌ๋จผํŠธ์˜ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ๋Š” ๊ฐ™์€ ํƒญ ๋‚ด์—์„œ๋งŒ ๊ฐ€๋Šฅํ–ˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๊ธฐ์กด์—๋Š” ํด๋ฆฝ๋ณด๋“œ๊ฐ€ ์•„๋‹Œ ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ์ธ Vuex๋ฅผ ํ™œ์šฉํ•ด ๋ณต์‚ฌ๊ฐ€ ๋œ ์—˜๋ฆฌ๋จผํŠธ์˜ ์ •๋ณด๋ฅผ ๊ด€๋ฆฌ ํ–ˆ

velog.io

 

 

- ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

 

๐Ÿ“š ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ(Exception)

์˜ˆ์™ธ (exception) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์˜ˆ์™ธ(exception)๋ž€ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์—ฌ ๋” ์ด์ƒ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์„ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ๋ฒ•์ ์ธ ์˜ค๋ฅ˜์ด๊ฑฐ๋‚˜ ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†

inpa.tistory.com

 

 

- ์ฒด์ด๋‹

 

[JavaScript] Method Chaining (๋ฉ”์„œ๋“œ ์ฒด์ด๋‹)

๊ณผ์ œ๋ฅผ ํ•˜๋˜ ์ค‘ ํ•จ์ˆ˜์˜ return๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„์ด ์—†๋Š”๋ฐ๋„ this๋ฅผ returnํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด return์„ ํ•ด๋‘” ๊ฒƒ์ธ๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋Š”๋ฐ ๊ฒ€์ƒ‰ํ•ด๋ณด์•„๋„ ๋ช…ํ™•ํ•œ ํ•ด๋‹ต์„ ์ฐพ์ง€ ๋ชปํ–ˆ

developerntraveler.tistory.com

 

 

 

[ ๊ฐ„๋‹จํ•œ ๋Œ“๊ธ€์ฐฝ ๋งŒ๋“ค๊ธฐ (1) ]

 

Spring - [intelliJ,Thymeleaf] ๊ฐ„๋‹จํ•œ ๋Œ“๊ธ€์ฐฝ ๋งŒ๋“ค๊ธฐ(1)

[ @PostMapping์œผ๋กœ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ] Spring - [intelliJ,Thymeleaf] @PostMapping์œผ๋กœ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ(2) ] Spring - [intelliJ,Thymeleaf] ๋กœ๋˜,

post-this.tistory.com

 

 

 

 


 

 

H2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ
๋Œ“๊ธ€ ๊ด€๋ฆฌํ•˜๊ธฐ.

 

 

 

1. H2 ์„ค์น˜ํ•˜๊ธฐ.

 

 

โ–ก ์•„๋ž˜ ๋งํฌ ๋“ค์–ด๊ฐ€๊ธฐ.

 

https://h2database.com/html/main.html

 

H2 Database Engine

H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size     Supp

h2database.com

 

 

โ–ก mac์€ All Platforms ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ.

 

 

 

 

โ–ก ์••์ถ•ํ’€์–ด์ฃผ๊ธฐ.

 

 

 

โ–ก ํ„ฐ๋ฏธ๋„ ๋“ค์–ด๊ฐ€๊ธฐ.

 

1. ์••์ถ•์„ ํ’€์–ด์ค€ ํŒŒ์ผ์˜ ์œ„์น˜๋กœ ๋“ค์–ด๊ฐ„๋‹ค.

    : cd ๊ฒฝ๋กœ/bin

 

2. ๊ถŒํ•œ ๋ถ€์—ฌ

    : chmod 755 h2.sh

 

3. ์ฝ˜์†” ์ ‘์†

    : ./h2.sh

 

 

 


 

 

 

 

2. ์˜์กด์„ฑ ์ฃผ์ž…ํ•˜๊ธฐ.

 

โ–ก build.gradle์— H2 ์˜์กด์„ฑ ์ฃผ์ž…

runtimeOnly 'com.h2database:h2'

 

 

 

โ–ก build.gradle์— jpa ์˜์กด์„ฑ ์ฃผ์ž…

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

 

 

 


 

 

 

3. application.properties ์ž‘์„ฑํ•˜๊ธฐ.

 

โ–ก  DataSource ์„ค์ •ํ•˜๊ธฐ.

spring.application.name=LuckyLotto

spring.datasource.url=jdbc:h2:file:./data/mydb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=

 

h2๋Š” ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค. ๊ทธ๋ƒฅ ์‰ฝ๊ฒŒ ์ž๋ฐ”์™€ ์•ˆ์„ฑ๋งž์ถคํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ์ฃผ๋กœ ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. h2๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ง€์›ํ•˜๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ธ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋„์šฐ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์žฌ๊ฐ€๋™๋  ๋•Œ๋งˆ๋‹ค ์ดˆ๊ธฐํ™”๊ฐ€ ๋œ๋‹ค.

 

url = ์„ ์„ค์ •ํ•˜์—ฌ ๋‚˜์ค‘์— h2 ํ”„๋กœ๊ทธ๋žจ ์ฐฝ์— ์ ์–ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. driver ์ฝ”๋“œ๋Š” Spring Boot ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•  ๋•Œ ์‚ฌ์šฉํ•  JDBC ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ง€์ •ํ•˜๋Š” ์„ค์ •์ด๋‹ค. sa๋Š” ๊ธฐ๋ณธ ์‚ฌ์šฉ์ž ์ด๋ฆ„์ด๊ณ  password๋Š” ๊ทธ๋ƒฅ ์„ค์ •ํ•˜์ง€ ์•Š์•˜๋‹ค. 

 

 

 

โ–ก  DataSource ์„ค์ •ํ•˜๊ธฐ.

spring.jpa.hibernate.ddl-auto=update
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

 

hibernate๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•˜๋ฉฐ update๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ ํ…Œ์ด๋ธ”์ด ์—†์œผ๋ฉด ์ƒ์„ฑํ•˜๊ณ  ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๋ฉด ์ˆ˜์ •ํ•˜๋„๋ก ํ•œ๋‹ค. ํ˜„์žฌ๋Š” ๊ฐœ๋ฐœ ์ค‘์ด๋‹ˆ update๋ผ๊ณ  ์ ์—ˆ์ง€๋งŒ, ๋งŒ์•ฝ ์šด์˜์„ ํ•˜๊ฒŒ๋œ๋‹ค๋ฉด validate๋‚˜ none์„ ๊ถŒ์žฅํ•œ๋‹ค. 

 

console.enabled๋กœ ์ฝ˜์†”์„ ํ™œ์„ฑํ™”ํ•œ๋‹ค. ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด entity์— ์ ์–ด๋‘” id์™€ content ์š”์†Œ๋“ค์ด ๋ณด์ด์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. console.path๋ฅผ ํ†ตํ•ด ์ฝ˜์†”์— ์ ‘๊ทผํ•  URL์„ ์ง€์ •ํ•œ๋‹ค.

 

 

 


 

 

 

4. h2 ๋“ค์–ด๊ฐ€๊ธฐ.

 

โ–ก  ๋ธŒ๋ผ์šฐ์ €์— h2 ํ”„๋กœ๊ทธ๋žจ ์ ‘์†ํ•˜๊ธฐ.

 

http://localhost:8080/h2-console

 

h2-console์ด ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ๊ฒฝ๋กœ ์ด๋ฆ„์œผ๋กœ ํ–ˆ์œผ๋ฉด ๊ทธ ์ด๋ฆ„์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

 

 

โ–ก  ์„ค์ •ํ•œ ์ •๋ณด ๋„ฃ๊ธฐ.

JDBC URL: jdbc:h2:file:./data/mydb

User Name: sa

ํŒจ์Šค์›Œ๋“œ๋Š” ์„ค์ • ์•ˆํ–ˆ์œผ๋‹ˆ ๋„˜์–ด๊ฐ€๋ฉด ๋œ๋‹ค.

 

 


 

 

 

5. h2 ์‚ฌ์šฉํ•˜๊ธฐ.

 

โ–ก  ๋Œ“๊ธ€์„ ๋‚จ๊ฒผ๋‹ค.

 

 

โ–ก  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™•์ธํ•ด๋ณด๊ธฐ.

 

1. ์ „์ฒด ์กฐํšŒํ•˜๊ธฐ.

SELECT * FROM COMMENT_LIST;

 

 

2. id๊ฐ€ 21๋ฒˆ์ธ ๋Œ“๊ธ€ ์‚ญ์ œํ•ด๋ณด๊ธฐ.

DELETE FROM COMMENT_LIST WHERE id = 21;

 

ํŽ˜์ด์ง€์—์„œ๋„ ์‚ญ์ œ๋œ ๊ฑธ ํ™•์ผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 


 

 

 

๐Ÿชฝ

"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

 

 

 

[ ๋ธ”๋กœ๊ทธ์— ์“ด ๋‚ด์šฉ๋“ค์˜ ์ถœ์ฒ˜๋Š” ์•„๋ž˜์— ์ ์–ด๋‘˜ํ…Œ๋‹ˆ

๋“ค์–ด๊ฐ€์„œ ์ฝ์–ด๋ณด์‹œ๋ฉด ๋”์šฑ ๋„์›€์ด ๋˜์‹ค ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค ]

 

 

 

 

 

- H2์— ๋Œ€ํ•˜์—ฌ

 

H2 Database ๋ž€? ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ๋ฒ•?

H2 Database ๋ž€? H2๋Š” ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค. ์žฅ์  ๋”ฐ๋กœ ์„ค์น˜๊ฐ€ ํ•„์š”์—†๋‹ค ์šฉ๋Ÿ‰์ด ๋งค์šฐ ๊ฐ€๋ณ๋‹ค ์›น์šฉ ์ฝ˜์†”(์ฟผ๋ฆฌํˆด) ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์šฉ ๋กœ์ปฌDB๋กœ ์‚ฌ์šฉ ์šฉ์ด ํŠน์ง• JAVA๋กœ ์ž‘์„ฑ

yjkim-dev.tistory.com

 

 

 

- H2์— ๋Œ€ํ•˜์—ฌ

 

h2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค์น˜ ๋ฐ ์‹คํ–‰๋ฐฉ๋ฒ• ์ •๋ฆฌ

๊ฝค ๊ฐ€๋ฒผ์šด DB์ด๊ธฐ์— ์‹ค๋ฌด์—์„œ local์— ์„ค์น˜ํ•ด์„œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๋Š” h2 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.๋‹จ์ ์œผ๋กœ๋Š” ๋กœ์ปฌ์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ปดํ“จํ„ฐ ๋‹ค ๋„๋ฉด ๋‚ ์•„๊ฐ‘๋‹ˆ๋‹ค.  ๐Ÿ˜‡ํ…Œ์ŠคํŠธ์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜์„ธ์š”.

gray-tree.tistory.com

 

 

 

- H2 ์—ฐ๋™๋ฐฉ๋ฒ•

 

[Spring Boot] H2 ์—ฐ๋™ ๋ฐฉ๋ฒ•

๐Ÿ’ก build.gradle์— dependency ์ถ”๊ฐ€ ๐Ÿ’ก application.properties ํ˜•์‹ ๐Ÿ’ก application.yml ํ˜•์‹

velog.io

 

 

 

- H2 ์‚ฌ์šฉ์„ค์ •

 

Springboot + H2 Console ์‚ฌ์šฉ ์„ค์ •

H2 Console์ด๋ž€? - ์ž‘์€ ์šฉ๋Ÿ‰(2M)์˜ ์ž‘๊ณ  ๋น ๋ฅธ DB - JDBC API ์ง€์› - ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜ Console ์ง€์› - ์ธ ๋ฉ”๋ชจ๋ฆฌ(In-Memory) ๊ธฐ๋ฐ˜ Server ๋ชจ๋“œ์™€ Embedded ๋ชจ๋“œ ์ง€์› ์ธ ๋ฉ”๋ชจ๋ฆฌ(In-Memory) DB ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €

jamie95.tistory.com

 

 

 

 

[ @PostMapping์œผ๋กœ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ]

 

Spring - [intelliJ,Thymeleaf] @PostMapping์œผ๋กœ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ

[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ(2) ] Spring - [intelliJ,Thymeleaf] ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ(2)[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ ] Spring - [intelliJ,Thymeleaf] ๋กœ๋˜, ๋ฒ„

post-this.tistory.com

 

 

 


 

 

๋Œ“๊ธ€์„ ์ €์žฅํ•˜์—ฌ
์ตœ๊ทผ ๋Œ“๊ธ€ 10๊ฐœ๋งŒ ํ™”๋ฉด์— ์ถœ๋ ฅ๋œ๋‹ค.


 

 

1. ๋™์ž‘ํ™”๋ฉด๊ณผ ์ „์ฒด์ฝ”๋“œ

 

 

 

๋™์ž‘ํ™”๋ฉด

 

 

 

 

 

์ „์ฒด์ฝ”๋“œ

 

GitHub - hyeong-ing/LuckyLotto: ๋กœ๋˜ ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์›น์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค.

๋กœ๋˜ ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์›น์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค. Contribute to hyeong-ing/LuckyLotto development by creating an account on GitHub.

github.com

 

 

 

 


 

 

 

 

2. ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์ง€ ์ƒ๊ฐํ•˜๊ธฐ ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป

 

+ ์ด๊ฒƒ์ €๊ฒƒ ์‹œ๋„ํ•ด๋ณด๋ฉด์„œ ๋งŒ๋“ ๊ฑฐ๋ผ, DI๋‚˜ ํด๋ฆฐ์ฝ”๋“œ๋ฅผ ์ง€ํ‚ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.

 

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ„๋‹จํ•œ ๋Œ“๊ธ€์ฐฝ์„ ๋งŒ๋“ค๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

 

โ–ก ๋Œ“๊ธ€์€ ๊ฐ€์žฅ ์ตœ์‹ ์ธ 10๊ฐœ๋งŒ ์ถœ๋ ฅ๋œ๋‹ค.

     โ–ป  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊บผ๋‚ผ๋•Œ DESC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 10๊ฐœ๋งŒ ๋ณด์ด๋„๋ก ํ•œ๋‹ค.

 

โ–ก 25์ž ์ด์ƒ์€ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.

     โ–ป  ๊ธ€์ด 1์ž ์ด์ƒ 25์ž ์ดํ•˜๋กœ ์ €์žฅ๋˜๊ฒŒ ์กฐ๊ฑด์„ ์ œ์‹œํ•œ๋‹ค.

     

โ–ก repository(DB)์™€ ์—ฐ๊ฒฐํ•  entity, Controller, ๋Œ“๊ธ€์„ ์ฒ˜๋ฆฌํ•  Service๋ฅผ ๋งŒ๋“ค๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

 

 

 

 

 


 

 

 

 

 

3. ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ

 

โ–ก  ๋Œ“๊ธ€์„ ์ž…๋ ฅํ•  ๊ณต๊ฐ„ ๋งŒ๋“ค๊ธฐ.

<form th:action="@{/save}" method="get">
    <input class="write" type="text" name="content" 
    		placeholder ="์งง์€ ๋Œ“๊ธ€ ๋‚จ๊ธฐ๊ธฐ (25์ž์ด๋‚ด)" maxlength="25">
    <button class="save" type="submit"> ์ €์žฅ </button>
</form>

 

input ํƒœ๊ทธ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž…๋ ฅ์„ ๋ฐ›๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. type์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์žˆ๋‹ค. text, password, radio ๋“ฑ ์žˆ๊ณ  ๊ทธ ์ค‘ ๊ฐ„๋‹จํ•œ ๋Œ“๊ธ€์„ ์ €์žฅํ•˜๋‹ˆ ์†์„ฑ์€ text๋กœ ํ•ด์คฌ๋‹ค. placeholder๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ฐฝ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์ „ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ธ€์ž๊ฐ€ ๋ณด์ด๋„๋ก ํ•ด์ค€๋‹ค.

 

input์— ๋‹ด๊ธด ๋‚ด์šฉ์€ content๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ณด๋‚ด์ง€๊ฒŒ ๋œ๋‹ค. form์ด ๋ณด๋‚ด๋Š” ์—ญํ• ์„ ํ•˜๋Š”๋ฐ action์— ์ ์€ save๊ฐ€ ์žˆ๋Š” ๊ณณ์œผ๋กœ(์ปจํŠธ๋กค๋Ÿฌ) ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

 

โ–ก ๋Œ“๊ธ€์ด ๋ณด์—ฌ์ง€๋Š” ๊ณต๊ฐ„ ๋งŒ๋“ค๊ธฐ.

<div class="commentBox">
    <li class="font" th:each="comment : ${comments}" th:text="${comment.content}">
        comment
    </li>
</div>

 

li ํƒœ๊ทธ๋Š” HTML ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ๋˜๋Š” ์•„์ดํ…œ์„ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฒ€์€์ƒ‰ ์ž‘์€ ์›์ด ํ‘œ์‹œ๋œ๋‹ค${comment.contetn)๋กœ ํ™”๋ฉด์— ํ‘œ์‹œํ•  ๋‚ด์šฉ์„ ๊ฐ€์ ธ์™”๋‹ค. ์ด ๋‚ด์šฉ์€ ์ด 10๊ฐœ ๋Œ“๊ธ€๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ, each ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ํ™”๋ฉด์— ์ฐจ๋ก€๋กœ ์ถœ๋ ฅํ•ด์ค€๋‹ค. 

 

 

 

 

 


 

 

 

 

4. ๊ตฌ์กฐ ์„ค๋ช…

 

๊ถ๊ทน์ ์œผ๋กœ ๋Œ“๊ธ€์„ ์ž‘์„ฑํ•˜๋ฉด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅ์ด ๋˜๋„๋ก ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ €์žฅ๋œ ๋Œ“๊ธ€์„ ๋ฐ›์•„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๊นŒ์ง€ ์ €์žฅํ•ด์ค„ controller๊ฐ€ ํ•„์š”ํ•˜๋‹ค. controller๋Š” save๋ผ๋Š” ์•ค๋“œํฌ์ธํŠธ๋กœ ๋Œ“๊ธ€์„ ๋ฐ›์„ ๊ฒƒ์ด๋‹ค. ๋Œ“๊ธ€์—๋Š” ์กฐ๊ฑด์ด ์žˆ์—ˆ๋‹ค. 1์ž ์ด์ƒ 25์ž ์ดํ•˜๋ผ๋Š” ์กฐ๊ฑด์ด์—ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ด ๋ถ€๋ถ„์€ service๋ฅผ ํ†ตํ•ด ๊ด€๋ฆฌํ•  ๊ฒƒ์ด๋‹ค. service์— ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์กฐ๊ฑด์ด ๋งž์œผ๋ฉด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅ์ด ๋˜๋„๋กํ•œ๋‹ค.

๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅ๋œ ๋Œ“๊ธ€ 10๊ฐœ๋ฅผ ๊บผ๋‚ด ํ™”๋ฉด์— ์ถœ๋ ฅํ•  ๊ฒƒ์ด๋‹ค. ๋Œ“๊ธ€ 10๊ฐœ์˜ ์กฐ๊ฑด์€ ๊ฐ€์žฅ ์ตœ์‹ ์— ์ž‘์„ฑ๋œ ๊ฒƒ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ 10๊ฐœ๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์กฐ๊ฑด ์ค‘ ๊ฐ€์žฅ ์ตœ์‹ ์— ์ž‘์„ฑ๋œ ๊ฒƒ์ด๋ผ๋Š” ์กฐ๊ฑด์— ๋งž์ถฐ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•  ๊ฒƒ์ด๋‹ค.(๋‚ด๋ฆผ์ฐจ์ˆœ DESC๋กœ) ๋‚˜๋จธ์ง€ ์กฐ๊ฑด์œผ๋กœ 10๊ฐœ๋งŒ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด ๋‚จ์•„์žˆ๋‹ค. 10๊ฐœ๋งŒ ์ถœ๋ ฅ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ page๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋•Œ ์ด ๋ฉ”์„œ๋“œ๋Š” service์— ์ž‘์„ฑํ•œ๋‹ค. service์— return ๊ฐ’์„ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฐ›์•„(๋‚ด๋ฆผ์ฐจ์ˆœ) 10๊ฐœ๋งŒ ์ถœ๋ ฅ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ํ›„ controller์˜ model์„ ํ†ตํ•ด ๋ฐ›์•„ ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๋„๋ก ํ•  ๊ฒƒ์ด๋‹ค.

 

 

 


 

 

 

 

5. Entity์™€ Repository ์ž‘์„ฑํ•˜๊ธฐ.

 

โ–ก Repository

package com.LottoWeb.LuckyLotto.DB;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;


import java.util.List;

public interface BoardRepository extends JpaRepository<Comment, Long> {

    Page<Comment> findAllByOrderByIdDesc(Pageable pageable);
}

 

Jpa๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‹ค์–‘ํ•œ ํ•จ์ˆ˜๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—์„œ ์ด์šฉํ•œ Jpa๊ธฐ๋Šฅ์€ ๋Œ“๊ธ€์„ ์ €์žฅํ•ด์ฃผ๋Š” save์™€ ๋Œ“๊ธ€์„ ์กฐํšŒํ•˜๋Š” page ๊ทธ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด  CRUD ์ง€์›์ด ์žˆ๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ฟผ๋ฆฌ ๋ฉ”์„œ๋“œ๋Š” findAllByOrderByIdDesc๋กœ, ๋ชจ๋“  ๊ฒƒ์„ ์กฐํšŒํ•˜๊ณ  ๊ธฐ์ค€์€ ์•„์ด๋””๋กœ ํ•˜๋ฉฐ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ๋‚˜์—ดํ•œ๋‹ค ๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Page<Comment> ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

 

โ–ก Entity

package com.LottoWeb.LuckyLotto.DB;

import jakarta.persistence.*;
import lombok.*;


@Entity //๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋งคํ•‘ํ•œ๋‹ค.
@Getter
@NoArgsConstructor (access = AccessLevel.PROTECTED) //ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†๋Š” ๋””ํดํŠธ ์ƒ์„ฑ์ž ์ƒ์„ฑ
@Table(name = "Comment_List")
public class Comment {

    @Id //์—”ํ‹ฐํ‹ฐ์˜ ์ฃผ์š” ์‹๋ณ„์ž
    @GeneratedValue(strategy = GenerationType.IDENTITY) //์—”ํ‹ฐํ‹ฐ์˜ ์‹๋ณ„์ž์˜ ๊ฐ’์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑ
    private Long id;

    // ํ•ด๋‹น ์—”ํ‹ฐํ‹ฐ ํ•„๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปฌ๋Ÿผ์— ๋งคํ•‘๋  ๋•Œ ์ œ์•ฝ์„ ๊ฑธ์—ˆ๋‹ค.
    // 25์ž ๊ธธ์ด!
    @Column(length = 25)
    private String content;

    // ๋Œ“๊ธ€ content๋กœ ๋ฐ›์•„์˜จ ๊ฒƒ์„ ํ•„๋“œ์— ๋„˜๊ธฐ๋Š” ์ƒ์„ฑ์ž.
    public Comment(String content) {
        this.content = content;
    }

    /*
    @Builder
    public Comment(Long id, String content) {
        this.id = id;
        this.content = content;
    }
    */

}

 

์—”ํ‹ฐํ‹ฐ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค. ์—”ํ‹ฐํ‹ฐ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์œผ๋กœ ์–ด๋–ค ์ •๋ณด๋“ค์ธ ์ธ์Šคํ„ด์Šค(๋Œ“๊ธ€์ด ํ•˜๋‚˜๋ฉด ์—”ํ‹ฐํ‹ฐ ์„ฑ๋ฆฝ ๋ถˆ๊ฐ€)๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ์ด ๋˜์–ด์•ผํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์œ ์ผํ•œ ์‹๋ณ„์ž๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค. ๋ฐ˜๋“œ์‹œ ์†์„ฑ์„ ํฌํ•จํ•ด์•ผํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์œ ์ผํ•œ ์‹๋ณ„์ž๋กœ Id๋ฅผ ๋ถ€์—ฌํ–ˆ๋‹ค. ์ด๋Š” ์ค‘๋ณต๋  ์ˆ˜ ์—†๋Š” ๊ฒƒ์„ ์‹๋ณ„์ž๋กœ ๊ณจ๋ผ์•ผํ•œ๋‹ค. ์ด๋ฆ„์ด๋‚˜, ๋Œ“๊ธ€์„ ์‹๋ณ„์ž๋กœ ๊ณ ๋ฅด๋ฉด ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์†์„ฑ์œผ๋กœ content๋ฅผ ๋„ฃ์—ˆ๋‹ค. ์ฆ‰ Comment ์—”ํ‹ฐํ‹ฐ์— content์ธ ๋Œ“๊ธ€ ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. 

 

ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์•„์ฃผ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฌ์šด ์ฝ”๋“œ๋‹ค. ๊ทธ์ € ๋Œ“๊ธ€์„ ๊บผ๋‚ด ์กฐํšŒ๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— @setter๋‚˜ @Builder๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— JPA๋ฅผ ์ƒ์†ํ–ˆ๊ธฐ๋•Œ๋ฌธ์— JPA ๋ฆฌํ”Œ๋ ‰์…˜ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ“๊ธ€์„ ์กฐํšŒํ•˜๋Š”๋ฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ ๋Œ“๊ธ€์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜, ๋” ๋‹ค์–‘ํ•œ ์†์„ฑ์ด ์ƒ์„ฑ๋œ๋‹ค๋ฉด @Builder๋กœ ๊ด€๋ฆฌํ•ด์ฃผ๋ฉด ์ข‹๋‹ค. @setter๋Š” ์ˆ˜์ •์ด ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์–ด์„œ ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•œ๋‹ค.

 

 

 

 


 

 

 

 

 

6. ๋Œ“๊ธ€ ์ €์žฅํ•˜๊ธฐ

 

 

โ–ก Controller ์ž‘์„ฑํ•˜๊ธฐ.

@GetMapping("/save")
 public String saveComment(@RequestParam("content") String content) {
     boardService.saveComment(content);
     return "redirect:/board";
 }

 

save ์—”๋“œํฌ์ธํŠธ๋ฅผ ํ†ตํ•ด saveComment ๋ฉ”์„œ๋“œ์™€ ์—ฐ๊ฒฐํ•ด์ฃผ์—ˆ๋‹ค. ์•„๊นŒ html์„ ์ž‘์„ฑํ–ˆ์„๋•Œ, ๋Œ“๊ธ€์„ content๋กœ ๋ณด๋ƒˆ๋‹ค. ์ด content๋ฅผ ๋ฐ›์•„์„œ boardService๋กœ ๋ณด๋‚ด๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด @RequestParam์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. @RequestParam์€ ๋Œ“๊ธ€ content๋ฅผ ๋ฐ›๊ณ  String ํƒ€์ž…์˜ content์— ๋„ฃ์–ด boardService ํด๋ž˜์Šค์˜ saveComment ๋ฉ”์„œ๋“œ๋กœ ๋ณด๋‚ธ๋‹ค. ์‹ค์ œ๋กœ ๋ฐ›์•„์˜ค๋Š” ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ์ด๋ฆ„์ด ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ("content")๋Š” ์ƒ๋žต๊ฐ€๋Šฅํ•˜๋‹ค.

 

@RequestParam์„ ์‚ฌ์šฉํ•˜๋ฉด HttpServletRequest์˜ request.getParameter๋กœ ๋ฐ›์•„์ค˜์•ผํ•˜๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ๋งŒ์•ฝ @RequestParam์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด...?

@GetMapping("/save")
public saveComment(HttpServletRequest request) {
    String content = request.getParameter("content");   
    boardService.saveComment(content);   
    return "redirect:/board";
 }

 

ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•˜๋‚˜ ๋ฐ–์— ์—†์ง€๋งŒ, ๋งŒ์•ฝ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ฒฝ์šฐ @RequestParam์ด ์—„์ฒญ ํšจ์œจ์ ์ผ ๊ฒƒ์ด๋‹ค.

 

 

 

โ–ก Service ์ž‘์„ฑํ•˜๊ธฐ.

public void saveComment(String content) {
    if( content.length() >= 1 && content.length() <= 25 )
        boardRepository.save(new Comment(content));
}

 

๋Œ“๊ธ€์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ์ €์žฅ๋˜๊ธฐ ์ „, ์กฐ๊ฑด์— ๋งž๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. if๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ content์˜ ๊ธธ์ด๊ฐ€ 1 ์ด์ƒ 25 ์ดํ•˜๋ฉด Comment ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ content๋ฅผ ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅํ•˜๋„๋ก ์ž‘์„ฑํ–ˆ๋‹ค. ์•ž์„œ์„œ Entity์ธ Comment ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด๋’€๋‹ค. Comment ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๊ฐ€ content(๋Œ“๊ธ€)๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ ํ•„๋“œ์— ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋งคํ•‘ํ•œ๋‹ค.

 

 

 

 

 


 

 

 

7. ๋Œ“๊ธ€ ์กฐํšŒํ•˜๊ธฐ.

 


โ–ก Service
 ์ž‘์„ฑํ•˜๊ธฐ.

public Page<Comment> get10Comments() {
    Pageable pageable = PageRequest.of(0,10);
    return boardRepository.findAllByOrderByIdDesc(pageable);

}

 

Jpa์—์„œ ์ œ๊ณตํ•˜๋Š” ํ•จ์ˆ˜ pageable๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ“๊ธ€์„ ๋‚˜ํƒ€๋‚ผ ๊ฒƒ์ด๋‹ค. ๋ฉ”์„œ๋“œ ์ด๋ฆ„์€ get10Comments, ๋ฐ˜ํ™˜ํƒ€์ž…์€ Page<Comment>๊ฐ€ ๋œ๋‹ค. ํ•œ ํŽ˜์ด์ง€์— ๋Œ“๊ธ€ 10๊ฐœ๋งŒ ๋‚˜ํƒ€๋‚ด๋„๋ก ํ• ๊ฑฐ๋‹ˆ๊นŒ PageRequest.of(int page, int size)๋กœ page๊ฐ€ ๊ฐ€์ ธ์˜ฌ ํŽ˜์ด์ง€ ๊ทธ๋ฆฌ๊ณ  ํ•œ ํŽ˜์ด์ง€์— ํฌํ•จ๋  ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํ˜„์žฌ ์ฝ”๋“œ์—์„œ ๋ฐ˜ํ™˜ํƒ€์ž…์„ Page๋กœ ์„ค์ •ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— List ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•ด๋„ ์ƒ๊ด€์—†๋‹ค. (์•„์˜ˆ pageable์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.)

 

 

 

โ–ก Controller ์ž‘์„ฑํ•˜๊ธฐ.

@GetMapping("/board")
public String boardPage(Model model) {
    model.addAttribute("comments", boardService.get10Comments());
    return "board";
}

 

์ฒซ ํ™”๋ฉด์ด ๋“ค์–ด๊ฐ€๋ฉด ์ €์žฅํ•œ ๋Œ“๊ธ€์ด ๋‚˜ํƒ€๋‚˜๋„๋ก ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํƒ€์ž„๋ฆฌํ”„์˜ Model์„ ํ†ตํ•ด ๋Œ“๊ธ€์„ ๋ฐ›์•„์˜ฌ ๊ฒƒ์ด๋‹ค.  ๋ฐฉ๊ธˆ Service ํด๋ž˜์Šค์— get10Comments( ) ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ–ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋กœ ๋ฐ›์•„์˜จ ๊ฐ’(๋ฐ์ดํ„ฐ) comments๋ฅผ ๋ทฐ์ธ ํƒ€์ž„๋ฆฌํ”„๋กœ ์ „๋‹ฌํ•œ๋‹ค.

 

@GetMapping("/save")
 public String saveComment(@RequestParam("content") String content) {
     boardService.saveComment(content);
     return "redirect:/board";
 }

 

๋Œ“๊ธ€์ด ์ €์žฅ๋˜์ž๋งˆ์ž ํ™”๋ฉด์— ๋ฐ”๋กœ ๋ณด์ด๋„๋ก ํ•˜๊ณ  ์‹ถ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด redirect:๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ /board๋กœ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋ณด๋‚ด๋„๋ก ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์œ„ ์ฝ”๋“œ @GetMapping("/board")๋กœ ์•ค๋“œํฌ์ธํŠธ๋ฅผ ๋ฐ›์•„ ์ƒˆ๋กœ์šด comments๋ฅผ ๋ฐ›์•„ ํƒ€์ž„๋ฆฌํ”„๋กœ ์ „๋‹ฌํ•˜๊ฒŒํ•œ๋‹ค.

 

 

โ–ก html ์‚ดํ”ผ๊ธฐ.

<div class="commentBox">
    <li class="font" th:each="comment : ${comments}" th:text="${comment.content}">
        comment
    </li>
</div>

 

board.html ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ฒ ๋‹ค. ๋Œ“๊ธ€์„ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ comments๋กœ ๋ณด๋ƒˆ๊ณ , comments์˜ ์—ฌ๋Ÿฌ ๋Œ“๊ธ€์„ each ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด comment๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ๊ฐ ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์—ฌ๊ธฐ์„œ th:text="${comment.content}"๊ฐ€ ์žˆ๋‹ค. comment ํด๋ž˜์Šค์— ์žˆ๋Š” content ํ•„๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์ข€ ๋” ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ด๊ฒ ๋‹ค. comments๋Š” 10๊ฐœ์˜ ๋ญ‰ํ……์ด ๋Œ“๊ธ€์ด๋‹ค. ๊ทธ๊ฑธ comment ๋ณ€์ˆ˜๋กœ 1comment 2comment... ์ด๋ ‡๊ฒŒ ๋ถ€์—ฌ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‚˜์—ด๋œ ๊ฒƒ๋“ค ์•ˆ์— ์‹ค์ œ ๋Œ“๊ธ€์„ ๋„ฃ์–ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ๋น„์œ ๋ฅผ ๋“ค์ž๋ฉด comments๊ฐ€ ์ขŒ์„ ํ•œ ์ค„์ด ๋˜๊ณ , comment๋Š” ์ขŒ์„ ํ•˜๋‚˜ ํ•˜๋‚˜์— ์•‰๋Š” ์‚ฌ๋žŒ์ด ๋˜๊ณ , comment.content๋Š” ๊ทธ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„ํ‘œ ํ˜น์€ ์ธ์  ์‚ฌํ•ญ์ด ๋˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ๋ณด๋ฉด ์‰ฌ์šธ ๊ฒƒ ๊ฐ™๋‹ค. ์ผ๋‹จ ๋‚˜๋Š” ๊ทธ๋ ‡๊ฒŒ ์ดํ•ดํ–ˆ๋‹ค.

 

 

 


 

 

[ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค H2 ์„ค์น˜ ๋ฐ ์—ฐ๋™, JPA ์—ฐ๋™ํ•˜๊ธฐ ]

 

Spring - [intelliJ,Thymeleaf] MAC, H2๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•œ ๋Œ“๊ธ€์ฐฝ ๋งŒ๋“ค๊ธฐ(2)

[ ๊ฐ„๋‹จํ•œ ๋Œ“๊ธ€์ฐฝ ๋งŒ๋“ค๊ธฐ (1) ] Spring - [intelliJ,Thymeleaf] ๊ฐ„๋‹จํ•œ ๋Œ“๊ธ€์ฐฝ ๋งŒ๋“ค๊ธฐ(1)[ @PostMapping์œผ๋กœ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ] Spring - [intelliJ,Thymeleaf] @PostMapping์œผ๋กœ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ[

post-this.tistory.com

 

 

๐Ÿชฝ

"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

 

 

 

[ ๋ธ”๋กœ๊ทธ์— ์“ด ๋‚ด์šฉ๋“ค์˜ ์ถœ์ฒ˜๋Š” ์•„๋ž˜์— ์ ์–ด๋‘˜ํ…Œ๋‹ˆ

๋“ค์–ด๊ฐ€์„œ ์ฝ์–ด๋ณด์‹œ๋ฉด ๋”์šฑ ๋„์›€์ด ๋˜์‹ค ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค ]

 

 

 

 

- paging ์ถœ์ฒ˜

 

JPA Paging (ํŽ˜์ด์ง€ ๋‚˜๋ˆ„๊ธฐ)

ํ˜„์žฌ 2๊ฐœ์˜ ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค. > ๋‘ ํ”„๋กœ์ ํŠธ ๋ชจ๋‘ ๊ธ€ ๋˜๋Š” ์˜์ƒ์„ ํŽ˜์ด์ง•ํ•ด์„œ ํ”„๋ก ํŠธ์— ๋ฟŒ๋ ค์ฃผ๋Š” API๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค. > ๊ทธ๋ž˜์„œ ์ด๋ฒˆ์— PageRequest๋ฅผ ์‚ฌ์šฉํ•ด ํŽ˜์ด์ง• ํ•˜๋Š” ๊ฒƒ์„ ๊ณต๋ถ€ํ–ˆ๊ณ  ๊ณต์œ ํ•˜๊ณ 

velog.io

 

 

 

- Pageable ์ถœ์ฒ˜

 

[JPA] Spring Data Jpa + Pageable๋กœ Pagination ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๊ธฐ

์ด๋ฒˆ์ฃผ๋Š” ๋…์„œ๋ฆฌ๋ทฐ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค. ๋ฆฌ๋ทฐ ๊ธ€์„ ํŠน์ • ์กฐ๊ฑด์œผ๋กœ ๋ฝ‘์•„์„œ ์ •๋ ฌ ๊ธฐ์ค€์„ ์„ ํƒํ•˜์—ฌ ์กฐํšŒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•œ๋‹ค.์ „์ฒด ๋ฆฌ๋ทฐ๊ธ€์„ ์กฐํšŒํ•˜๊ฑฐ๋‚˜, ๋‚ด๊ฐ€

velog.io

 

 

 

- ์—”ํ‹ฐํ‹ฐ ์ถœ์ฒ˜ 

 

[DB] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”ํ„ฐํ‹ฐ(Entity)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์—”ํ„ฐํ‹ฐ(Entity)๋ž€? ์—”ํ„ฐํ‹ฐ(Entity)๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฒˆ์—ญํ•˜๋ฉด ์‹ค์ œ, ๋…๋ฆฝ์ฒด๋ผ๋Š” ๋œป์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ์—”ํ„ฐํ‹ฐ(Entity)๋Š” ์—…๋ฌด์— ํ•„์š”ํ•˜๊ณ  ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ €

coding-factory.tistory.com

 

 

 

- NoargsConstructor ์ถœ์ฒ˜

 

@NoargsConstructor(AccessLevel.PROTECTED) ์™€ @Builder

@NoargsConstructor(AccessLevel.PROTECTED) ์™€ @Builder๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ• ๋•Œ ์ฃผ์˜ํ•  ์ ์— ๋Œ€ํ•ด์„œ ์„œ์ˆ ํ•ฉ๋‹ˆ๋‹ค. "์™œ" ์•ˆ๋˜๋Š”์ง€์™€ "์™œ" ์ด๋ ‡๊ฒŒ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด ์ง‘์ค‘ํ•˜์—ฌ ์„œ์ˆ ํ•ฉ๋‹ˆ๋‹ค. 1. ์™œ NoargsConstructor(Access

cobbybb.tistory.com

 

 

 

- NoargsConstructor ์ถœ์ฒ˜

 

๋กฌ๋ณต @All/NoArgsConstructor ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์‚ฌ์šฉํ•ด๋ณด์ž.

๋ฌธ๋“ ์ „ ํšŒ์‚ฌ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ @AllArgsConstructor, @NoArgsConstructor ๋“ฑ ์—ฌ๋Ÿฌ ์–ด๋…ธํ…Œ์ด์…˜์ด ํ•œํด๋ž˜์Šค์— ๊ฐ™์ด ์ž‘์„ฑ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ๋ณธ์ ์ด์žˆ๋‹ค.Lombok์€ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ์™€ ์ž‘์—…์„ ์ค„์—ฌ์ฃผ๋Š” ์ข‹์€ ๋ผ

velog.io

 

 

 

- @builder ์ถœ์ฒ˜

 

[Java] ๋นŒ๋” ํŒจํ„ด(Builder Pattern)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒ์„ฑ์ž ํŒจํ„ด, ์ •์  ๋ฉ”์†Œ๋“œ ํŒจํ„ด, ์ˆ˜์ •์ž ํŒจํ„ด, ๋นŒ๋” ํŒจํ„ด ๋“ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ์—๋Š” ๋ฐ˜๋“œ์‹œ ๋นŒ๋” ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”

mangkyu.tistory.com

 

 

 

- Entity ์ถœ์ฒ˜

 

[SpringBoot] Entity๋ž€? + @Table, @NoArgsConstructor, @AllArgsConstructor

๐Ÿ’ก Entity๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค ์•ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์ž. Entity(์—”ํ‹ฐํ‹ฐ)๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์˜์†์ ์œผ๋กœ ์ €์žฅ๋˜๊ณ  ๊ด€๋ฆฌ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์—”ํ‹ฐํ‹ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

dahlia15.tistory.com

 

 

 

 

- Entity์™€ Repository ์ถœ์ฒ˜

 

[Spring] Spring Entity, Repository ์„ค๋ช…

Spring Entity, Repository๋Š” DB์™€ ๊ด€๋ จ๋œ ํ•ญ๋ชฉ๋“ค ์ค‘ ๋ช‡ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋Š” DAO, DTO, VO, Transaction ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์ด ์œ ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Repository์— ๋Œ€ํ•ด์„œ ์ฐธ๊ณ ํ•˜๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

workshop-6349.tistory.com

 

 

 

- Getter ์ถœ์ฒ˜

 

[OOP] Getter์™€ Setter๋Š” ์ง€์–‘ํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค

๋ชฉ์ฐจ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ์–ผ๋งˆ ์ „ ์‚ฌ๋‚ด์—์„œ Getter์™€ Setter๋ฅผ ํ•จ๋ถ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋˜๋Š” ์ด์œ ์— ๋Œ€ํ•œ ์„ธ๋ฏธ๋‚˜๊ฐ€ ์žˆ์—ˆ๋‹ค. Setter์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋Š” ์›Œ๋‚™ ๋งŽ์ด ์•Œ๋ ค์ ธ์žˆ์—ˆ์ง€๋งŒ Getter์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋Š” ์ž˜ ํ•˜์ง€ ์•Š

colabear754.tistory.com

 

 

 

- Jpa ์ถœ์ฒ˜

 

[Spring JPA] JPA ๋ž€?

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” JPA(Java Persistence API)๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๋ ค๊ณ ํ•œ๋‹ค. JPA๋Š” ์ž๋ฐ” ์ง„์˜์—์„œ ORM(Object-Relational Mapping) ๊ธฐ์ˆ  ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ์ด๋‹ค. ๊ทธ ๋ง์€ ์ฆ‰, ์‹ค์ œ์ ์œผ๋กœ ๊ตฌํ˜„๋œ๊ฒƒ์ด

dbjh.tistory.com

 

 

 

- Jpa ์ถœ์ฒ˜

 

[JAVA] - JPA๋ž€? ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ(์˜ˆ์ œ์ฝ”๋“œ ์™„๋ฒฝ์ •๋ฆฌ)

๐Ÿง‘๐Ÿป‍๐Ÿซ ๊ฐ„๋‹จ ์ •๋ฆฌ JPA๋Š” ์ž๋ฐ”์˜ ORM๊ธฐ์ˆ ์„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๋„๋ก ๋„์™€์ฃผ๋Š” API์ด๋‹ค. JpaRepository๋ฅผ ์ƒ์†ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฉ”์„œ๋“œ ์ด๋ฆ„๋งŒ ์ ์–ด๋†“์œผ๋ฉด ์•Œ์•„์„œ ๋‹ค ์ฒ˜๋ฆฌ(๊ตฌํ˜„์ฒด ์ƒ์„ฑ, ์ฟผ๋ฆฌ๋ฌธ ๊ตฌํ˜„ ๋“ฑ)ํ•ด

ccomccomhan.tistory.com

 

 

 

- save ์ถœ์ฒ˜

 

๋‚ด๊ฐ€ repository.save()๋ฅผ ํ†ตํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ €์žฅ์‹œ์ผฐ๋˜ ์ด์œ 

๊ทธ ๋•Œ ๋‹น์‹œ์—๋Š” Spring์€ ๋ฌผ๋ก  Java์— ๋Œ€ํ•œ ๊ฐœ๋…๋„ ๋งค์šฐ ์•ฝํ•  ๋•Œ๋ผ ์ง€๊ธˆ๋„ ์•ฝํ•˜์ง€๋งŒ > > > ๋ ˆํผ๋Ÿฐ์Šค์˜ ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ๋‹ค ์‚ฌ์šฉํ•˜๊ธฐ์— ๊ธ‰๊ธ‰ํ–ˆ๋‹ค. > > ๋‹น์‹œ์˜ ๋‚˜๋Š” ํ•ด๋‹น ๊ฐœ๋…์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ์ดํ•ด๋ณด๋‹ค๋Š” ๊ธฐ

velog.io

 

 

 

- save ์ถœ์ฒ˜

 

Spring Data JPA - Save Method ๋™์ž‘ ๋ฐฉ์‹

Spring Data JPA์—์„œ ์ œ๊ณตํ•˜๋Š” JpaRepository.save(T); [T๋Š” Entity]์˜ ๋‚ด๋ถ€ ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. JPA์—์„œ์˜ save ๋ฉ”์„œ๋“œ ๊ตฌํ˜„์ฒด ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. // SimpleJpaRepository.java [JPA ๊ตฌํ˜„์ฒด] @Tra

wangtak.tistory.com

 

 

 

- CRUD ์ถœ์ฒ˜

 

[Spring] JPA์˜ ๊ธฐ๋ณธ CRUD๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž !

JPA (Java Presistence API) ์ž๋ฐ” ์ง„์˜์—์„œ ORM ๊ธฐ์ˆ  ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ๋ชจ์Œ์ด๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ Hibernate, Spring JPA ๊ฐ€ ์žˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด JPA๋Š” ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์„ ์ž๋™์œผ๋กœ ๋งคํ•‘์‹œ์ผœ์„œ, ์ฟผ๋ฆฌ๋ฌธ ์ž‘

wooj-coding-fordeveloper.tistory.com

 

 

 

- findAllByOrderByIdDesc ์ถœ์ฒ˜

 

JPA - findAllByOrderByIdDesc

findAll์„ ํ•˜๋ฉด์„œ Orderby๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์—ˆ๋‹ค. https://docs.spring.io/spring-data/jpa/docs/2.3.3.RELEASE/reference/html/#jpa.repositories And findByLastnameAndFirstname … where x.lastname = ?1 and x.firstname = ?2 Or findByLastnameOrFirstname

mymoney1.tistory.com

 

 

 

๐Ÿ“š ์ฑ… ์†Œ๊ฐœํ•˜๊ธฐ

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ž๋ฐ”์™„์ „์ •๋ณต ์ฑ… ๋งํฌ!
ใ„ด ๊น€๋™ํ˜• ์ง€์Œ, ์ด์ง€์Šคํผ๋ธ”๋ฆฌ์‹ฑ

 

 

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

์ด ์ฑ…์„ ๊ณ ๋ฅด๊ฒŒ ๋œ ์ด์œ ๋Š” ์นœ๊ตฌ์˜ ์ถ”์ฒœ์ด์—ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ ํ˜€์žˆ์–ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ด์œ ๋กœ ์นœ๊ตฌ๋Š” ์ด ์ฑ…์„ ๊ณจ๋ž๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋‚˜๋„ ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋”ฐ๋ผ์ƒ€๋‹ค. ์‹ค์ œ๋กœ ์ฑ…์„ ์‚ดํŽด๋ณด๋‹ˆ ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค. ๋‹ค๋ฅธ ์ฑ…์€ ๋ณธ ์ ์ด ์—†์–ด ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€ํ•˜์ง€๋งŒ, ๋‚ด ์ƒ๊ฐ์œผ๋ก  ์ฒ˜์Œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ์ด ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์ถฉ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•˜๋‹ค. ๋ชจ๋‘๋“ค ํ™”์ดํŒ…!!

 

 

๐Ÿฐ

 




โœ”๏ธ   ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ_ 253p

 

 ํ•„๋“œ 

:  ํด๋ž˜์Šค์— ํฌํ•จ๋œ ๋ณ€์ˆ˜

 

 ์ง€์—ญ๋ณ€์ˆ˜

:  ๋ฉ”์„œ๋“œ์— ํฌํ•จ๋œ ๋ณ€์ˆ˜

Class A {
    int m;
    int n;
    
    void init(int a, int b) {
        int c;
        c = 3;
        
        m = a;
        n = b;
    }
}
ํ•ด๋‹น ์ฝ”๋“œ๋Š” ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ์ด๋‹ค. ํ•„๋“œ๋Š” ํด๋ž˜์Šค๊ฐ€ ์‹œ์ž‘ํ•˜๋Š” ๋งจ ์œ„์— ์ •์˜๋œ ๋ณ€์ˆ˜์ธ๋ฐ, ์—ฌ๊ธฐ์„œ๋Š” m๊ณผ n์„ ๋งํ•œ๋‹ค. ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” a์™€ b๊ฐ€ ๋œ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ง€์—ญ๋ณ€์ˆ˜๋‹ค. a๋Š” m์— ์˜ฎ๊ธฐ๊ณ , b๋Š” n์— ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ๋ฉ”์„œ๋“œ init์ด ํ•ด์•ผํ•  ์ผ์ด๋‹ค. ์ด๋•Œ๋Š” ํ•„๋“œ์™€ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— m๊ณผ n ์•ž์— this.๋ฅผ ๋ถ™์ด์ง€ ์•Š์•„๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ๋“ฑ๋กํ•ด์ค€๋‹ค.

 

 

 

 


 

 

โœ”๏ธ   ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฒฝ์šฐ_ 255p

 

Class A {
    int m;
    int n;
    
    void init(int m, int n) {
        m = m;
        n = n;
    }
}

public class pratice {
    public static void main(String[] args) {
        
        A a = new A();
        
        a.init(3,4);
        
        System.out.println(a.m);
        System.out,println(a.n);
     }
}
ํ•ด๋‹น ์ฝ”๋“œ๋Š” ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฒฝ์šฐ๋‹ค. ์ธ์ž 3๊ณผ 4๋ฅผ ๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ ๋ฐ›์•„์™”๋‹ค. ๊ฐ ๊ฐ’์€ init ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ m๊ณผ n์— ๋“ค์–ด์žˆ๊ฒŒ ๋œ๋‹ค. m๊ณผ n์„ ํ•„๋“œ์— ์ €์žฅํ•˜๊ณ  ์‹ถ์—ˆ์„ ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ํ•„๋“œ์™€ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„์ด ๊ฐ™์€ ๋ฐ”๋žŒ์— ํŒŒ๋ผ๋ฏธํ„ฐm์„ ํŒŒ๋ผ๋ฏธํ„ฐ m์— ์˜ฎ๊ธฐ๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ n์„ ํŒŒ๋ผ๋ฏธํ„ฐ n์— ์˜ฎ๊ธฐ๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ํด๋ž˜์Šค ํ•„๋“œ๊ฐ’ m๊ณผ n์„ ์˜๋ฏธํ•˜๋Š” a.m๊ณผ a.n์€ ๊ฒฐ๊ตญ ์ถœ๋ ฅํ•˜๊ฒŒ ๋˜๋”๋ผ๊ณ  ๊ฐ’์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   this๋ฅผ ์ฃผ๋กœ ์“ฐ๋Š” ๊ฒฝ์šฐ (์ฑ…์— ์—†์Œ)

์ž˜๋ชป๋œ ์ •๋ณด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

B b = new B();
A a = new A(b);

a.addDataToB("Hello World!");

 

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ํด๋ž˜์Šค B๋Š” b๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ , ํด๋ž˜์Šค A๋Š” a๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ, ํด๋ž˜์„œ A๋Š” ํด๋ž˜์Šค B๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ์ž ํ•œ๋‹ค. ๋˜ addDataToB ๋ฉ”์„œ๋“œ๊ฐ€ ํด๋ž˜์Šค B์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ์ฒด a๋Š” ๊ฐ์ฒด b๋ฅผ ์ธ์ž๋กœ ์ƒ์„ฑ์ž A์—๊ฒŒ ๋ณด๋‚ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ๊ทธ๋ ‡๊ฒŒ ๋ณด๋‚ด์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

 

Q. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ธ์ž b๋กœ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค๋ฉด?

A. ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๊ฐ์ฒด a๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „, ์ด๋ฏธ ๊ฐ์ฒด ์ƒ์„ฑ์—์„œ ํด๋ž˜์Šค B๋ฅผ b๋ผ๊ณ  ์ง€์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด ์ฝ”๋“œ๋Š” ์ผ๋ฐ˜์ ์ธ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•„๋“œ๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ํ•„๋“œ๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ํด๋ž˜์Šค B๋„ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผํ•˜๊ณ , ํƒ€์ž… B๋ฅผ ๊ฐ€์ ธ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ž b๋ฅผ ๋ณด๋‚ด์•ผํ•œ๋‹ค.

 

 

// ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ
public class B {

    // ํ•„๋“œ data
    private String data;

    // ๋ฐ์ดํ„ฐ ์ €์žฅํ•œ๋‹ค.
    public void saveData(String data) {
        
        // ์ธ์ž๋กœ ๋ฐ›์€ data๋ฅผ ํ•„๋“œ๋กœ ์˜ฎ๊ธด๋‹ค.
        this.data = data;
    }

    // ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ๋‹ค.
    public String getData() {
        // ํ•„๋“œ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.
        return this.data;
    }
}

// ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ์†Œ์— ์ €์žฅํ•˜๊ณ  ๊ฐ’์„ ์ถœ๋ ฅ
public class A {

    // ํด๋ž˜์Šค B๋ฅผ ํ•„๋“œ๋กœ ์ •์˜.
    private final B b;
    
    // ์ƒ์„ฑ์ž A๋กœ ์ €์žฅ์†Œ b์˜ ํ•„๋“œ ๊ฐ’์„ ์ธ์ž๋กœ ๋ฐ›๋Š”๋‹ค.
    // ์ธ์ž๋กœ ๋ฐ›์€ ๊ฐ’์„ A ํด๋ž˜์Šค ํ•„๋“œ b์— ์ €์žฅ
    public A(B b) {
        this.b = b;
    }
    
	// ํด๋ž˜์Šค B์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋ฉ”์„œ๋“œ.
    public void addDataToB(String data) {
        b.saveData(data);
    }

    // B์˜ ๋ฉ”์„œ๋“œ์— ๊ฒฐ๊ณผ๊ฐ’์„ ๋ณด์—ฌ์ฃผ๋Š” ๋ฉ”์„œ๋“œ.
    public void printDataFromB() {
        System.out.println("A: ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ -> " + b.getData());
    }
}

 

์ƒ์„ฑ์ž A์—๊ฒŒ ์ธ์ž๊ฐ€ ์ž˜ ๋„์ฐฉํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ์ƒ์„ฑ์ž๋Š” ํ•„๋“œ๋กœ ๋ณด๋‚ด ํด๋ž˜์Šค B์—๊ฒŒ B์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ž„์„ ์•Œ๋ ค์•ผํ•œ๋‹ค. ์ฆ‰, ํƒ€์ž… B๋ฅผ ๊ฐ€์ง„ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— b๊ฐ€ ๋“ค์–ด์˜ค๊ณ  this.b์—๊ฒŒ ๊ฐ’์„ ๋„˜๊ธธ ๊ฒƒ์ด๋‹ค. this.b๋Š” ํ•„๋“œ์˜ b๋ฅผ ๋งํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ธ์ž๋กœ ๋ฐ›์€ b๋ผ๋Š” ๊ฐ’ (ํด๋ž˜์Šค B๋ฅผ ํ’ˆ๊ณ  ์žˆ๋Š”)์€ ํ•„๋“œ๋กœ ๋ณด๋‚ด์ง€๊ฒŒ ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ์ง๊ด€์ ์ธ ์ดํ•ด๊ฐ€ ์ž˜ ๊ฐ€์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ํ•„๋“œ๋กœ ๊ฐ’์ด ๊ฐ”๋‹ค๋Š” ์˜๋ฏธ๋ฅผ, ํƒ€์ž… B๋ฅผ ๊ฐ€์ง„ b๊ฐ€ ์ž์‹ ๊ณผ ๋˜‘๊ฐ™์€ ํƒ€์ž…์ธ ํ•„๋“œ๋ฅผ ๋งŒ๋‚˜ ์ผํ•˜๋ผ๊ณ  ํ•œ๋Œ€ ์ณค๋‹ค๋Š” ์‹์œผ๋กœ ๋ฐ›์•„๋“œ๋ฆฌ๊ธฐ๋กœ ํ–ˆ๋‹ค. ์•„๋ฌดํŠผ ๊ทธ๋ ‡๊ฒŒ ํ•„๋“œ์˜ ๊ฐ’์€ b๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ด์ œ ํด๋ž˜์Šค B๊ฐ€ ๊ฐ€์ง„ ๋ฉ”์„œ๋“œ๋ฅผ ๋งˆ์Œ๊ป ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

 

B b = new B();
A a = new A(b);

a.addDataToB("Hello World!");
๋‹ค์‹œ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„์˜ค๊ฒ ๋‹ค. a.addDataToB๋Š” ๊ฐ์ฒด a(ํด๋ž˜์Šค A)๋ฅผ ํ†ตํ•ด addDataToB๋ผ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ๋ฉ”์„œ๋“œ์— "Hello World!"๋ผ๋Š” ์žฌ๋ฃŒ๋ฅผ ๋„ฃ๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ๋Š” A a = new A(b);๋ฅผ ํ†ตํ•ด ํด๋ž˜์Šค A์— ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค ์ค€๋น„์‹œ์ผœ๋†จ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ๋ฌธ์ œ์—†์ด a.addDataToB๋Š” ๋Œ์•„๊ฐˆ ๊ฒƒ์ด๋‹ค.

a.addDataToB๋Š” String ํƒ€์ž…์ด ์˜ค๋ฉด ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ–ˆ๋‹ค. "Hello World!"๋Š” String ํƒ€์ž…์ด๋‹ˆ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. ์ œ๋Œ€๋กœ ๋œ ์žฌ๋ฃŒ๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  addDataToB๋Š” "Hello World!"๋ฅผ data๋ผ๋Š” ๊ฒƒ์œผ๋กœ ํฌ์žฅํ•˜์—ฌ ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

b. saveData(data)๋Š” data ๊ฐ’(Hello World!)์„ ํด๋ž˜์Šค B์— ์žˆ๋Š” saveData๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ฉ”์„œ๋“œ๋กœ ๋ณด๋‚ผ ๊ฒƒ์ด๋‹ค.

 

// ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ
public class B {

    // ํ•„๋“œ data
    private String data;

    // ๋ฐ์ดํ„ฐ ์ €์žฅํ•œ๋‹ค.
    public void saveData(String data) {
        
        // ์ธ์ž๋กœ ๋ฐ›์€ data๋ฅผ ํ•„๋“œ๋กœ ์˜ฎ๊ธด๋‹ค.
        this.data = data;
    }

    // ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ธ๋‹ค.
    public String getData() {
        // ํ•„๋“œ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.
        return this.data;
    }
}
saveData๋Š” data๋ผ๋Š” ํฌ์žฅ์œผ๋กœ ๊ฐ์‹ธ์ง„ Hello World๋ฅผ ๋ฐ›์•˜๋‹ค. ์ด data๋Š” ํ•„๋“œ data์— ๋ณด๋‚ด์ง€๊ฒŒ ๋˜๊ณ  ๋‚˜์ค‘์— ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๊ฐ€ data์— ์žˆ๋Š” ๊ฐ’์ด ํ•„์š”ํ•ด์ง€๋ฉด ๊ฐ€์ ธ๋‹ค ์“ธ ๊ฒƒ์ด๋‹ค. (getData์ฒ˜๋Ÿผ)

 

 

 

public class Car {
    String color;  // ์ž๋™์ฐจ์˜ ์ƒ‰๊น”
    int speed;     // ์ž๋™์ฐจ์˜ ์†๋„

    // ์ƒ์„ฑ์ž ์ •์˜
    public Car(String color, int speed) {
        this.color = color; // ํ•„๋“œ ์ดˆ๊ธฐํ™”
        this.speed = speed; // ํ•„๋“œ ์ดˆ๊ธฐํ™”
    }
}

public class Main {
    public static void main(String[] args) {
        // ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•ด ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •
        Car myCar = new Car("red", 100);

        System.out.println("์ƒ‰๊น”: " + myCar.color + ", ์†๋„: " + myCar.speed);
    }
}
์œ„์˜ ์ฝ”๋“œ๋Š” ํด๋ž˜์Šค๋ฅผ ํ•„๋“œ๋กœ ๋ฐ›๋Š” ๊ฒฝ์šฐ์˜€๋‹ค. ์ด๋ฒˆ ์ฝ”๋“œ๋Š” ๋‹จ์ˆœํ•œ ์ฝ”๋“œ๋กœ ์–ด๋–ค ๊ฐ’์„ ๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ–ˆ๊ณ  ๊ทธ ์•ˆ์— ๋‘ ๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค. ํ•˜๋‚˜๋Š” String ํƒ€์ž…์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” int ํƒ€์ž…์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Car ํด๋ž˜์Šค๋กœ ๊ฐ€์„œ, ๋‘ ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ฐพ๋Š”๋‹ค. ๋งž๋Š” ์ƒ์„ฑ์ž๋ฅผ ์ฐพ์•„ ๊ฐ ๊ฐ’์„ ์ธ์ž๋กœ ๋ฐ›๊ณ , ๋ฐ›์€ ์ธ์ž๋Š” ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์—ฌ ์ €์žฅํ•œ๋‹ค. 

๋‹ค์‹œ Mainํด๋ž˜์Šค๋กœ ๊ฐ€๊ฒ ๋‹ค. myCar.color์™€ myCar.speed๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ•œ๋‹ค. myCar๋Š” Car ํด๋ž˜์Šค๋ฅผ ํƒ€์ž…์œผ๋กœ ์ง€์ •ํ•œ ๊ฐ์ฒด ์ด๋ฆ„์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด Car ํด๋ž˜์Šค์— ์žˆ๋Š” color๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•„๋“œ ๊ฐ’๊ณผ speed๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ํ•„๋“œ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์œ„์—์„œ red์™€ 100์ด๋ผ๋Š” ๊ฐ’์„ ๋ณด๋‚ธ ์ „์ ์ด ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ํ•„๋“œ์— ์ดˆ๊ธฐํ™”์‹œ์ผฐ๊ธฐ ๋•Œ๋ฌธ์— red์™€ 100์ด๋ผ๋Š” ๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   this( ) (259p)

Class A {
    int m1, m2, m3. m4;
    
    A() {
        m1 = 1;
        m2 = 2;
        m3 = 3;
        m4 = 4;
    }
    
    A(int a) {
        this();
        m1 = a;
    }
   
   A(int a, int b){
       this(a);
       m2 = b;
   }
}
this( )๋ฅผ ์“ฐ๋ฉด ๋ฐ”๋กœ ์œ„์— ์žˆ๋Š” ์ƒ์„ฑ์ž๋ฅผ ๋“ค๊ณ  ์˜จ๋‹ค. A(int a)๋Š” ์ƒ์„ฑ์ž A๊ฐ€ int ํƒ€์ž…์ธ ์ธ์ž ํ•˜๋‚˜๋ฅผ ๋ฐ›๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

A(int a)๋Š” this( );๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋‹ˆ๊นŒ, ๋ฐ”๋กœ ์œ„์— ์žˆ๋Š” A( )์— ์žˆ๋Š” ๊ฐ’์„ ๋ฐ›์„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด m1๋ถ€ํ„ฐ m4๊นŒ์ง€ ๋ฐ›๋Š”๋ฐ ๊ทธ ํ›„ m1์€ a ๊ฐ’์œผ๋กœ ์˜ฎ๊ฒจ ๋‹ด๊ฒ ๋‹ค๋Š” ์˜๋ฏธ๋‹ˆ ์ตœ์ข…์ ์œผ๋กœ m1์˜ ๊ฐ’๋งŒ ๋‹ค๋ฅด๊ณ  m2์—์„œ m4๊นŒ์ง€ A( )์™€ ๊ฐ’์ด ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.

A๋Š” int ํƒ€์ž…์ธ a์™€ b์ธ ๋‘๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ–ˆ๋‹ค. this(a)๋Š” ๋ฐ”๋กœ ์œ„์— ์žˆ๋Š” ์ƒ์„ฑ์ž A(int a)๋ฅผ ์˜๋ฏธํ•œ๋‹ค. A(int a)์—์„œ a๋Š” m1์— ์˜ฎ๊ธธ ๊ฒƒ์„ ๋ช…์‹œํ–ˆ์œผ๋‹ˆ m1์€ ๋ฐ›์•„์˜จ a ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  m2๋Š” b์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๋€” ๊ฒƒ์ด๋‹ค.

 

 

 

 

[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ(2) ]

 

Spring - [intelliJ,Thymeleaf] ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ(2)

[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ ] Spring - [intelliJ,Thymeleaf] ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ[ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Hello,World! ์ถœ๋ ฅ ] Spring - [intelliJ] ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Hello,World! ์ถœ๋ ฅ[ Hello,World

post-this.tistory.com

 

 


 

 

@PostMapping์„ ์ด์šฉํ•˜์—ฌ
๋กœ๋˜ ๋ฒˆํ˜ธ ๊ณ„์† ์ถœ๋ ฅํ•˜๊ธฐ.



1. ๋™์ž‘ํ™”๋ฉด๊ณผ ์ „์ฒด์ฝ”๋“œ

 

 

๋™์ž‘ํ™”๋ฉด

 

 

 

 

 

์ „์ฒด์ฝ”๋“œ

 

GitHub - hyeong-ing/LuckyLotto: ๋กœ๋˜ ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์›น์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค.

๋กœ๋˜ ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์›น์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค. Contribute to hyeong-ing/LuckyLotto development by creating an account on GitHub.

github.com

 

 

 

package com.LottoWeb.LuckyLotto.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;

import java.util.*;

@Controller
public class RandomController {

    java.util.Random rd = new java.util.Random();

    @GetMapping("/")
    public String firstPage() {
        return "button";
    }

    

    @GetMapping("/Random1")
    public String random1(Model model) {

        Set<Integer> lottoSet = new TreeSet<>();

        while(true) {
            int ranNum = rd.nextInt(45)+1;
            lottoSet.add(ranNum);

            if(lottoSet.size() == 6) {
                break;
            }
        }

        List<Integer> lottoList = new ArrayList<>(lottoSet);

        model.addAttribute("Number1",lottoList.get(0));
        model.addAttribute("Number2",lottoList.get(1));
        model.addAttribute("Number3",lottoList.get(2));
        model.addAttribute("Number4",lottoList.get(3));
        model.addAttribute("Number5",lottoList.get(4));
        model.addAttribute("Number6",lottoList.get(5));


        return "button1";
    }

    @PostMapping("/Random1")
    public String updateRandom(Model model) {

        Set<Integer> lottoSet = new TreeSet<>();

        while(true) {
            int ranNum = rd.nextInt(45)+1;
            lottoSet.add(ranNum);

            if(lottoSet.size() == 6) {
                break;
            }
        }

        List<Integer> lottoList = new ArrayList<>(lottoSet);

        model.addAttribute("Number1",lottoList.get(0));
        model.addAttribute("Number2",lottoList.get(1));
        model.addAttribute("Number3",lottoList.get(2));
        model.addAttribute("Number4",lottoList.get(3));
        model.addAttribute("Number5",lottoList.get(4));
        model.addAttribute("Number6",lottoList.get(5));


        return "button1";
    }

}

 

 

 

 


 

 

 

 

2. ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์ง€ ์ƒ๊ฐํ•˜๊ธฐ ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป

 

์ „์— ํ–ˆ๋˜ ์ฝ”๋“œ๋Š” @GetMapping๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋˜๋ฒˆํ˜ธ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ์ถœ๋ ฅ๋˜๋„๋ก ๋งŒ๋“ค์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ @PostMapping์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋ฐ”๊ฟ€ ๊ฒƒ์ด๋‹ค.

 

 

[ ๋ณ€๊ฒฝ์‚ฌํ•ญ ]

 

โ–ก @GetMapping์œผ๋กœ ์ฒ˜์Œ ๊ฐ’์„ ์ถœ๋ ฅ์‹œํ‚จ๋‹ค.

โ–ก @PostMapping์„ ์ด์šฉํ•˜์—ฌ ๊ทธ ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

 

 

 

 


 

 

 

 

3. @GetMapping์œผ๋กœ ์ฒซ ์ถœ๋ ฅํ•˜๊ธฐ.

 

โ–ก ์ฒ˜์Œ ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๋ฉด ์ƒˆ๋กœ์šด html์„ ๋ณด๋‚ด๋Š” GET์š”์ฒญ ์ฒ˜๋ฆฌ.

@GetMapping("/Random1")
public String random1(Model model) {

    Set<Integer> lottoSet = new TreeSet<>();

    while(true) {
        int ranNum = rd.nextInt(45)+1;
        lottoSet.add(ranNum);

        if(lottoSet.size() == 6) {
            break;
        }
    }

    List<Integer> lottoList = new ArrayList<>(lottoSet);

    model.addAttribute("Number1",lottoList.get(0));
    model.addAttribute("Number2",lottoList.get(1));
    model.addAttribute("Number3",lottoList.get(2));
    model.addAttribute("Number4",lottoList.get(3));
    model.addAttribute("Number5",lottoList.get(4));
    model.addAttribute("Number6",lottoList.get(5));


    return "button1";
}

 

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ์—๋Š” ์›ํ˜• ๋ชจ์–‘์ด ์—†๋Š” button.html ํ™”๋ฉด๊ณผ ๋ฒ„ํŠผ์ด ๋ˆŒ๋ ค ๋žœ๋ค ์ˆซ์ž๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” button1.html ํ™”๋ฉด์ด ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ํ™”๋ฉด์„ ๋“ค์–ด๊ฐ€๋ ค๋ฉด GET ์š”์ฒญ์œผ๋กœ ๋ณด๋‚ด๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋ฌด์กฐ๊ฑด ์ฒซ ํ™”๋ฉด์„ ๋ฐ›๋Š” ๊ฒƒ์œผ๋กœ @GetMapping์ด ์žˆ์–ด์•ผํ•˜๋Š” ์ด์œ ๋‹ค. 

 

ํ•ด๋‹น ์ฝ”๋“œ๋Š” ๋ฒ„ํŠผ์ด ๋ˆŒ๋ฆฌ๋ฉด ์ƒˆ๋กœ์šด ํ™”๋ฉด์„ ์š”์ฒญํ•˜๋Š” ๋™์‹œ์—, ๋žœ๋ค ๋ฒˆํ˜ธ๋ฅผ ๋ฐ›์•„ ๊ทธ๊ฒƒ์„ ์›ํ˜• ์œ„์— ์ถœ๋ ฅํ•˜๋„๋ก ํ•œ๋‹ค.

 

 

 

 


 

 

 

 

 

4. @PostMapping์œผ๋กœ ๊ฐ’ ๋ณ€๊ฒฝํ•˜๊ธฐ.

   @PostMapping("/Random1")
    public String updateRandom(Model model) {

        Set<Integer> lottoSet = new TreeSet<>();

        while(true) {
            int ranNum = rd.nextInt(45)+1;
            lottoSet.add(ranNum);

            if(lottoSet.size() == 6) {
                break;
            }
        }

        List<Integer> lottoList = new ArrayList<>(lottoSet);

        model.addAttribute("Number1",lottoList.get(0));
        model.addAttribute("Number2",lottoList.get(1));
        model.addAttribute("Number3",lottoList.get(2));
        model.addAttribute("Number4",lottoList.get(3));
        model.addAttribute("Number5",lottoList.get(4));
        model.addAttribute("Number6",lottoList.get(5));


        return "button1";
    }

 

๋ฒ„ํŠผ์ด ๋ˆŒ๋ ค ์š”์ฒญ์ด ๋‹ค์‹œ ๊ฐ€๊ฒŒ๋˜๋ฉด @PostMapping์ด ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•œ๋‹ค. ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๋Š” ๋˜‘๊ฐ™๋‹ค. @PostMapping์€ ์ƒˆ Form ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜, ํŠน์ • ๋ฆฌ์†Œ์Šค ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค. Rest API์—์„œ ๊ฐ’์€ ์—…๋ฐ์ดํŠธํ•˜๋Š”๋ฐ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ํ•˜๋‚˜๋Š” @PostMapping, ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” @PutMapping์ด ๋œ๋‹ค.

 

๋‘˜์˜ ์ฐจ์ด๋Š” @PostMapping์€ ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋งŒ ์—…๋ฐ์ดํŠธ ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. @PutMapping์€ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ํ˜„์žฌ ์ฝ”๋“œ๋Š” ์‰ฌ์šด ์ฝ”๋“œ๋ผ์„œ, ๋‘˜ ๋‹ค ์‚ฌ์šฉํ•ด๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค. @GetMapping์€ GET๋ฐฉ์‹์œผ๋กœ ๋“ค์–ด์˜จ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ๋งŒ ํ•œ๋‹ค. ์„œ๋ฒ„์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฃผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ๊ฐ’์„ ๊ณ„์†์ ์œผ๋กœ ์ถœ๋ ฅํ•˜๊ณ ์ž ํ–ˆ์„ ๋•Œ, ํ™”๋ฉด์„ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค์–ด @GetMapping์ด ๊ณ„์† ๋‹ค๋ฅธ ํ™”๋ฉด์œผ๋กœ ์š”์ฒญ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ–ˆ๋‹ค.

 

 


 

 

๐Ÿชฝ

"ํ‹€๋ฆฐ ๋‚ด์šฉ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

 

 

 

[ ๋ธ”๋กœ๊ทธ์— ์“ด ๋‚ด์šฉ๋“ค์˜ ์ถœ์ฒ˜๋Š” ์•„๋ž˜์— ์ ์–ด๋‘˜ํ…Œ๋‹ˆ

๋“ค์–ด๊ฐ€์„œ ์ฝ์–ด๋ณด์‹œ๋ฉด ๋”์šฑ ๋„์›€์ด ๋˜์‹ค ๋“ฏ ํ•ฉ๋‹ˆ๋‹ค ]

 

 

 

- @GetMapping๊ณผ @PostMapping ์ถœ์ฒ˜

 

[Spring] Spring Framework์—์„œ์˜ @PostMapping๊ณผ @GetMapping: REST API์˜ ํ•ต์‹ฌ ์š”์†Œ

์•ˆ๋…•ํ•˜์„ธ์š”! ์ด๋ฒˆ์—๋Š” Spring Framework์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์ธ @PostMapping๊ณผ @GetMapping์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ์–ด๋…ธํ…Œ์ด์…˜๋“ค์€ REST API ๊ฐœ๋ฐœ์—์„œ ํ•ต์‹ฌ ์š”์†Œ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ

jjangadadcodingdiary.tistory.com

 

 

 

 

๐Ÿ“š ์ฑ… ์†Œ๊ฐœํ•˜๊ธฐ

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ž๋ฐ”์™„์ „์ •๋ณต ์ฑ… ๋งํฌ!
ใ„ด ๊น€๋™ํ˜• ์ง€์Œ, ์ด์ง€์Šคํผ๋ธ”๋ฆฌ์‹ฑ

 

 

 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

 

์ด ์ฑ…์„ ๊ณ ๋ฅด๊ฒŒ ๋œ ์ด์œ ๋Š” ์นœ๊ตฌ์˜ ์ถ”์ฒœ์ด์—ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ ํ˜€์žˆ์–ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ด์œ ๋กœ ์นœ๊ตฌ๋Š” ์ด ์ฑ…์„ ๊ณจ๋ž๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋‚˜๋„ ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋”ฐ๋ผ์ƒ€๋‹ค. ์‹ค์ œ๋กœ ์ฑ…์„ ์‚ดํŽด๋ณด๋‹ˆ ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค. ๋‹ค๋ฅธ ์ฑ…์€ ๋ณธ ์ ์ด ์—†์–ด ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€ํ•˜์ง€๋งŒ, ๋‚ด ์ƒ๊ฐ์œผ๋ก  ์ฒ˜์Œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ์ด ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์ถฉ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•˜๋‹ค. ๋ชจ๋‘๋“ค ํ™”์ดํŒ…!!

 

 

๐Ÿฐ

 


 

 

โœ”๏ธ   ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜_ 222p

 

 ํ•„๋“œ 

:  ํด๋ž˜์Šค์— ํฌํ•จ๋œ ๋ณ€์ˆ˜

 

 ์ง€์—ญ๋ณ€์ˆ˜

:  ๋ฉ”์„œ๋“œ์— ํฌํ•จ๋œ ๋ณ€์ˆ˜

Class A {
	
    m๊ณผ n์€ ํ•„๋“œ
    int m = 1;
    int n = 2;
    
    void B() {
    	k๋Š” ์ง€์—ญ๋ณ€์ˆ˜
    	int k = 3;
        System.out.println(k);
    }
}

 

ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜์˜ ํฐ ์ฐจ์ด์ ์€ ์ƒ์„ฑ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๋Š” ํด๋ž˜์Šค ์˜์—ญ - ์Šคํƒ ์˜์—ญ - ํž™ ์˜์—ญ์œผ๋กœ ๋‚˜๋ˆ ์ ธ์žˆ๋Š”๋ฐ, ๊ทธ ์ค‘ ํ•„๋“œ๋Š” ํž™ ์˜์—ญ์— ์ƒ์„ฑ๋˜๊ณ  ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์Šคํƒ ์˜์—ญ์— ์ƒ์„ฑ๋œ๋‹ค.

ํ•„๋“œ์˜ ๊ฒฝ์šฐ ํž™ ์˜์—ญ์— ์ƒ์„ฑ๋˜์–ด ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์ด ์ž๋™์œผ๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š์•„ ๊ฐ์ฒด๊ฐ€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ํ•œ ์ ˆ๋Œ€๋กœ ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์Šคํƒ ์˜์—ญ์— ์ €์žฅ๋œ ์ง€์—ญ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ ์ค‘๊ด„ํ˜ธ๊ฐ€ ๋‹ซํ˜€ ๋ฉ”์„œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์ด ์ž๋™์œผ๋กœ ์‚ญ์ œํ•œ๋‹ค. ๊ณ ๋กœ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํ†ต์งธ๋กœ ์‚ญ์ œ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋•Œ ํž™ ์˜์—ญ์—๋Š” ์ง€์—ญ๋ณ€์ˆ˜์˜ ๋ฉ”์„œ๋“œ ๋ฒˆ์ง€๋งŒ ์กด์žฌํ•œ๋‹ค. ๋ฉ”์„œ๋“œ์— ๊ด€ํ•œ ๋‚ด์šฉ์€ ํด๋ž˜์Šค ์˜์—ญ์— ์žˆ๋‹ค.

 

 

 

• ํ•„๋“œ์™€ ์ง€์—ญ๋ณ€์ˆ˜์˜ ์ดˆ๊นƒ๊ฐ’

Class A {
    int m;
    int n;
    
    void B() {
    int k;
    System.out.println(k);
    }
    
    A a = new A();
    System.out.println(a.m);
    System.out.println(a.n);
    a.B();
}
m๊ณผ n์€ ํ•„๋“œ์— ์žˆ๋‹ค. ํ•„๋“œ์— ์žˆ๋Š” ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ํŠน์„ฑ์ƒ ๊ฐ•์ œ๋กœ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด 0์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค. ํ•˜์ง€๋งŒ ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์•„๋‹ˆ๋‹ค. ์ง€์—ญ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ €์žฅ๊ณต๊ฐ„์ด ๋นˆ ๊ณต๊ฐ„์œผ๋กœ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ธฐ์— System.out.println(k)์™€ a.B๋Š” ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   ๋ฆฌํ„ดํƒ€์ž…์˜ ๋ฉ”์„œ๋“œ_ 229p

 

• ๋ฉ”์„œ๋“œ

: ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ

๋ฆฌํ„ด ํƒ€์ž…์ด ์—†๋Š” ๊ฒฝ์šฐ
void print() {
    System.out.println("์•ˆ๋…•");
}

๋ฆฌํ„ด ํƒ€์ž…์ด int, ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ
int sum(int a, int b) {
	return a + b
}
๋ฆฌํ„ด ํƒ€์ž…์ด ์—†๋Š” ๊ฒฝ์šฐ void๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…์‹œํ•˜๋ฉด ๋œ๋‹ค. sum ๋ฉ”์„œ๋“œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ a์™€ b๋ฅผ ๋ฐ›๋Š”๋‹ค. a์™€ b ๊ฐ’์€ ๋”ํ•ด์ง€๋ฉฐ ๊ทธ ๊ฐ’์„ intํ˜•์œผ๋กœ return ํ•˜๊ฒŒ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ a์™€ b๋Š” ์ง€์—ญ๋ณ€์ˆ˜๋ช…์ด ๋œ๋‹ค.

 

 

Q. void๋กœ ๋ฆฌํ„ด ํƒ€์ž…์ด ์—†๋Š” ๋ฉ”์„œ๋“œ์˜ ๊ฒฝ์šฐ return์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‚˜?

 A. ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ ์ฃผ๋กœ ์–ด๋–ค ๊ฐ’์„ ๋Œ๋ ค์ฃผ๊ธฐ๋ณด๋‹ค, ์กฐ๊ฑด์— ๋งž์œผ๋ฉด ๋ฉ”์„œ๋“œ๋ฅผ ์ข…๋ฃŒ์‹œ์ผœ๋ผ์™€ ๊ฐ™์ด ๋ฉ”์„œ๋“œ์˜ ์ข…๋ฃŒ์— ์ดˆ์ ์„ ๋งž์ถฐ ์‚ฌ์šฉํ•œ๋‹ค.
public void print() {
    if(a < 0) {
        System.out.println("๋ฉ”์„œ๋“œ ์ข…๋ฃŒ")
        return;
    }
    
    System.out.println("a๋Š” " + a);
}


๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ ์‹คํ–‰์„ ๋ฐฉ์ง€ํ•˜๋ฉฐ ์ฃผ๋กœ ๋ฉ”์„œ๋“œ ์ข…๋ฃŒ๋ฅผ ์›ํ•  ๋•Œ return์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

 

 

• ํด๋ž˜์Šค ์™ธ๋ถ€ ํ˜ธ์ถœ

: ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋œ๋‹ค.

class A {
    int data() {
         return 3;
    }
}

public class B {
     public static void main(String[] args) {
    	๊ฐ์ฒด ์ƒ์„ฑ
        A a = new A();       
        System.out.println("data = " + a.data());
    }
}

 

 

 

• ํด๋ž˜์Šค ๋‚ด๋ถ€ ํ˜ธ์ถœ

ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ผ๋ฆฌ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ์—†์ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

public class A {
    public static void main(String[] args) {    
        print();
    }
    
    public static void print() {
       System.out.println("์•ˆ๋…•");
    }
}
๋ฉ”์„œ๋“œ์— static์ด ๋ถ™์–ด ์žˆ์œผ๋ฉด static์ด ๋ถ™์€ ํ•„๋“œ ๋˜๋Š” ๋ฉ”์„œ๋“œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 


 

 

 

 

โœ”๏ธ   ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•๊ณผ ์ฐธ์กฐ์ž๋ฃŒํ˜•์˜ ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฐจ์ด_ 235p

 

  ๊ธฐ๋ณธ ์ž๋ฃŒํ˜• ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜

Class A {

   public static int twice(int a) {
      a = a * 2;
      return a;
   }

   public static void main(String[] ar) {
      int a = 3;
      int k1 = twice(a);
   }
   
}
k1์ด a๋ฅผ ๊ฐ€์ ธ๊ฐ€ twice ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด a๋Š” 6์ด๋ผ๋Š” ๊ฐ’์œผ๋กœ returnํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด  k1์€ 6์ด ๋œ๋‹ค. ์ด๋•Œ ๋ณ€์ˆ˜ a๋Š” 3์—์„œ 6์˜ ๊ฐ’์œผ๋กœ ๋ณ€๋™๋˜๊ฒ ์ง€๋งŒ ์ง€์—ญ๋ณ€์ˆ˜ a์ด๊ธฐ ๋•Œ๋ฌธ์— main์— ์žˆ๋Š” a๋Š” ๋ณ€๋™๋˜์ง€ ์•Š๋Š”๋‹ค. ์ง€์—ญ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์‚ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ twice ๋ฉ”์„œ๋“œ๊ฐ€ a๋ฅผ ๊ฐ€์ ธ๋‹ค ์ˆ˜ํ–‰ํ•ด๋„ ๊ทธ๊ฒƒ์€ ๋ณต์‚ฌ๋œ ๊ฒƒ์ด๊ธฐ์— main ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜ a ๊ฐ’์€ ๋ณ€๋™๋˜์ง€ ์•Š๊ณ  ๋งˆ๋ฌด๋ฆฌ๋œ๋‹ค.

 

 

 

 

  ์ฐธ์กฐ ์ž๋ฃŒํ˜• ์ž…๋ ฅ๋งค๊ฐœ๋ณ€์ˆ˜

public class A {
   public static void main(String[] args) {
      int[] array = new int[] {1,2,3};
      modify(array);
      }
      
   public static void modify(int[] a) {
      a[0] = 4;
      a[1] = 5;
      a[2] = 6;
   }
}
modify์— ๋„˜๊ฒจ์ง„ ๋ฐฐ์—ด, ์ฐธ์กฐ์ž๋ฃŒํ˜•์€ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ์— ์‹ค์ œ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ๊ฐ์ฒด์˜ ์œ„์นซ๊ฐ’์„ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๊ฐ์ฒด์˜ ์ฐธ์ขƒ๊ฐ’์ด ์ „๋‹ฌ๋˜์–ด ๋ณต์‚ฌ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด main์— ์žˆ๋Š” ๋ฐฐ์—ด๊ณผ modify์— ์ด์šฉ๋œ ๋ฐฐ์—ด ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋œ๋‹ค. modify ๋ฉ”์„œ๋“œ์—์„œ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด main์— ์žˆ๋Š” ๋ฐฐ์—ด๋„ ๊ฐ™์ด ๋ฐ”๋€Œ๊ฒŒ ๋˜๋Š” ์ด์œ ๋‹ค.

 

 

 


 

 

 

โœ”๏ธ   ์˜ค๋ฒ„๋กœ๋”ฉ๋œ ๋ฉ”์„œ๋“œ_ 239p

 

  ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜

: ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€ ์—ญํ• ๋กœ ๋ฉ”์„œ๋“œ๋ช…, ์ž๋ฃŒํ˜•์ด ๊ธฐ์ค€์ด ๋œ๋‹ค. (๋ฆฌํ„ด ํƒ€์ž…์€ ์‹œ๊ทธ๋‹ˆ์ฒ˜๊ฐ€ ์•„๋‹ˆ๋‹ค)

 

 

  ์˜ค๋ฒ„๋กœ๋”ฉ

๊ฐ™์€ ์ด๋ฆ„์ด์ง€๋งŒ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๊ฒƒ

public static void print() {
   System.out.println("๋ฐ์ดํ„ฐ ์—†์Œ");
}

public static void print(int a) {
   System.out.println(a);
}

public static void print(double a) {
   System.out.println(a);
}

 

 

 


 

 

โœ”๏ธ   ์ƒ์„ฑ์ž ํŠน์ง•_ 247p

 

  ์ƒ์„ฑ์ž

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—ญํ• ์„ ์ง€๋‹Œ ํด๋ž˜์Šค์˜ ๋‚ด๋ถ€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ํด๋ž˜์Šค์™€ ๊ฐ™์€ ์ด๋ฆ„์ด๋ฉฐ ๋ฆฌํ„ดํƒ€์ž…์ด ์—†๋‹ค. 

Class A {

    ํ•„๋“œ
    int m;
    
    ๋ฉ”์„œ๋“œ work
    void work() {
        ...
    }
    
    ์ƒ์„ฑ์ž A
    /* A() {
    
    } */
    
}

Class B {
    
    int m;
    
    void work() {
        ...
    }
    
    
    B(int a) {
    	this.a = a;
    }
}

public class pratice {
    public static void main(String[] args){
        
        A a = new A();
        B b = new B();
        B b = new B(1);
 
        a.work();
        b.work();
 
    }
}
๊ผญ ์ƒ์„ฑ์ž๋ฅผ ์จ์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ์“ฐ์ง€ ์•Š์•„๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์ ์œผ๋กœ ์ƒ์„ฑ์ž๋ฅผ ๋„ฃ์–ด ์ž‘๋™์‹œํ‚จ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ํด๋ž˜์Šค B์ฒ˜๋Ÿผ ๋‹จ ํ•˜๋‚˜์˜ ์ƒ์„ฑ์ž๋ผ๋„ ์žˆ์œผ๋ฉด ๋ชจ๋“  ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผํ•œ๋‹ค. ํ˜„์žฌ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž B๋ฅผ ์ฝ”๋“œ์— ์ ์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ ‡๊ฒŒ๋˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

 

  ๋‹ค์–‘ํ•œ ์ƒ์„ฑ์ž

Class A {

    A() {
        System.out.println("์ฒซ๋ฒˆ์งธ ์ƒ์„ฑ์ž");
    }
    
    A(int a) {
        System.out.println("๋‘๋ฒˆ์งธ ์ƒ์„ฑ์ž");
    }
}

public class pratice {
    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new A(2);
     }
}
๋ฉ”์„œ๋“œ์ฒ˜๋Ÿผ ์ƒ์„ฑ์ž๋„ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์˜ ์ฝ”๋“œ๋Š” ๊ธฐ๋ณธ ์ƒ์„ฑ์ž ๋ชจ์–‘์œผ๋กœ๋งŒ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ๊ฒƒ๊ณผ intํ˜• ๊ฐ’์„ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

 

 

 

 

 

 

 

 

 

[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ ]

 

 

Spring - [intelliJ,Thymeleaf] ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ(2)

[ ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋คํ•œ ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ ] Spring - [intelliJ,Thymeleaf] ๋กœ๋˜, ๋ฒ„ํŠผ ๋ˆŒ๋Ÿฌ ๋žœ๋ค ์ˆซ์ž 6๊ฐœ ์ถœ๋ ฅํ•˜๊ธฐ[ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Hello,World! ์ถœ๋ ฅ ] Spring - [intelliJ] ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด Hello,World! ์ถœ๋ ฅ[ Hello,World

post-this.tistory.com

 

 


 

 

๋„ค์žŽํด๋กœ๋ฒ„ ์ด๋ฏธ์ง€ ๋„ฃ๊ณ ,
๊ธ€์”จ์ฒด ๋ฐ”๊พธ๊ธฐ

 

 

 

 

 

1. ์ด๋ฏธ์ง€์™€ ์ „์ฒด์ฝ”๋“œ

 

 

์ด๋ฏธ์ง€

 

 

 

์ฝ”๋“œ

 

 

GitHub - hyeong-ing/LuckyLotto: ๋กœ๋˜ ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์›น์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค.

๋กœ๋˜ ๋ฒˆํ˜ธ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ์›น์‚ฌ์ดํŠธ์ž…๋‹ˆ๋‹ค. Contribute to hyeong-ing/LuckyLotto development by creating an account on GitHub.

github.com

 

 

 

 

 


 

 

 

 

 

 

2. ์ด๋ฏธ์ง€ ๋„ฃ๊ธฐ

 

ํƒ€์ž„๋ฆฌํ”„๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด, HTML ์ด๋ฏธ์ง€ ๋„ฃ๋Š” ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•๊ณผ ๋‹ค๋ฅด๋‹ค. 

 

 

โ–ก ์›ํ•˜๋Š” ์ด๋ฏธ์ง€ ๋‹ค์šด๋ฐ›๊ธฐ.

 

ํด๋กœ๋ฒ„ ์•„์ด์ฝ˜, ๋กœ๊ณ , ๊ธฐํ˜ธ – PNG, SVG ๋ฌด๋ฃŒ ๋‹ค์šด๋กœ๋“œ

 

icons8.kr

 

 

 

โ–ก ํ•ด๋‹น ์ด๋ฏธ์ง€๋Š” static.css์— ๋„ฃ๊ธฐ.

 

๋ณธ์ธ์€ ์ฒ˜์Œ์— ์ด๋ฏธ์ง€๋ฅผ css์— ๊ฒฝ๋กœ๋ฅผ ๋„ฃ๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ํด๋ž˜์Šค๋ฅผ ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์„ ํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณ„์†ํ•ด์„œ ์ด๋ฏธ์ง€๊ฐ€ ์ œ๋Œ€๋กœ ์ถœ๋ ฅ๋˜์ง€ ์•Š์•˜๋‹ค. ๊ณ ๋ฏผ์„ ํ•˜๋‹ค๊ฐ€ ํƒ€์ž„๋ฆฌํ”„์™€ ์—ฐ๊ด€์ด ์žˆ๋‚˜ ์‹ถ์–ด ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ, ํƒ€์ž„๋ฆฌํ”„๋ฅผ ์‚ฌ์šฉ ์ค‘์ผ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ด ํ†ตํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค.

 

์ด๋ ‡๊ฒŒ static.css์— ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.

 

.lucky {
    display:inline-block;
}

 

ํ•ด๋‹น ์‚ฌ์ง„์„ ๋‚˜์—ดํ•˜๊ธฐ ์œ„ํ•ด style.css์— display(ํ™”๋ฉด์— ์–ด๋–ป๊ฒŒ ๋ณด์ด๊ณ  ์‹ถ์€์ง€)์— inline-block;(๋‚˜์—ด๋˜๋„๋ก)์„ ์ ์—ˆ๋‹ค.

 

 

<img th:src="@{/css/lucky.png}" alt="Lucky" class="lucky">
<img th:src="@{/css/lucky.png}" alt="Lucky" class="lucky">
<img th:src="@{/css/lucky.png}" alt="Lucky" class="lucky">

 

์›ํ•˜๋Š” ์œ„์น˜์— th:src="@{/css/lucky.png}"๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ alt๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๋ณด์—ฌ์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋‚˜ํƒ€๋‚˜๋Š” ์ด๋ฏธ์ง€ ๋Œ€์ฒด ์ •๋ณด์ด๋ฉฐ, class๋Š” style.css์— ์ €์žฅ๋œ ์†์„ฑ์„ ๊ฐ€์ ธ์˜จ๋‹ค.

 

 

 

 

 


 

 

 

 

 

3. ๊ธ€์”จ์ฒด ๋ฐ”๊พธ๊ธฐ

 

๊ธ€์”จ์ฒด๋Š” ๋‹ค์–‘ํ•œ ์‚ฌ์ดํŠธ์—์„œ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ์‚ฌ์ดํŠธ ์™ธ์—๋„ ์–ด๋„๋น„ ๋“ฑ ๋‹ค์–‘ํ•˜๊ฒŒ ์žˆ๋‹ค. ์—ฌ๊ธฐ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ธ€์”จ์ฒด๋งˆ๋‹ค ๊ณต์œ ๋  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๊ฐ€ ๋‹ค๋ฅด๋‹ˆ ์ž˜ ํ™•์ธํ•ด๋ณด๊ณ  ๊ฐ€์ ธ์™€์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋˜ ์‚ฌ์ดํŠธ๋งˆ๋‹ค ๊ธ€์”จ์ฒด ์ ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ˆˆ๋ˆ„

 

๋ˆˆ๋ˆ„

์ƒ์—…์šฉ ๋ฌด๋ฃŒ ํ•œ๊ธ€ ํฐํŠธ ์‚ฌ์ดํŠธ

noonnu.cc

 

 

์‚ฐ๋Œ๊ตฌ๋ฆ„

 

 

์ €์ž‘๊ถŒ ๊ฑฑ์ •์—†๋Š” ๋ฌด๋ฃŒํฐํŠธ | ์‚ฐ๋Œ๊ตฌ๋ฆ„

๋ถ€๋ฆฌ ์„ธ๋กœํš์˜ ์ฒ˜์Œ์— ๋ถ€๋ฆฌ๊ฐ€ ์žˆ๋Š” ํฐํŠธ ๊ฐˆ๋ž˜. ๋ช…์กฐ์ฒด์™€ ๋ฐ”ํƒ•์ฒด๋ฅผ ํฌ๊ด„ํ•œ๋‹ค. ์„ธ๋กœํš์„ ์•„๋ž˜๋กœ ๊ธ‹๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ (์ผ๋ฐ˜์ ์œผ๋กœ) ์™ผ์ชฝ ์ƒ๋‹จ์—์„œ ์˜ค๋ฅธ์ชฝ ์•„๋ž˜๋กœ ์กฐ๊ธˆ ๊ธ‹๋‹ค ์ˆ˜์ง ์•„๋ž˜๋กœ ๋‚ด๋ ค ๊ทธ์„ ๋•Œ ์ƒ

www.sandollcloud.com

 

 

๋„ค์ด๋ฒ„

 

๋„ค์ด๋ฒ„ ๊ธ€๊ผด ๋ชจ์Œ

๋„ค์ด๋ฒ„๊ฐ€ ๋งŒ๋“  150์—ฌ์ข…์˜ ๊ธ€๊ผด์„ ํ•œ๋ฒˆ์— ๋งŒ๋‚˜๋ณด์„ธ์š”

hangeul.naver.com

 

 

 

โ–ก  ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•œ ๊ธ€์”จ์ฒด๋Š” ๋ˆˆ๋ˆ„์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ด๋‹ค.

 

๋ˆˆ๋ˆ„ - ํ•™๊ต์•ˆ์‹ฌ ๋‘ฅ๊ทผ๋ฏธ์†Œ

 

๋ˆˆ๋ˆ„

ํ•™๊ต์•ˆ์‹ฌ ๋‘ฅ๊ทผ๋ฏธ์†Œ - Keris(ํ•œ๊ตญ๊ต์œกํ•™์ˆ ์ •๋ณด์›)

noonnu.cc

 

 

 

โ–ก  ์šฐ์ธก์— ๋ณด๋ฉด ์›นํฐํŠธ๋กœ ์‚ฌ์šฉ์ด ์žˆ๋‹ค. ์˜†์— ๋„ค๋ชจ๋‚œ ๊ฑธ ๋ˆŒ๋Ÿฌ ๋ณต์‚ฌ ํ›„, style.css์— ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•œ๋‹ค.

 

 

 

โ–ก ํฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๋ถ€๋ถ„์— ์ ์šฉํ•˜๊ธฐ.


body {
    font-family: 'HakgyoansimDunggeunmisoTTF-B';
}

 

body์˜ ๊ธ€์”จ์ฒด๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด style.css์— ์œ„์˜ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค.

 

 

 

โ–ก ๋ฒ„ํŠผ๋„ ๊ธ€์”จ์ฒด ๋ฐ”๊ฟ”์ฃผ๊ธฐ.

.btn {
    background-color: #AC72E5;
    color: white;
    border: none;
    border-radius:20px;
    width:200px;
    height:60px;
    font-size:40px;
    text-align: center;
    cursor: pointer;
    font-family: 'HakgyoansimDunggeunmisoTTF-B';
}

 

body ์•ˆ์— ๋ฒ„ํŠผ์ด ์žˆ๊ธด ํ•˜์ง€๋งŒ, ๋ฒ„ํŠผ ๊ธ€์”จ์ฒด๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ font-family๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฒ„ํŠผ๋„ ๊ธ€์”จ์ฒด๋ฅผ ๋ฐ”๊ฟ”์ฃผ์—ˆ๋‹ค.

 

 

๐Ÿ“š ์ฑ… ์†Œ๊ฐœํ•˜๊ธฐ

๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ž๋ฐ”์™„์ „์ •๋ณต ์ฑ… ๋งํฌ!
ใ„ด ๊น€๋™ํ˜• ์ง€์Œ, ์ด์ง€์Šคํผ๋ธ”๋ฆฌ์‹ฑ



 

: ์ถœ์ฒ˜ ์˜ˆ์Šค24 ํ™ˆํŽ˜์ด์ง€

 

 

์ด ์ฑ…์„ ๊ณ ๋ฅด๊ฒŒ ๋œ ์ด์œ ๋Š” ์นœ๊ตฌ์˜ ์ถ”์ฒœ์ด์—ˆ๋‹ค. ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ ํ˜€์žˆ์–ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ด์œ ๋กœ ์นœ๊ตฌ๋Š” ์ด ์ฑ…์„ ๊ณจ๋ž๋‹ค๊ณ  ํ–ˆ๋‹ค. ๋‚˜๋„ ๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ๋”ฐ๋ผ์ƒ€๋‹ค. ์‹ค์ œ๋กœ ์ฑ…์„ ์‚ดํŽด๋ณด๋‹ˆ ๊ต‰์žฅํžˆ ๊ผผ๊ผผํ•˜๊ฒŒ ์ •๋ฆฌ๋˜์–ด์žˆ๋‹ค. ๋‹ค๋ฅธ ์ฑ…์€ ๋ณธ ์ ์ด ์—†์–ด ๋น„๊ต๊ฐ€ ๋ถˆ๊ฐ€ํ•˜์ง€๋งŒ, ๋‚ด ์ƒ๊ฐ์œผ๋ก  ์ฒ˜์Œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•œ๋‹ค๋ฉด ์ด ์ฑ…์„ ๊ฐ€์ง€๊ณ  ์ถฉ๋ถ„ํžˆ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•˜๋‹ค. ๋ชจ๋‘๋“ค ํ™”์ดํŒ…!!

 

 

๐Ÿฐ

 


 

โœ”๏ธ   ์ ˆ์ฐจ์ง€ํ–ฅํ˜• VS ๊ฐ์ฒด์ง€ํ–ฅํ˜•_ 210p

 

์ ˆ์ฐจ์ง€ํ–ฅํ˜•

: ์ด์•ผ๊ธฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์จ ๋‚˜๊ฐ€๋“ฏ์ด ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹

์ ˆ์ฐจ 1. ์ž๋™์ฐจ์˜ ์ปฌ๋Ÿฌ์™€ ์—”์ง„์˜ ์ข…๋ฅ˜๋ฅผ ์ง€์ •
์ ˆ์ฐจ 2. ์šด์ „์ž์˜ ์ด๋ฆ„, ๋ฉดํ—ˆ๋ฒˆํ˜ธ๋ฅผ ์ง€์ •
์ ˆ์ฐจ 3. ์šด์ „์ž๋Š” ์ž๋™์ฐจ๋ฅผ ์šด์ „ํ•œ๋‹ค. 

 

 

 

 ๊ฐ์ฒด์ง€ํ–ฅํ˜•

ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ฐ ๊ฐ์ฒด์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์„ ์ƒํ˜ธ ํ˜ธ์ถœํ•จ. ๊ฐ์ฒด์— ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋Š” ์†์„ฑ ๋˜๋Š” ํ•„๋“œ, ๊ธฐ๋Šฅ์€ ๋ฉ”์„œ๋“œ๋ผ๊ณ  ํ•จ.

 

 

 


 

 

 

 

โœ”๏ธ   ํด๋ž˜์Šค ๊ตฌ์กฐ ์‚ดํ”ผ๊ธฐ_ 212p

 

  ๊ฐ์ฒด์ง€ํ–ฅ ๋ฌธ๋ฒ• ์š”์†Œ

์ผ๋ฐ˜ ํด๋ž˜์Šค, ์ถ”์ƒ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค

 

 

ํด๋ž˜์Šค ๋ฉค๋ฒ„ : ํ•„๋“œ, ๋ฉ”์„œ๋“œ,์ด๋„ˆํด๋ž˜์Šค   /   ์ƒ์„ฑ์ž

public class OuterClass {

    // ํ•„๋“œ
    private String name;
    private int age;

    // ์ƒ์„ฑ์ž
    public OuterClass(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // ๋ฉ”์„œ๋“œ
    public void displayInfo() {
        System.out.println("Name: " + name);
        System.out.println("Age: " + age);
    }

    // ์ด๋„ˆ ํด๋ž˜์Šค
    public class InnerClass {
	...
    }

    // ๋ฉ”์ธ ๋ฉ”์„œ๋“œ
    public static void main(String[] args) {
        // OuterClass ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
        OuterClass outer = new OuterClass("sori", 99);
        outer.displayInfo();

    }
}

 

 

 

 


 

 

 

โœ”๏ธ   ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ํ™œ์šฉ_ 215p

 

  ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ

OuterClass outer = new OuterClass("Alice", 99);
ํž™๋ฉ”๋ชจ๋ฆฌ์— OuterClass์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ์ด ๊ฐ์ฒด๋Š” Alice์™€ 99๋ผ๋Š” ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  OuterClass ํ•„๋“œ์˜ name๊ณผ age๋Š” Alice์™€ 99๋กœ ๊ฐ’์ด ์ดˆ๊ธฐํ™˜๋œ๋‹ค. outer๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜๋กœ, ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํž™ ๋ฉ”๋ชจ๋ฆฌ์˜ ์œ„์น˜๊ฐ’์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— outer๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ์— Alice์™€ 99๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

'OuterClass("Alice", 99)๋กœ ๋งŒ๋“  ๊ฐ์ฒด๋ฅผ ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ๋„ฃ๊ณ , ์œ„์นซ๊ฐ’์„ OuterClassํƒ€์ž…์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜ outer์— ์ €์žฅํ•˜๋ผ!'

 

 

 

 

  ๊ฐ์ฒด ์ƒ์„ฑ์— ๋”ฐ๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ

OuterClass outer = new OuterClass("Alice", 99);
OuterClasss๋Š” ํด๋ž˜์Šค ์˜์—ญ, ์ฐธ์กฐ ๋ณ€์ˆ˜ outer๋Š” ์Šคํƒ ์˜์—ญ, ์ƒ์„ฑ์ž๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฐ์ฒด๋Š” ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์œ„์น˜ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ์ฒด ๋‚ด์— ๋ฉ”์„œ๋“œ ์˜์—ญ์˜ ์œ„์น˜๋งŒ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ชจ๋“  ๊ฐ์ฒด์˜ ์†์„ฑ์€ ๋‹ฌ๋ผ๋„ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์„œ๋“œ๋Š” ํ•œ ๋ฒˆ๋งŒ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ์ฒด ๋‚ด์— ๋ฉ”์„œ๋“œ ์˜์—ญ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ๊ทธ ๋ฉ”์„œ๋“œ๋Š” ํด๋ž˜์Šค ์˜์—ญ์— ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค.

 

 

 

 


 

 

 

โœ”๏ธ   ํฌ์ธํŠธ ์—ฐ์‚ฐ์ž_ 218p

 

  ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช….ํ•„๋“œ๋ช… or ์ฐธ์กฐ ๋ณ€์ˆ˜๋ช….๋ฉ”์„œ๋“œ๋ช…()

ํ•ด๋‹น ์œ„์น˜์— ์žˆ๋Š” ๊ฐ์ฒด ์•ˆ์„ ๋ณด๋ผ

class A {
    int m = 3;
    void print() {
        System.out.println("๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ํ™œ์šฉ");
    }
        }



public class CreateObjectAndUsageOfMembers {

    public static void main(String[] args) {

        A a = new A();

        a.m = 5;
        System.out.println(a.m);

        a.print();

    }
}
a์˜ m ํ•„๋“œ ๊ฐ’์ด 5๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— a.m์€ 5๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. a.print( )๋Š” A ํด๋ž˜์Šค์˜ print๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. a.print์˜ ๊ฒฐ๊ณผ๊ฐ’์€ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ํ™œ์šฉ์ด ๋œ๋‹ค. 

 

 

 

 

+ Recent posts