Skip to Content

🔷 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:

āĻĻāĻŋāĻ•InterfaceAbstract Class
Instantiate āĻ•āϰāĻž āϝāĻžā§Ÿ?āύāĻžāύāĻž
āϕ⧀ āĻĨāĻžāϕ⧇?āĻļ⧁āϧ⧁ āĻŽā§‡āĻĨāĻĄ āϏāĻŋāĻ—āύ⧇āϚāĻžāϰāĻŽā§‡āĻĨāĻĄ āϏāĻŋāĻ—āύ⧇āϚāĻžāϰ + āĻ•āĻŋāϛ⧁ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻŽā§‡āĻĨāĻĄ
āϕ⧀āĻ­āĻžāĻŦ⧇ implement āĻšā§Ÿ?implementsextends
Multiple useMultiple interfaces implement āĻ•āϰāĻž āϝāĻžā§ŸāĻāĻ•āϟāĻŋāχ extend āĻ•āϰāĻž āϝāĻžā§Ÿ

📌 āĻ•āĻ–āύ āϕ⧋āύāϟāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦā§‹?

  • ✅ āϕ⧇āĻŦāϞ structure āĻĻāϰāĻ•āĻžāϰ → Interface
  • ✅ āĻ•āĻŋāϛ⧁ common behavior āĻļā§‡ā§ŸāĻžāϰ āĻ•āϰāϤ⧇ āϚāĻžāχāϞ⧇ → Abstract Class
  • ✅ āĻŽā§‡āĻĨāĻĄā§‡āϰ āĻ­āĻŋāĻ¨ā§āύ āφāϚāϰāĻŖ āĻĻāϰāĻ•āĻžāϰ → Polymorphism

✅ āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻžāϰ āύāĻŋāϝāĻŧāĻŽ:

🎭 Abstraction = āĻĻāϰāĻ•āĻžāϰāĻŋ āĻ…āĻ‚āĻļ āĻĻ⧇āĻ–āĻžāĻ“, āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžā§Ÿāύ child āĻ•ā§āϞāĻžāϏ⧇ āĻĻāĻžāĻ“āĨ¤

đŸ“Ļ Interface structure āĻĻā§‡ā§Ÿ, abstract class structure + āĻ•āĻŋāϛ⧁ āĻ•āĻžāϜāĻ“ āĻĻā§‡ā§ŸāĨ¤

✅ Clean & maintainable architecture-āĻāϰ āϜāĻ¨ā§āϝ abstraction āĻ…āĻĒāϰāĻŋāĻšāĻžāĻ°ā§āϝāĨ¤


Last updated on