μμ λ μ§/μ 리λ μ§
2022.03.22 / 2022.03.27
νμ΅μ£Όμ - κ°μ²΄μ§ν₯
- 05 ν΄λμ€, κ°μ²΄, λ©μλ
- 06 ν΄λμ€, λ©μλ μ¬μΈ΅μ°κ΅¬
νμ΅λ΄μ©
05 ν΄λμ€, κ°μ²΄, λ©μλ
κ°μ²΄(Object)
- μν(state): κ°μ²΄μ νΉμ§(μμ±)
- λμ(behavior): κ°μ²΄μ νλ(κΈ°λ₯)
μν → λ©€λ² λ³μ (μλ° μ©μ΄: νλ)
λμ, κΈ°λ₯, νμ → λ©€λ² ν¨μ (μλ° μ©μ΄: λ©μλ)
ν΄λμ€
- ν΄λμ€: κ°μ²΄λ₯Ό λ§λλ μ€κ³λ
- κ°μ²΄: ν΄λμ€μ instance
- ν΄λμ€λ κ°μ²΄λ₯Ό μ°μ΄λ΄λ νκ³Ό κ°λ€.
- ν΄λμ€λ μ€νμ½λκ° μλ → λ°λμ κ°μ²΄ μμ±μ ν΄μΌ ν¨
ν΄λμ€μ ꡬ쑰
class ν΄λμ€μ΄λ¦ {
μλ£ν νλ1;
μλ£ν νλ2;
...
λ°νν λ©μλ1() ...}
λ°νν λ©μλ2() ...}
...
} // C++μμλ λ€μ ;νμ, μλ°λ νμx
ν΄λμ€ μμλ νλμ λ©μλλ€μ΄ μ μλλ€. μ΄λ€μ ν΄λμ€μ λ©€λ²λΌκ³ λΆλ¦Ό
κ°μ²΄ μ°Έμ‘° λ³μ
- κΈ°μ΄ λ³μ(μ μ/μ€μ/λ¬Έμ/λ Όλ¦¬): μ€μ λ°μ΄ν° κ° μ μ₯
- μ°Έμ‘° λ³μ(κ°μ²΄/λ°°μ΄/λ¬Έμμ΄): κ°μ²΄μ μ°Έμ‘° μ μ₯
λ©μλ μ€λ²λ‘λ©
- κ°μ μ΄λ¦μ λ©μλκ° μ¬λ¬ κ° μ‘΄μ¬νλ€.
β» μ€λ²λ‘λ© → ν¨μ μ΄λ¦μ΄ κ°κ³ , λ§€κ°λ³μκ° λ€λ¦
UML
- κ°μ²΄μ§ν₯μ€κ³μ μ¬μ©λλ λͺ¨λΈλ§ μΈμ΄μ΄λ€.
- μννΈμ¨μ΄λ₯Ό μμ±νκΈ° μ μ μκ°ννμ¬ κ²ν νλ€.
Car | ←ν΄λμ€μ μ΄λ¦μ μ μ΄μ€λ€. |
-speed: int - gear: int - color: String |
← ν΄λμ€μ μμ±μ λνλΈλ€. μ¦, νλλ₯Ό μ μ΄μ€λ€. |
+ speedUp(): void + speedDown(): void |
← ν΄λμ€μ λμμ λνλΈλ€. μ¦, λ©μλλ₯Ό μ μ΄μ€λ€. |
- κ°μμ± νμμ → νλλ λ©μλμ μ΄λ¦ μμλ κ°μμ± νμ§μκ° μ¬ μ μμ
+ | Public |
- | Private |
# | Protected |
/ | Derived |
~ | Package |
ν΄λμ€ κ°μ κ΄κ³: UMLμμ → UMLμμ μ¬μ©λλ νμ΄ν μ’ λ₯
String ν΄λμ€
- λ¬Έμμ΄μ μ°Έμ‘°ν μλ£ κ°μ²΄μ΄λ€.
- λ¬Έμμ΄μ μ μ₯νκ³ μ²λ¦¬νλ String ν΄λμ€λ₯Ό μ¬μ©νλ€.
β» String ν΄λμ€ → μλ£νμ μ±κ²©/ν΄λμ€μ§λ§ λ§μΉ μλ£νμΈ λ―, λ¬Έμμ΄μΈ λ― μ¬μ©
String ν΄λμ€μ κ°μ²΄ μμ±
String s = new String("Hello Wolrd!");
// String s = "Hello World!";β
String ν΄λμ€μ λ©μλ
μλ° API λ¬Έμμμ String ν΄λμ€μ λ©μλλ€μ μ°Ύμλ³Ό μ μλ€.
ex)
charAt(int index) // μ§μ λ μΈλ±μ€μ μλ λ¬Έμλ₯Ό λ°ν
s.charAt(1) // 1λ²μ§Έ μ리 κ° λ°ν, Hello World!μμ eκ° λ°νλ¨
λ¬Έμμ΄μ κ²°ν©
+ μ°μ°μ μ¬μ©μ΄ κ°λ₯νλ€.
μμΉκ° → λ¬Έμμ΄
λ¬Έμμ΄κ³Ό κΈ°μ΄ μλ£ν λ³μλ κ²°ν© κ°λ₯νλ€.
// λ¬Έμμ΄λ‘ λ³ν(μλ νλ³ν)
int x = 20;
System.out.println("κ²°κ³Όκ°μ " + x); // "κ²°κ³Όκ°μ 20"μ΄ μΆλ ₯λλ€.
String answer = "The answer is " + 100; // "The answer is 100"
// λͺ
μμ νλ³ν
String answer = "The answer is ";
answer = answer + String.valueOf(100); // "The answer is 100" // valueOf: λ¬Έμμ΄μ λ³νν΄μ£Όλ λ©μλ
λ¬Έμμ΄ → μμΉκ°
λ¬Έμμ΄μ κΈ°μ΄ μλ£νμΌλ‘ λ³ννλ€.
κ° wrapper ν΄λμ€μ parseXXX() λ©μλλ₯Ό μ¬μ©νλ€.
int i = Integer.parseInt("123"); // int: κΈ°μ΄ μλ£ν, Integer: λ©νΌ ν΄λμ€
double d = Double.parseDouble("3.141592"); // double: κΈ°μ΄ μλ£ν, Double: λ©νΌ ν΄λμ€
06 ν΄λμ€, λ©μλ μ¬μΈ΅μ°κ΅¬
μ κ·Όμ μ΄
μΈλΆμμ νΉμ νλλ λ©μλμ μ κ·Όνλ κΆνμ μ€μ νλ€.
μ κ·Ό μ§μ μ | ν΄λμ€ | ν¨ν€μ§ | μμ ν΄λμ€ | μ 체 μΈκ³ |
public | O | O | O | O |
protected | O | O | O | X |
μμ | O | O | X | X |
private | O | X | X | X |
μ€μ μμ μ κ·Όμ
μ κ·Όμ(λ°νμ, getter)
- νλμ κ°μ λ°ννλ λ©μλ
- getXXX() νμ
μ€μ μ(λ³κ²½μ, setter)
- νλμ κ°μ μ€μ νλ λ©μλ
- setXXX()νμ
μμ±μ
κ°μ²΄ μμ± μ, νλ μ΄κΈ°ν λ±μ μ΄κΈ°ν μ μ°¨λ₯Ό μ€ννλ λ©μλ
public class Car{
Car() { // 2~4 - μμ±μ: ν΄λμ€ μ΄λ¦κ³Ό λμΌν λ©μλ
... // κ°μ²΄ μ΄κΈ°ν λ΄λΉ
}
}
μμ±μ μ€λ²λ‘λ©
μμ±μλ λ©μλμ ν μ’ λ₯μ΄λ€.
→ λ©μλ μ€λ²λ‘λ©κ³Ό μμ±μ μ€λ²λ‘λ©μ λμΌ!!
thisλ‘ νμ¬ κ°μ²΄ λνλ΄κΈ°
public class Point{
public int x = 0;
public int y = 0;
// μμ±μ
public Point(int x, int y){
this.x = x;
this.y = y;
}
}
C++μμλ 'this->λ©€λ²'λΌκ³ νμ§λ§ μλ°μμλ this.λ©€λ²
7~8μ€μ this.xμ this.yλ 2~3μ€μ public int x =0, public int y = 0μ μλ―Έ
7~8μ€μ xμ yλ μμ±μ Pointμ λ§€κ°λ³μ int xμ int yλ₯Ό μλ―Έ
νλλ₯Ό μ΄κΈ°ννλ λ€λ₯Έ λ°©λ²
β νλ μ μΈ μ μ΄κΈ°ν
public class Hotel{
public int capacity = 10; // 10μΌλ‘ μ΄κΈ°ν
private boolean full = false; // falseλ‘ μ΄κΈ°ν
..
}
β‘ μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ‘
- μ΄κΈ°ν λΈλ‘μ λ΄μ©μ΄ μμ±μλ€μ 볡μ¬λλ€.
- μ¬λ¬ μμ±μκ° λμΌν μ½λλ₯Ό 곡μ ν μ, 무λͺ ν΄λμ€μμ μ μ©νλ€.
public class Car{
int speed;
Car(){System.out.println("μλλ " + speed);}
{ // 4~6μ€: μΈμ€ν΄μ€ μ΄κΈ°ν λΈλ‘
speed = 100;
}
public static void main(String args[]){
Car c1 = new Car();
Car c2 = new Car();
}}
λ©μλλ‘ κ°μ²΄ μ λ¬/λ°ν
μλ°μμ μΈμμμ λ§€κ° λ³μλ‘ κ°μ΄ μ λ¬λλ λ°©λ²μ κΈ°λ³Έμ μΌλ‘ "κ°μ μν νΈμΆ(call-by-value)"μ΄λ€.
β» κ°μ μν νΈμΆ: μΈμμ κ°μ΄ 볡μ¬λμ΄ λ§€κ° λ³μλ‘ μ λ¬λλ λ°©μ
κΈ°μ΄ λ³μ μ λ¬(κ° λ³΅μ¬)
- λ©μλμ λ§€κ°λ³μλ₯Ό λ³κ²½ν΄λ μ λ¬λ μΈμ(x)λ λ³κ²½λμ§ μλλ€.
μ°Έμ‘° λ³μ μ λ¬(μ°Έμ‘° 볡μ¬)
- μ°Έμ‘° λ³μμ κ°μ΄ 볡μ¬λμ΄ λ§€κ° λ³μλ‘ μ λ¬λλ€.
- λ°λΌμ μΈμμ λ§€κ° λ³μ λͺ¨λ λμΌν κ°μ²΄λ₯Ό κ°λ¦¬ν€κ² λλ€.
- λ§€κ° λ³μλ₯Ό ν΅νμ¬ κ°μ²΄μ λ΄μ©μ λ³κ²½νκ² λλ©΄ μΈμκ° κ°λ¦¬ν€λ κ°μ²΄κ° λ³κ²½λλ€.
β» λ°°μ΄μ μ λ¬λλ κ²½μ°
- λ°°μ΄μ λ§€κ° λ³μλ‘ λ°μμΌ νλ€.
- μλ°μμλ λ°°μ΄λ κ°μ²΄μ΄κΈ° λλ¬Έμ κ°μ²΄ μ λ¬κ³Ό λμΌνκ² μ²λ¦¬λλ€.
- μ¦, λ°°μ΄μ΄ μ λ¬λλ κ²μ΄ μλ λ°°μ΄μ κ°λ¦¬ν€λ μ°Έμ‘°κ°μ΄ 볡μ¬λκ³ λ©μλμμ λ§€κ° λ³μλ₯Ό ν΅νμ¬ λ°°μ΄μ λ³κ²½νλ©΄ μλ³Έ λ°°μ΄μ΄ λ³κ²½λλ€.
μ μ λ©€λ²(static member)
- μμ½μ΄ staticμ μ¬μ©νλ€.
- μ μ λ©€λ²λ νλλ§ μμ±λλ€.
- λͺ¨λ κ°μ²΄κ° 곡μ λλ€.
- ν΄λμ€ μ΄λ¦μΌλ‘ μ κ·Ό κ°λ₯νλ€.
ν΄λμ€μ λ©€λ²λ μΈμ€ν΄μ€ λ©€λ²μ μ μ λ©€λ²λ‘ λλμ΄μ§λ€.
μΈμ€ν΄μ€ λ³μ
λμΌν ν΄λμ€λ₯Ό μ΄μ©νμ¬ λ§μ κ°μ²΄λ€μ΄ μμ±λ λ κ°κ°μ κ°μ²΄(μΈμ€ν΄μ€)λ€μ μμ λ§μ λ³μλ₯Ό κ°μ§λλ° μ΄λ€ λ³μλ μΈμ€ν΄μ€λ§λ€ λ³λλ‘ μμ±λκΈ° λλ¬Έμ μΈμ€ν΄μ€ λ³μ(instance variable)λΌκ³ λ νλ€.
μ μ λ³μ
κ²½μ°μ λ°λΌ λͺ¨λ κ°μ²΄μ 곡ν΅μΈ λ³μκ° νμν κ²½μ°λ μλλ° μ΄κ²μ΄ μ μ λ³μ(static variable)μ΄λ€.
μ μ λ³μλ νλμ ν΄λμ€μ νλλ§ μ‘΄μ¬νλ€.
- μ μ λ³μλ ν΄λμ€ λ³μλΌκ³ λ νλ€.
- λͺ¨λ κ°μ²΄λ€μ νλμ μ μ λ³μλ₯Ό 곡μ νλ€.
- μ μ λ³μλ₯Ό λ§λ€λ €λ©΄ λ³μλ₯Ό μ μν λ μμ staticμ λΆμ΄λ©΄ λλ€.
- μ μ λ³μλ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ μ¬μ© κ°λ₯νλ€.
μ μ λ©μλ
- μμ½μ΄ staticμ μ¬μ©νλ€.
- ν΄λμ€ μ΄λ¦μΌλ‘ νΈμΆν μ μλ€.
- ex) double value = Math.sqrt(9.0)
β» μ μ λ©€λ²λ ν΄λμ€ μ΄λ¦μΌλ‘ μ κ·Ό κ°λ₯νλ€.
→ κ°μ²΄λ₯Ό μμ±νμ§ μμλ μΈ μ μλ€. (ν΄λμ€ μ΄λ¦λ§ κ°μ§κ³ νΈμΆ κ°λ₯νλ€.)
→ ex) Math.random()
λ΄μ₯ ν΄λμ€
ν΄λμ€ λ΄λΆμμ μ μλ ν΄λμ€λ₯Ό λ§νλ€.
class OuterClass{
... // νλ, λ©μλ
class NestedClass{
... // νλ, λ©μλ
}
}
β» NestedClass: ν¬ν¨λ ν΄λμ€
- μΈλΆ ν΄λμ€ pirvateμ μ©μ΄νκΈ° λλ¬Έμ μ¬μ©.
- 볡μ‘ν μ½λλ₯Ό κ°κ²°νκ² νκΈ° μν΄ νμ©
νμ΅λ΄μ© μ΄ν΄λ
90%μ λ. λλΆλΆ λ°°μ΄ λ΄μ©μ 볡μ΅νλ©° μ΄ν΄ν μ μμμ§λ§, κ°μ²΄ μ°Έμ‘° λΆλΆμ΄ μ‘°κΈ λΆμ‘±ν κ² κ°λ€.
νμ΅νλ λμ보기
μμ μμ λ°°μ΄ λ΄μ©μ 곡λΆν λ νκΈ°ν κ²μ λ°νμΌλ‘ μ± κ³Ό ν¨κ» λ³Έλ€. μ΄λ²μ μ²μ λλ©΄ μμ μ ν΄μ λΉλλ©΄ λ Ήνκ°μλ‘ μμ μ νμ λμλ λ¬λλ€. λ Ήν κ°μλ λͺ¨λ₯΄λ λΆλΆμ κ²½μ° λλ € λ³Ό μ μμ§λ§, λλ©΄μΌλ‘ νκΈ°λ₯Ό νκ³ κ·Έκ²μ λ°νμΌλ‘ 곡λΆνλ €κ³ νλ μ‘°κΈ μ΄λ ΅κΈ°λ νλ€.
C++μμ λ°°μ΄ λ΄μ©μ λ νμ₯νλ λλμ΄μλ€. μ¬μ€ C++μ΄ μ’ κ°λ¬Όκ°λ¬Όνλ€..
μλ°μμ ν¬μΈν°κ° μλ€λ κ²μ μκ³ μ‘°κΈ κΈ°λ»€λ€..γ γ
λ€μ νμ΅κ³ν
μμκ³Ό λ€νμ±
'Study > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μλ°νλ‘κ·Έλλ° 6μ£Όμ°¨ μ 리 (0) | 2022.04.16 |
---|---|
μλ°νλ‘κ·Έλλ° 5μ£Όμ°¨ μ 리 (0) | 2022.04.09 |
μλ°νλ‘κ·Έλλ° 4μ£Όμ°¨ μ 리 (0) | 2022.04.03 |
μλ° κ³΅λΆ μ€ κΆκΈν μ (0) | 2022.04.03 |
μλ°νλ‘κ·Έλλ° 2μ£Όμ°¨ μ 리 (0) | 2022.03.20 |