đˇ Abstraction (āĻ ā§āϝāĻžāĻŦāϏā§āĻā§āϰāĻžāĻāĻļāύ)
đ āϏāĻāĻā§āĻāĻž:
Abstraction āĻšāϞ⧠āĻāĻŽāύ āĻāĻāĻāĻŋ āϧāĻžāϰāĻŖāĻž āϝā§āĻāĻžāύ⧠āĻļā§āϧ⧠āĻĻāϰāĻāĻžāϰāĻŋ āĻ āĻāĻļ āĻĻā§āĻāĻžāύ⧠āĻšā§, āĻ āĻĒā§āϰā§ā§āĻāύā§ā§ āĻ āĻāĻļ āϞā§āĻāĻžāύ⧠āĻšā§āĨ¤ āĻāĻāĻŋ OOP-āĻāϰ āĻāĻāĻāĻŋ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϝāĻž āĻŦāĻžāϏā§āϤāĻŦāĻžā§āύāĻā§ āϏāĻšāĻ āĻ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻāϰ⧠āϤā§āϞā§āĨ¤
â āĻā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋ?
- āĻāĻāĻāĻžāϰāĻā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĻāϰāĻāĻžāϰāĻŋ āĻ āĻāĻļ āĻĻā§āĻāĻŋā§ā§ āĻāĻāĻŋāϞāϤāĻž āϞā§āĻāĻžāύā§āϰ āĻāύā§āϝāĨ¤
- āĻā§āĻĄā§āϰ structure āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻ maintainable āϰāĻžāĻāĻžāϰ āĻāύā§āϝāĨ¤
- āĻāĻāĻžāϧāĻŋāĻ āĻā§āϞāĻžāϏ⧠common behavior āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰ⧠consistency āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻžāϰ āĻāύā§āϝāĨ¤
⨠Interface āĻĻā§āĻŦāĻžāϰāĻž Abstraction:
interface Vehicle {
startEngine(): void;
stopEngine(): void;
move(): void;
}
class Car implements Vehicle {
startEngine(): void {
console.log("Car engine started");
}
stopEngine(): void {
console.log("Car engine stopped");
}
move(): void {
console.log("Car is moving");
}
}
const myCar = new Car();
myCar.startEngine();
myCar.move();
myCar.stopEngine();
đ āĻāĻāĻžāύ⧠Vehicle
āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻāĻ āύ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§āĻā§, āĻāĻŋāύā§āϤ⧠āĻŦāĻžāϏā§āϤāĻŦ āϰā§āĻĒ Car
āĻā§āϞāĻžāϏ⧠āĻĻā§āĻā§āĻž āĻšā§ā§āĻā§āĨ¤
⨠Abstract Class āĻĻā§āĻŦāĻžāϰāĻž Abstraction:
abstract class Machine {
abstract start(): void;
abstract stop(): void;
maintenance(): void {
console.log("Running maintenance...");
}
}
class Generator extends Machine {
start(): void {
console.log("Generator started");
}
stop(): void {
console.log("Generator stopped");
}
}
const gen = new Generator();
gen.start();
gen.maintenance();
gen.stop();
đ Machine
āĻā§āϞāĻžāϏ āĻļā§āϧ⧠āϰā§āĻĒāϰā§āĻāĻž āĻĻā§ā§, āĻŦāĻžāϏā§āϤāĻŦāĻžā§āύ āĻāϰāϤ⧠āĻšā§ āĻāĻžāĻāϞā§āĻĄ āĻā§āϞāĻžāϏā§āĨ¤ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ maintenance()
āĻāϰ āĻŽāϤ⧠āĻāĻŋāĻā§ āĻāĻŽāύ āĻĢāĻžāĻāĻļāύāĻ āĻļā§ā§āĻžāϰ āĻāϰāĻž āϝāĻžā§āĨ¤
đ Interface vs Abstract Class:
āĻĻāĻŋāĻ | Interface | Abstract Class |
---|---|---|
Instantiate āĻāϰāĻž āϝāĻžā§? | āύāĻž | āύāĻž |
āĻā§ āĻĨāĻžāĻā§? | āĻļā§āϧ⧠āĻŽā§āĻĨāĻĄ āϏāĻŋāĻāύā§āĻāĻžāϰ | āĻŽā§āĻĨāĻĄ āϏāĻŋāĻāύā§āĻāĻžāϰ + āĻāĻŋāĻā§ āĻŦāĻžāϏā§āϤāĻŦ āĻŽā§āĻĨāĻĄ |
āĻā§āĻāĻžāĻŦā§ implement āĻšā§? | implements | extends |
Multiple use | Multiple interfaces implement āĻāϰāĻž āϝāĻžā§ | āĻāĻāĻāĻŋāĻ extend āĻāϰāĻž āϝāĻžā§ |
đ āĻāĻāύ āĻā§āύāĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§?
- â āĻā§āĻŦāϞ structure āĻĻāϰāĻāĻžāϰ â Interface
- â āĻāĻŋāĻā§ common behavior āĻļā§ā§āĻžāϰ āĻāϰāϤ⧠āĻāĻžāĻāϞ⧠â Abstract Class
- â āĻŽā§āĻĨāĻĄā§āϰ āĻāĻŋāύā§āύ āĻāĻāϰāĻŖ āĻĻāϰāĻāĻžāϰ â Polymorphism
â āϏāĻāĻā§āώā§āĻĒā§ āĻŽāύ⧠āϰāĻžāĻāĻžāϰ āύāĻŋāϝāĻŧāĻŽ:
đ Abstraction = āĻĻāϰāĻāĻžāϰāĻŋ āĻ āĻāĻļ āĻĻā§āĻāĻžāĻ, āĻŦāĻžāϏā§āϤāĻŦāĻžā§āύ child āĻā§āϞāĻžāϏ⧠āĻĻāĻžāĻāĨ¤
đĻ Interface structure āĻĻā§ā§, abstract class structure + āĻāĻŋāĻā§ āĻāĻžāĻāĻ āĻĻā§ā§āĨ¤
â Clean & maintainable architecture-āĻāϰ āĻāύā§āϝ abstraction āĻ āĻĒāϰāĻŋāĻšāĻžāϰā§āϝāĨ¤