Introduction
ูู ุงูู
ูุงู ุฏูุ ููุชููู
ุนู ุงูู Generalization ูุงูู Specialization ูู C# ุจุงูุฃู
ุซูุฉ. ูุง ุฑูุช ุชูุฑุง ู
ูุงููุง ุงููู ูุงุช ุงููู ุงุชููู
ูุง ููู ุนู ุนูุงูุงุช ุงูู IS-A ูุงูู HAS-A ูู C# ุจุงูุฃู
ุซูุฉ. ุฏู ู
ูุถูุน ุดูู ุฌุฏูุง ููู ุงูู
ูุงุฑูุฉ ุจูู ุงูู generalization ูุงูู specialization. ุงูู
ูุถูุน ุฏู ู
ุฑุชุจุท ุจุงูู inheritance. ุฎูููุง ูููู
ุฅูู ุงูู
ูุตูุฏ ุจุงูู Generalization ูุงูู Specialization ูู C# ุจุงูุฃู
ุซูุฉ.
Specialization in C#
ุฎูููุง ูููู ุฅู ุนูุฏูุง class ุงุณู
ู Rectangle. ูู ููุฏุฑ ูุนู
ู object ู
ู ุงูู Rectangle classุ ุฃูููุ ููุฏุฑ ูุนู
ู objects ู
ู Rectangle ููุณุชุฏุนู ุงูู functions ุจุชุงุนุชู.
ุฏูููุชูุ ุนูุฏูุง class ุงุณู
ู Cuboid ุจููุฑุซ ู
ู Rectangle class.
ุจุงููุณุจุฉ ููู Cuboid class ุจุฑุถู ููุฏุฑ ูุนู
ู objects ููุณุชุฏุนู ุงูู functions ุจุชุงุนุชู ูุจุชุงุนุฉ Rectangle. ุงูุญุงุฌุชูู ุฏููุ Rectangle ู Cuboidุ ู
ูุฌูุฏูู ูุนููุง ูู ุงูุญูููุฉ.
ูู ุชูุฏุฑ ุชูุฑููู Rectangleุ ุฃูููุ ู
ู
ูู ุชูุฑููู ุฃุดูุงู ู
ุณุชุทููุฉ ุฃู ูุฑูุฉ ู
ุณุชุทููุฉ. ูุงูู rectangles ู
ูุฌูุฏุฉ ูู ุงูุญูููุฉ. ุทุจ ุจุงููุณุจุฉ ููู Cuboidุ ุฃูููุ ูู ูู
ุงู ู
ูุฌูุฏ ูู ุงูุญูููุฉ. ุฃู ุญุงุฌุฉ ุนูู ุดูู ุตูุฏูู ูู cuboid.
ูุงูุญุงุฌุชูู ุฏูู ู
ูุฌูุฏูู ูู ุงูุญูููุฉ. ุทูุจุ ูู ุณุฃูุชุ ู
ูู ูููู
ุงููู ูุงู ู
ูุฌูุฏ ุงูุฃูู ูู ู
ุซุงููุงุ ุงูุฅุฌุงุจุฉ ูุชููู Rectangle. ูู
ู Rectangle classุ ุงุดุชูููุง (derived) ุงูู Cuboid class.
ูู Rectangle class ู
ูุฌูุฏ ุฃุตููุงุ ูู
ู Rectangle classุ ุนุฑููุง class ุฌุฏูุฏ ุจุฎุตุงุฆุต ุฅุถุงููุฉุ ูุนูู ุจูู ุนูุฏูุง specialized class ุงููู ูู Cuboid. ุฏู ูู ุงูู specialization ูู C#.
Example to Understand Specialization in C#
ูู ุงูู
ุซุงู ุงููู ุชุญุชุ ุงูุฃูู ุนู
ููุง Rectangle class ูู
ูู ุนู
ููุง specialized class ุจุฎุตุงุฆุต ุฅุถุงููุฉ ุงุณู
ู Cuboid class. ูู Cuboid ูู specialization class ู
ู Rectangle.
using System;
namespace IsAHasADemo
{
public class Program
{
static void Main()
{
Cuboid cuboid = new Cuboid(3, 5, 7);
Console.WriteLine($"Volume is : {cuboid.Volume()}");
Console.WriteLine($"Area is : {cuboid.Area()}");
Console.WriteLine($"Perimeter is : {cuboid.Perimeter()}");
Console.ReadKey();
}
}
class Rectangle
{
public int Length;
public int Breadth;
public int Area()
{
return Length * Breadth;
}
public int Perimeter()
{
return 2 * (Length + Breadth);
}
}
class Cuboid : Rectangle
{
public int Height;
public Cuboid(int l, int b, int h)
{
Length = l;
Breadth = b;
Height = h;
}
public int Volume()
{
return Length * Breadth * Height;
}
}
}Output:
Volume is : 105
Area is : 15
Perimeter is : 16
Another Example to Understand specialization in C#
ุฎูููุง ูุงุฎุฏ ู
ุซุงู ุชุงูู ุนู ุงูุนุฑุจูุงุช. ุนูุฏูุง class ุงุณู
ู Innovaุ ุนุฑุจูุฉ Innova ู
ู ุดุฑูุฉ Toyota. ูุจุนุฏูู ููู class ุชุงูู ุงุณู
ู Fortuner.
ูู ุชุนุฑู ุนู ุงูุนุฑุจูุชูู ุฏููุ ุงูู
ูุฑูุถ ุชุนุฑู ุฅู Toyota ูุฒูุช Innova ุงูุฃููุ ูุจุนุฏูู ูุฒูุช ุนุฑุจูุฉ ุฌุฏูุฏุฉ ุงุณู
ูุง Fortuner ูุงููู ูู ุชุนุชุจุฑ ุงู
ุชุฏุงุฏ (extension) ููู Innova. ูุดุฎุต ุนุงุฏูุ ูู ุดูุช Fortuner ูุงู
ุชุฏุงุฏ ููู Innovaุ ูุชูุงูู ุฅู ูููุง ููุณ ุณุนุฉ ุงููุฑุงุณู ุจุณ ุจุฎุตุงุฆุต ุฅุถุงููุฉ ูุชูุฑ ู
ูุงุฑูุฉ ุจุงูู Innova. ุฏู ู
ุนูุงู ุฅู ุนุฑุจูุฉ Fortuner ูู ุงู
ุชุฏุงุฏ ูุนุฑุจูุฉ Innova.
ุงูู Innova ูู base class ูุงูู Fortuner ูู derived class. ุงูู Innova ูุงูุช ู
ูุฌูุฏุฉ ุฃุตููุง ูุงูู Fortuner ูู ุงูุดูู ุงูู
ุชุฎุตุต (specialized form) ู
ู ุงูู Innova. ุฏู ูู ุงูู specialization. ุญุงุฌุฉ ูุงูุช ู
ูุฌูุฏุฉ ุฃุตููุง ูุจุนุฏูู ุงุดุชูููุง ู
ููุง ุญุงุฌุฉ ุชุงููุฉ ุจุฅุถุงูุฉ ุฎุตุงุฆุต ุฌุฏูุฏุฉ.
Generalization in C#
ุฎูููุง ูููู ุฅู ุนูุฏูุง 3 classes ูู
ุง Square, Rectangle, Circle. ููู ุงูุชูุงุชุฉ classes ุฏููุ ุจูุนุฑูู class ูุงุญุฏ ูู Shape. ูุงูู Square, Rectangle, Circle ุจููุฑุซูุง ู
ู Shape class.
graph TD Shape --> Square Shape --> Rectangle Shape --> Circle
ุทูุจุ ุจูู ุงูู classes ุฏูุ ู
ูู ูููู
ุงููู ูุงู ู
ูุฌูุฏ ุงูุฃููุ ุฅุญูุง ุนุงุฑููู ุฅู ูู ุงูุฃุดูุงู ุฏู (square, rectangle, circle) ู
ูุฌูุฏุฉ ูุนููุง ูู ุงูุญูููุฉ. ุนุดุงู ูุฏู ุจูุณู
ููู
ุฃุดูุงู (shapes).
ูู ุชูุชูุฑ ุฅู Shape (ุงูุดูู) ู
ูุฌูุฏ ูุนููุง ูู ุงูุญูููุฉุ ูุฃ. ูู ู
ุฌุฑุฏ ู
ุตุทูุญ ุงูุชุฑุงุถู (virtual term). ูู ุทูุจุช ู
ูู ุชูุฑููู ุดููุฉ ุฃุดูุงูุ ูุชุฑุณู
ู
ุณุชุทููุ ุฏุงูุฑุฉุ ู
ุฑุจุนุ ู
ุนููุ ุฅูุฎ. ููู ู
ุด ูุชูุฏุฑ ุชูุฑููู โุดููโ ุจุณ. ูู Shape ูู ู
ุตุทูุญ ุนุงู
(generic term) ุฃู ู
ุนู
ูู
(generalized term) ู
ุด ู
ูุฌูุฏ ูู ุงูุญูููุฉ.
ุงูู child classes ุฏู ุงููู ูู ู
ูุฌูุฏุฉ ุฃุตููุง ูู ุงูุญูููุฉุ ูุนุดุงู ูุฌู
ุนูู
ุชุญุช ู
ุธูุฉ ูุงุญุฏุฉุ ุงุฏููุงูู
ููู
ุฉ Shape ุงููู ูู ู
ุตุทูุญ ู
ูุทูู ุฃู ุงูุชุฑุงุถูุ ู
ุด ู
ุตุทูุญ ุญูููู.
ูู ุชูุฏุฑ ุชุญุณุจ ู ุณุงุญุฉ ุฃู ู ุญูุท ู ุณุชุทููุ ุฃููู. ูู ุชูุฏุฑ ุชุญุณุจ ู ุณุงุญุฉ ุฃู ู ุญูุท ู ุฑุจุนุ ุฃููู. ูู ุชูุฏุฑ ุชุญุณุจ ู ุณุงุญุฉ ุฃู ู ุญูุท ุฏุงูุฑุฉุ ุฃููู. ูู ูู ุดูู ููู ู ุณุงุญุฉ ูู ุญูุทุ ุฃููู.
ุฏู ุฎุงุตูุฉ ู
ุดุชุฑูุฉุ ุนุดุงู ูุฏู ุญุทููุงูุง ูู Shape. ุทูุจุ ูู ุชูุฏุฑ ุชุญุณุจ ู
ุณุงุญุฉ ูู
ุญูุท ุงูู Shapeุ ูุฃุ ู
ุชูุฏุฑุด. ู
ููุด ุฃุจุนุงุฏ ููู Shape. ูู ู
ุตุทูุญ ู
ุนู
ูู
. ุฏู ู
ุซุงู ุนูู ุงูู Generalization ูู C#.
Another Example to understand Generalization
ุงูุชุฑุถ ุฅู ุนูุฏู ุนุฑุจูุงุช Innova, BMW, ู Audi. ุชูุฏุฑ ุชุดุบููู
ุ ุชููููู
ุ ุชุณุฑูุนุ ูุชุบูุฑ ุงูุบูุงุฑุงุช ูู ุฃู ูุงุญุฏุฉ ู
ููู
. ุทูุจุ ุฅูู ุฏูู ูููู
ุ ุฏูู ูููู
ุนุฑุจูุงุช (cars).
ุงูู Innova, BMW, ู Audi ู
ูุฌูุฏูู ููุฒูุงุฆููุง ูู ุงูุญูููุฉ. ูููู
ู
ุด ุฃูุชุฑ ู
ู ุนุฑุจูุงุช.
ููููู
ุจููุฑุซูุง ู
ู Cars. ุฅูู ุงููู ุชูุฏุฑ ุชุนู
ูู ูู ุนุฑุจูุฉุ ุชูุฏุฑ ุชุณููุ ุชุดุบูุ ุชูููุ ุชุบูุฑ ุบูุงุฑุงุชุ ุฅูุฎ. ูู ุงูุฎุตุงุฆุต ุฏู ู
ุชุงุญุฉ ูู ุงูุนุฑุจูุงุช ุฏู. ุทูุจุ ุจุงููุณุจุฉ ูููู
ุฉ Carsุ ูู ูู ู
ูุฌูุฏุฉ ูุนููุงุ ูุฃุ ุฏู ู
ุตุทูุญ ุนุงู
(general term). ู
ุฌุฑุฏ ู
ุตุทูุญ ุนุงู
ููู ุชุนุฑูู ู
ูุทูู ูู
ุฌู
ูุนุฉ ู
ู ุงูุฃุดูุงุก.
ูุฅุญูุง ุงุฏููุง superclass ูู
ุฌู
ูุนุฉ ู
ู ุงูู classes ุนุดุงู ูุดูุฑ ูุญุงุฌุฉ ู
ุนููุฉ. ุฏู ุฒู ุฅูู ูู ุจุตูุช ุนูู Innova ุฃูุฏุฑ ุฃููู ุฅููุง ุนุฑุจูุฉ. ูุฅุญูุง ุจูุณุชุฎุฏู
ู
ุตุทูุญ Car ูุฃู ุนุฑุจูุฉ ุจุฃุฑุจุน ุนุฌูุงุช. ุฅุญูุง ุจูุณุชุฎุฏู
ู
ุตุทูุญ ุงูู generalization ุฏู ุนุดุงู ูุดูุฑ ูููู
.
Example to Understand Generalization in C#
using System;
namespace IsAHasADemo
{
public class Program
{
static void Main()
{
Innova innova = new Innova();
innova.Start();
innova.Stop();
BMW bmw = new BMW();
bmw.Start();
bmw.Stop();
Console.ReadKey();
}
}
// ICar is the generalization
interface ICar
{
void Start();
void Stop();
}
public class Innova : ICar
{
public void Start()
{
Console.WriteLine($"Innova Start");
}
public void Stop()
{
Console.WriteLine($"Innova Stop");
}
}
public class BMW : ICar
{
public void Start()
{
Console.WriteLine($"BMW Start");
}
public void Stop()
{
Console.WriteLine($"BMW Stop");
}
}
}Output:
Innova Start
Innova Stop
BMW Start
BMW Stop
Summary of Generalization and Specialization in C#
ุงูููุทุฉ ุงููู ูุงุฒู
ุชูุชูุฑูุง ูู ุฅู ุงูู generalization ูุงูู specialization ุงูุงุชููู ุจูุชุญูููุง ุจุงุณุชุฎุฏุงู
ุงูู inheritance ุจุณ.
- ูู ุงูู specializationุ ุงูู
parentูุงู ู ูุฌูุฏ ูุงููchildุงุชุนุฑู ุจุนุฏูู. - ูู ุงูู generalizationุ ุงูู
child classูุงู ู ูุฌูุฏ ูุจุนุฏูู ุนุฑููุง ุงููbase class.
ูุงูู specialization ูู ููุฌ top-down (ู
ู ููู ูุชุญุช) ูุงูู generalization ูู ููุฌ bottom-up (ู
ู ุชุญุช ูููู).
ูู ุงูู specializationุ ุงูู base class ุนูุฏู ุญุงุฌุฉ ูุฏููุง ููู child classุ ุจููู
ุง ูู ุงูู generalizationุ ุงูู base class ู
ุนูุฏูุด ุญุงุฌุฉ ูุฏููุง ููู child classes ุจุชูุนู. ุบุฑุถู ุจุณ ูู ุชุฌู
ูุนูู
ู
ุน ุจุนุถ ุนุดุงู ููุฏุฑ ูุฏูุฑูู
ุจุณูููุฉ.
- ุงูุบุฑุถ ู
ู ุงูู
generalizationูู ุชุญููู ุงููpolymorphism. - ุงูุบุฑุถ ู
ู ุงูู
specializationูู ู ุดุงุฑูุฉ ุฎุตุงุฆุตู ู ุน ุงููchild classesุจุชูุนู.
ูููู ุบุฑุถูู ููู inheritance: ูุงุญุฏ ูู ู
ุดุงุฑูุฉ ุงูุฎุตุงุฆุต ู
ุน ุงูู child classesุ ูุงูุชุงูู ูู ุชุญููู ุงูู polymorphism.