์ธ์คํด์ค, ์ ๋ณด์๋
๐ก ํด๋์ค
: ํด๋์ค๋ก๋ถํฐ ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ณผ์ == ํด๋์ค์ ์ธ์คํด์คํ
: ์ด๋ค ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด == ๊ทธ ํด๋์ค์ ์ธ์คํด์ค
* ์ธ์คํด์ค๋ ์ฐธ์กฐ๋ณ์๋ฅผ ํตํด์๋ง ๋ค๋ฃฐ ์ ์์ผ๋ฉฐ, ์ฐธ์กฐ๋ณ์์ ํ์ ์ ์ธ์คํด์ค์ ํ์ ๊ณผ ์ผ์นํด์ผํ๋ค.
* ๊ฐ์ฒด : ํด๋์ค์ ์ ์ธ๋ ๋ชจ์ ๊ทธ๋๋ก ์์ฑ๋ ์ค์ฒด, 'ํด๋์ค์ ์ธ์คํด์ค'
* ์ธ์คํด์ค : ์ค์ ๋ก ๊ตฌํ๋ ๊ตฌ์ฒด์ ์ธ ์ค์ฒด
ํด๋์ค๋ช ๊ฐ์ฒด๋ช = new ํด๋์ค๋ช ;
* ์์ฑ์ = ํด๋์ค์ด๋ฆ ๊ฐ์์ผํ๋ค
์) Card c = new Card();
-> ์ฐ์ฐ์ new์ ์ํด ๋ฉ๋ชจ๋ฆฌ(heap)์ Cardํด๋์ค์ ์ธ์คํด์ค๊ฐ ์์ฑ๋๋ค, ์ฃผ์์์ฑ
-> ์์ฑ์ Card()๊ฐ ํธ์ถ๋์ด ์ํ๋๋ค
-> ์ฐ์ฐ์ new์ ๊ฒฐ๊ณผ๋ก, ์์ฑ๋ Card์ธ์คํด์ค์ ์ฃผ์๊ฐ ๋ฐํ๋์ด ์ฐธ์กฐ๋ณ์ c์ ์ ์ฅ๋๋ค
: Card ํด๋์คํ์ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด c๋ฅผ ์ด์ฉํ๋ฉด Card ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค
: ๊ฐ์ฒด๋ฅผ ํตํด ํด๋์ค์ ๋ฉ์๋์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๋ช .ํด๋์ค๋ฉ์๋๋ช (); ์ (.)์ด์ฉ
* static ์ ์ธํ๋ค๋ฉด ๊ฐ์ฒด ์์ฑ์์ด ํด๋์ค๋ช .๋ฉ์๋๋ช (); ๋ง์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
โ new : ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ฌ์ฉํ๋ ํค์๋
ex) Animal dog = new Animal();
-> Animal์ ๊ฐ์ฒด๊ฐ ๋ง๋ค์ด์ก๋ค
-> Animal ํด๋์ค์ ์ธ์คํด์ค(instance)์ธ dog๊ฐ ๋ง๋ค์ด์ก๋ค
๐ ๊ฐ์ฒด์ ์ธ์คํด์ค
ํด๋์ค์ ์ํด ๋ง๋ค์ด์ง ๊ฐ์ฒด == ์ธ์คํด์ค
์ธ์คํด์ค : ํน์ ๊ฐ์ฒด(dog)๊ฐ ์ด๋ค ํด๋์ค(Animal)์ ๊ฐ์ฒด์ธ์ง๋ฅผ ๊ด๊ณ์์ฃผ๋ก ์ค๋ช ํ ๋ ์ฌ์ฉ๋๋ค
=> dog๋ ๊ฐ์ฒด, dog๋ Animal์ ์ธ์คํด์ค
โ ๋ถ์ด๋นต ํ -> ํด๋์ค(Class),
๋ถ์ด๋นต๋ค = ๊ฐ์ฒด(object),
์ฐ์ด๋ธ ๊ฐ๊ฐ์ ๋ถ์ด๋นต(์ํฌ๋ฆผ, ํฅ) = ์ธ์คํด์ค(instance)
=> ์ํฌ๋ฆผ ๋ถ์ด๋นต, ํฅ ๋ถ์ด๋นต ๊ฐ์ ํ์ ์ ๊ฐ์ฒด์ง๋ง, ๊ฐ๊ฐ ๋ค๋ฅธ ์ธ์คํด์ค๋ค
๐ก ์ธ์คํด์ค์ ํ(heap) ๋ฉ๋ชจ๋ฆฌ
: ํ๋์ ํด๋์ค ์ฝ๋๋ก ๋ถํฐ ์ฌ๋ฌ ๊ฐ์ ์ธ์คํด์ค๋ฅผ ์์ฑ
: ์ธ์คํด์ค๋ ํ(heap) ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋๋ค
: ๊ฐ๊ฐ์ ์ธ์คํด์ค๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ์ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง๋ค
: studentLee๋ heap๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ ์ฃผ์๋ฅผ ๊ฐ๋ฅดํจ๋ค
: heap๋ new๋ผ๋ ํค์๋๋ก ์์ฑ๋๋ค
๐ ์ฉ์ด์ ๋ฆฌ
๊ฐ์ฒด : ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋จ์ ๋์, ์์ฑ๋ ์ธ์คํด์ค
ํด๋์ค : ๊ฐ์ฒด๋ฅผ ํ๋ก๊ทธ๋๋ฐํ๊ธฐ ์ํด ์ฝ๋๋ก ๋ง๋ ์ํ
์ธ์คํด์ค : ํด๋์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ ์ํ <- new
๋ฉค๋ฒ๋ณ์ : ํด๋์ค์ ์์ฑ, ํน์ฑ
๋ฉ์๋ : ๋ฉค๋ฒ๋ณ์๋ฅผ ์ด์ฉํ์ฌ ํด๋์ค์ ๊ธฐ๋ฅ ๊ตฌํ
์ฐธ์กฐ๋ณ์ : ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋ ์ธ์คํด์ค๋ฅผ ๊ฐ๋ฅดํค๋ ๋ณ์
์ฐธ์กฐ ๊ฐ : ์์ฑ๋ ์ธ์คํด์ค์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๊ฐ
๐ก ์์ฑ์
: ์ธ์คํด์ค๋ฅผ ์ด๊ธฐํ ํ ๋์ ๋ช ๋ น์ด ์งํฉ
: ์์ฑ์์ ์ด๋ฆ์ ๊ทธ ํด๋์ค์ ์ด๋ฆ๊ณผ ๊ฐ๋ค
: ์์ฑ์๋ ๋ฉ์๋๊ฐ ์๋๋ค. ์์๋์ง ์์ผ๋ฉฐ, ๋ฆฌํด๊ฐ ์๋ค
๐ ์์ฑ์ ์ค๋ฒ๋ก๋
: ํ์์ ์ํด ์์ฑ์ ์ถ๊ฐ ํ๋ ๊ฒฝ์ฐ ์ฌ๋ฌ ๊ฐ์ ์์ฑ์๊ฐ ํ๋์ ํด๋์ค์ ์์(overload)
๐ก ์ ๋ณด์๋
: private ์ ๊ทผ ์ ์ด์
: ํด๋์ค์ ์ธ๋ถ์์ ํด๋์ค ๋ด๋ถ์ ๋ฉค๋ฒ ๋ณ์๋ ๋ฉ์๋์ ์ ๊ทผ(access)ํ์ง ๋ชปํ๊ฒ ํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ
: ๋ฉค๋ฒ ๋ณ์๋ ๋ฉ์๋๋ฅผ ์ธ๋ถ์์ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก ํ์ฌ ์ค๋ฅ๋ฅผ ์ค์ผ ์ ์๋ค
: ๋ณ์์ ๋ํด์ ํ์ํ ๊ฒฝ์ฐ get(), set() ๋ฉ์๋๋ฅผ ์ ๊ณต
class BirthDay{
private int day;
private int month;
private int year;
public int getDay() {
return day;
}
public void setDay(int day) {
if (month == 2) {
if(day < 1 || day > 28) {
System.out.println("์ค๋ฅ์
๋๋ค");
}
}else {
this.day = day;
}
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
}
public class BithDayEx {
public static void main(String[] args) {
BirthDay day = new BirthDay();
day.setMonth(2);
day.setDay(30);
day.setYear(2022);
}
}