ํด๋์ค์ ๊ฐ์ฒด์ ์ ์์ ์ฉ๋
ํด๋์ค์ ์ ์ : ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์ ์ํด ๋์ ๊ฒ์ด๋ค.
ํด๋์ค์ ์ฉ๋ : ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ค.
๊ฐ์ฒด์ ์ ์ : ์ค์ ๋ก ์กด์ฌํ๋ ๊ฒ. ์ฌ๋ฌผ ๋๋ ๊ฐ๋
๊ฐ์ฒด์ ์ฉ๋ : ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ธฐ๋ฅ๊ณผ ์์ฑ์ ๋ฐ๋ผ ๋ค๋ฆ
์ ํ์ ๊ฐ์ฒด : ์ฑ ์, ์์, ์๋์ฐจ, TV์ ๊ฐ์ ์ฌ๋ฌผ
๋ฌดํ์ ๊ฐ์ฒด : ์ํ๊ณต์, ํ๋ก๊ทธ๋จ ์๋ฌ์ ๊ฐ์ ๋ ผ๋ฆฌ๋ ๊ฐ๋
์์
ํด๋์ค : ๋ถ์ด๋นต ํ
๊ฐ์ฒด : ๋ถ์ด๋นต (์ค์ ๋ก ์ฐ์ด์ ๋์จ ๋ถ์ด๋นต)
๊ฐ์ฒด ์งํฅ์์ ๊ฐ์ฒด๋ ์ฌ๋ฌผ๊ณผ ๊ฐ์ ์ ํ์ ์ธ ๊ฒ ๋ฟ๋ง ์๋๋ผ, ๊ฐ๋ ์ด๋ ๋ ผ๋ฆฌ์ ๊ฐ์ ๋ฌดํ์ ์ธ ๊ฒ๋ค๋ ๊ฐ์ฒด๋ก ๊ฐ์ฃผํ๋ค.
์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฑด ๋ถ์ด๋นต(๊ฐ์ฒด) ๊ฐ ํ์ํ ๊ฒ์ด์ง,
๋ถ์ด๋นตํ(ํด๋์ค)๊ฐ ํ์ํ ๊ฒ์ ์๋๋ค.
๋ถ์ด๋นตํ(ํด๋์ค) ๋ ๋ถ์ด๋นต(๊ฐ์ฒด) ์ ๋ง๋๋๋ฐ ์ฌ์ฉ๋ ๋ฟ์ด๋ค.
โํด๋์ค๋ฅผ ์ ์ํ๊ณ , ํด๋์ค๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ด์ โ
์ค๊ณ๋(ํด๋์ค)๋ฅผ ํตํด์ ์ ํ(๊ฐ์ฒด) ์ ๋ง๋ค๊ธฐ ์ํด์์ด๋ค.
ํด๋์ค๋ฅผ ํ ๋ฒ๋ง ์ ๋ง๋ค์ด ๋๊ธฐ๋ง ํ๋ฉด, ๋งค๋ฒ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋๋ง๋ค ์ด๋ป๊ฒ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ผ ํ ์ง๋ฅผ ๊ณ ๋ฏผํ์ง ์์๋ ๋๋ค.
(ํด๋์ค์์ ๋ฐ๋ก ๊ฐ์ฒด๋ฅผ ์ฐ์ด๋ด๋ฉด ๋๋ ๊ฒ์ด๋ค)
๊ฐ์ฒด์ ์ธ์คํด์ค
ํด๋์ค์ ์ธ์คํด์คํ(instantiate) → ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ณผ์
ํด๋์ค์ ์ธ์คํด์ค(instance) → ์ด๋ค ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด
→ ๊ฐ์ฒด = ์ธ์คํด์ค ๊ฑฐ์ ๋์ผ
๐บ ๐บ ๐บ ๐บ ๐บ
๊ฐ๊ฐ tv๋ ์ธ์คํด์ค๋ผ๊ณ ํ๊ณ ,
์ด ๋ชจ๋ ์ธ์คํด์ค๋ฅผ ๋ํํ๋ ๊ฒ์ด ๊ฐ์ฒด์ด๋ค.
JDK(Java Development Kit)
→ ํ๋ก๊ทธ๋๋ฐ์ ์ํด ๋ง์ ์์ ์ ์ฉํ ํด๋์ค(Java API)๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๊ณ ์๋ค.
๊ฐ์ฒด์ ๊ตฌ์ฑ์์ - ์์ฑ๊ณผ ๊ธฐ๋ฅ
๊ฐ์ฒด๋ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ์งํฉ์ด๋ค.
์์ฑ(property) : ๋ฉค๋ฒ๋ณ์(member variable), ํน์ฑ(attribute), ํ๋(field), ์ํ(state)
๊ธฐ๋ฅ(function) : ๋ฉ์๋(method), ํจ์(function), ํ์(behavior)
์์)
์์ฑ : ํฌ๊ธฐ, ๊ธธ์ด, ๋์ด, ์์, ๋ณผ๋ฅจ, ์ฑ๋ ๋ฑ
๊ธฐ๋ฅ : ์ผ๊ธฐ, ๋๊ธฐ, ๋ณผ๋ฅจ ๋์ด๊ธฐ, ๋ณผ๋ฅจ ๋ฎ์ถ๊ธฐ, ์ฑ๋ ๋ณ๊ฒฝํ๊ธฐ ๋ฑ
์ธ์คํด์ค์ ์์ฑ๊ณผ ์ฌ์ฉ
1๏ธโฃ Tv ์ธ์คํด์ค ์์ฑํด๋ณด๊ธฐ
class Tv {
// Tv ์์ฑ
String color;
boolean power;
int channer;
// Tv์ ๊ธฐ๋ฅ
void power(){
power = !power;
String onOff = (power) ? "on" : "off";
System.out.println("์ ์ "+ onOff);
}
void channelUp() {
++channer;
System.out.println("์ฑ๋ "+ channer);
}
void channelDown() {
--channer;
System.out.println("์ฑ๋ "+ channer);
}
}
public class TvTest {
public static void main(String[] args){
Tv t = new Tv(); // Tv์ธ์คํด์ค ์์ฑ
t.channer = 7;
t.power = false;
// ์ฑ๋ 7์ ์ ์์ ๊บผ์ ธ์๋ ์ํ
t.power(); // ์ ์ on
t.channelDown(); // ์ฑ๋ 6
}
}
Tv t
→ Tv ํด๋์ค ํ์
์ ์ฐธ์กฐ๋ณ์ t ์ ์ธ. ์์ง ์ธ์คํด์ค๊ฐ ์์ฑ๋์ง ์์์ผ๋ฏ๋ก ์๋ฌด๊ฒ๋ ๋ชปํ๋ค.
t = new Tv();
→ new์ ์ํด Tv ํด๋์ค์ ์ธ์คํด์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ๋น ๊ณต๊ฐ ์ ์์ฑ๋๋ค.
์ธ์คํด์ค๋ ์ฐธ์กฐ๋ณ์๋ฅผ ํตํด์๋ง ๋ค๋ฃฐ ์ ์์ผ๋ฉฐ, ์ฐธ์กฐ๋ณ์์ ํ์ ์ ์ธ์คํด์ค์ ํ์ ๊ณผ ์ผ์นํด์ผ ํ๋ค.
→ TV๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด TV๋ฆฌ๋ชจ์ฝ์ผ๋ก, ๋ถ์ด๋นต์ ๋ง๋ค๋ ค๋ฉด ๋ถ์ด๋นต ํ์ ์ด์ฉํด์ผ ํ๋ค๋ ๋ง์ธ ๊ฒ ๊ฐ๋ค.
2๏ธโฃ ์ธ์คํด์ค 2๊ฐ ์์ฑํ๊ธฐ & ๋์ ํ๊ธฐ
public class TvTest {
public static void main(String[] args){
Tv t1 = new Tv(); // Tv์ธ์คํด์ค1 ์์ฑ
Tv t2 = new Tv(); // Tv์ธ์คํด์ค2 ์์ฑ
t2 = t1;
t1.channer=7;
System.out.println(t1.channer); // 7
System.out.println(t2.channer); // 7
}
}
t2 = t1;
์ ํ๋ฉด ์ ์ฌ์ง์ฒ๋ผ ๋๋ค.
t2์ t1 ๋ ๋ค t1์ด ์ฐธ์กฐํ๊ณ ์๋ ์ธ์คํด์ค๋ฅผ ๊ฐ์ด ์ฐธ์กฐํ๊ฒ ๋๊ณ , t2๊ฐ ์๋ ์ฐธ์กฐํ๊ณ ์๋ ์ธ์คํด์ค๋ ๋ ์ด์ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
→ ์ด๋ ๊ฒ ์ฐธ์กฐ๋ณ์๊ฐ ํ๋๋ ์๋ ์ธ์คํด์ค๋ ๋ ์ด์ ์ฌ์ฉ๋์ด์ง ์ ์์ผ๋ฏ๋ก ‘๊ฐ๋น์ง ์ปฌ๋ ํฐ(Garbage Collector)์ ์ํด์ ์๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์ ๊ฑฐ๋๋ค.
๊ฐ์ฒด ๋ฐฐ์ด
class Tv {
// Tv ์์ฑ
String color;
boolean power;
int channel;
// Tv์ ๊ธฐ๋ฅ
void power() {
power = !power;
}
void channelUp() {
++channel;
}
void channelDown() {
--channel;
}
}
public class TvTest {
public static void main(String[] args) {
Tv[] tvArr = new Tv[3];
// Tvํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ์ 3๊ฐ ๋ง๋ ๊ฒ.
for (int i = 0; i < tvArr.length; i++) {
tvArr[i] = new Tv();
// ์ ์ด๋ ๊ฒ ๋ฏ์ค์ง?
tvArr[i].channel = i + 10;
}
for (int i = 0; i < tvArr.length; i++) {
tvArr[i].channelUp();
System.out.println(i + " : " + tvArr[i].channel + "๋ฒ");
}
}
}
ํด๋์ค์ ๋ ๋ค๋ฅธ ์ ์
1๏ธโฃ ํด๋์ค - ๋ฐ์ดํฐ์ ํจ์์ ๊ฒฐํฉ
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํ ๋ฐ์ดํฐ ์ ์ฅ ํํ์ ๋ฐ์ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
โ ๋ณ์
โก ๋ฐฐ์ด
โข ๊ตฌ์กฐ์ฒด
โฃ ํด๋์ค
Java์์ String์ด๋ผ๋ ํด๋์ค๋ก ๋ฌธ์์ด์ ๋ค๋ฃจ๋๋ฐ,
์ด๋ ๊ฒ ํด๋์ค๋ก ์ ์ํ ์ด์ ๋ ๋ฌธ์์ด๊ณผ ๋ฌธ์์ด์ ๋ค๋ฃจ๋๋ฐ ํ์ํ ํจ์๋ค์ ํจ๊ป ๋ฌถ๊ธฐ ์ํด์์ด๋ค.
2๏ธโฃ ์ฌ์ฉ์์ ์ ํ์ (user-defined type)
ํ๋ก๊ทธ๋๋ฐ์ธ์ด์์ ์ ๊ณตํ๋ ์๋ฃํ(primitive type)์ธ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ก ๊ด๋ จ๋ ๋ณ์๋ค์ ๋ฌถ์ด์ ํ๋์ ํ์ ์ผ๋ก ์๋ก ์ถ๊ฐํ๋ ๊ฒ์ ์ฌ์ฉ์์ ์ ํ์ ์ด๋ผ๊ณ ํ๋ค.
EX)
class Time {
int hour;
int minute;
float second;
}