Introduction
ูู ุงูู
ูุงู ุฏูุ ููุชููู
ุนู ุงูู Abstraction ูู C# ุจุฃู
ุซูุฉ ู
ู ุงููุงูุน. ูุง ุฑูุช ุชูุฑุง ู
ูุงููุง ุงููู ูุงุช ูุจู ู
ุง ุชูู
ู ููุงุ ูุงููู ุงุชููู
ูุง ููู ุนู ุงูู Encapsulation ูู C# ุจุงูุฃู
ุซูุฉ.
ุงูู Abstraction ูู C# ูู ูุงุญุฏ ู
ู ุงูู
ุจุงุฏุฆ ุงูุฃุณุงุณูุฉ ูู ุงูู OOP ูุงููู ุจูุดุชุบู ูู
ุจุฏุฃ ุฏุงุนู
. ุฏู ู
ุนูุงู ุฅู ู
ุจุฏุฃ ุงูู Abstraction ูู C# ุจูุถู
ู ุฅู ุงูู
ุจุงุฏุฆ ุงูุชูุงุชุฉ ุงูุชุงููุฉ (Encapsulation, Polymorphism, Inheritance) ูุดุชุบููุง ู
ุน ุจุนุถ ุนุดุงู ูุฏูุง ุงูุดูู ุงูููุงุฆู ููู
ุดุฑูุน.
What is Abstraction in C#?
ุนู
ููุฉ ุนุฑุถ ุงูุฎุตุงุฆุต ุงูุฃุณุงุณูุฉ ู
ู ุบูุฑ ู
ุง ูุฏุฎู ูู ุชูุงุตูู ุงูุฎูููุฉ ุจุชุชุณู
ู Abstraction. ุจููู
ุงุช ุฃุจุณุทุ ููุฏุฑ ูููู ุฅููุง ุนู
ููุฉ ุชุนุฑูู class ุจุฅููุง ุจูููุฑ ุงูุชูุงุตูู ุงูุถุฑูุฑูุฉ ุจุณ ุนุดุงู ูุณุชุฏุนู ุนู
ููุงุช ุงูู object (ูุนูู ุงูู methods)ุ ู
ุน ุฅุฎูุงุก ุชูุงุตูู ุงูุชูููุฐ (implementation) ุจุชุงุนุชูุง.
ุฏู ู ุนูุงู ุฅููุง ู ุญุชุงุฌูู ูุธูุฑ ุงูุญุงุฌุงุช ุงูุถุฑูุฑูุฉ ูุงูุฅูุฒุงู ูุฉ ุจุณุ ููุฎูู ุงูุญุงุฌุงุช ุบูุฑ ุงูุถุฑูุฑูุฉ ุนู ุงูุนุงูู ุงูุฎุงุฑุฌู.
ุจุฑู
ุฌููุงุ ููุฏุฑ ูุนุฑูู ุงูู abstraction ุนูู ุฅูู ุนู
ููุฉ ุฅุฎูุงุก ุชูุงุตูู ุงูุชูููุฐ (implementation details) ูุฎุตุงุฆุต ุงูู objectุ ูุฅุธูุงุฑ ุงูู
ุนููู
ุงุช ุงูุฃุณุงุณูุฉ ุจุณ ุนู ุงูุฎุงุตูุฉ ุฏู ููู
ุณุชุฎุฏู
.
ุงูู Abstraction ุจูุฎููู ุชุฑูุฒ ุฃูุชุฑ ุนูู ุฅูู ุงููู ุงูู object ุจูุนู
ููุ ู
ุด ุฅุฒุงู ุจูุนู
ูู. ูุนูู ุฅูู ูู ุงูุฎุฏู
ุงุช ุงูู
ุชุงุญุฉ ูุฌุฒุก ู
ู ุงูู class ุงููู ู
ุญุชุงุฌูู ูุธูุฑูุงุ ููู ุฅุฒุงู ุงูุฎุฏู
ุงุช ุฏู ุจุชุชููุฐุ ุฏู ุงููู ู
ุญุชุงุฌูู ูุฎููู.
ุฏูููุชูุ ุฎูููุง ูุญุงูู ูููู
ู
ุจุฏุฃ ุงูู abstraction ุจุจุนุถ ุงูุฃู
ุซูุฉ ุงููุงูุนูุฉ.
Real-Time Example of Abstraction
-
ุชุณุฌูู ุงูุฏุฎูู ูู ู ูุงูุน ุงูุชูุงุตู ุงูุงุฌุชู ุงุนู: ูู ุง ุจูุนู ู
loginูู ุฃู ู ููุน ุฒูFacebook,Twitter,LinkedInุ ุจูุฏุฎู ุงููuser IDูุงููpasswordุ ูุจุนุฏูู ุจูุญุตูlogin. ููุงุ ุฅุญูุง ู ูุนุฑูุด ุฅุฒุงู ุจูุนุงูุฌูุง ุงูุจูุงูุงุช ุฃู ุฅูู ุงูู ูุทู (logic) ุฃู ุงูุฎูุงุฑุฒู ูุฉ (algorithm) ุงููู ุจูุณุชุฎุฏู ููุง ุนุดุงู ุนู ููุฉ ุงููlogin. ุงูู ุนููู ุงุช ุฏู ู ุฎููุฉ (abstracted/hidden) ุนููุง ูุฅููุง ู ุด ุฃุณุงุณูุฉ ุจุงููุณุจุฉ ููุง. ุฏู ูู ุงููabstractionุจุจุณุงุทุฉ. -
ู ุงูููุฉ ุงูู ATM: ูููุง ุจูุณุชุฎุฏู ู ุงูููุงุช ุงูู
ATMุนุดุงู ูุณุญุจ ูููุณุ ุฃู ูุญูู ูููุณุ ุฃู ูุฌูุจ ูุดู ุญุณุงุจ ู ุตุบุฑุ ุฅูุฎ. ููู ุฅุญูุง ู ูุนุฑูุด ุฅูู ุงููู ุจูุญุตู ุฌูู ู ุงูููุฉ ุงููATMูู ุง ุจูุฏุฎู ุงููุงุฑุช ุนุดุงู ูุนู ู ุนู ููุงุช ู ุฎุชููุฉ. ู ุนููู ุงุช ุฒู ู ูุงู ุงูุณูุฑูุฑุ ู ูุงู ุณูุฑูุฑ ูุงุนุฏุฉ ุงูุจูุงูุงุชุ ูุบุฉ ุงูุจุฑู ุฌุฉ ุงููู ุงุณุชุฎุฏู ููุงุ ุฅุฒุงู ุจูุชุญูููุง ู ู ุตุญุฉ ุงูุจูุงูุงุชุ ุฅุฒุงู ุจูููุฐูุง ุงูู ูุทู ุจุชุงุน ุงูุนู ููุงุช ุงูู ุฎุชููุฉุ ูุฅูู ูู ุฌู ู ุงููSQLุงููู ุจุชุชููุฐ ุนูู ูุงุนุฏุฉ ุงูุจูุงูุงุชุ ูู ุงูุญุงุฌุงุช ุฏู ู ุฎููุฉ ุนููุง. ุงููู ุจููุฏู ูู ูุฌุฒุก ู ู ู ุงูููุฉ ุงููATMูู ุงูุฎุฏู ุงุช (ุณุญุจุ ุชุญูููุ ุฅูุฎ)ุ ููู ุฅุฒุงู ุงูุฎุฏู ุงุช ุฏู ุจุชุชููุฐุ ุฏู ู ุนู ูููabstractionุจุงููุณุจุฉ ููุง. -
ุฑูู ูุช ุงูุชูููุฒููู: ุงูุฑูู ูุช ููู ูุธุงุฆู ู ุฎุชููุฉ ุฒู ุงูุชุดุบูู/ุงูุฅููุงูุ ุชุบููุฑ ุงูููุงุฉุ ุชุนููุฉ/ุชูุทูุฉ ุงูุตูุชุ ุฅูุฎ. ุฃูุช ุจุชุณุชุฎุฏู ุงููุธุงุฆู ุฏู ุจู ุฌุฑุฏ ุงูุถุบุท ุนูู ุงูุฒุฑุงุฑ. ูููุ ุงูุขููุฉ ุงูุฏุงุฎููุฉ ูููุธุงุฆู ุฏู ู ุนู ูููุง
abstractionุนููุง ูุฅููุง ู ุด ุฃุณุงุณูุฉ ูููุง ุฅููุง ูุนุฑููุง. -
ุฅุฑุณุงู ุฑุณุงูุฉ SMS: ูู ุง ุจุชุจุนุช ุฑุณุงูุฉ
SMSู ู ู ูุจุงูููุ ุฃูุช ุจุณ ุจุชูุชุจ ุงููุต ูุจุชุจุนุช ุงูุฑุณุงูุฉ. ููู ุฃูุช ู ุชุนุฑูุด ุงูู ุนุงูุฌุฉ ุงูุฏุงุฎููุฉ ุฃู ุขููุฉ ูุธุงู ุชูุตูู ุงูุฑุณุงูุฉ. ุฏู ุจุจุณุงุทุฉ ูู ุงููabstraction.
ุฅุฐูุงุ ุจููู
ุงุช ุฃุจุณุทุ ููุฏุฑ ูููู ุฅู ุงูู abstraction ู
ุนูุงู ุชูููุฑ ุงูุชูุงุตูู ุงูุถุฑูุฑูุฉ ูุงุณุชุฎุฏุงู
ุงูุฎุฏู
ุงุช ุฃู ุงููุธุงุฆูุ ููู ุฅุฒุงู ุงูุฎุฏู
ุงุช ุฏู ุจุชุชููุฐ ุฏุงุฎูููุงุ ุฏู ุงููู ูุงุฒู
ุชุฎููู.
Example to Understand Abstraction Principle in C#
ุฏูููุชูุ ููุนู
ู application ุนุดุงู ูููุฐ ูุธุงุฆู ุจูููุฉ. ุงูุฃููุ ููุนู
ู ุงูู application ู
ู ุบูุฑ ู
ุง ูุชุจุน ู
ุจุฏุฃ ุงูู Abstractionุ ูุจุนุฏูู ููููู
ุงูู
ุดุงูู. ุจุนุฏ ูุฏูุ ููุดูู ุฅูู ูู ุงูุขููุงุช ุงูู
ุฎุชููุฉ ูุชุทุจูู ู
ุจุฏุฃ ุงูู abstraction ูู C#.
ุงููู ููุนู
ูู ูู ุฅููุง ูููุดุฆ ุงุชููู classes. ูุงุญุฏ ูุจูู SBI ูุงูุชุงูู ูุจูู AXIX. ูู ูู classุ ููููุฑ 5 ุฎุฏู
ุงุชุ ููู ูุงูุชุงูู:
ValidateCardWithdrawMoneyCheckBalanaceBankTransferMiniStatement
ุจุนุฏููุ ู
ู ุงูู Main methodุ ููุนู
ู instances ู
ู ูู class ูููุณุชุฏุนู ุงูุฎุฏู
ุงุช ุจุชุงุนุชูู
. ููุงุ ู
ู
ูู ุชุนุชุจุฑ ุงูู Main method ูู ุงูููุฒุฑ ุงููู ููุณุชุฎุฏู
ุงูุฎุฏู
ุงุช ุงููู ุจุชูุฏู
ูุง ุงูู Bank classes.
using System;
namespace GarbageCollectionDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Transaction doing SBI Bank");
SBI sbi = new SBI();
sbi.ValidateCard();
sbi.WithdrawMoney();
sbi.CheckBalanace();
sbi.BankTransfer();
sbi.MiniStatement();
Console.WriteLine("\nTransaction doing AXIX Bank");
AXIX AXIX = new AXIX();
AXIX.ValidateCard();
AXIX.WithdrawMoney();
AXIX.CheckBalanace();
AXIX.BankTransfer();
AXIX.MiniStatement();
Console.Read();
}
}
public class SBI
{
public void BankTransfer()
{
Console.WriteLine("SBI Bank Bank Transfer");
}
public void CheckBalanace()
{
Console.WriteLine("SBI Bank Check Balanace");
}
public void MiniStatement()
{
Console.WriteLine("SBI Bank Mini Statement");
}
public void ValidateCard()
{
Console.WriteLine("SBI Bank Validate Card");
}
public void WithdrawMoney()
{
Console.WriteLine("SBI Bank Withdraw Money");
}
}
public class AXIX
{
public void BankTransfer()
{
Console.WriteLine("AXIX Bank Bank Transfer");
}
public void CheckBalanace()
{
Console.WriteLine("AXIX Bank Check Balanace");
}
public void MiniStatement()
{
Console.WriteLine("AXIX Bank Mini Statement");
}
public void ValidateCard()
{
Console.WriteLine("AXIX Bank Validate Card");
}
public void WithdrawMoney()
{
Console.WriteLine("AXIX Bank Withdraw Money");
}
}
}ุงูู Output ุจูุทูุน ุฒู ู
ุง ูู ู
ุชููุน. ุทูุจุ ุฅูู ุงูู
ุดููุฉ ูู ุงูุชูููุฐ ุงููู ูุงุช ุฏูุ
ุงูู
ุดููุฉ ูู ุฅู ู
ุณุชุฎุฏู
ุงูุชุทุจูู ุจุชุงุนูุง ุจููุตู ููู SBI ู AXIX classes ุจุดูู ู
ุจุงุดุฑ. โุจุดูู ู
ุจุงุดุฑโ ู
ุนูุงู ุฅููู
ููุฏุฑูุง ูุฑูุญูุง ูุชุนุฑูู ุงูู class ููุดูููุง ุชูุงุตูู ุชูููุฐ ุงูู methods. ูุนููุ ุงูููุฒุฑ ููุนุฑู ุฅุฒุงู ุงูุฎุฏู
ุงุช ุฃู ุงูู methods ุฏู ุจุชุชููุฐ. ุฏู ู
ู
ูู ูุณุจุจ ู
ุดุงูู ุฃู
ููุฉ. ุงูู
ูุฑูุถ ู
ูุธูุฑุด ุชูุงุตูู ุงูุชูููุฐ ุจุชุงุนุชูุง ููุนุงูู
ุงูุฎุงุฑุฌู.
How to Implement Abstraction Principle in C#?
ูู C#ุ ููุฏุฑ ูุทุจู ู
ุจุฏุฃ ุงูู abstraction ูู ุงูู OOPs ุจุทุฑููุชูู:
- ุจุงุณุชุฎุฏุงู
Interface. - ุจุงุณุชุฎุฏุงู
Abstract ClassesูAbstract Methods.
ุฅูู ูู ุงูู Interfacesุ ูุฅูู ูู ุงูู Abstract Methods ูุงูู Abstract Classesุ ุฏู ูููุงูุดู ุจุงูุชูุตูู ูู ู
ูุงูุงุช ุฌุงูุฉ. ููู ุฏูููุชูุ ุฃูุช ุจุณ ู
ุญุชุงุฌ ุชููู
ุญุงุฌุฉ ูุงุญุฏุฉ: ุฅู ุงูู interface ูุงูู abstract classes/methods ุงูุงุชููู ุจูููุฑูุง ุขููุฉ ูุฅุฎูุงุก ุชูุงุตูู ุงูุชูููุฐ ุนู ุทุฑูู ุฅููู
ุจูุธูุฑูุง ุงูุฎุฏู
ุงุช ุจุณ.
ุงูููุฒุฑ ููุนุฑู ุจุณ ุฅูู ูู ุงูุฎุฏู
ุงุช ุฃู ุงูู methods ุงูู
ุชุงุญุฉุ ูููู ู
ุด ููุนุฑู ุฅุฒุงู ุงูุฎุฏู
ุงุช ุฃู ุงูู methods ุฏู ุจุชุชููุฐ. ุฎูููุง ูุดูู ุฏู ุจุงูุฃู
ุซูุฉ.
Example to Implement Abstraction Principle in C# using Interface
ูู ุงูู
ุซุงู ุงููู ุฌุงูุ ุฃูุง ุจุณุชุฎุฏู
interface ุนุดุงู ุฃุญูู ู
ุจุฏุฃ ุงูู abstraction. ุจุงุณุชุฎุฏุงู
ุงูู interfaceุ ููุฏุฑ ูุญูู 100% abstraction.
ุฏูููุชูุ ุงูููุฒุฑ ููุนุฑู ุจุณ ุงูุฎุฏู
ุงุช ุงููู ู
ุชุนุฑูุฉ ูู ุงูู interfaceุ ููู ุฅุฒุงู ุงูุฎุฏู
ุงุช ุฏู ุจุชุชููุฐุ ุงูููุฒุฑ ุนู
ุฑู ู
ุง ููุนุฑู. ูุฏู ุจููุฏุฑ ูุทุจู ุงูู abstraction ูู C# ุนู ุทุฑูู ุฅุฎูุงุก ุชูุงุตูู ุงูุชูููุฐ ุนู ุงูููุฒุฑ. ููุงุ ุงูููุฒุฑ ููุนุฑู ุจุณ ุนู IBankุ ูููู ู
ุด ููุนุฑู ุนู ุงูู SBI ู AXIX Classes.
using System;
namespace GarbageCollectionDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Transaction doing SBI Bank");
// Get bank object from factory, user doesn't know about SBI class
IBank sbi = BankFactory.GetBankObject("SBI");
sbi.ValidateCard();
sbi.WithdrawMoney();
sbi.CheckBalanace();
sbi.BankTransfer();
sbi.MiniStatement();
Console.WriteLine("\nTransaction doing AXIX Bank");
// Get bank object from factory, user doesn't know about AXIX class
IBank AXIX = BankFactory.GetBankObject("AXIX");
AXIX.ValidateCard();
AXIX.WithdrawMoney();
AXIX.CheckBalanace();
AXIX.BankTransfer();
AXIX.MiniStatement();
Console.Read();
}
}
// This is the contract that the user knows about
public interface IBank
{
void ValidateCard();
void WithdrawMoney();
void CheckBalanace();
void BankTransfer();
void MiniStatement();
}
// This factory hides the creation logic
public class BankFactory
{
public static IBank GetBankObject(string bankType)
{
IBank BankObject = null;
if (bankType == "SBI")
{
BankObject = new SBI();
}
else if (bankType == "AXIX")
{
BankObject = new AXIX();
}
return BankObject;
}
}
// Implementation is hidden from the user
public class SBI : IBank
{
public void BankTransfer() { Console.WriteLine("SBI Bank Bank Transfer"); }
public void CheckBalanace() { Console.WriteLine("SBI Bank Check Balanace"); }
public void MiniStatement() { Console.WriteLine("SBI Bank Mini Statement"); }
public void ValidateCard() { Console.WriteLine("SBI Bank Validate Card"); }
public void WithdrawMoney() { Console.WriteLine("SBI Bank Withdraw Money"); }
}
// Implementation is hidden from the user
public class AXIX : IBank
{
public void BankTransfer() { Console.WriteLine("AXIX Bank Bank Transfer"); }
public void CheckBalanace() { Console.WriteLine("AXIX Bank Check Balanace"); }
public void MiniStatement() { Console.WriteLine("AXIX Bank Mini Statement"); }
public void ValidateCard() { Console.WriteLine("AXIX Bank Validate Card"); }
public void WithdrawMoney() { Console.WriteLine("AXIX Bank Withdraw Money"); }
}
}Example to Implement Abstraction Principle in C# using Abstract Class and Abstract Methods
ูู ุงูู
ุซุงู ุงููู ุฌุงูุ ุจูุณุชุฎุฏู
abstract class ู abstract methods ุนุดุงู ูุญูู ู
ุจุฏุฃ ุงูู abstraction. ููุฏุฑ ูุญูู ู
ู 0 ูู 100% abstraction ุจุงุณุชุฎุฏุงู
ุงูู abstract class ูุงูู abstract methods.
ูู ุงูู
ุซุงู ุฏูุ ุงูููุฒุฑ ููุนุฑู ุจุณ ุงูุฎุฏู
ุงุช ุงููู ู
ุชุนุฑูุฉ ูู ุงูู abstract classุ ููู ุฅุฒุงู ุงูุฎุฏู
ุงุช ุฏู ุจุชุชููุฐุ ุงูููุฒุฑ ุนู
ุฑู ู
ุง ููุนุฑู.
using System;
namespace GarbageCollectionDemo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Transaction doing SBI Bank");
IBank sbi = BankFactory.GetBankObject("SBI");
sbi.ValidateCard();
sbi.WithdrawMoney();
sbi.CheckBalanace();
sbi.BankTransfer();
sbi.MiniStatement();
Console.WriteLine("\nTransaction doing AXIX Bank");
IBank AXIX = BankFactory.GetBankObject("AXIX");
AXIX.ValidateCard();
AXIX.WithdrawMoney();
AXIX.CheckBalanace();
AXIX.BankTransfer();
AXIX.MiniStatement();
Console.Read();
}
}
// User only interacts with this abstract class
public abstract class IBank
{
public abstract void ValidateCard();
public abstract void WithdrawMoney();
public abstract void CheckBalanace();
public abstract void BankTransfer();
public abstract void MiniStatement();
}
public class BankFactory
{
public static IBank GetBankObject(string bankType)
{
IBank BankObject = null;
if (bankType == "SBI")
{
BankObject = new SBI();
}
else if (bankType == "AXIX")
{
BankObject = new AXIX();
}
return BankObject;
}
}
// Concrete implementation class
public class SBI : IBank
{
public override void BankTransfer() { Console.WriteLine("SBI Bank Bank Transfer"); }
public override void CheckBalanace() { Console.WriteLine("SBI Bank Check Balanace"); }
public override void MiniStatement() { Console.WriteLine("SBI Bank Mini Statement"); }
public override void ValidateCard() { Console.WriteLine("SBI Bank Validate Card"); }
public override void WithdrawMoney() { Console.WriteLine("SBI Bank Withdraw Money"); }
}
// Concrete implementation class
public class AXIX : IBank
{
public override void BankTransfer() { Console.WriteLine("AXIX Bank Bank Transfer"); }
public override void CheckBalanace() { Console.WriteLine("AXIX Bank Check Balanace"); }
public override void MiniStatement() { Console.WriteLine("AXIX Bank Mini Statement"); }
public override void ValidateCard() { Console.WriteLine("AXIX Bank Validate Card"); }
public override void WithdrawMoney() { Console.WriteLine("AXIX Bank Withdraw Money"); }
}
}ู
ูุงุญุธุฉ: ุจุงุณุชุฎุฏุงู
ุงูู abstract classุ ููุฏุฑ ูุญูู ู
ู 0 ูู 100% abstraction. ุงูุณุจุจ ูู ุฅูู ุชูุฏุฑ ุชููุฑ ุชูููุฐ (implementation) ููู methods ุฌูู ุงูู abstract class ููุณู. ู
ุด ู
ูู
ุฅุฐุง ููุช ูุชููุฐ ูู ุงูู methods ุฃู ููุง ูุงุญุฏุฉ ู
ููู
ุฌูู ุงูู abstract classุ ุฏู ู
ุณู
ูุญ ุจููุ ูุฏู ุงููู ู
ุด ู
ู
ูู ูู ุงูู interface.
Encapsulation vs Abstraction in C#
- ุงูู
Encapsulationููู ุนู ุงููdata hiding(ุฅุฎูุงุก ุงูุจูุงูุงุช). ู ู ูุงุญูุฉ ุชุงููุฉุ ุงููAbstractionููู ุนู ุงููdetailed hiding(ุฅุฎูุงุก ุงูุชูููุฐ). - ุจุงุณุชุฎุฏุงู
ู
ุจุฏุฃ ุงูู
Encapsulationุ ุจููุฏุฑ ูุญู ู ุจูุงูุงุชูุงุ ูุนูู ู ู ุจุฑู ุงููclassู ุญุฏุด ููุฏุฑ ููุตู ููุจูุงูุงุช ู ุจุงุดุฑุฉ. ุฅุญูุง ุจูุธูุฑ ุงูุจูุงูุงุช ุนู ุทุฑููpublicly exposed methods and properties. ุงูู ูุฒุฉ ูู ุฅููุง ููุฏุฑ ูุนู ูvalidateููุจูุงูุงุช ูุจู ุชุฎุฒูููุง ูุฅุฑุฌุงุนูุง. ู ู ูุงุญูุฉ ุชุงููุฉุ ุจุงุณุชุฎุฏุงู ู ุจุฏุฃ ุงููAbstractionุ ุฅุญูุง ุจูุธูุฑ ุงูุฎุฏู ุงุช ุจุณ ุนุดุงู ุงูููุฒุฑ ููุฏุฑ ูุณุชุฎุฏู ูุงุ ููู ุฅุฒุงู ุงูุฎุฏู ุงุช/ุงููmethodsุฏู ุจุชุชููุฐุ ุฏู ู ุฎูู ุนู ุงูููุฒุฑ. ุงูููุฒุฑ ุนู ุฑู ู ุง ููุนุฑู ุฅุฒุงู ุงููmethodุจูุชููุฐ. - ู
ุน ุงูู
Encapsulationุ ุจูุฌู ุน ุงููdata membersูุงููmember functionsูู ูุญุฏุฉ ูุงุญุฏุฉ ุงุณู ูุงclass,interface,enumุ ุฅูุฎ. ู ู ูุงุญูุฉ ุชุงููุฉุ ู ุน ุงููAbstractionุ ุฅุญูุง ุจูุธูุฑ ุงููinterfaceุฃู ุงููabstract classููููุฒุฑ ูุจูุฎูู ุชูุงุตูู ุงูุชูููุฐุ ูุนูู ุจูุฎูู ู ุนููู ุงุช ุงููchild class. - ููุฏุฑ ูุทุจู ุงูู
Encapsulationุจุฅููุง ูุนุฑูู ุงููdata membersููprivateููุธูุฑูู ุจุณ ุนู ุทุฑููpublicly exposed methods and propertiesู ุนvalidationู ูุงุณุจ. ู ู ูุงุญูุฉ ุชุงููุฉุ ููุฏุฑ ูุทุจู ุงููAbstractionุนู ุทุฑูู ุงููabstract classesูุงููinterfaces. - ูู ุงูู
Abstractionุ ุจูุชู ุนุฑุถ ุฑุคูุฉ ู ุฌุฑุฏุฉ ุจุณ ููููุฒุฑุ ุจููู ุง ุงูุจูุงูุงุช ุงูู ุนูุฏุฉ ูุงูุชูุตูููุฉ ุจุชูุถู ู ุฎููุฉ ุนูู. ู ู ูุงุญูุฉ ุชุงููุฉุ ูู ุงููEncapsulationุ ุงููdata memberูุงููmember functionsุจูุชู ุชุฌู ูุนูู ููุญุฏุฉ ูุงุญุฏุฉ ูู ู ูู ุญู ุงูุชูู ุฃู ุฅุชุงุญุชูู ุจุงุณุชุฎุฏุงู ุงููaccess modifiersูุงููgetter/setter methods. - ุงูู
AbstractionููC#ุจููุณุชุฎุฏู ูุฅุฎูุงุก ุงูุจูุงูุงุช ุบูุฑ ุงูู ุฑุบูุจ ูููุง ูุฅุธูุงุฑ ุงููpropertiesูุงููmethodsุงูู ุทููุจุฉ ุจุณ ููููุฒุฑ. ุงููEncapsulationููC#ุจููุณุชุฎุฏู ูุฑุจุท ุงููdata membersูุงููmember functionsูู ูุญุฏุฉ ูุงุญุฏุฉ ุนุดุงู ูู ูุน ุงูุบุฑุจุงุก ู ู ุงููุตูู ูููุง ู ุจุงุดุฑุฉ.
Advantages of Abstraction Principle in C#
- ู
ุจุฏุฃ ุงูู
Abstractionุจูููู ู ู ุชุนููุฏ ุฑุคูุฉ ุงูุฃุดูุงุก. ูู ุจูููุฑ ุจุณ ุงููmethod signatureูุจูุฎูู ุฅุฒุงู ุงููmethodุจูุชููุฐ ูุนููุง. - ู
ุจุฏุฃ ุงูู
Abstractionุจูุณุงุนุฏ ุนูู ุฒูุงุฏุฉ ุฃู ุงู ุงูุชุทุจูู ุฃู ุงูุจุฑูุงู ุฌ ูุฅููุง ุจูููุฑ ุจุณ ุงูุชูุงุตูู ุงูุถุฑูุฑูุฉ ูุงุณุชุฏุนุงุก ุงููmethodู ุน ุฅุฎูุงุก ููููุฉ ุชูููุฐ ุงููmethodsุฏู ูุนููุง. - ู
ุน ู
ุจุฏุฃ ุงูู
Abstractionุ ุงูุชุญุณููุงุช (enhancement) ุจุชุจูู ุณููุฉ ุฌุฏูุง ูุฅููุง ุจููุฏุฑ ูุนู ู ุฃู ููุน ู ู ุงูุชุบููุฑุงุช ูู ูุธุงู ูุง ุงูุฏุงุฎูู ู ู ุบูุฑ ู ุง ูุฃุซุฑ ุนูู ุงูู ุณุชุฎุฏู ูู ุงูููุงุฆููู. - ู
ู ุบูุฑ ู
ุจุฏุฃ ุงูู
Abstractionุ ุตูุงูุฉ ููุฏ ุงูุชุทุจูู ุจุชุจูู ู ุนูุฏุฉ ุฌุฏูุง. ุงููAbstractionุจูุฏู ูููู (structure) ูููุฏ ุงูุจุฑูุงู ุฌ.