Polymorphic behaviors
interface-आधारित polymorphism का उपयोग कीजिए: मिश्रित shapes को समान रूप से process कीजिए, callers बदले बिना नए shapes जोड़िए और छोटे behaviors संयोजित कीजिए।
Polymorphic behaviors, CoddyKit पर C# अकादमी का एक निःशुल्क पाठ है। यह 3 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C# अकादमी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C# अकादमी पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
बहुरूपता का अवलोकन
लक्ष्य: कॉल करने वाले कोड को सरल रखने के लिए बहुरूपता का Use करना।
- हर जगह IShape के साथ काम करें
- एक ही सूची में अनेक आकृतियाँ मिलाएँ
- कोड बदले बिना नई आकृतियाँ जोड़ें
- छोटे व्यवहारों को संयोजित करें (स्वरूपण, फ़िल्टरिंग)
सभी आकृतियों के लिए एक API
सहायक साधनों में IShape इंटरफ़ेस स्वीकार करें। रनटाइम प्रेषण सही कार्यान्वयन चुनता है।
using System;
public interface IShape
{
double Area();
double Perimeter();
}
public sealed class Rectangle : IShape
{
private readonly double _w, _h;
public Rectangle(double w, double h) { _w = w; _h = h; }
public double Area() { return _w * _h; }
public double Perimeter() { return 2 * (_w + _h); }
}
public sealed class Circle : IShape
{
private readonly double _r;
public Circle(double r) { _r = r; }
public double Area() { return 3.14159 * _r * _r; }
public double Perimeter() { return 2 * 3.14159 * _r; }
}
public class Program
{
// One function works for any IShape (dynamic dispatch on overrides)
static void PrintSummary(IShape s)
{
Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter());
}
public static void Main(string[] args)
{
PrintSummary(new Rectangle(3, 4));
PrintSummary(new Circle(2));
}
}
मिश्रित सूची का संसाधन
अनेक आकृतियों को सूची<IShape> में रखें। व्यवहार हर इंस्टेंस के अनुसार बदलते हुए भी पुनरावृत्ति सरल रहती है।
using System;
using System.Collections.Generic;
public interface IShape { double Area(); double Perimeter(); }
public sealed class Rectangle : IShape
{
private readonly double _w, _h;
public Rectangle(double w, double h) { _w = w; _h = h; }
public double Area() { return _w * _h; }
public double Perimeter() { return 2 * (_w + _h); }
}
public sealed class Circle : IShape
{
private readonly double _r;
public Circle(double r) { _r = r; }
public double Area() { return 3.14159 * _r * _r; }
public double Perimeter() { return 2 * 3.14159 * _r; }
}
public class Program
{
public static void Main(string[] args)
{
List<IShape> shapes = new List<IShape>();
shapes.Add(new Rectangle(2, 5));
shapes.Add(new Circle(1.5));
shapes.Add(new Rectangle(1, 1));
foreach (IShape s in shapes)
{
Console.WriteLine("A=" + s.Area());
}
}
}
विस्तार के लिए खुला
बहुरूपता खुले विस्तार का समर्थन करती है: मौजूदा कॉल करने वाले कोड में संशोधन किए बिना नई आकृतियाँ जुड़ जाती हैं।
using System;
public interface IShape { double Area(); double Perimeter(); }
public sealed class Triangle : IShape
{
private readonly double _a, _b, _c;
public Triangle(double a, double b, double c) { _a = a; _b = b; _c = c; }
public double Perimeter() { return _a + _b + _c; }
public double Area()
{
double s = (_a + _b + _c) / 2.0;
return Math.Sqrt(s * (s - _a) * (s - _b) * (s - _c));
}
}
public class Program
{
// Existing helper still works; no changes needed
static void Show(IShape s) { Console.WriteLine("A=" + s.Area() + " P=" + s.Perimeter()); }
public static void Main(string[] args)
{
Show(new Triangle(3, 4, 5)); // new type plugs in
}
}
व्यवहार संयोजन (रणनीति)
छोटे इंटरफ़ेस (जैसे किसी फ़ॉर्मैटर) के माध्यम से छोटे व्यवहारों को संयोजित करें। आकृति बदले बिना रणनीतियाँ बदलें।
using System;
public interface IShape { double Area(); double Perimeter(); }
public sealed class Rectangle : IShape
{
private readonly double _w, _h;
public Rectangle(double w, double h) { _w = w; _h = h; }
public double Area() { return _w * _h; }
public double Perimeter() { return 2 * (_w + _h); }
}
// Small strategy interface for formatting
public interface IShapeFormatter
{
string Format(IShape s);
}
public sealed class SimpleFormatter : IShapeFormatter
{
public string Format(IShape s) { return "A=" + s.Area() + " P=" + s.Perimeter(); }
}
public class Program
{
static void Print(IShape s, IShapeFormatter f)
{
Console.WriteLine(f.Format(s));
}
public static void Main(string[] args)
{
Print(new Rectangle(3, 2), new SimpleFormatter());
}
}
बहुरूपता के सुझाव
सुझाव:
- सहायक साधनों को IShape दें; प्रकार-जाँच से बचें।
- जहाँ संभव हो, सहायक साधनों को छोटा और शुद्ध रखें।
- नई आकृतियाँ स्वतंत्र रूप से जोड़ें; मौजूदा कॉल करने वाले कोड में संशोधन न करें।
- सुविधाएँ बढ़ाने के लिए छोटे व्यवहार इंटरफ़ेस (स्वरूपण, फ़िल्टरिंग) का Use करें।
इंटरफ़ेस का लाभ
पुनरावलोकन
पुनरावलोकन: पैरामीटर के रूप में IShape लें, मिश्रित सूचियों को संसाधित करें और कॉल करने वाले कोड को छुए बिना आकृतियाँ जोड़ें। कोड को लचीला रखने के लिए स्वरूपण या फ़िल्टरिंग जैसे छोटे व्यवहारों को संयोजित करें।
एआई शिक्षक के साथ C# सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 93
- पाठ
- 346
अक्सर पूछे जाने वाले प्रश्न
क्या “Polymorphic behaviors” पाठ निःशुल्क है?
हाँ—“Polymorphic behaviors” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C# अकादमी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C# अकादमी पाठ्यक्रम में कुल 3 पाठ शामिल हैं।
“Polymorphic behaviors” में मैं क्या सीखूँगा?
interface-आधारित polymorphism का उपयोग कीजिए: मिश्रित shapes को समान रूप से process कीजिए, callers बदले बिना नए shapes जोड़िए और छोटे behaviors संयोजित कीजिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C# अकादमी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 3वाँ पाठ है।
“Polymorphic behaviors” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C# अकादमी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- डिज़ाइन (interfaces + inheritance)
- Implementation और tests
- Polymorphic behaviors