مراجعة - آلة حاسبة بسيطة
جزء من قسم Object Oriented Programming في رحلة C# على Coddy — الدرس 9 من 70.
التحدي
صعبقم بإنشاء فئة Calculator كاملة في مساحة الاسم CalculatorApp.Core توضح جميع المفاهيم التي تم تعلمها:
- الحقول (Fields): حقول خاصة لـ
memory(decimal) وoperationCount(int) - الخصائص (Properties): خاصية تلقائية التنفيذ
Name، وخصائص للقراءة فقطMemoryوOperationCount - المشيدات (Constructors): مشيد مع معامل الاسم، ومشيد افتراضي يستخدم تسلسل المشيدات (constructor chaining)
- الأساليب (Methods):
Add، وSubtract، وMultiply، وDivide، وPower، وSquareRoot
يجب أن تقوم جميع الأساليب بزيادة operationCount. كما يجب أن يقوم الأسلوب Add بتخزين النتيجة في memory.
ملاحظة: استخدم Math.Pow() لـ Power و Math.Sqrt() لـ SquareRoot. قم بتحويل المعاملات إلى double عند الحاجة.
جرّب بنفسك
using System;
using CalculatorApp.Core;
class Program
{
static void Main()
{
string name = Console.ReadLine();
decimal num1 = decimal.Parse(Console.ReadLine());
decimal num2 = decimal.Parse(Console.ReadLine());
// إنشاء آلة حاسبة باستخدام المنشئ مع الاسم
Calculator calc = new Calculator(name);
Console.WriteLine($"Calculator: {calc.Name}");
Console.WriteLine($"Memory: {calc.Memory}");
// إجراء العمليات
decimal addResult = calc.Add(num1, num2);
Console.WriteLine($"Add: {addResult}");
decimal subtractResult = calc.Subtract(num1, num2);
Console.WriteLine($"Subtract: {subtractResult}");
decimal multiplyResult = calc.Multiply(num1, num2);
Console.WriteLine($"Multiply: {multiplyResult}");
decimal divideResult = calc.Divide(num1, num2);
Console.WriteLine($"Divide: {divideResult}");
Console.WriteLine($"Memory after operations: {calc.Memory}");
decimal powerResult = calc.Power(num1, num2);
Console.WriteLine($"Power: {powerResult}");
decimal sqrtResult = calc.SquareRoot(num2);
Console.WriteLine($"Square Root: {sqrtResult}");
Console.WriteLine($"History: {calc.OperationCount} operations");
}
}جميع دروس Object Oriented Programming
1أساسيات OOP
الملفات الخارجيةNamespaces والتوجيهاتمقدمة في Classes و Objectsالكلمة المفتاحية 'this'Methods والمعاملاتFields مقابل PropertiesConstructorsObject Initializersمراجعة - آلة حاسبة بسيطة4الوراثة
صيغة الوراثة الأساسية (:)الكلمة المفتاحية 'base'الكلمات المفتاحية Virtual و Overrideالأصناف المختومة (Sealed Classes)الفئة الأساسية 'object'مراجعة - هيكلية الموظفين7ميزات متقدمة
تحميل العوامل (Operator Overloading)المفهرسات (Indexers (this[]))إعادة تعريف ()ToStringدوال التوسعة (Extension Methods)ملخص - Custom List2الخصائص والأعضاء الساكنة (Static Members)
الخصائص المطبقة تلقائيًا (Auto-Implemented Properties)خصائص القراءة فقط والكتابة فقطالحقول والدوال الساكنة (Static)الفئات الساكنة (Static Classes)الأعضاء ذات البنية التعبيرية (Expression-Bodied Members)5تعدد الأشكال والواجهات (Polymorphism & Interfaces)
تعدد الأشكال: وقت التجميع مقابل وقت التشغيلالواجهة مقابل الفئة المجردة (Abstract Class)الواجهات المتعددةالواجهات الصريحةUpcasting و Downcastingملخص - حاسبة الأشكال8مفاهيم البرمجة كائنية التوجه (OOP) المتقدمة
التركيب بدلاً من الوراثةالـ Generics (الأصناف والدوال)الـ Delegates والأحداثالـ Attributes والـ Reflectionواجهة IDisposable وجملة usingأساسيات Dependency Injection