λ°λ¨
μλ° μ λ¬Έμμ λμ€λ "ν΄λμ€μ 볡μ λ³ΈμΈ κ°μ²΄"λΌλ ννμ μꡬμ¬μ κ°μ§. μ΄ν΄λ₯Ό λκΈ° μν λΉμ λ‘ μκ°κ° μ¬μ©νμ λ― ν¨. λ μ¬μ΄μ μ νν κ΄κ³μ λν΄ μκ³ μΆμ΄μ‘λ€.
μΆμ²
ChatGPT
ν΄λμ€(Class)μ κ°μ²΄(Object)μ μ μμ κ΄κ³
ν΄λμ€ Class
μ μ
ν΄λμ€λ κ°μ²΄μ μ²μ¬μ§(blueprint) λλ ν νλ¦Ώμ΄λ€. ν΄λμ€λ κ°μ²΄κ° κ°μ ΈμΌ ν μμ±(attributes)μ νλ(behaviors)μ μ μνλ€.
ꡬμ±μμ
- νλ(fields): ν΄λμ€μ μ μλ μμ±μΌλ‘, κ°μ²΄μ μνλ₯Ό μ μ₯νλ λ³μλ€μ΄λ€.
- λ©μλ(methods): κ°μ²΄κ° μνν μ μλ νλμΌλ‘, ν΄λμ€ λ΄λΆμμ μ μλ ν¨μλ€.
- μμ±μ(constructor): κ°μ²΄λ₯Ό μμ±νκ³ μ΄κΈ°ννλ νΉλ³ν λ©μλλ€.
νΉμ§
- μ μ (Static): ν΄λμ€λ μ½λλ‘ μ μλ μ μ μΈ κ΅¬μ‘°μ΄λ©°, λ°νμμ λ³κ²½λμ§ μλλ€.
- μ μ: ν΄λμ€λ₯Ό ν΅ν΄ κ°μ²΄κ° μ΄λ»κ² λμν μ§λ₯Ό μ€κ³νλ€.
μμ
public class Car {
// νλ(μμ±)
private String model;
private String color;
// μμ±μ
public Car(String model, String color) {
this.model = model;
this.color = color;
}
// λ©μλ(νλ)
public void startEngine() {
System.out.println("Engine started.");
}
public void drive() {
System.out.println("Car is driving.");
}
}
κ°μ²΄ Object
μ μ
κ°μ²΄λ ν΄λμ€μ μΈμ€ν΄μ€(instance)μ΄λ€. κ°μ²΄λ ν΄λμ€λ₯Ό κΈ°λ°μΌλ‘ μμ±λλ©°, ν΄λμ€μμ μ μλ μμ±μ μ€μ κ°μ κ°μ§κ³ νλμ μννλ€.
νΉμ§
- λμ (Dynamic): κ°μ²΄λ λ°νμμ μμ±λλ©°, κ°κ°μ κ°μ²΄λ ν΄λμ€μμ μ μλ μμ±μ ꡬ체μ μΈ κ°μ κ°μ§κ³ μλ€.
- μ€μ²΄(Concrete): κ°μ²΄λ μ€μ λ‘ μ‘΄μ¬νλ©°, ν΄λμ€μ ꡬ쑰λ₯Ό λ°λΌ μ€μ λ°μ΄ν°λ₯Ό λ΄κ³ νλμ μννλ€.
κ΅¬μ± μμ
- μν(state): νλμ μ μ₯λ λ°μ΄ν°μ μ€μ κ°.
- νλ(behavior): λ©μλλ₯Ό ν΅ν΄ ꡬνλ κΈ°λ₯.
- μλ³μ(identity): κ° κ°μ²΄λ λ©λͺ¨λ¦¬ μμμ κ³ μ μ μ£Όμλ₯Ό κ°μ§.
μμ
public class Main {
public static void main(String[] args) {
// κ°μ²΄ μμ±
Car car1 = new Car("Toyota", "Red");
Car car2 = new Car("Honda", "Blue");
// κ°μ²΄μ μν
System.out.println("Car 1 model: " + car1.model); // Output: Toyota
System.out.println("Car 2 color: " + car2.color); // Output: Blue
// κ°μ²΄μ νλ
car1.startEngine(); // Output: Engine started.
car2.drive(); // Output: Car is driving.
}
}
ν΄λμ€μ κ°μ²΄μ κ΄κ³
ν΄λμ€μ κ°μ²΄μ κ΄κ³λ₯Ό μ΄ν΄νλ €λ©΄ λͺ κ°μ§ ν΅μ¬ κ°λ μ λͺ νμ ν νμκ° μλ€.
1. μ²μ¬μ§κ³Ό μ€μ
ν΄λμ€λ κ°μ²΄λ₯Ό λ§λ€κΈ° μν μ²μ¬μ§μ΄λ€. μ€μ λ‘ νλ‘κ·Έλ¨μμ μ¬μ©λλ κ²μ κ°μ²΄μ΄λ©°, ν΄λμ€λ κ·Έ κ°μ²΄λ₯Ό λ§λ€κΈ° μν μ μμΌ λΏμ΄λ€.
2. μΈμ€ν΄μ€ν
κ°μ²΄λ ν΄λμ€μ μΈμ€ν΄μ€μ΄λ€. ν΄λμ€μμ μ μν μμ± λ° λ©μλλ₯Ό μ€μ λ‘ κ°μ§κ³ μλ μ€μ²΄κ° κ°μ²΄μ΄λ€.
3. λ€μμ±
λμΌν ν΄λμ€μμ μ¬λ¬ κ°μ²΄λ₯Ό μμ±ν μ μμΌλ©°, κ° κ°μ²΄λ ν΄λμ€μ νλμ λν΄ μλ‘ λ€λ₯Έ μνλ₯Ό κ°μ§ μ μλ€.
4. νλμ 곡μ
ν΄λμ€λ νλ(λ©μλ)λ₯Ό μ μνκ³ , κ·Έ νλμ λͺ¨λ κ°μ²΄κ° 곡μ νλ€. κ°μ²΄λ μ΄ νλμ μ€νν¨μΌλ‘μ¨ ν΄λμ€μμ μ μν λμμ μννλ€.
"볡μ λ³Έ"μ μ€ν΄
볡μ λ³Έμ΄λΌλ ννμ νκ³ : "κ°μ²΄κ° ν΄λμ€μ 볡μ λ³Έμ΄λ€"λΌλ ννμ ν΄λμ€μ κ°μ²΄μ κ΄κ³λ₯Ό μ€λͺ νλ λ°μ μ¬μ©λ μ μμ§λ§, μ΄λ 볡μ λΌλ μ©μ΄κ° κ°λ¦¬ν€λ μλ―Έλ₯Ό μλͺ» μ λ¬ν μ μλ€.
- 볡μ λ³Έ: μΌλ°μ μΌλ‘ 볡μ λ³Έμ μλ³Έκ³Ό λμΌν 볡μ¬λ³Έμ μλ―Ένλ€. κ·Έλ¬λ κ°μ²΄λ ν΄λμ€μ μμ ν 볡μ¬λ³Έμ΄ μλλ€.
- μ€μ²΄ν: κ°μ²΄λ ν΄λμ€μ μ€κ³μ λ°λΌ μ€μ²΄νλ νλμ μΈμ€ν΄μ€μ΄λ©°, ν΄λμ€μ λμΌν ꡬ쑰λ₯Ό κ°μ§ λΏ, κ°μ²΄ κ°μ μνκ° μλ‘ λ€λ₯Ό μ μλ€.
μ νν λΉμ
1. κ±΄μΆ μ€κ³λμ 건물
- ν΄λμ€: κ±΄μΆ μ€κ³λμ λΉμ ν μ μλ€. μ€κ³λλ 건물μ ꡬ쑰μ κΈ°λ₯μ μ μνμ§λ§, μ체λ‘λ 물리μ μΈ ννλ₯Ό κ°μ§μ§ μλλ€.
- κ°μ²΄: μ€κ³λλ₯Ό κΈ°λ°μΌλ‘ μ§μ΄μ§ κ±΄λ¬Όλ‘ λΉμ ν μ μλ€. κ° κ±΄λ¬Όμ μ€κ³λλ₯Ό κΈ°λ°μΌλ‘ λ§λ€μ΄μ§μ§λ§, μ€μ λ‘λ λ 립μ μΈ μ€μ²΄λ‘ μ‘΄μ¬νλ€.
2. μΏ ν€ νκ³Ό μΏ ν€
- ν΄λμ€: μΏ ν€λ₯Ό λ§λ€κΈ° μν μΏ ν€ νκ³Ό κ°λ€. μΏ ν€ νμ μΏ ν€μ λͺ¨μμ κ²°μ νμ§λ§, νμ΄ μ€μ μΏ ν€κ° λλ κ²μ μλλ€.
- κ°μ²΄: μΏ ν€ νμ μ¬μ©νμ¬ λ§λ€μ΄μ§ κ°κ°μ μΏ ν€λ€. μΏ ν€λ€μ λͺ¨λ κ°μ λͺ¨μμ κ°μ§μ§λ§, κ°λ³μ μΌλ‘ μ‘΄μ¬νλ€.