λ°μν
π oop > Car.java
π oop > CarApp.java
1. μλμ°¨λ₯Ό κ°μ²΄ λͺ¨λΈλ§νμ¬ μμ±λ ν΄λμ€ (Car.java)
package A_oop;
//μμ±: λͺ¨λΈλͺ
, μμ§μν, νμ¬μλ - νλ
//νμ: μλ μ¨(On), μλ μ€ν(Off), μλ μ¦κ°, μλ κ°μ, μ΄λ μ€μ§ - λ©μλ
public class Car {
//νλ(Field) : ν΄λμ€μ μ μΈλ λͺ¨λ λ©μλλ νλ μ¬μ© κ°λ₯
private String modelName;//λͺ¨λΈλͺ
private boolean engineStatus;//μμ§μν - false : Off, true : On
private int currentSpeed;//νμ¬μλ
//μμ±μ(Constructor) : μμ±μ μ μΈμ μλ΅νλ©΄ 맀κ°λ³μκ° μλ κΈ°λ³Έ μμ±μ(Default Constructor)κ° μ‘΄μ¬νλ κ²μΌλ‘ μ²λ¦¬
//λ©μλ : νλλ₯Ό μ΄μ©νμ¬ λͺ
λ Ήλ€λ‘ νμν κΈ°λ₯μ μ 곡
- startEngine() - void
public void startEngine() {//μλ μ¨(On)
engineStatus=true;
System.out.println(modelName+"μ μλμ μΌ°μ΅λλ€.");
}
- stopEngine() - void
public void stopEngine() {//μλ μ€ν(Off)
if(currentSpeed!=0) {//μλμ°¨κ° λ©μ·μμ§ μμ κ²½μ°
//currentSpeed=0;
//System.out.println(modelName+"μ μλμ°¨κ° λ©μ·μ΅λλ€.");
//ν΄λμ€μ μ μΈλ λ©μλλ₯Ό μλ‘ νΈμΆ κ°λ₯ - μ½λμ μ€λ³΅μ± μ΅μν : νλ‘κ·Έλ¨μ μμ°μ± λ° μ μ§λ³΄μμ ν¨μ¨μ± μ¦κ°
speedZero();
}
engineStatus=false;
System.out.println(modelName+"μ μλμ κ»μ΅λλ€.");
}
- speedUp(int speed) - void
public void speedUp(int speed) {//μλ μ¦κ°
if(!engineStatus) {//μλμ΄ κΊΌμ Έ μλ κ²½μ°
System.out.println(modelName+"μ μλμ΄ κΊΌμ Έ μμ΅λλ€.");
return;//λ©μλ μ’
λ£
}
if(currentSpeed+speed>150) {//νμ¬μλμ μ¦κ°λ μλμ ν©μ΄ μ΅κ³ μλλ³΄λ€ ν° κ²½μ°
speed=150-currentSpeed;//μ¦κ°λ μλ λ³κ²½
}
currentSpeed+=speed;
System.out.println(modelName+"μ μλκ° "+speed+"Km/h μ¦κ° λμμ΅λλ€. νμ¬ μλλ "
+currentSpeed+"Km/hμ
λλ€.");
}
- speedDown(int speed) - void
public void speedDown(int speed) {//μλ κ°μ
if(!engineStatus) {//μλμ΄ κΊΌμ Έ μλ κ²½μ°
System.out.println(modelName+"μ μλμ΄ κΊΌμ Έ μμ΅λλ€.");
return;//λ©μλ μ’
λ£
}
if(currentSpeed<speed) {//νμ¬μλλ³΄λ€ κ°μλ μλκ° ν° κ²½μ°
speed=currentSpeed;//κ°μλ μλ λ³κ²½
}
currentSpeed-=speed;
System.out.println(modelName+"μ μλκ° "+speed+"Km/h κ°μ λμμ΅λλ€. νμ¬ μλλ "
+currentSpeed+"Km/hμ
λλ€.");
}
- speedZero() - void
public void speedZero() {
currentSpeed=0;
System.out.println(modelName+"μ μλμ°¨κ° λ©μ·μ΅λλ€.");
}
- Getter & Setter λ©μλ
//μλν μ²λ¦¬λ νλλ₯Ό μν΄ νλκ°μ λ°ννλ Getter λ©μλμ νλκ°μ λ³κ²½νλ Setter λ©μλ μ μΈ - μΊ‘μν
//μΊ‘μν(Encapsulation) : ννλμμ μμ±(νλ)μ νμ(λ©μλ)λ₯Ό λ¬Άμ΄ ν΄λμ€λ‘ μ μΈ
// => νλλ₯Ό μλν μ²λ¦¬νμ¬ λ³΄νΈνμ¬ μ¬μ©λλλ‘ μ€μ νλ μμ
//Getter λ©μλ : ν΄λμ€ μΈλΆμμ νλκ°μ μ¬μ©ν μ μλλ‘ λ°ννλ λ©μλ
// => μλν μ μΈλ νλμ μλ£νμ΄ booleanμΈ κ²½μ° get λμ isλ₯Ό μ¬μ©νμ¬ λ©μλ μμ±
//νμ)public λ°νν getνλλͺ
() { return νλλͺ
; }
public String getModelName() {
return modelName;
}
//Setter λ©μλ : 맀κ°λ³μλ‘ κ°μ μ λ¬λ°μ νλκ°μ λ³κ²½νλ λ©μλ
//νμ)public void setνλλͺ
(μλ£ν 맀κ°λ³μ) { νλλͺ
=맀κ°λ³μ; }
// => 맀κ°λ³μμ μ λ¬λμ΄ μ μ₯λ κ°μ λν κ²μ¦ κ°λ₯
public void setModelName(String modelName) {
//this : λ©μλ λ΄λΆμμ ν΄λμ€μ κ°μ²΄λ₯Ό νννλ ν€μλ
// => this ν€μλλ₯Ό μ¬μ©νμ¬ νλ νν
this.modelName=modelName;
}
//μ΄ν΄λ¦½μ€λ μλν μ μΈλ νλμ Getterμ Setter λ©μλλ₯Ό μμ±νλ κΈ°λ₯ μ 곡
//[Alt]+[Shift]+[S] >> νμ
λ©λ΄ >> [R] >> νλ μ ν >> Generate
public boolean isEngineStatus() {
return engineStatus;
}
public void setEngineStatus(boolean engineStatus) {
this.engineStatus = engineStatus;
}
public int getCurrentSpeed() {
return currentSpeed;
}
public void setCurrentSpeed(int currentSpeed) {
this.currentSpeed = currentSpeed;
}
}
2. Car ν΄λμ€λ₯Ό μ¬μ©νμ¬ μμ±λ νλ‘κ·Έλ¨(CarApp.java)
package A_oop;
public class CarApp {
public static void main(String[] args) {
- κ°μ²΄ μμ±
//Car ν΄λμ€λ‘ κ°μ²΄λ₯Ό μμ±νμ¬ μ°Έμ‘°λ³μμ μ μ₯
//=> νλμ ν΄λμ€λ‘ μλ‘ λ€λ₯Έ κ°μ²΄λ₯Ό μ¬λ¬κ° μμ± κ°λ₯
//=> κ°μ²΄λ₯Ό μμ±νλ©΄ κ°μ²΄μ νλμλ κΈ°λ³Έκ° (μ«μν:0,λ
Όλ¦¬ν:false,μ°Έμ‘°ν:null)μ΄ μλ μ μ₯
Car carOne=new Car(); //κΈ°λ³Έμμ±μλ‘ κ°μ²΄μμ±
Car carTwo=new Car();
//μ°Έμ‘°λ³μμ μ μ₯λ κ°μ²΄λ₯Ό λ€λ₯Έ μ°Έμ‘°λ³μμ μ μ₯ κ°λ₯
//=>[carThreeμ°Έμ‘°λ³μ μμ μ μ₯λ λ©λͺ¨λ¦¬λ²μ§]λ [carTwoμ°Έμ‘°λ³μ μμ μ μ₯λ λ©λͺ¨λ¦¬λ²μ§]μ κ°λ€.
//=>μ¦, κ°μ κ°μ²΄λ₯Ό κ°λ¦¬ν€λ μ€ <carThree>μ°Έμ‘°λ³μλ <carTwo>κ°λ¦¬ν΄
Car carThree=carTwo;
- μ°Έμ‘°λ²μ§ νμΈ
System.out.println("carOne = "+carOne); //carOne =oop.Car@73a28541
System.out.println("carTwo = "+carTwo); //carTwo =oop.Car@5aaa6d82
System.out.println("carThree = "+carThree); //carTwo =oop.Car@5aaa6d82
- νλκ° λ³κ²½ - Setter λ©μλ
//μ°Έμ‘°λ³μ.νλ : μ°Έμ‘°λ³μμ μ μ₯λ κ°μ²΄λ‘ νλμ μ κ·Όνμ¬ μ¬μ©
//λ¬Έμ μ )κ°μ²΄λ₯Ό μ¬μ©νμ¬ νλμ μ§μ μ κ·Όνμ¬ νλκ°μ λ³κ²½ν κ²½μ° λΉμ μμ μΈ κ° μ μ₯ κ°λ₯
//ν΄κ²°λ²)ν΄λμ€ μ μΈμ νλλ₯Ό μλν μ²λ¦¬νμ¬ μ μΈ μλν μ μΈλ νλμ μ§μ μ κ·Όν κ²½μ° μλ¬ λ°μ
//νλκ°μ μ§μ λ³κ²½νμ§ λͺ»νλ―λ‘ νλκ°μ λ³κ²½νλ Setter λ©μλ νΈμΆνμ¬ νλκ° λ³κ²½
//carOne.modelName="ν°μ½";//νλκ° λ³κ²½
carOne.setModelName("ν°μ½");
//carOne.engineStatus=true;
carOne.setEngineStatus(true);
//carOne.currentSpeed=100;
carOne.setCurrentSpeed(100);
- νλκ° μΆλ ₯ - Getter λ©μλ
//νλκ°μ μ§μ μ¬μ©νμ§ λͺ»νλ―λ‘ νλκ°μ λ°ννλ Getter λ©μλ νΈμΆνμ¬ νλκ°μ λ°νλ°μ μΆλ ₯
//System.out.println("첫λ²μ§Έ μλμ°¨μ λͺ¨λΈλͺ
= "+carOne.modelName);
System.out.println("첫λ²μ§Έ μλμ°¨μ λͺ¨λΈλͺ
= "+carOne.getModelName());//첫λ²μ§Έ μλμ°¨μ λͺ¨λΈλͺ
= ν°μ½
//System.out.println("첫λ²μ§Έ μλμ°¨μ μμ§μν = "+carOne.engineStatus);
System.out.println("첫λ²μ§Έ μλμ°¨μ μμ§μν = "+carOne.isEngineStatus()); //첫λ²μ§Έ μλμ°¨μ μμ§μν = true
//System.out.println("첫λ²μ§Έ μλμ°¨μ νμ¬μλ = "+carOne.currentSpeed);
System.out.println("첫λ²μ§Έ μλμ°¨μ νμ¬μλ = "+carOne.getCurrentSpeed()); //첫λ²μ§Έ μλμ°¨μ νμ¬μλ = 100
- νλκ° λ³κ²½ ν νλκ° μΆλ ₯
//carTwo.modelName="μΌνν";
carTwo.setModelName("μΌνν");
//System.out.println("λλ²μ§Έ μλμ°¨μ λͺ¨λΈλͺ
= "+carTwo.modelName);
System.out.println("λλ²μ§Έ μλμ°¨μ λͺ¨λΈλͺ
= "+carTwo.getModelName()); //λλ²μ§Έ μλμ°¨μ λͺ¨λΈλͺ
= μΌνν
//System.out.println("λλ²μ§Έ μλμ°¨μ μμ§μν = "+carTwo.engineStatus);
System.out.println("λλ²μ§Έ μλμ°¨μ μμ§μν = "+carTwo.isEngineStatus()); //λλ²μ§Έ μλμ°¨μ μμ§μν = false
//System.out.println("λλ²μ§Έ μλμ°¨μ νμ¬μλ = "+carTwo.currentSpeed);
System.out.println("λλ²μ§Έ μλμ°¨μ νμ¬μλ = "+carTwo.getCurrentSpeed()); //λλ²μ§Έ μλμ°¨μ νμ¬μλ = 0
- λ©μλ νΈμΆ
//μ°Έμ‘°λ³μ.λ©μλλͺ
(κ°,...) : μ°Έμ‘°λ³μμ μ μ₯λ κ°μ²΄λ₯Ό μ¬μ©νμ¬ λ©μλ νΈμΆ
carTwo.startEngine(); //μΌννμ μλμ μΌ°μ΅λλ€.
carTwo.speedUp(50); //μΌννμ μλκ° 50Km/h μ¦κ° λμμ΅λλ€. νμ¬ μλλ 50Km/hμ
λλ€.
carTwo.speedUp(30); //μΌννμ μλκ° 30Km/h μ¦κ° λμμ΅λλ€. νμ¬ μλλ 80Km/hμ
λλ€.
carTwo.speedDown(40); //μΌννμ μλκ° 40Km/h κ°μ λμμ΅λλ€. νμ¬ μλλ 40Km/hμ
λλ€.
carTwo.speedZero(); //μΌννμ μλμ°¨κ° λ©μ·μ΅λλ€.
carTwo.stopEngine(); //μΌννμ μλμ κ»μ΅λλ€.
}
}
λ°μν
'java > oop' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[oop] 6. this ν€μλμ κ°λ (0) | 2024.04.16 |
---|---|
[oop] 5. μμ±μ(Constructor)μ κ°λ (0) | 2024.04.15 |
[oop] 4. λ©μλ μ€λ²λ‘λ(Method Overload) (0) | 2024.04.15 |
[oop] 2. ν΄λμ€μ κ°μ²΄ (feat.μ κ·Όμ§μ μ(Access Modifier) μ€μ ) (0) | 2024.04.14 |
[oop] 1. oop(object oriented program)μ κΈ°μ΄ (0) | 2024.04.13 |