Section#7 _ ํด๋์ค
#1 ๊ฐ์ฒด์ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP : Object-Oriented Programming)
: ๊ฐ์ฒด๋ฅผ ์งํฅํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ
โช๏ธ ๊ฐ์ฒด : ์ผ๋ฐ์ ์ผ๋ก ์ํ๋ฅผ ํํํ ์ ์๊ณ ์ฐ๋ฆฌ๊ฐ ํ๋์ผ๋ก ์คํํ ์ ์๋ ๋ชจ๋ ๊ฒ
โช๏ธ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ : ๊ฐ์ฒด๋ฅผ ์ค์ฌ์ผ๋ก ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๊ณ ํ๋ก๊ทธ๋๋ฐ ํ๋ ๊ฒ
#2 ๊ฐ์ฒด์ ํด๋์ค
2-1 ํด๋์ค?
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ์ ์ ์ค๋ช ์ (์ด๋ค ๋ฌผ๊ฑด์ ๋ง๋ค๊ธฐ ์ํ ๋งค๋ด์ผ)
ํ๋์ ํด๋์ค๋ก ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅ
๊ธฐ๋ณธ ๊ตฌ์กฐ
public class Car{
// Car ํด๋์ค ์ ์ธ
}
========================
์ ๊ทผ์ ํ์ class ํด๋์ค ์ด๋ฆ {
์ ๊ทผ ์ ํ์ : ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ํด๋์ค์ ์ ๊ทผ ๋ฒ์๋ฅผ ์ ํ (Ex. public, private, protected)
class : class๋ฅผ ์ ์ธํจ์ ๋ป
ํด๋์ค ์ด๋ฆ : ๋ณ์์ฒ๋ผ ์ด๋ฆ์ ๊ฐ์ง๊ณ , ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ
}
์ฉ๋
์คํ์ฉ : ํ๋ก๊ทธ๋จ์ ์์ ๋ฉ์๋์ธ main()์ ๊ฐ์ง๊ณ ์๋ ํด๋์ค → ๋ค๋ฅธ ํด๋์ค์์ ์ฌ์ฉํ์ง ์์.
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ฉ : ๋ค๋ฅธ ํด๋์ค์์ ์ด์ฉํ ๋ชฉ์ ์ผ๋ก ์ ์ธ๋๋ ํด๋์ค
#3 ํด๋์ค์ ๊ตฌ์ฑ
1. ํ๋(field) : ๊ฐ์ฒด๊ฐ ๊ฐ์ ธ์ผ ํ ๋ฐ์ดํฐ ์ํ๋ฅผ ์ ์ฅํ๋ ๋ณ์
int wheel = 4;
wheel = 5;
// ํ๋์ ์ ๊ทผ ํ๋ ๋ฐฉ๋ฒ
๊ฐ์ฒด๋ช
.ํ๋๋ช
๊ฐ์ฒด๋ช
: ํด๋์ค๋ฅผ ์ด์ฉํด ๋ง๋ ๊ฐ์ฒด ์ด๋ฆ
ํ๋๋ช
: ๋ง๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ํ๋ ์ด๋ฆ
2. ๋ฉ์๋ (method) : ๊ฐ์ฒด์ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ์ค๊ดํธ {} ๋ธ๋ก
: ๋ฆฌํด๊ฐ์ด ์์ ๊ฒฝ์ฐ → ๋ฆฌํด๊ฐ์ ์๋ฃํ์ ๋ฐํ ํ์ ์ผ๋ก ์์ฑ → int, String, char ๋ฑ๋ฑ
: ๋ฆฌํด๊ฐ์ด ์์ ๊ฒฝ์ฐ → ๋ฐํ ํ์ ์ void๋ผ๊ณ ์์ฑ
: ํ๋ฒ ์ ์ธํด ๋๋ฉด, ํ์ํ ๋๋ง๋ค ์ฌ๋ฌ ๋ฒ ํธ์ถํ์ฌ ์ฌ์ฉ ๊ฐ๋ฅ → ๋ฐ๋ณต์ ์ธ ํ๋ก๊ทธ๋๋ฐ์ ๋ณด๋ค ์ฝ๊ณ ๊ฐ๋จํ๊ฒ ํด๊ฒฐ
๋ฐํ ํ์ ๋ฉ์๋๋ช () {
}
// ๋ฉ์๋ ์ฌ์ฉ๋ฒ
ํด๋์ค๋ช
๊ฐ์ฒด๋ช
= ํด๋์ค๋ช
();
๊ฐ์ฒด๋ช
.๋ฉ์๋๋ช
();
3. ์์ฑ์ (constructor)
: ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ฐ๋์ ํธ์ถํด์ผ ํ๋ ๋ฉ์๋ → ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด์ ๊ฐ์ฒด ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ ์ญํ
ํด๋์ค๋ช ๊ฐ์ฒด๋ช = new ํด๋์ค๋ช ();
new ํด๋์ค๋ช (); → ์ด ๋ฉ์๋๊ฐ ์์ฑ์
: ์์ฑ์ ๋ฉ์๋๋ ํด๋์ค๋ช ๊ณผ ์ด๋ฆ์ด ๊ฐ์ → ์ฐ๋ฆฌ๊ฐ ์ง์ ์ ์ธํ์ง ์์๋ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์๋์ผ๋ก ์์ฑ๋๊ณ ๋์๋ง ๋ณด์ด์ง ์์
: ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ฒด ๋ณ์๋ฅผ ์ฌ๋ ค์ฃผ๋ ์ญํ
#4 ์ ์ ๋ฉค๋ฒ์ static
: ํด๋์ค ์์ ์ ์ธ๋ ํ๋์ ๋ฉ์๋ → ํด๋์ค ๋ฉค๋ฒ
: ๊ฐ์ฒด(์ธ์คํด์ค) ๋ฉค๋ฒ → ๊ฐ ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ฒ ๋๋ ํ๋์ ๋ฉ์๋
: ์ ์ ๋ฉค๋ฒ → ๋ชจ๋ ๊ฐ์ฒด๋ค์ด ๊ณต์ ํ๋ฉฐ ์ฌ์ฉํ๋ ํ๋์ ํ๋์ ๋ฉ์๋
#4-1 ์ ์ ๋ฉค๋ฒ
: ํ๋์ ๋ฉ์๋๋ฅผ ์ ์ธํ ๋ 'static' ์ด๋ผ๋ ํค์๋๊ฐ ๋ถ์ ๋ฉค๋ฒ
static ์ฌ์ ์ ์๋ฏธ : '๊ณ ์ ๋' ์ด๋ผ๋ ๋ป
static ํ๋ก๊ทธ๋๋ฐ ์ธ์ด : 'ํด๋์ค์ ๊ณ ์ ๋์๋ค' ์ ์๋ฏธ → ๊ฐ์ฒด๊ฐ ์๋ ํด๋์ค์ ์์กด์ ์ธ ์์
: static์ด ์์ ๋ถ์ ๋ฉค๋ฒ๋ค์ ๋ค๋ฅธ ๋ฉค๋ฒ๋ค๊ณผ๋ ๋ฌ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
โช๏ธ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๋ ๊ฒ์ด ์๋๋ผ, ํ๋ก๊ทธ๋จ์ ์์ํ ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ๊ฐ๊ณ ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋ ๋ ๋ฉ๋ชจ๋ฆฌ์์ ์ฌ๋ผ์ง
// ํด๋์ค ์ด๋ฆ์ ํตํด ํธ์ถ
ํด๋์ค๋ช
.ํ๋;
ํด๋์ค๋ช
.๋ฉ์๋();
: static์ ๊ฐ์ฒด๋ง๋ค ๊ฐ์ง๋ ๋ฐ์ดํฐ ๊ธฐ๋ฅ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ๊ฐ์ ๊ฐ์ ๊ฐ์ ธ์ผ ํ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์จ์