μλ°λ κ°μ²΄ μ§ν₯ (object oriented) νλ‘κ·Έλλ° μΈμ΄μ΄λ€.
κ°μ²΄ μ§ν₯κ³Ό κ΄λ ¨ν΄μλ ν΄λμ€, κ°μ²΄, μΈμ€ν΄μ€, μμ, μΈν°νμ΄μ€, λ€νμ±, μΆμν λ±μ κ°λ μ΄ μ‘΄μ¬νλ€.
ν κ°μ© μ΄ν΄ν΄λ³΄λλ‘ νμ.
μ΄ κ²μκΈμμλ ν΄λμ€, κ°μ²΄, μΈμ€ν΄μ€λ§ μΈκΈν μμ
κ°μ²΄ μ§ν₯μ΄λ?
κ΅μ΄ μ¬μ λ»μ μνλ©΄
"λ 립μ μΈ κ°κ°μ κ°μ²΄λ‘ νλ‘κ·Έλ¨μ΄λ μμ€ν μ ꡬμ±νλ μΌ" μ΄λΌκ³ μ μνκ³ μμΌλ©°
κ°μ²΄: λ¬Έμ₯ λ΄μμ λμ¬μ νμκ° λ―ΈμΉλ λμ, μμ©μ λμμ΄ λλ μͺ½, μμ¬λ νμκ° λ―ΈμΉλ λμ ex. μ μλμ΄ μ λμκ² μ‘νμ ¨λ€. μ μλ=κ°μ²΄
μ§ν₯: μ΄λ€ λͺ©νλ‘ λ»μ΄ μΈλ¦¬μ΄ ν₯ν¨. λλ κ·Έ λ°©ν₯μ΄λ κ·Έμͺ½μΌλ‘ μ 리λ μμ§. ex. ννν΅μΌ μ§ν₯.
μ¦, μλ°λ νλ‘κ·Έλ¨μ ꡬμ±νλ μμλ€μ νΉμ λμ λ¨μλ‘ κ΅¬λΆνμ¬μ λμν κ²μ μ§ν₯νλ μΈμ΄.
κ°μ²΄λ‘ λλ μ Έ μμ΄μΌλ§ λμνλ κ²λ μλκ³ μ§ν₯μ νλ€κ³ λ§νκ³ μμ.
ν΄λμ€(κ°μ²΄)λ₯Ό μ λλμλ‘ μλ°λ₯Ό μ λλ‘ μ°κ³ μλ€λ κ²..
ν΄λμ€μ κ°μ²΄
μλ° κ³΅μ λ¬Έμμ μνλ©΄, ν΄λμ€λ μ€μ μΈκ³μ μ‘΄μ¬νλ κ°μ²΄(things)λ€μ΄ μμ±λλ μ€κ³λ λΌκ³ νννκ³ μλ€.
'μμ κ±°'λ‘ μλ₯Ό λ€λ©΄ λμΌν μ μ‘°μ¬μ λͺ¨λΈμ μμ κ±°κ° μμ² λ μ‘΄μ¬ν μ μμ§λ§ μ΄ μμ κ±°λ€μ λμΌν μ€κ³λλ₯Ό κΈ°λ°μΌλ‘ λ§λ€μ΄μ Έ κ°μ κ΅¬μ± μμλ€μ ν¬ν¨νκ³ μκ³ μ΄μ λν 'μμ κ±° μ€κ³λ'κ° λ°λ‘ ν΄λμ€ (class) κ°λ μΈ κ²μ΄λ€.
μΆμ²λ§ν¬: The Java Tutorial https://docs.oracle.com/javase/tutorial/java/concepts/class.html
ν΄λμ€λ₯Ό λ§λ€λ©΄ ν΄λμ€μ κ°μ²΄(object)λ₯Ό μμ±ν μ μλ€.
class Animal {
}
public class Sample {
public static void main(String[] args) {
Animal cat = new Animal();
}
}
// Animal ν΄λμ€μ μΈμ€ν΄μ€, μ¦ Animal μ κ°μ²΄κ° λ§λ€μ΄μ§.
// μμ
Animal cat = new Animal();
Animal dog = new Animal();
Animal horse = new Animal();
...
new ν€μλλ κ°μ²΄λ₯Ό μμ±ν λ μ¬μ©νλ ν€μλμ΄λ€.
κ°μ²΄μ μΈμ€ν΄μ€μ μ°¨μ΄λ?
ν΄λμ€μ μν΄ λ§λ€μ΄μ§ κ°μ²΄λ μΈμ€ν΄μ€μ΄λ€.
Animal cat = new Animal();
μ΄λ κ² λ§λ€μ΄μ§ cat μ κ°μ²΄μ΄λ€. κ·Έλ¦¬κ³ cat μ΄λΌλ κ°μ²΄λ Animalμ μΈμ€ν΄μ€μ΄λ€.
μΈμ€ν΄μ€λΌλ λ§μ μμ κ°μ΄ "OO ν΄λμ€μ μΈμ€ν΄μ€μ΄λ€."κ΄κ³λ₯Ό μ€λͺ ν λ μ¬μ©νλ€.
(μ κ΅³μ΄ κ΅¬λΆμ΄ λλμ§λ λͺ¨λ₯΄κ² λ€)
μ¦, cat μ μΈμ€ν΄μ€μ΄λ€ 보λ€λ cat μ κ°μ²΄μ΄λ€. κ·Έλ¦¬κ³ Animalμ μΈμ€ν΄μ€μ΄λ€.
κ°μ²΄ λ³μ (instance variable)λ?
String name μ ν΄λμ€μ μ μΈλ κ°μ²΄ λ³μμ΄λ€.
κ°μ²΄μ μν(state) λ₯Ό λνλΈλ€.
κ°μ²΄ λ³μλ μΈμ€ν΄μ€ λ³μ, λ©€λ² λ³μ, μμ± μ΄λΌκ³ λ νλ€
class Animal {
String name;
}
public class Sample {
public static void main(String[] args) {
Animal cat = new Animal();
}
}
// κ°μ²΄ λ³μ μ κ·Ό λ°©λ²?
// λνΈ μ°μ°μ (.) λ₯Ό μ΄μ©ν΄ μ κ·Όνλ€.
cat.name
** νμ¬ name μλ κ°μ΄ ν λΉλμ΄ μμ§ μμΌλ―λ‘ name μ μΆλ ₯νλ©΄ null μ΄ λμ¨λ€.
λ©μλ(method)λ ?
ν΄λμ€ λ΄μ ꡬνλ ν¨μ
λ€λ₯Έ μΈμ΄μμλ ν¨μκ° λ³λλ‘ μ‘΄μ¬νμ§λ§, μλ°μμλ ν΄λμ€λ₯Ό λ λ μ‘΄μ¬ν μ μλ€.
λ©μλλ₯Ό μ¬μ©νλ μ΄μ κ° λ¬΄μμΌκΉ?
λ΄κ° μκ°νλ μ΄μ : μμ±κ³Ό νλμ λΆλ¦¬νκΈ° μν΄μ?
μ΄μ : μ¬λ¬ λ² λ°λ³΅λλ λμμ νλμΉλ‘ λ¬Άλ μν λ νλ€.
μλ°μ λ©μλ ꡬ쑰
리ν΄μλ£ν λ©μλλͺ
(μ
λ ₯μλ£ν1 맀κ°λ³μ1, μ
λ ₯μλ£ν2 맀κ°λ³μ2, ...) {
...
return 리ν΄κ°; // 리ν΄μλ£νμ΄ void μΈ κ²½μ°μλ return λ¬Έμ΄ νμμλ€.
}
λ©μλλ κ²°κ΄κ°μ λ°ννκΈ° μν΄ return μ΄λΌλ ν€μλλ₯Ό μ¬μ©νλ€.
μλ―Έλ κ°μ§λ§ ννμ΄ λ€λ₯΄κΈ° λλ¬Έμ μ£Όμν΄μΌ νλ μ©μ΄
1) 맀κ°λ³μ(Parameter)μ μΈμ(arguments)
맀κ°λ³μλ λ©μλμ μ λ¬λ μ λ ₯κ°μ μ μ₯νλ λ³μλ₯Ό μλ―Ένκ³ , μΈμλ λ©μλλ₯Ό νΈμΆν λ μ λ¬νλ μ λ ₯κ°μ μλ―Ένλ€.
public class Sample {
int sum(int a, int b) { // a, b λ 맀κ°λ³μ
return a+b;
}
public static void main(String[] args) {
Sample sample = new Sample();
int c = sample.sum(3, 4); // 3, 4λ μΈμ
System.out.println(c);
}
}
맀κ°λ³μλ λ©μλλ₯Ό μ μν λ μ μΈνλ "λ³μ"μ΄λ€. λ©μλ λ΄μμ μ¬μ©λ μ λ ₯κ°μ μ리 νμμ μν μ ν¨. (a,b)
μΈμλ λ©μλλ₯Ό νΈμΆν λ μ λ¬νλ μ€μ 'κ°' (3,4)
=> 맀κ°λ³μ aμ bλ μΈμ 3,4λ₯Ό λ°μμ κ³μ°νλ λ³μμ΄λ€.
μ ꡬλΆν΄μ λ§ν΄μΌνλ€.
2) λ©μλμ μ λ ₯κ°κ³Ό 리ν΄κ°
μλ°μμ λ©μλλ μ λ ₯κ°μ κ°μ§κ³ μ΄λ€ μ²λ¦¬λ₯Ό νμ¬ μ μ ν 리ν΄κ°μ λλ €μ€λ€.
λ©μλ λ΄μμ μ μΈλ λ³μμ ν¨λ ₯ λ²μ !!!!
μλ‘κ² μ μ¬μ€: 맀κ°λ³μλ‘ ν΄λΉ ν΄λμ€λ₯Ό ν΅ν΄ μμ±λ κ°μ²΄ μ체λ₯Ό λκΈ°λ©΄ κ·Έ κ°μ²΄μ μμ±μ μ§μ μν₯μ μ€ μ μλ€.
λ©μΈ λ©μλ λ΄μ©
- main λ©μλμμ aλΌλ int μλ£νμ λ³μλ₯Ό μμ±νκ³ aμ 1μ λμ νλ€.
- varTest λ©μλλ₯Ό μ λ ₯κ°μΌλ‘ aλ₯Ό μ£Όμ΄ νΈμΆνλ€.
- aμ κ°μ μΆλ ₯νκ² νλ€.
public class Sample {
void varTest(int a) {
a++;
}
public static void main(String[] args) {
int a = 1;
Sample sample = new Sample();
sample.varTest(a);
System.out.println(a);
}
}
λ©μλμμ μ¬μ©ν 맀κ°λ³μλ λ©μλ μμμλ§ μ°μ΄λ λ³μμ΄κΈ° λλ¬Έμ μ΄λ¦μ΄ κ°λλΌλ μλ‘ μν₯μ μ£Όμ§ μλλ€ !!
μ¦, main λ©μλ μμ μλ int a λ varTest λ©μλμ μ¬μ©λ 맀κ°λ³μ int a λ λ€λ₯Έ λ³μμ.
κ·Έλ λ€λ©΄ varTest λ©μλλ₯Ό μ΄μ©ν΄ a κ°μ λ³κ²½μν€λ λ°©λ²μ? return κ°μ μ¬μ©ν΄ a ++ κ°μ 리ν΄ν΄μ£Όκ³ main μμ μλ a μλ€κ° λ€μ λ£μ΄μ£Όλ©΄ λ¨.
varTest μ μ λ ₯κ°μ΄ μλ£νμ΄ μλ κ°μ²΄μΈ κ²½μ° !! - μλ‘κ² μ λΆλΆ
public class Sample {
int a; // κ°μ²΄λ³μ a
void varTest(Sample sample) {
sample.a++;
}
public static void main(String[] args) {
Sample sample = new Sample();
sample.a = 1;
sample.varTest(sample);
System.out.println(sample.a);
}
}
varTest λ©μλμ μ λ ₯ νλΌλ―Έν°κ° κ°μ΄ μλ Sample ν΄λμ€μ κ°μ²΄μ΄λ€.
μ΄λ κ² λ©μλκ° κ°μ²΄λ₯Ό μ λ¬λ°μΌλ©΄ λ©μλ λ΄μ κ°μ²΄λ μ λ¬λ°μ κ°μ²΄ κ·Έ μμ²΄λ‘ μνλλ€.
λ°λΌμ μ λ ₯μΌλ‘ μ λ¬λ°μ sample κ°μ²΄μ κ°μ²΄ λ³μ aμ κ°μ΄ μ¦κ°νκ² λλ€.